ó
¡¼™\c           @   sv  d  d l  m Z m Z m Z m Z m Z m Z d  d l m Z m	 Z	 m
 Z
 m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z m Z d  d l m Z m Z d  d l m Z m  Z  m! Z! d  d l" m# Z# d  d l$ m% Z% e
 Z& d „  Z' d	 „  Z( d
 „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 d „  Z1 d „  Z2 d S(   iÿÿÿÿ(   t   R2t   R2_pt   R2_rt   R3_rt   R3_ct   R3_s(   t
   Commutatort   Differentialt   TensorProductt   WedgeProductt   BaseCovarDerivativeOpt   CovarDerivativeOpt   LieDerivativet   covariant_ordert   contravariant_ordert   twoform_to_matrixt   metric_to_Christoffel_1stt   metric_to_Christoffel_2ndt   metric_to_Riemann_componentst   metric_to_Ricci_componentst   intcurve_diffequt   intcurve_series(   t   Symbolt   symbols(   t   trigsimpt   simplify(   t   sqrtt   atan2t   sin(   t   Matrix(   t   raisesc    	      C   sk  t  d d t ƒ\ }  } } } t j |  | g ƒ } t j | | g ƒ } t j d t j d t j d j	 | ƒ d k s€ t
 ‚ t t j d t j d t j d j	 | ƒ ƒ d k s¾ t
 ‚ t t j t j d t j d ƒ j	 | ƒ j ƒ  ƒ d | k st
 ‚ t  d d t ƒ\ } } t | g | g g ƒ } | t j t t j t | ƒ ƒ j t ƒ k sgt
 ‚ d  S(   Ns   x0, y0, r0, theta0t   reali   i    s   a bt   positive(   R   t   TrueR   t   pointR   R    t   rt   xt   yt   rcallt   AssertionErrorR   t   e_rt   doitR   t   coord_tuple_transform_tot	   applyfuncR   (	   t   x0t   y0t   r0t   theta0t   point_rt   point_pt   at   bt   m(    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt   test_R2   s    8>F	c          C   sÖ   t  d d t ƒ\ }  } } t |  g | g | g g ƒ } | t j t t j t | ƒ ƒ j t ƒ k sl t ‚ | t	 j t t j t	 | ƒ ƒ j t ƒ k sŸ t ‚ | t	 j t t j t	 | ƒ ƒ j t ƒ k sÒ t ‚ d  S(   Ns   a b cR    (
   R   R!   R   R   R*   R   R+   R   R'   R   (   R2   R3   t   cR4   (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt   test_R3"   s    	*	*	c          C   sª   t  d ƒ \ }  } t j |  | g ƒ } | j t ƒ | j ƒ  k oY t |  | g ƒ k n sd t ‚ | j t ƒ t t |  d | d ƒ t | |  ƒ g ƒ k s¦ t ‚ d  S(   Ns   x, yi   (	   R   R   R"   t   coordsR   R'   R   R   R   (   R$   R%   t   p(    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt
   test_point0   s    =c          C   sç   t  t j t j ƒ d k s! t ‚ t  t j t j t j t j ƒ d k sP t ‚ t  t j t j t j t j ƒ t j t j k s‰ t ‚ t  t j t j ƒ }  |  t j ƒ t j t j d t j d d t t j	 ƒ k sã t ‚ d  S(   Ni    i   iÿÿÿÿ(
   R   R    t   e_xt   e_yR'   R$   R(   R%   R   t   theta(   R6   (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt   test_commutator8   s
    !/9c          C   sŸ   t  j t  j }  t |  ƒ } |  j d  ƒ |  k s7 t ‚ | t  j t  j ƒ d k sX t ‚ | t  j t  j t  j ƒ t  j k sƒ t ‚ t | ƒ d k s› t ‚ d  S(   Ni   i    (	   R    R$   t   dyR   R&   t   NoneR'   R;   R<   (   t   xdyt   dxdy(    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt   test_differential@   s    !+c           C   så  t  t j t j ƒ t j t j ƒ t j t j ƒ t j t j ƒ k oQ d k n s\ t ‚ t  t j t j ƒ d  t j ƒ t j k sŒ t ‚ t  t j t j ƒ t j d  ƒ t j k s¼ t ‚ t  t j t j ƒ t j ƒ t j k sé t ‚ t  t j t j ƒ t j t j k st ‚ t  t j t j ƒ t j t j	 ƒ t j t j ƒ t j t j	 ƒ k oed k n spt ‚ t  t j t j ƒ d  t j	 ƒ t j k s t ‚ t  t j t j ƒ t j d  ƒ t j k sÐt ‚ t  t j t j ƒ t j ƒ t j k sýt ‚ t  t j t j ƒ t j t j k s(t ‚ t  t j t j ƒ t j t j	 ƒ t j t j ƒ t j t j	 ƒ k oyd k n s„t ‚ t  t j t j ƒ d  t j	 ƒ t j k s´t ‚ t  t j t j ƒ t j d  ƒ t j k sät ‚ t  t j t j ƒ t j ƒ t j k st ‚ t  t j t j ƒ t j t j k s<t ‚ t  t j t j ƒ t j t j ƒ t j t j ƒ t j t j ƒ k od k n s˜t ‚ t  t j t j ƒ d  t j ƒ t j k sÈt ‚ t  t j t j ƒ t j d  ƒ t j k søt ‚ t  t j t j ƒ t j ƒ t j k s%t ‚ t  t j t j ƒ t j d t j	 d t j d t j	 d ƒ d t j t j	 k st ‚ t
 t j t j ƒ t j t j ƒ d k s±t ‚ t
 t j t j ƒ t j t j	 ƒ d k sát ‚ d  S(   Ni   i   i   (   R   R    t   dxR?   R;   R<   R'   R@   R$   R%   R	   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt   test_productsI   s4    Y00-+Y00-+Y00-+Y00-\0c           C   sR  t  t j t j ƒ t j t j ƒ k o2 d k n s= t ‚ t  t j t j ƒ t j t j ƒ k oo d k n sz t ‚ t  t j t j ƒ t t j t j ƒ k o¯ d k n sº t ‚ t  t j t j ƒ t t j t j ƒ k sê t ‚ t  t j t j t j ƒ d k st ‚ t  t j t	 t j
 t j ƒ ƒ t j t j ƒ d k sNt ‚ d  S(   Ni    i   (   R   R    R;   R%   R'   R$   R   R(   R<   R   RD   R?   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt   test_lie_derivativeg   s    ==@0(c          C   sç   t  t t j t j ƒ t t j t j ƒ ƒ }  t t d |  ƒ } | t j ƒ d k s[ t ‚ | t j t j	 ƒ t j	 k s€ t ‚ t
 t j t j	 |  ƒ } | t j ƒ t j k s· t ‚ | t j t j	 ƒ t j t j	 k sã t ‚ d  S(   Ni    i   (   R   t   TPR    RD   R?   R
   R   R$   R'   R;   R   (   t   cht   cvd(    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt   test_covar_derivq   s    .%c          C   s×   t  d ƒ }  t j d d g ƒ } t j t j t j t j } t | |  | ƒ \ } } t	 | ƒ d k sp t
 ‚ t	 | ƒ d k sˆ t
 ‚ t | |  | t ƒ \ } } t	 | ƒ d k s» t
 ‚ t	 | ƒ d k sÓ t
 ‚ d  S(   Nt   ti   i    sA   [f_1(t) + Derivative(f_0(t), t), -f_0(t) + Derivative(f_1(t), t)]s   [f_0(0) - 1, f_1(0)]s2   [Derivative(f_0(t), t), Derivative(f_1(t), t) - 1](   R   R   R"   R    R%   R;   R$   R<   R   t   strR'   R   (   RK   t   start_pointt   vector_fieldt	   equationst	   init_cond(    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt   test_intcurve_diffequ{   s    c             s  t  j t  j ‰ t t  j t  j t  j t  j ƒ }  t t  j |  ƒ t t  j t t  j t  j ƒ ƒ ‰ t t  j t  j ƒ t t  j t  j ƒ } t t  j t  j ƒ t t  j t  j ƒ ‰  t t  j t  j ƒ t  j ‰ t  j d ‰ t  j t  j ‰ t t  j t  j ƒ t t  j t  j ƒ ‰ t	 t  j t  j ƒ } t  j
 t  j } t t  j
 t  j ƒ } t t  j
 t  j t  j
 ƒ } t	 t  j
 t  j ƒ } t ˆ ƒ d k s›t ‚ t |  ƒ d k s³t ‚ t ˆ ƒ d k sËt ‚ t |  | ƒ d k sçt ‚ t |  ˆ  ƒ d k st ‚ t |  ˆ ƒ d k st ‚ t |  | ƒ d k s;t ‚ t | ƒ d k sSt ‚ t | ƒ d k skt ‚ t | ƒ d k sƒt ‚ t | | ƒ d k sŸt ‚ t t ‡ f d †  ƒ t t ‡ f d †  ƒ t t ‡ f d †  ƒ t | ƒ t d d g d d g g ƒ k st ‚ t ˆ ƒ t d d g d d g g ƒ k sAt ‚ t | ƒ t d d	 g d d g g ƒ k sqt ‚ t t ‡ f d
 †  ƒ t t ‡ f d †  ƒ t t ‡  f d †  ƒ t t ‡ f d †  ƒ t t ‡ f d †  ƒ t t ‡ f d †  ƒ t t ‡ f d †  ƒ d  S(   Ni   i   i   i   c              s
   t  ˆ  ƒ S(   N(   R   (    (   t	   misform_a(    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt   <lambda>§   t    c              s
   t  ˆ  ƒ S(   N(   R   (    (   t	   misform_b(    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   ¨   RT   c              s
   t  ˆ  ƒ S(   N(   R   (    (   t	   misform_c(    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   ©   RT   i    iÿÿÿÿc              s
   t  ˆ  ƒ S(   N(   R   (    (   t   one_form(    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   ¯   RT   c              s
   t  ˆ  ƒ S(   N(   R   (    (   t
   three_form(    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   °   RT   c              s
   t  ˆ  ƒ S(   N(   R   (    (   t   metric_ambig(    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   ±   RT   c              s
   t  ˆ  ƒ S(   N(   R   (    (   t   twoform_not_sym(    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   ³   RT   c              s
   t  ˆ  ƒ S(   N(   R   (    (   RZ   (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   ´   RT   c              s
   t  ˆ  ƒ S(   N(   R   (    (   RZ   (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   µ   RT   c              s
   t  ˆ  ƒ S(   N(   R   (    (   RZ   (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   ¶   RT   (   R    t   drRD   R   R$   R#   R%   R   R?   R	   R;   R<   R   R'   R   R   t
   ValueErrorR   R   (   t   two_formt   metrict   twoform_not_TPt
   one_vectort
   two_vectort   three_vectort   two_wp(    (   RY   RR   RU   RV   RW   RX   RZ   sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt%   test_helpers_and_coordinate_dependentˆ   sN    $1(((000c              sH  t  t d „  ƒ t  t d „  ƒ t  t d „  ƒ t  t d „  ƒ t  t d „  ƒ t  t d „  ƒ t  t d „  ƒ t  t d „  ƒ t  t d	 „  ƒ t  t d
 „  ƒ t d ƒ ‰  t  t ‡  f d †  ƒ t  t ‡  f d †  ƒ t  t ‡  f d †  ƒ t  t ‡  f d †  ƒ t  t d „  ƒ t  t d „  ƒ t  t d „  ƒ t  t d „  ƒ d  S(   Nc           S   s   t  j t  j ƒ S(   N(   R    R;   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   º   RT   c           S   s   t  j t  j ƒ S(   N(   R    R;   RD   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   »   RT   c           S   s   t  t j t j ƒ S(   N(   R   R    R;   R$   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   ½   RT   c           S   s   t  t j t j ƒ S(   N(   R   R    RD   R;   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   ¾   RT   c           S   s   t  t  t j ƒ ƒ S(   N(   R   R    R;   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   À   RT   c           S   s   t  j t  j ƒ S(   N(   R    RD   R$   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   Â   RT   c           S   s   t  t j t j ƒ S(   N(   R   R    RD   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   Ä   RT   c           S   s   t  t j t j ƒ S(   N(   R   R    R$   RD   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   Å   RT   c           S   s   t  t j g  ƒ S(   N(   R   R    RD   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   Ç   RT   c           S   s   t  t j g  ƒ S(   N(   R   R    R$   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   È   RT   R2   c              s"   t  t j ˆ  t j d d g ƒ ƒ S(   Ni   i   (   R   R    RD   R   R"   (    (   R2   (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   Ë   RT   c              s"   t  t j ˆ  t j d d g ƒ ƒ S(   Ni   i   (   R   R    R$   R   R"   (    (   R2   (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   Ì   RT   c              s"   t  t j ˆ  t j d d g ƒ ƒ S(   Ni   i   (   R   R    RD   R   R"   (    (   R2   (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   Î   RT   c              s"   t  t j ˆ  t j d d g ƒ ƒ S(   Ni   i   (   R   R    R$   R   R"   (    (   R2   (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   Ï   RT   c           S   s   t  t j t j ƒ S(   N(   R   R    R;   RD   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   Ñ   RT   c           S   s   t  t j t j ƒ S(   N(   R   R    R;   RD   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   Ò   RT   c           S   s   t  t j t j ƒ S(   N(   R   R    R;   R<   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   Ô   RT   c           S   s   t  t j t j ƒ S(   N(   R   R    RD   R?   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyRS   Õ   RT   (   R   R\   R   (    (    (   R2   sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt   test_correct_arguments¹   s&    c          C   sà   t  j ƒ  \ }  } t  j ƒ  \ } } t  j ƒ  \ } } t |  ƒ |  k sN t ‚ t |  | ƒ |  | k sn t ‚ t | | ƒ | | k sŽ t ‚ t | | ƒ | | k s® t ‚ d |  | d |  d | d |  k sÜ t ‚ d  S(   Ni   i   (   R   t   coord_functionst   base_oneformst   base_vectorsR   R'   (   R$   R%   RD   R?   t   ext   ey(    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt   test_simplify×   s       N(3   t   sympy.diffgeom.rnR    R   R   R   R   R   t   sympy.diffgeomR   R   R   R	   R
   R   R   R   R   R   R   R   R   R   R   R   t
   sympy.coreR   R   t   sympy.simplifyR   R   t   sympy.functionsR   R   R   t   sympy.matricesR   t   sympy.utilities.pytestR   RG   R5   R7   R:   R>   RC   RE   RF   RJ   RQ   Rd   Re   Rk   (    (    (    sA   lib/python2.7/site-packages/sympy/diffgeom/tests/test_diffgeom.pyt   <module>   s&   .j								
	
		1	