o
    h                     @   sX  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 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$ edZ%e%& \Z'Z(Z)ed\Z*Z+Z,dd Z-dd Z.dd Z/dd Z0dd Z1dd Z2dd Z3dd Z4d d! Z5d"d# Z6d$d% Z7d&d' Z8d(d) Z9d*S )+    )RationalS)simplifytrigsimp)
DerivativeFunctiondiff)pi)symbols)sqrt)cossin)Integral)ImmutableDenseMatrix)Vector
BaseVector	VectorAdd	VectorMul
VectorZero
CoordSys3D)CrossDotcross)raises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/var/www/vscode/kcb/lib/python3.10/site-packages/sympy/vector/tests/test_vector.py
test_cross   s   PXT"r+   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)   r*   test_dot    s   P,,r,   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)   r*   test_vector_sympy)   s    r3   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      c                      
     dS Nr5   )outerr)   r'   r)   r*   <lambda>n      
 ztest_vector.<locals>.<lambda>c                      r6   r7   )dotr)   r9   r)   r*   r:   o   r;   )
isinstancer   r   r!   r#   r   r%   abcr   r<   r   base_vectormeasure_numberr   	to_matrixr   Matrixr/   r   	TypeError)r(   r2   v4v5r)   r9   r*   test_vector7   sb   $$rH   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   r5   r   )r   r%   	magnitude	normalizer   r!   r#   r>   r   r?   r@   r   r1   r)   r)   r*   test_vector_magnitude_normalizer   s     (4rK   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, mr5   r   r-   r   r   r4   )r
   r>   r?   r   r   r	   r   r   r!   r   r   r%   )	Asr#   mtest1test2test3test4vr)   r)   r*   test_vector_simplify   s&   (0,<0rV   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   r5   c                   S   s
   t dS r7   )r#   r<   r)   r)   r)   r*   r:      r;   z!test_vector_dot.<locals>.<lambda>)r   r<   r   r%   r!   r#   r   rE   r)   r)   r)   r*   test_vector_dot   s,   rW   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 r7   )r   r   r   r%   r!   r#   r   r)   r)   r)   r*   test_vector_cross   s*   rX   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   r-   r      T)scalar)r   r!   r#   
projectionr   r   r   Oner   r%   Zeror1   r)   r)   r*   test_projection   s   >r^   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   r4   )
r   r>   r   r   r!   r#   r   r   r$   r   )r_   rU   r)   r)   r*   test_vector_diff_integrate   s"   "
, r`   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)   r*   r:      r;   z"test_vector_args.<locals>.<lambda>c                   S   s   t dtjS )Nr   )r   r   r%   r)   r)   r)   r*   r:      s    )r   
ValueErrorrE   r)   r)   r)   r*   test_vector_args   s   rb   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.reprrc   r   r   )rc   resr)   r)   r*   
test_srepr   s   rf   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   r-   r.   TF)	sympy.vectorr   r   r!   r#   	is_Vector	is_scalarr<   r   )r   r   r'   r(   r)   r)   r*   test_scalar  s   rj   N):
sympy.corer   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   rD   sympy.vector.vectorr   r   r   r   r   sympy.vector.coordsysrectr   r   r   r   sympy.testing.pytestr   r   base_vectorsr   r!   r#   r>   r?   r@   r+   r,   r3   rH   rK   rV   rW   rX   r^   r`   rb   rf   rj   r)   r)   r)   r*   <module>   s:    
	;