o
    ٷi'                     @   s  d dl 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 d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZmZmZm Z  d dl!m"Z" d dlm#Z#m$Z$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+ d dl&m,Z, e"dZ-e-. \Z/Z0Z1ed\Z2Z3Z4dd Z5e,dd Z6dd Z7dd Z8dd Z9dd Z:dd  Z;d!d" Z<d#d$ Z=d%d& Z>d'd( Z?d)d* Z@d+d, ZAd-d. ZBd/d0 ZCd1d2 ZDd3d4 ZEd5d6 ZFd7S )8    )RationalSAddMulI)simplifytrigsimp)
DerivativeFunctiondiff)pi)symbols)sqrt)cossin)Integral)ImmutableDenseMatrix)Vector
BaseVector	VectorAdd	VectorMul
VectorZero
CoordSys3D)CrossDotcross)raises)
VectorKind)
NumberKind)XFAILCza b cc                  C   sp  t jt t jt j t  } t jt t jt  t jt  }t| |tt jt j t jd t j  t jt j t jt j  t jt j  ksDJ t| | t jd t j t j t j t j  t jt j t jt jd   t j  kspJ t	| |t jd t j t j t j t j  t jt j t jt jd   t j  ksJ t| |t||  ksJ t	| |t	||  t
jksJ d S )N      )r!   xizjykr   doitr   r   zerov1v2 r/   R/home/ubuntu/.local/lib/python3.10/site-packages/sympy/vector/tests/test_vector.py
test_cross   s   PXT"r1   c                  C   sZ   t jt t jt j t  } t jt t jt  t jt  }t| |t||  tj	ks+J d S )N)
r!   r$   r%   r&   r'   r(   r)   r   r   r+   r,   r/   r/   r0   test_cross_xfail%   s   "r2   c                  C   s   t jt t jt j t  } t jt t jt  t jt  }t| |tt jt j t jd t j  t jt j t jt j  t jt j  ksDJ t| | t jd t jt jd   ksZJ t||  t jd t jt jd   kspJ t| |t|| ks|J d S Nr"   )	r!   r$   r%   r&   r'   r(   r)   r   r*   r,   r/   r/   r0   test_dot,   s   P,,r4   c                  C   s   dt  } | t d ksJ | jt diksJ dt dt   dt  }dt dt   t dt  t }||ks7J | | ksAJ dS )zq
    Test whether the Vector framework confirms to the hashing
    and equality testing properties of SymPy.
    r#         r"   N)r'   
componentsr%   r)   __hash__r-   r.   v3r/   r/   r0   test_vector_sympy5   s    r;   c                  C   s  t jjttu s
J t jjttu sJ t jjttu sJ t jjtu s&J t jjtu s.J t j	jtu s6J t
tttttu sDJ t
dt jjttu sQJ t jt t j	t j	 t  } t jt t jt  t j	t  }| jttu svJ |jttu sJ | | jttu sJ t| |jttu sJ t| | jttu sJ t| |jttu sJ td| jttu sJ t jttu sJ | |jttu sJ || jttu sJ d S r3   )r!   r%   kindr   r   r'   r)   r$   r(   r&   r   _kind_dispatcherr   r   r*   r   r   r   
projectionr,   r/   r/   r0   	test_kindC   s(   r?   c                  C   s   t ttjtjtsJ tjt tjtj t  } tjt tjt  tjt	  }t t| |ts2J t
tjtjtj	gj}t
g d}|| }|d jt ksQJ t |d tsZJ d S )N)   r"   r#   r   )
isinstancer   r!   r%   r'   r   r$   r&   r(   r)   MatrixTr<   r   )r-   r.   Eaavr/   r/   r0   test_vectoradd_   s   rG   c                     s  t ttsJ ttksJ ttksJ ttksJ tt tjks"J ttj tks+J ttj tks4J tjdks;J tj tjksDJ tt tt  t	t   td t td t  t	d t  }  |  }d  }tt }t  t
suJ    tjks~J  tj  ksJ  ttksJ  ttksJ  tt	ksJ t| td ksJ t| td ksJ t| t	d ksJ |ttd t ksJ |ttd t ksJ |tt	d t	 ksJ  |  |   ksJ  |  d|    ksJ t   t ksJ t |tsJ |jtksJ |jtks$J t |ts,J t |t
s4J t |ts<J t tjtsEJ t tjtsNJ t  d tsXJ  tttgtgt	ggksjJ tjtdikstJ |jttiks~J  jtttttt	iksJ t
 tj ksJ tt  t ksJ tdttksJ t
 tj ksJ tdtjtjksJ tt fdd tt fdd d S )Nr   r"   r@   c                      
     dS Nr@   )outerr/   r-   r/   r0   <lambda>      
 ztest_vector.<locals>.<lambda>c                      rI   rJ   )dotr/   rL   r/   r0   rM      rN   )rA   r%   r   r'   r)   r   r+   rE   bcr   rO   r   base_vectormeasure_numberr   	to_matrixr!   rB   r7   r   	TypeError)r.   r:   v4v5r/   rL   r0   test_vectoro   sb   $$rX   c                  C   sZ  t j dks	J t j t jksJ t dksJ t dks#J t dks+J t tks3J t tks;J t tksCJ tt } |  tttd  t ksWJ |  ttd kscJ tt t	t  t
t  }| ttd t	d  t
d  ksJ | ||  ksJ tt }| tdd tj tdd tj  ksJ d S )Nr   r@   r"   )r   r+   	magnitude	normalizer%   r'   r)   rE   r   rP   rQ   r!   r9   r/   r/   r0   test_vector_magnitude_normalize   s     (4r[   c            	      C   s  t d\} }}}dt dt  t }|t@ tt tt  ks J t|}|t@ tt tt  ks2J | t|ks<J | d |d  dt | |d   t }t|}|t@ | d |d  dt | |d   kslJ ddt  dddt    ddt   t }t|}|t@ dksJ dt td  dtd   dtd  t  tt d  t }t|}|t@ dt ksJ tttt d t t }t	|dtttd  d  t d	t  ksJ t	||	 ksJ tt
jt
jksJ d S )
Nz
A, s, k, mr@   r"   r5   r#   r   rH   )r   rE   rP   r%   r   r   r   r   r'   r   r   r+   )	Asr)   mtest1test2test3test4vr/   r/   r0   test_vector_simplify   s&   (0,<0rf   c                  C   s   dt  tdu sJ t t du sJ tdtd ttdd  } | t  dt  du s1J | t  dt  du s>J tdtd tj}|j tjdu sSJ |j tj du s^J d S )Nr"   FT   r#   D)r%   equalsr'   r   r!   orient_new_axisr   r)   )r^   rh   r/   r/   r0   test_vector_equals   s    rk   c                   C   sF   t t dt  t  dt   t  t dt  t  dt  ks!J d S )Nr@   r"   )r   r%   r'   r)   	conjugater/   r/   r/   r0   test_vector_conjugate   s   Frm   c                   C   s~  t tjdks
J tjt dksJ t tj@ dksJ t t dks&J t tdks/J t tdks8J t t @ dks@J t t@ dksHJ t t@ dksPJ tt dksYJ ttdksbJ ttdkskJ tt @ dkssJ tt@ dks{J tt@ dksJ tt dksJ ttdksJ ttdksJ tt @ dksJ tt@ dksJ tt@ dksJ ttdd  d S )Nr   r@   c                   S   s
   t dS rJ   )r)   rO   r/   r/   r/   r0   rM     rN   z!test_vector_dot.<locals>.<lambda>)r%   rO   r   r+   r'   r)   r   rU   r/   r/   r/   r0   test_vector_dot   s,   rn   c                   C   s  t tjtjksJ tjt tjksJ t t tjks J t ttks)J t tt ks3J t t A tjks<J t tA tksDJ t tA t ksMJ tt t ksWJ tttjksaJ ttt ksjJ tt A t kssJ ttA tjks|J ttA t ksJ tt tksJ ttt  ksJ tttjksJ tt A tksJ ttA t  ksJ ttA tjksJ tdttdksJ d S rJ   )r%   r   r   r+   r'   r)   r   r/   r/   r/   r0   test_vector_cross  s*   ro   c                  C   s   t t t } dt  dt  }dt  dt  }| | t t t ks#J | |tddtj  tddtj  tddtj  ksBJ | j| ddtjksNJ | j|ddtddks\J || tj	ksfJ |j| ddtj
ksrJ d S )Nr#   r5   r      T)scalar)r%   r'   r)   r>   r   r!   r   Oner   r+   Zeror9   r/   r/   r0   test_projection*  s   >rt   c                  C   s  t d} | ttj td tj  tj }t|tt| ttj td tj  dtj  tks2J t|t|t  kr\t|t   kr\t| tttj dt tj  ks_J  J t	|tt	| tttj t	td ttj  t	dttj  ksJ d S )Nfr"   rH   )
r
   rE   r!   r%   r'   r)   r	   r   r*   r   )ru   re   r/   r/   r0   test_vector_diff_integrate6  s"   "
, rv   c                   C   s    t tdd  t tdd  d S )Nc                   S   s
   t dtS )Nr#   )r   r!   r/   r/   r/   r0   rM   B  rN   z"test_vector_args.<locals>.<lambda>c                   S   s   t dtjS )Nr   )r   r   r+   r/   r/   r/   r0   rM   C  s    )r   
ValueErrorrU   r/   r/   r/   r0   test_vector_argsA  s   rx   c                  C   s&   ddl m}  d}| tj|ksJ d S )Nr   )sreprzCoordSys3D(Str('C'), Tuple(ImmutableDenseMatrix([[Integer(1), Integer(0), Integer(0)], [Integer(0), Integer(1), Integer(0)], [Integer(0), Integer(0), Integer(1)]]), VectorZero())).i)sympy.printing.reprry   r!   r%   )ry   resr/   r/   r0   
test_sreprF  s   r|   c                  C   s   ddl m}  | d}d|j d|j  d|j  }d|j d|j  d|j  }|jdu s/J |jdu s6J ||jdu s@J ||jdu sJJ d S )	Nr   r   r!   r#   r5   r6   TF)	sympy.vectorr   r%   r'   r)   	is_Vector	is_scalarrO   r   )r   r!   r-   r.   r/   r/   r0   test_scalarN  s   r   N)G
sympy.corer   r   r   r   r   sympy.simplifyr   r   sympy.core.functionr	   r
   r   sympy.core.numbersr   sympy.core.symbolr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   sympy.integrals.integralsr   sympy.matrices.immutabler   rB   sympy.vector.vectorr   r   r   r   r   sympy.vector.coordsysrectr   r   r   r   sympy.testing.pytestr   sympy.vector.kindr   sympy.core.kindr   r    r!   base_vectorsr%   r'   r)   rE   rP   rQ   r1   r2   r4   r;   r?   rG   rX   r[   rf   rk   rm   rn   ro   rt   rv   rx   r|   r   r/   r/   r/   r0   <module>   sL    
	;