o
    hs                     @   s  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
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mZmZ d d	lmZ d d
lmZ d dlmZ d dlZd dl Z dd Z!dd Z"dd Z#dd Z$dd Z%dd Z&dd Z'dd Z(dd Z)dd  Z*d!d" Z+d#d$ Z,d%d& Z-d'd( Z.d)d* Z/d+d, Z0d-d. Z1d/d0 Z2d1d2 Z3d3d4 Z4d5d6 Z5d7d8 Z6d9d: Z7d;d< Z8d=d> Z9d?d@ Z:dAdB Z;dCdD Z<dEdF Z=dGdH Z>dIdJ Z?dKdL Z@dMdN ZAdOdP ZBdQdR ZCdSdT ZDdUdV ZEdWdX ZFdYdZ ZGd[d\ ZHdS )]    )pi)symbols)trigsimp)cossin)eyezeros)ImmutableDenseMatrixsimplify)ReferenceFrameVectorCoordinateSymdynamicsymbolstime_derivativeexpressdot_check_frame)VectorTypeError)raisesNc                     s   t d t d} t dt d}t dt d|   jd | | jd |jd | d||  gks>J ||jd  d|  gksSJ d|gks`J ttfd	d
 tt fdd
 d S )NABCDEFg      ?r   c                      s     dS )N   
_dict_list )r   r   r    Y/var/www/vscode/kcb/lib/python3.10/site-packages/sympy/physics/vector/tests/test_frame.py<lambda>'       z test_dict_list.<locals>.<lambda>c                      s     dS Nr   r   r    )r   r   r    r!   r"   )   r#   )r   orient_axisxr   r   
ValueError)r   r   r    )r   r   r   r   r!   test_dict_list   s   r(   c               
      s  t d td d d ksJ td d d ksJ td d d ks(J tt fdd td} tdd}t d trOt d trOt d tsQJ    d  d  d  d  d  d ikslJ  d j ksuJ  d	d
|  j	g}| |d  d |d  d  t
|   d t|   |d  d t|   d t
|   iksJ  | d |d t|  |d t
|    d |d t
|  |d t|    d |d iksJ t|d   d  t
|  |  d t|  |  ksJ t|d   d  t|  |  d t
|  |  ks$J t|d  dks0J t|d  dd d t|   d t
|   ksLJ t|d  dd d  t
|   d t|   ksiJ t|d  dd d ksyJ t d  j  d  j   d  j	  | d |  j  d |  j  ksJ t|d |j |d |j  |d |j	   |d  | |j |d | |j  ksJ t|d |d  |d   dd d  d  t
|   d t|     d t|   d t
|    ksJ t|d |d  |d    d  d d  td|   d d   d  t
d|     d d td|     |   dksRJ t|d |j |d |j  |d |j	   |d t|  |d t
|    j |d t
|  |d t|    j  |d  j	  ksJ t|d |j |d |j  |d |j	   dd  d  j  d  j   d  j	  ksJ t d  j  d  j   d  j	  | d t|   d t
|   |j  d  t
|   d t|   |j   d |j	  ksJ t d  j  d  j   d  j	  |dd |d |j |d |j  |d |j	  ksKJ |dd
|  |j	g}dd |  D |d  d |d  d |d  d iksyJ  dd
|  j j  j	 g} |}t| d  d|d  t|  d |d d  d|d  t
| td   d  |d d  d|d  t| td   d  |d d  ksJ t| d  d|d  t| td   d |d d  d|d  t|  d  |d d  d|d  t
| td   d  |d d  ks J t| d  d|d  t
| td   d |d d  d|d  t| td   d  |d d  d|d  t|  d  |d d  ksiJ dS )z,Tests the coordinate variables functionalityr   Axr         c                      s   t d dS )Nr)      )r   r    r   r    r!   r"   2   r#   z&test_coordinate_vars.<locals>.<lambda>qr   AxisT	variablesNc                 S   s   i | ]	\}}||  qS r    r
   ).0kvr    r    r!   
<dictcomp>X   s    z(test_coordinate_vars.<locals>.<dictcomp>r   r,      N)r   r   r   r'   r   
isinstancevariable_mapframe	orientnewzr   r   r   r   r&   yr   r   itemsr   )r.   qdr   r2   r   mappingr    r-   r!   test_coordinate_vars,   s   
6:$
,0
>>8: Z\ H

.2
,,
.$&
,,
&
 
0

,


8

rB   c                  C   s  t d\} }}}t dd\}}}}td}|dd| |jg}	|	dd||	jg}
|
dd||
jg}|dd||jg}t d	\}}}|	|||	j ksPJ |
|||
j ||	j  ksaJ ||||j ||
j  ||	j  kswJ |d
d||jg}||dksJ ||	| |j ksJ ||
| |	j ||
j  ksJ ||| |	j ||
j  ||
j  ksJ ||| |j ksJ |	|||j ksJ |	|	dksJ |	|
| |
j ksJ |	|| |
j ||
j  ksJ |	|||j ||j  ksJ |
|||	j ||	j  ks&J |
|	||	j ks3J |
|
dks=J |
|| |
j ksKJ |
|||	j ||	j  ||j  ksbJ ||||	j ||	j  ||
j  ksyJ ||	||	j ||j  ksJ ||
||
j ksJ ||dksJ ||||	j ||	j  ||
j  ||j  ksJ ||||j ksJ ||	||j ||j  ksJ ||
||j ||	j  ||	j  ksJ ||||j ||	j  ||	j  ||
j  ksJ ||dksJ ||||j ||j  ||j   ||||j ||j  ||j  ksDJ ||| |j | |j  | |j  ks^J ||||j ||j  ||j  | |j  ks{J ||| |j | |j  | |j  ||j  ksJ t d}t dd}|dd|| ||f}||d|| ||  ||  ||    |j d|| ||   ||  ||   |j  d|| ||  ||   ||   |j  ksJ |dd| ||fd}||t|t| | t	||  |j t|t	| | t||  |j  t	|| | |j  ks9J |dd| |j|j f}||||j|j 
  ksXJ ||| |j|j 
  kskJ d S )Nq1 q2 q3 q4r*   r2   r   r/   r   r   r   zu1 u2 u3A2r   q0r   
Quaternionr+   r   Bodyi9  G)r   r   r<   r=   r&   r>   
ang_vel_inset_ang_velr   r   	normalize)q1q2q3q4q1dq2dq3dq4dr2   r   r   r   r   u1u2u3rD   rE   q0dr   r   rH   r    r    r!   test_ang_velf   sz   ",$.&$$..$8$.8&.4:>
(((
,$$*rX   c                  C   sf  t d\} }}}td}|dd| |jg}|dd||jg}|dd||jg}|dd||jg}|dd	| ||gd
}	||tt|  t| t| t	| t	|  t|  t	| t| t| t	| t|t	|   gt| t	| t|t| t	|   t	| t	| t| t| t|t	|  t	|  gt| t	| t|t	|t	| ggksJ ||tt	| t	| t	| t|t| t	| t| t| t	|    t| t| t| t	| t	|  t|t	|  t	| t	|t| t	| t| t| t	|    gt| t	| t|t| t	|   t	| t	| t| t| t|t	|  t	|  gt|t	|  t	| t|t	|t	| t| t| t|    t|t	| t| t| t	|  t|t| t	|  t	|t	|t	| t| t| t|    gg }
|

 tddksJ |	|tt	|t	| t|t	| t| gt| t| t	| t|t	|   t| t| t| t	| t	|  t| t	| gt| t| t|t	|  t	|  t|  t	| t|t| t	|   t	| t	| ggks1J d S )NrC   r2   r   r/   r   r   r   r   Space123r,   )r   r   r<   r=   r&   r>   dcmMatrixr   r   expandr   )rL   rM   rN   rO   r2   r   r   r   r   r   test_matr    r    r!   test_dcm   s   
0&
,$..

&<(r_   c               	   C   s  t d} t d}td\}}}td\}}}td\}}	}
tddd\}}}tddd\}}}tddd\}}}t|||g|||g||	|
gg}|| d| |j| }|j| }|j| }|| |jt	|
| |j |jt	|
| |j  |jt	|
| |j   || ||  |	|  |j || ||  |
|  |j  || ||  ||  |j  }|| | d	ksJ d S )
Nr   r   zC11 C12 C13zC21 C22 C23zC31 C32 C33r*   )levelDCMr   )r   r   r\   orientr&   r   r>   r=   rJ   r   dtrI   )r   r   c11c12c13c21c22c23c31c32c33c11dc12dc13dc21dc22dc23dc31dc32dc33dra   b1ab2ab3aexprr    r    r!   test_w_diff_dcm1   s8   rz   c            	   	   C   s  t d\} }}td}|dd| |jg}|dd||jg}|dd||jg}||j}|dd|}||||  krtt	|t	| t
| t
| t	| t
|t	|   t
| t
| t
|t	|  t	|  gt
| t	| t
|  t
| t
| t	| t	|  t
| t	| t
|t
| t	|   gt
|t
|  t	| t	| t	| ggksJ  J |||| | d	ksJ d S )
Nq1:4r2   r   axisr   r   r   ra   r   )r   r   r<   r&   r>   r=   r[   Tr\   r   r   rI   r   r   )	rL   rM   rN   r2   r   r   r   ra   r   r    r    r!   test_w_diff_dcm2   s,   $(&&*r~   c                  C   s>   G dd dt } | d}|ddd|jg}t|| sJ d S )Nc                   @   s   e Zd ZdS )z>test_orientnew_respects_parent_class.<locals>.MyReferenceFrameN)__name__
__module____qualname__r    r    r    r!   MyReferenceFrame  s    r   r   r   r/   r   )r   r<   r&   r9   )r   r   r   r    r    r!   $test_orientnew_respects_parent_class  s   r   c                  C   sn   t d} td}| dd|| jg}dd | jD }| jdd|| jg|d}| j|jks.J |j|ks5J d S )	Nr2   rL   ar/   c                 S      g | ]}|d  qS 1r    r3   r&   r    r    r!   
<listcomp>      z9test_orientnew_respects_input_indices.<locals>.<listcomp>bindices)r   r   r<   r=   r   )r2   rL   r   mindsr   r    r    r!   %test_orientnew_respects_input_indices  s   r   c                  C   s   t d} td}| dd|| jg}d|j |jd f d|j |jd f d|j |jd f g}d	}d
d | jD }d| |d f d| |d f d| |d f g}| j|d|| jg|d}|j|ksoJ |j|ksvJ |j|ks}J d S )Nr2   rL   r   r/   z\mathbf{\hat{%s}_%s}r   r*   r+   r   c                 S   r   r   r    r   r    r    r!   r   $  r   z8test_orientnew_respects_input_latexs.<locals>.<listcomp>z\mathbf{\hat{%s}_{%s}})latexs)r   r   r<   r=   namelowerr   
latex_vecs)r2   rL   r   def_latex_vecsr   r   new_latex_vecsr   r    r    r!   $test_orientnew_respects_input_latexs  s:   

r   c                  C   s   t d} td}| dd|| jg}d}dd | jD }| j|d|| jg|d}t|jD ]\}}|j|jd	 |j|  ks@J q-t|jD ]\}}|j|| ksSJ qFd S )
Nr2   rL   r   r/   r   c                 S   s   g | ]}d | d qS )notb_r   r    r   r    r    r!   r   8      z;test_orientnew_respects_input_variables.<locals>.<listcomp>r0   _)r   r   r<   r=   r   	enumeratevarlistr   )r2   rL   r   r   new_variablesr   jvarr    r    r!   'test_orientnew_respects_input_variables1  s    r   c                  C   s$   t d} td}|dd| d d S )Nzu:3Ir   spaceXYZ)r   r   r<   )ur   r    r    r!   test_issue_10348A  s   r   c                  C   s<   t d} | ddd| jg t d}| |dd|jg d S )Nr   r   r/   #   r   F   )r   r<   r>   rb   r=   )r   r   r    r    r!   test_issue_11503G  s   r   c                  C   s   t d} t d}td\}}|| ||j || j   | |||j ks(J | ||||j | j fks9J || ||jksDJ || |||j| jfksSJ | | |dks]J |||dksgJ d S )Nr2   r   zu1, u2r   )r   r   rJ   r&   r>   partial_velocity)r2   r   rT   rU   r    r    r!   test_partial_velocityN  s   "r   c               	   C   s  t d} t d}| |dtd | |tg dg dg dgks%J || tg dg dg dgks9J | |dtg dg dg d	g || tg dg dg d	gks_J | |tg dg dg d
gkssJ || j| |ksJ d S )Nr   r   ra   r,   r*   r   r   r   r*   r   r   r   r*   )r   r   )r   r   r   )r   r   r   )r   rb   r   r[   r\   r}   r   r   r    r    r!   test_issue_11498a  s   (($((r   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d tddksVJ d tddksbJ d tddksnJ t tfdd tdg dd jksJ d jksJ d jksJ t tfdd tdksJ td t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
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 tdksOJ d tdksaJ d S )'Nc                   S      t dS r$   r   r    r    r    r!   r"   t      z&test_reference_frame.<locals>.<lambda>c                   S   s
   t ddS )Nr2   r   r   r    r    r    r!   r"   u  s   
 c                   S   s   t dddgS )Nr2   r   r*   r   r    r    r    r!   r"   v      c                   S   s   t dg dS )Nr2   r   r*   r+   r   r    r    r    r!   r"   w  r   c                   S   s   t dg ddS Nr2   r   r   cr   r   r    r    r    r!   r"   x      c                   S   s   t dg dddgS Nr2   r   r   r*   r   r    r    r    r!   r"   y  r   c                   S   s   t dg dg dS Nr2   r   r   r   r    r    r    r!   r"   z  r   c                   S   s   t dg dg ddS r   r   r    r    r    r!   r"   {  s   
 c                   S   s   t dg dg dddgS r   r   r    r    r    r!   r"   }     
 c                   S   s   t dg dg dg dS r   r   r    r    r    r!   r"     r   r2   r   N_xr*   N_yr+   N_zc                          d S )Nr,   r    r    r2   r    r!   r"     r   r   r   r   r   c                      r   )Ndr    r    r   r    r!   r"     r   r   r   zq0 q1 q2 q3c                      s     ddS )Nra   r   rb   r    r   r    r!   r"     r   c                      s     dgdS )NrY   222r   r    )r   r2   rL   rM   rN   r    r!   r"     s    c                      s      djdj  gdS )Nr/   r+   r   )rb   r&   r>   r    r   r2   rL   r    r!   r"     s     c                           dS Nr/   r   r    r   r    r!   r"     r   c                      s     dgS r   r   r    r   r    r!   r"     r   c                      s     dgdS )NrF   r   r   r    )r   r2   rE   rL   rM   rN   r    r!   r"     r   c                      r   NrF   r   r    )r   r2   rE   r    r!   r"     r   c                           dgS r   r   r    r   r2   rE   rL   rM   r    r!   r"     r   c                      r   )NFoor   r    r   r    r!   r"     r   c                           dgdS )NrG   232r   r    r   r2   rL   rM   r    r!   r"     r   c                      r   )NrY   r   r   r    r   r    r!   r"     r   )r   	TypeErrorr'   r   r   r&   r>   r=   strr   
IndexErrorNotImplementedErrorset_ang_acc
ang_acc_inr   rJ   rI   r    r    )r   r   r2   rE   rL   rM   rN   r!   test_reference_frames  sN   r   c                   C   s   t tdd  d S )Nc                   S   r   r$   r   r    r    r    r!   r"     r   z"test_check_frame.<locals>.<lambda>)r   r   r    r    r    r!   test_check_frame  s   r   c                  C   sL  t d\} }}t| }t| }t|}t|}t|}t|}t|| || | ||  || | ||  g|| || | ||  || | ||  g| || || gg}	td}
td}||
d|	 ||
}|| |   ||   }|| |  ||   }t|	|
j
| dksJ t|	|j
| dksJ d S )Nr{   r   r   ra   r   )r   r   r   r\   r   rb   rI   diffr   r   r>   )rL   rM   rN   s1c1s2c2s3c3r[   r   r   AwBalpha2beta2r    r    r!   test_dcm_diff_16824  s&   .,
 r   c                  C   s,  t d\} }}t d\}}}t d\}}}t dd\}	}
}t dd\}}}t dd\}}}td}td}t| ||g|||g|||gg}|| ||  ||  |j ||	 ||  ||  |j  | | ||
  ||  |j  }||| |||ksJ |||ksJ ||| ksJ d S )Nc_{xx}, c_{yy}, c_{zz}c_{xy}, c_{xz}, c_{yx}c_{yz}, c_{zx}, c_{zy}r*   r   r   )	r   r   r\   r&   r>   r=   orient_explicitr[   rI   )cxxcyyczzcxycxzcyxcyzczxczydcxxdcyydczzdcxydcxzdcyxdcyzdczxdczyr   r   B_C_AB_w_Ar    r    r!   test_orient_explicit  s*   
r   c                  C   s   t d\} }}t d\}}}t d\}}}t| ||g|||g|||gg}	td}
td}||
|	 ||
t| ||g|||g|||ggksJJ d S )Nr   r   r   r   r   )r   r\   r   
orient_dcmr[   )r   r   r   r   r   r   r   r   r   r   r   r   r    r    r!   test_orient_dcm  s   
r   c                     s   t d t d j d  }  jd  } dj   }| |ks7J ||ks=J tt fdd d S )Nr   r   r*   r   c                      s     ddS )Nr*   )r%   r    r   r    r!   r"     r   z"test_orient_axis.<locals>.<lambda>)r   r%   r&   r[   r   r   )A1rD   A3r    r   r!   test_orient_axis  s   


r   c                  C   s   t d} t d}|| dd || ttdtdd td td gdtdtdgtdtd td tdd ggksDJ d S )Nr   r   )r*   r*   r   XYXr*   r+   r   )r   orient_body_fixedr[   r\   r   r   r   r    r    r!   test_orient_body  s   nr  c               
   C   st  t d\} }}td\}}}t dd\}}}tdtd}	}
|
|	| ||fd |	|
tt|  t| t| t| t|  t|  t| t| t| t| t|t|   gt| t| t|t| t|   t| t| t| t| t|t|  t|  gt| t| t|t|t| ggksJ |
|		|
tt| t| | t||  gt|| | gt|| t|t| |  ggksJ tdtd}	}
|
|	| ||fd |	|
tt|t| t| t|t| gt|t|  t|  t| t|t|  t|  t|  t| t|t| t|   gt|t|  t| t| t| t|t|   t|  t| t| t| t|  ggksmJ |
|		|
tt|| | gt| t| | gt|t| | ggksJ tdtd}	}
|
|	|||fd |
|	t
d	ksJ d S )
Nr{   c1:4r*   r   r   zxy   {   r   )r   r   r   r   r[   r\   r   r   rI   	to_matrixr   rL   rM   rN   r   r   r   rT   rU   rV   r   r   r    r    r!   test_orient_body_advanced  sL   
8&4&&" 
&6(4(r  c               
   C   st  t d\} }}td\}}}t dd\}}}tdtd}	}
|
|	||| fd |	|
tt|  t| t| t| t|  t|  t| t| t| t| t|t|   gt| t| t|t| t|   t| t| t| t| t|t|  t|  gt| t| t|t|t| ggksJ |
|		|
tt| t| | t||  gt|| | gt|| t|t| |  ggksJ tdtd}	}
|
|	||| fd |	|
tt|t| t| t|t| gt|t|  t|  t| t|t|  t|  t|  t| t|t| t|   gt|t|  t| t| t| t|t|   t|  t| t| t| t|  ggksmJ |
|		|
tt|| | gt| t| | gt|t| | ggksJ tdtd}	}
|
|	|||fd |
|	t
d	ksJ d S )
Nr{   r  r*   r   r   yxzr  r  r   )r   r   r   orient_space_fixedr[   r\   r   r   rI   r  r   r  r    r    r!   test_orient_space_advanced#  sL   
8&4&&" 
&6(4(r  c                  C   s  t d\} }}t j}td}td}||| ||fd ||}|jd d |ks,J |jd d d t|t| | | t|||  ksMJ |jd d d t|t| | | t|||  ksnJ |jd d d t|| | || ksJ dS )	zThis test ensures that the simplest form of that linear system solution
    is returned, thus the == for the expression comparison.zpsi, theta, varphir   r   ZXZr   r*   r+   N)	r   _tr   r   rI   argsr   r   r   )psithetaphitr   r   A_w_Br    r    r!   test_orient_body_simple_ang_velK  s   
(
(
6r  c                  C   sJ   t d} t d}|| dd || tg dg dg dgks#J d S )Nr   r   r   r   r   rZ   r   r   r   )r   r
  r[   r\   r   r    r    r!   test_orient_space]  s   ,r  c                  C   sH   t d} t d}|| d || tg dg dg dgks"J d S )Nr   r   )r   r   r   r   r  )r   orient_quaternionr[   r\   r   r    r    r!   test_orient_quaternionc  s   ,r  c                  C   s   t d} t d}t d}td\}}}|| | j| |||j| tjdd+}td | ||j| t|d jt	sAJ d	t
|d jv sLJ W d    d S 1 sWw   Y  d S )
Nr   r   r   a b cT)recordalwaysr   zxLoops are defined among the orientation of frames. This is likely not desired and may cause errors in your calculations.)r   r   r%   r&   warningscatch_warningssimplefilter
issubclasscategoryUserWarningr   message)r   r   r   r   r   r   wr    r    r!   test_looped_frame_warningi  s   

"r$  c                  C   s  t d} t d}t d}td\}}}|| | j| | j|tg ddt|t| gdt|t|ggiks:J |j| tg ddt|t|gdt| t|ggiksYJ |ji ks`J |||j| | j|tg ddt|t| gdt|t|ggiksJ |j| tg ddt|t|gdt| t|gg|tg ddt|t|gdt| t|ggiksJ |j|tg ddt|t| gdt|t|ggiksJ | ||j| |j|tg ddt|t|gdt| t|gg| tg ddt|t| gdt|t|ggiksJ | j|tg ddt|t|gdt| t|ggiks=J |j|tg ddt|t| gdt|t|ggiks]J d S )Nr   r   r   r  r   r   )r   r   r%   r&   	_dcm_dictr\   r   r   )r   r   r   r   r   r   r    r    r!   test_frame_dicty  s(   >>>40
>40@Dr&  c                  C   s$  t d} t d}t d}t d}td\}}}|| | j| |||j| |||j| |j|tg ddt|t|gdt| t|ggiksNJ |j|tg ddt|t|gdt| t|gg|tg ddt|t| gdt|t|ggiksJ |j| tg ddt|t|gdt| t|gg|tg ddt|t| gdt|t|ggiksJ | j|tg ddt|t| gdt|t|ggiksJ |j|jksJ |	|  t
| j | ||gksJ t
|j || gksJ t
| j |gksJ t
|j |gksJ | j| jks'J | ||j| | j|tg ddt|t|gdt| t|ggiksOJ | j| jksXJ |j|tg ddt|t| gdt|t|gg| tg ddt|t| gdt|t|ggiksJ d S )Nr   r   r   r   r  r   r   )r   r   r%   r&   r%  r\   r   r   
_dcm_cacher[   listkeys)r   r   r   r   r   r   r   r    r    r!   test_dcm_cache_dict  s:   >40
40
>
@40r*  c                  C   P   t d} t dg dd}| jt| j| jksJ |jt|j|jks&J d S Nr2   r   )r   23r   )r   xxr   outerr&   r2   r   r    r    r!   test_xx_dyad     r2  c                  C   P   t d} t dg dd}| jt| j| jksJ |jt|j|jks&J d S r,  )r   xyr   r0  r&   r>   r1  r    r    r!   test_xy_dyad  r3  r6  c                  C   r4  r,  )r   xzr   r0  r&   r=   r1  r    r    r!   test_xz_dyad  r3  r8  c                  C   r4  r,  )r   yxr   r0  r>   r&   r1  r    r    r!   test_yx_dyad  r3  r:  c                  C   r+  r,  )r   yyr   r0  r>   r1  r    r    r!   test_yy_dyad  r3  r<  c                  C   r4  r,  )r   yzr   r0  r>   r=   r1  r    r    r!   test_yz_dyad  r3  r>  c                  C   r4  r,  )r   zxr   r0  r=   r&   r1  r    r    r!   test_zx_dyad  r3  r@  c                  C   r4  r,  )r   zyr   r0  r=   r>   r1  r    r    r!   test_zy_dyad  r3  rB  c                  C   r+  r,  )r   zzr   r0  r=   r1  r    r    r!   test_zz_dyad  r3  rD  c                  C   sT   t d} t dg dd}| j| j| j | j ksJ |j|j|j |j ks(J d S r,  )r   r   r/  r;  rC  r1  r    r    r!   test_unit_dyadic  s    rE  c                  C   sb   t d} t d}|| | jd || }tt| }t|j	 d }|||ks/J d S )Nr2   r   r*   r   )
r   r%   r&   r[   pickleloadsdumpstupler%  r)  )r2   r   A_C_NN1r   r    r    r!   test_pickle_frame  s   
rL  )Isympy.core.numbersr   sympy.core.symbolr   sympy.simplifyr   (sympy.functions.elementary.trigonometricr   r   sympy.matrices.denser   r   sympy.matrices.immutabler	   r\   sympy.simplify.simplifyr   sympy.physics.vectorr   r   r   r   r   r   r   sympy.physics.vector.framer   sympy.physics.vector.vectorr   sympy.testing.pytestr   r  rF  r(   rB   rX   r_   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r$  r&  r*  r2  r6  r8  r:  r<  r>  r@  rB  rD  rE  rL  r    r    r    r!   <module>   sj    $:B!%/ '("