o
    8Va4                     @   sL  d dl mZmZmZ d dlmZ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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(m)Z) d dl'm*Z* eZ+d	d
 Z,dd Z-dd Z.dd Z/dd Z0dd Z1dd Z2dd Z3dd Z4e)dd Z5dd Z6dd  Z7d!d" Z8d#d$ Z9d%S )&    )LambdaSymbolsymbols)R2R2_pR2_rR3_rR3_cR3_s	R2_origin)CoordSystem
CommutatorDifferentialTensorProductWedgeProductBaseCovarDerivativeOpCovarDerivativeOpLieDerivativecovariant_ordercontravariant_ordertwoform_to_matrixmetric_to_Christoffel_1stmetric_to_Christoffel_2ndmetric_to_Riemann_componentsmetric_to_Ricci_componentsintcurve_diffequintcurve_series)trigsimpsimplify)sqrtatan2sin)Matrix)raisesnocache_fail)warns_deprecated_sympyc                  C   s,  t d\} }}}d| |f||  fgi}tdt| |g|}tdt||g|}|j \}}||t| g|ggks:J t ddd\}}d|f| fgi}tdt|g|}	tdt|g|}
tt |
|	 W d    n1 sow   Y  t d\}}d|f|d	 fgi}tdt|g|}tdt|g|}tt || W d    n1 sw   Y  t d
\}}}}}}||fd	| d| fg||fd| d	| fgd}tdt||f|}tdt||f|}tdt||f|}|j \}}|j \}}|j \}}||t|d	 |d gksJ ||td| d| gksJ ||t|d |d gks0J ||t|d |d	 gksBJ t d
\}}}}}}||fd	| d| d fg||f| d	 d	| fgd}tdt||f|}tdt||f|}tdt||f|}|j \}}|j \}}|j \}}||t|d	 |d d gksJ ||td| d	 d| d d	 gksJ ||t| d	 d d	| d d gksJ ||t| d	 d	| gksJ t d
\}}}}}}t||fd	| d| d ft||f| d	 d	| fd}tdt||f|}tdt||f|}tdt||f|}|j \}}|j \}}|j \}}||t|d	 |d d gksPJ ||td| d	 d| d d	 gkshJ ||t| d	 d d	| d d gksJ ||t| d	 d	| gksJ d S )Nzp q r s)firstsecondr&   r'   a bTZpositivezc d   za, b, c, d, e, f   )C1C2)r.   C3r-   r.   r/         )r,   )r/   r.   )	r   r   r   	transformr"   r#   NotImplementedError
ValueErrorr   )pqrsZrelZR2_pqZR2_rsabZR2_aZR2_bcdZR2_cZR2_defr-   r.   r/    r@   D/usr/lib/python3/dist-packages/sympy/diffgeom/tests/test_diffgeom.pytest_coordsys_transform   s|   
 




$$$$


(02&


(02*rB   c            	   	   C   sP  t ddd\} }}}t| |g}t||g}tjd tjd  tjd  |dks.J t	tjd tjd  tjd  |dksFJ t	t
tjd tjd  | d| ks`J t ddd\}}t|g|gg}|tttt|tksJ t  |tttt|tksJ W d    d S 1 sw   Y  d S )Nzx0, y0, r0, theta0T)realr*   r   r(   r)   )r   r   pointr   r   r8   xyrcallr   e_rZdoitr"   r3   	applyfuncr   r%   coord_tuple_transform_to)	Zx0Zy0Zr0Ztheta0Zpoint_rZpoint_pr:   r;   mr@   r@   rA   test_R2Y   s    ,04"
"rL   c               	   C   s  t ddd\} }}t| g|g|gg}|tttt|tks$J |tttt|tks5J |tttt|tksFJ t < |t	tt	t|tks[J |t	tt	t|tkslJ |t	tt	t|tks}J W d    d S 1 sw   Y  d S )Nza b cTr)   )
r   r"   r	   r3   r   rI   r   r
   r%   rJ   )r:   r;   r<   rK   r@   r@   rA   test_R3p   s<   "
"rM   c                  C   s2   t j\} }tj\}}|t|t| ksJ d S N)r   r   r   Zrewriter!   )rE   rF   r8   thetar@   r@   rA   test_CoordinateSymbol   s   

rP   c                  C   s   t d\} }t| |g}|j| |hksJ |t|   kr*t| |gks-J  J |ttt| d |d  t|| gksEJ d S )Nzx, yr*   )	r   r   rD   Zfree_symbolsZcoordsr"   r   r   r    )rE   rF   r6   r@   r@   rA   
test_point   s
   .4rQ   c                  C   s   t tjtjdksJ t tjtj tjtj dksJ t tjtj tjtj tjtj ks1J t tjtj} | tjtjtjd tjd  d  ttj ksSJ d S )Nr   r*   )	r   r   e_xe_yrE   rH   rF   r!   rO   )r<   r@   r@   rA   test_commutator   s
   "*:rU   c                  C   sn   t jt j } t| }| d | ksJ |t jt jdksJ |t jt jt j t jks-J t|dks5J d S )Nr1   r   )r   rE   dyr   rG   rS   rT   )ZxdyZdxdyr@   r@   rA   test_differential   s   rW   c                   C   s  t tjtjtjtjttjttj   krdks"J  J t tjtjd tjtjks2J t tjtjtjd tjksBJ t tjtjtjtjksQJ t tjtjtjtj ks`J t tjtjtjtjttjttj   krdksJ  J t tjtjd tjtjksJ t tjtjtjd tjksJ t tjtjtjtjksJ t tjtjtjtj ksJ t tjtjtjtjttjttj   krdksJ  J t tjtjd tjtjksJ t tjtjtjd tjksJ t tjtjtjtjksJ t tjtjtjtj ks#J t tjtjtjtjttjttj   krDdksGJ  J t tjtjd tjtjksXJ t tjtjtjd tjksiJ t tjtjtjtjksyJ t tjtjtjd tjd  tjd tjd  dtj tj ksJ ttjtjtjtjdksJ ttjtjtjtjdksJ d S )Nr1   r*      )	r   r   dxrV   rS   rT   rE   rF   r   r@   r@   r@   rA   test_products   sl        "  
"" J"&rZ   c                   C   s   t tjtjttj  krdksJ  J t tjtjttj  kr+dks.J  J t tjtjttjtj  krCdksFJ  J t tjtjttjtjksVJ t tjtj tjdksdJ t tjttj	tj
tjtjdksxJ d S Nr   r1   )r   r   rS   rF   rE   r   rH   rT   r   rY   rV   r@   r@   r@   rA   test_lie_derivative   s   ..0 r\   c                  C   s   t ttjtjttjtj } ttd| }|tjdksJ |tjtj tjks,J t	tjtj | }|tjtjks?J |tjtj tjtj ksOJ d S r[   )
r   TPr   rY   rV   r   r   rE   rS   r   )ZchZcvdr@   r@   rA   test_covar_deriv   s    $r^   c                  C   s   t d} tddg}tj tj tjtj  }t|| |\}}t	|dks(J t	|dks0J t|| |t
\}}t	|dksAJ t	|dksIJ d S )Ntr1   r   zA[f_1(t) + Derivative(f_0(t), t), -f_0(t) + Derivative(f_1(t), t)]z[f_0(0) - 1, f_1(0)]z2[Derivative(f_0(t), t), Derivative(f_1(t), t) - 1])r   r   rD   r   rF   rS   rE   rT   r   strr   )r_   Zstart_pointZvector_fieldZ	equationsZ	init_condr@   r@   rA   test_intcurve_diffequ   s   ra   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sJ t| dksJ tdksJ t| | dksJ t|   dksJ t|  dksJ t| | dksJ t|dksJ t|dksJ t|dksJ t|| dksJ ttfdd ttfdd ttfdd t|tdd	gd	dggksJ ttdd	gdd	ggks*J t|td	d
gdd	ggks;J ttfdd ttfdd tt fdd ttfdd ttfdd ttfdd ttfdd d S )NrX   r1   r*   r+   c                         t  S rN   r   r@   )	misform_ar@   rA   <lambda>      z7test_helpers_and_coordinate_dependent.<locals>.<lambda>c                      rb   rN   rc   r@   )	misform_br@   rA   re   	  rf   c                      rb   rN   rc   r@   )	misform_cr@   rA   re   
  rf   r   rR   c                      rb   rN   r   r@   )one_formr@   rA   re     rf   c                      rb   rN   ri   r@   )
three_formr@   rA   re     rf   c                      rb   rN   ri   r@   )metric_ambigr@   rA   re     rf   c                      rb   rN   )r   r@   twoform_not_symr@   rA   re     rf   c                      rb   rN   )r   r@   rm   r@   rA   re     rf   c                      rb   rN   )r   r@   rm   r@   rA   re     rf   c                      rb   rN   )r   r@   rm   r@   rA   re     rf   )r   ZdrrY   r   rE   r8   rF   r   rV   r   rS   rT   r   r   r#   r5   r   r"   )Ztwo_formZmetricZtwoform_not_TPZ
one_vectorZ
two_vectorZthree_vectorZtwo_wpr@   )rl   rd   rg   rh   rj   rk   rn   rA   %test_helpers_and_coordinate_dependent   sT   
"""ro   c                      s  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t td	d  t td
d  t tdd  td t t fdd t t fdd t t fdd t t fdd t tdd  t tdd  t tdd  t tdd  d S )Nc                   S   s   t t jS rN   )r   rS   r@   r@   r@   rA   re         z(test_correct_arguments.<locals>.<lambda>c                   S      t t jS rN   )r   rS   rY   r@   r@   r@   rA   re     rp   c                   S      t tjtjS rN   )r   r   rS   rE   r@   r@   r@   rA   re         c                   S   rr   rN   )r   r   rY   rS   r@   r@   r@   rA   re     rs   c                   S   s   t t tjS rN   )r   r   rS   r@   r@   r@   rA   re   !  rs   c                   S   rq   rN   )r   rY   rE   r@   r@   r@   rA   re   #  rp   c                   S   s   t tjtjS rN   )r   r   rY   r@   r@   r@   rA   re   %  rs   c                   S   rr   rN   )r   r   rE   rY   r@   r@   r@   rA   re   &  rs   c                   S      t tjg S rN   )r   r   rY   r@   r@   r@   rA   re   (  rp   c                   S   rt   rN   )r   r   rE   r@   r@   r@   rA   re   )  rp   r:   c                         t tj tddgS Nr1   r*   )r   r   rY   r   rD   r@   r:   r@   rA   re   ,      c                      ru   rv   )r   r   rE   r   rD   r@   rw   r@   rA   re   -  rx   c                      ru   rv   )r   r   rY   r   rD   r@   rw   r@   rA   re   /  rx   c                      ru   rv   )r   r   rE   r   rD   r@   rw   r@   rA   re   0  rx   c                   S      t tjtj S rN   )r   r   rS   rY   r@   r@   r@   rA   re   2      c                   S   ry   rN   )r   r   rS   rY   r@   r@   r@   rA   re   3  rz   c                   S      t tjtj S rN   )r   r   rS   rT   r@   r@   r@   rA   re   5  rz   c                   S   r{   rN   )r   r   rY   rV   r@   r@   r@   rA   re   6  rz   )r#   r5   r   r@   r@   rw   rA   test_correct_arguments  s&   r|   c                  C   s   t  \} }t  \}}t  \}}t| | ksJ t| | | | ks&J t|| || ks2J t|| || ks>J d|  | d|  d  |d|   ksRJ d S rv   )r   Zcoord_functionsZbase_oneformsZbase_vectorsr   )rE   rF   rY   rV   exZeyr@   r@   rA   test_simplify8  s   ,r~   N):Z
sympy.corer   r   r   Zsympy.diffgeom.rnr   r   r   r   r	   r
   r   Zsympy.diffgeomr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsympy.simplifyr   r   Zsympy.functionsr   r    r!   Zsympy.matricesr"   Zsympy.testing.pytestr#   r$   r%   r]   rB   rL   rM   rP   rQ   rU   rW   rZ   r\   r^   ra   ro   r|   r~   r@   r@   r@   rA   <module>   s0    $LH	

1