o
    GZh'                     @   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/   M/var/www/auris/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   Z_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   rF   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                      rH   rI   )dotr/   rK   r/   r0   rL      rM   )r@   r%   r   r'   r)   r   r+   rD   bcr   rN   r   Zbase_vectorZmeasure_numberr   Z	to_matrixr!   rA   r7   r   	TypeError)r.   r:   Zv4Zv5r/   rK   r0   test_vectoro   sb   $$rR   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+   Z	magnitude	normalizer%   r'   r)   rD   r   rO   rP   r!   r9   r/   r/   r0   test_vector_magnitude_normalize   s     (4rT   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   rG   )r   rD   rO   r%   r   r   r   r   r'   r   r   r+   )	Asr)   mZtest1Ztest2Ztest3Ztest4vr/   r/   r0   test_vector_simplify   s&   (0,<0r[   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!   Zorient_new_axisr   r)   )rW   r]   r/   r/   r0   test_vector_equals   s    r_   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ra   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 rI   )r)   rN   r/   r/   r/   r0   rL     rM   z!test_vector_dot.<locals>.<lambda>)r%   rN   r   r+   r'   r)   r   rQ   r/   r/   r/   r0   test_vector_dot   s,   rb   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 rI   )r%   r   r   r+   r'   r)   r   r/   r/   r/   r0   test_vector_cross  s*   rc   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)Zscalar)r%   r'   r)   r=   r   r!   r   ZOner   r+   ZZeror9   r/   r/   r0   test_projection*  s   >re   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"   rG   )
r
   rD   r!   r%   r'   r)   r	   r   r*   r   )rf   rZ   r/   r/   r0   test_vector_diff_integrate6  s"   "
, rg   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   rL   B  rM   z"test_vector_args.<locals>.<lambda>c                   S   s   t dtjS )Nr   )r   r   r+   r/   r/   r/   r0   rL   C  s    )r   
ValueErrorrQ   r/   r/   r/   r0   test_vector_argsA  s   ri   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)Zsympy.printing.reprrj   r!   r%   )rj   resr/   r/   r0   
test_sreprF  s   rl   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)	Zsympy.vectorr   r%   r'   r)   Z	is_VectorZ	is_scalarrN   r   )r   r!   r-   r.   r/   r/   r0   test_scalarN  s   rm   N)GZ
sympy.corer   r   r   r   r   Zsympy.simplifyr   r   Zsympy.core.functionr	   r
   r   Zsympy.core.numbersr   Zsympy.core.symbolr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.integrals.integralsr   Zsympy.matrices.immutabler   rA   Zsympy.vector.vectorr   r   r   r   r   Zsympy.vector.coordsysrectr   r   r   r   Zsympy.testing.pytestr   Zsympy.vector.kindr   Zsympy.core.kindr   r    r!   Zbase_vectorsr%   r'   r)   rD   rO   rP   r1   r2   r4   r;   r>   rF   rR   rT   r[   r_   ra   rb   rc   re   rg   ri   rl   rm   r/   r/   r/   r0   <module>   sL    
	;