U
    9%eA7                     @   sd  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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 Z0dd Z1dd Z2dd Z3dd Z4dd Z5dd Z6e+dd Z7dd Z8dd  Z9d!d" Z:d#d$ Z;d%d& Z<d'd( Z=d)S )*    )LambdaSymbolsymbols)R2R2_pR2_rR3_rR3_cR3_s	R2_origin)ManifoldPatch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sttt ddd\}}d|f| fgi}tdt|g|}	tdt|g|}
tt |
|	 W 5 Q R X t d\}}d|f|d	 fgi}tdt|g|}tdt|g|}tt || W 5 Q R X 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st||td| d| gkst||t|d |d gks8t||t|d |d	 gks\t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s$t||td| d	 d| d d	 gksTt||t| d	 d d	| d d gkst||t| d	 d	| gkst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sxt||td| d	 d| d d	 gkst||t| d	 d d	| d d gkst||t| d	 d	| gks t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)r0   C3r/   r0   r1         )r.   )r1   r0   )
r   r   r   	transformr$   AssertionErrorr%   NotImplementedError
ValueErrorr   )pqrsrelZR2_pqZR2_rsabZR2_aZR2_bcdZR2_cZR2_defr/   r0   r1    rD   a/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/diffgeom/tests/test_diffgeom.pytest_coordsys_transform   sx    
 




$$$$


(02&


(02rF   c            	   	   C   s>  t ddd\} }}}t| |g}t||g}tjd tjd  tjd  |dks\t	t
tjd tjd  tjd  |dkst	t
ttjd tjd  | d| kst	t ddd\}}t|g|gg}|tttt|tkst	t * |tttt|tks0t	W 5 Q R X d S )Nzx0, y0, r0, theta0T)realr,   r   r*   r+   )r   r   pointr   r   r;   xyrcallr6   r   e_rZdoitr$   r5   	applyfuncr    r'   coord_tuple_transform_to)	Zx0Zy0Zr0Ztheta0Zpoint_rZpoint_pr>   r?   mrD   rD   rE   test_R2Y   s     ,04$ 
rP   c               	   C   s  t ddd\} }}t| g|g|gg}|tttt|tksHt|tttt|tksjt|tttt|tkstt	 l |t
tt
t|tkst|t
tt
t|tkst|t
tt
t|tkstW 5 Q R X d S )Nza b cTr+   )r   r$   r	   r5   r   rM   r    r6   r
   r'   rN   )r>   r?   r@   rO   rD   rD   rE   test_R3p   sD    " 

 

 

 

 
rQ   c                  C   s2   t j\} }tj\}}|t|t| ks.td S N)r   r   r   Zrewriter#   r6   )rI   rJ   r;   thetarD   rD   rE   test_CoordinateSymbol   s    

rT   c                  C   s   t d\} }t| |g}|j| |hks,t|t|   krRt| |gksXn t|ttt| d |d  t	|| gkstd S )Nzx, yr,   )
r   r   rH   Zfree_symbolsr6   Zcoordsr$   r   r!   r"   )rI   rJ   r9   rD   rD   rE   
test_point   s
    ,rU   c                  C   s   t tjtjdkstt tjtj tjtj dks8tt tjtj tjtj tjtj ksbtt tjtj} | tjtjtjd tjd  d  ttj	 kstd S )Nr   r,   )
r   r   e_xe_yr6   rI   rL   rJ   r#   rS   )r@   rD   rD   rE   test_commutator   s
    "*rY   c                  C   sn   t jt j } t| }| d | ks&t|t jt jdks<t|t jt jt j t jksZtt|dksjtd S )Nr3   r   )r   rI   dyr   rK   r6   rW   rX   )ZxdyZdxdyrD   rD   rE   test_differential   s    r[   c                   C   s  t tjtjtjtjttjttj   kr<dksBn tt tjtjd tjtjksbtt tjtjtjd tjkstt tjtjtjtjkstt tjtjtjtj kstt tjtjtjtjttjttj   krdksn 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sFtt tjtjtjtjksftt tjtjtjtj kstt tjtjtjtjttjttj   krdksn tt tjtjd tjtjkstt tjtjtjd tjkstt tjtjtjtjks0tt tjtjtjtj ksPtt tjtjtjtjttjttj   krdksn tt tjtjd tjtjkstt tjtjtjd tjkstt tjtjtjtjkstt tjtjtjd tjd  tjd tjd  dtj tj ksDtt	tjtjtjtjdksftt	tjtjtjtjdkstd S )Nr3   r,      )
r   r   dxrZ   rW   rX   r6   rI   rJ   r   rD   rD   rD   rE   test_products   s|          ""    
""    
"" J"r^   c                   C   s   t tjtjttj  kr&dks,n tt tjtjttj  krRdksXn tt tjtjttjtj  krdksn tt tjtjttjtjkstt tjtj tjdkstt tjt	tj
tjtjtjdkstd S Nr   r3   )r   r   rW   rJ   r6   rI   r   rL   rX   r   r]   rZ   rD   rD   rD   rE   test_lie_derivative   s    ,,.   r`   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sXtt
tjtj	 | }|tjtjks~t|tjtj	 tjtj	 kstd S r_   )r   TPr   r]   rZ   r   r   rI   r6   rW   r   )chZcvdrD   rD   rE   test_covar_deriv   s     rc   c                  C   s   t d} tddg}tj tj tjtj  }t|| |\}}t	|dksPt
t	|dks`t
t|| |t\}}t	|dkst
t	|dkst
d S )Ntr3   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   rH   r   rJ   rW   rI   rX   r   strr6   r   )rd   Zstart_pointZvector_fieldZ	equationsZ	init_condrD   rD   rE   test_intcurve_diffequ   s    rf   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sLtt| | dksbtt|   dksxtt|  dkstt| | dkstt|dkstt|dkstt|dkstt|| dkst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sHtttdd	gdd	ggksjtt|td	d
gdd	ggkst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 )Nr\   r3   r,   r-   c                      s   t  S rR   r   rD   )	misform_arD   rE   <lambda>      z7test_helpers_and_coordinate_dependent.<locals>.<lambda>c                      s   t  S rR   rg   rD   )	misform_brD   rE   ri   	  rj   c                      s   t  S rR   rg   rD   )	misform_crD   rE   ri   
  rj   r   rV   c                      s   t  S rR   r   rD   )one_formrD   rE   ri     rj   c                      s   t  S rR   rm   rD   )
three_formrD   rE   ri     rj   c                      s   t  S rR   rm   rD   )metric_ambigrD   rE   ri     rj   c                      s   t  S rR   )r   rD   twoform_not_symrD   rE   ri     rj   c                      s   t  S rR   )r   rD   rq   rD   rE   ri     rj   c                      s   t  S rR   )r   rD   rq   rD   rE   ri     rj   c                      s   t  S rR   )r   rD   rq   rD   rE   ri     rj   )r   Zdrr]   r   rI   r;   rJ   r   rZ   r   rW   rX   r   r6   r   r%   r8   r   r$   )Ztwo_formZmetricZtwoform_not_TPZ
one_vectorZ
two_vectorZthree_vectorZtwo_wprD   )rp   rh   rk   rl   rn   ro   rr   rE   %test_helpers_and_coordinate_dependent   sT    
"""rs   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 rR   )r   rW   rD   rD   rD   rE   ri     rj   z(test_correct_arguments.<locals>.<lambda>c                   S   s   t t jS rR   )r   rW   r]   rD   rD   rD   rE   ri     rj   c                   S   s   t tjtjS rR   )r   r   rW   rI   rD   rD   rD   rE   ri     rj   c                   S   s   t tjtjS rR   )r   r   r]   rW   rD   rD   rD   rE   ri     rj   c                   S   s   t t tjS rR   )r   r   rW   rD   rD   rD   rE   ri   !  rj   c                   S   s   t t jS rR   )r   r]   rI   rD   rD   rD   rE   ri   #  rj   c                   S   s   t tjtjS rR   )r   r   r]   rD   rD   rD   rE   ri   %  rj   c                   S   s   t tjtjS rR   )r   r   rI   r]   rD   rD   rD   rE   ri   &  rj   c                   S   s   t tjg S rR   )r   r   r]   rD   rD   rD   rE   ri   (  rj   c                   S   s   t tjg S rR   )r   r   rI   rD   rD   rD   rE   ri   )  rj   r>   c                      s   t tj tddgS Nr3   r,   )r   r   r]   r   rH   rD   r>   rD   rE   ri   ,  rj   c                      s   t tj tddgS rt   )r   r   rI   r   rH   rD   ru   rD   rE   ri   -  rj   c                      s   t tj tddgS rt   )r   r   r]   r   rH   rD   ru   rD   rE   ri   /  rj   c                      s   t tj tddgS rt   )r   r   rI   r   rH   rD   ru   rD   rE   ri   0  rj   c                   S   s   t tjtj S rR   )r   r   rW   r]   rD   rD   rD   rE   ri   2  rj   c                   S   s   t tjtj S rR   )r   r   rW   r]   rD   rD   rD   rE   ri   3  rj   c                   S   s   t tjtj S rR   )r   r   rW   rX   rD   rD   rD   rE   ri   5  rj   c                   S   s   t tjtj S rR   )r   r   r]   rZ   rD   rD   rD   rE   ri   6  rj   )r%   r8   r   rD   rD   ru   rE   test_correct_arguments  s&    rv   c                  C   s   t  \} }t  \}}t  \}}t| | ks4tt| | | | ksLtt|| || ksdtt|| || ks|td|  | d|  d  |d|   kstd S rt   )r   Zcoord_functionsZbase_oneformsZbase_vectorsr    r6   )rI   rJ   r]   rZ   exZeyrD   rD   rE   test_simplify8  s    rx   c                  C   s   t jt j t jt j  } t jd t jd  t j t jt j t j  }t| | t jd t j dt jd  t j  t jt j t j  kstd S )Nr,   r-   )r   rI   rW   rJ   rX   r   expandr6   )XYrD   rD   rE   test_issue_17917C  s
    ,4r|   c               	   C   s   t dd} td| }t  td|ddgd W 5 Q R X t  td|ddg}W 5 Q R X t  t| j W 5 Q R X t  t|j W 5 Q R X d S )NMr,   PZCar2drI   rJ   )names)r   r   r'   r   listZpatchesZ
transforms)rO   r9   r@   rD   rD   rE   test_deprecationsI  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   r   r   Zsympy.simplifyr   r    Zsympy.functionsr!   r"   r#   Zsympy.matricesr$   Zsympy.testing.pytestr%   r&   r'   ra   rF   rP   rQ   rT   rU   rY   r[   r^   r`   rc   rf   rs   rv   rx   r|   r   rD   rD   rD   rE   <module>   s2   $TH	

1