
    Qis                        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 Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d  Z4d! Z5d" Z6d# Z7d$ Z8d% Z9d& Z:d' Z;d( Z<d) Z=d* Z>d+ Z?d, Z@d- ZAd. ZBd/ ZCd0 ZDd1 ZEd2 ZFd3 ZGd4 ZHdS )5    )pi)symbols)trigsimp)cossin)eyezeros)ImmutableDenseMatrixsimplify)ReferenceFrameVectorCoordinateSymdynamicsymbolstime_derivativeexpressdot_check_frame)VectorTypeError)raisesNc                     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    sJ                     d          |gk    sJ t	          t
          fd	           t	          t
          fd
           d S )NABCDEFg      ?r   c                  0                          d          S )N   
_dict_list)r   r   s   }/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/physics/vector/tests/test_frame.py<lambda>z test_dict_list.<locals>.<lambda>'       q||Aq11     c                  0                          d          S Nr   r!   )r   r   s   r#   r$   z test_dict_list.<locals>.<lambda>)   r%   r&   )r   orient_axisxr"   r   
ValueError)r   r   r   r   r   r   s     @@@@r#   test_dict_listr,      sg   sAsAsAsAsAsAMM!QS#MM!QS#MM!QS#<<1!Q1----MM!QS#<<1!Q****<<1!Q**** :11111222
:1111122222r&   c                     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           t	          d          } t	          dd          }t          d         t                    r6t          d         t                    rt          d         t                    sJ                               d         d         d         d         d         d         ik    sJ d         j        k    sJ                     dd	| j	        g          }|                              |d         d         |d         d          t          |           z  d         t          |           z  z   |d         d         t          |           z  d         t          |           z  z   ik    sJ                     |          d         |d         t          |           z  |d         t          |           z  z
  d         |d         t          |           z  |d         t          |           z  z   d         |d         ik    sJ t          |d                   d          t          |           z  |z  d         t          |           z  |z  z   k    sJ t          |d                   d          t          |           z  |z  d         t          |           z  |z  z
  k    sJ t          |d                   dk    sJ t          |d         d
          d         t          |           z  d         t          |           z  z   k    sJ t          |d         d
          d          t          |           z  d         t          |           z  z   k    sJ t          |d         d
          d         k    sJ t          d         j        z  d         j        z  z   d         j	        z  z   |          d         |z  j        z  d         |z  j        z  z
  k    sJ t          |d         |j        z  |d         |j        z  z   |d         |j	        z  z             |d          |z  |j        z  |d         |z  |j        z  z   k    sJ t          |d         |d         z  |d         z  d
          d         d          t          |           z  d         t          |           z  z   z  d         t          |           z  d         t          |           z  z   z  k    sJ t          |d         |d         z  |d         z            d         d         dz   t          d| z            z  dd         z  d         z  t          d| z            z  z
  d         dz  t          d| z            z  z   z  |z  z
                                  dk    sJ t          |d         |j        z  |d         |j        z  z   |d         |j	        z  z             |d         t          |           z  |d         t          |           z  z
  j        z  |d         t          |           z  |d         t          |           z  z   j        z  z   |d         j	        z  z   k    sJ t          |d         |j        z  |d         |j        z  z   |d         |j	        z  z   d
                                          d         j        z  d         j        z  z   d         j	        z  z   k    sJ t          d         j        z  d         j        z  z   d         j	        z  z   |          d         t          |           z  d         t          |           z  z   |j        z  d          t          |           z  d         t          |           z  z   |j        z  z   d         |j	        z  z   k    sJ t          d         j        z  d         j        z  z   d         j	        z  z   |d
                                          |d         |j        z  |d         |j        z  z   |d         |j	        z  z   k    sJ |                    dd	|  |j	        g          }d |                                                              D             |d         d         |d         d         |d         d         ik    sJ                     dd	| j        j        z   j	        z   g          }                    |          }t!          |d                            d|d         z  t          |           z  dz  |d         dz  z   d|d         z  t          | t&          dz  z             z  dz  z
  |d         dz  z   d|d         z  t          | t&          dz  z             z  dz  z
  |d         dz  z   k    sJ t!          |d                            d|d         z  t          | t&          dz  z             z  dz  |d         dz  z   d|d         z  t          |           z  dz  z   |d         dz  z   d|d         z  t          | t&          dz  z             z  dz  z
  |d         dz  z   k    sJ t!          |d                            d|d         z  t          | t&          dz  z             z  dz  |d         dz  z   d|d         z  t          | t&          dz  z             z  dz  z
  |d         dz  z   d|d         z  t          |           z  dz  z   |d         dz  z   k    sJ dS )z,Tests the coordinate variables functionalityr   Axr         c                  &    t          d d          S )Nr.      )r   )r   s   r#   r$   z&test_coordinate_vars.<locals>.<lambda>2   s    }T1a88 r&   qr   AxisT	variablesNc                 >    i | ]\  }}||                                 S  r   ).0kvs      r#   
<dictcomp>z(test_coordinate_vars.<locals>.<dictcomp>X   s&    CCCAQ

CCCr&   r   r2      N)r   r   r   r+   r   
isinstancevariable_mapframe	orientnewzr   r   r   r   r*   yr   r   itemsr   )r3   qdr   r7   r   mappingr   s         @r#   test_coordinate_varsrI   ,   s   sAq!$$!,,,,q!$$!,,,,q!$$!,,,,
:8888999sA	Q		BadM** +adM**+adM**+ + + >>!1adAaD1qtAaD AAAAAQ4:????	C!QS**A>>!1qtQqTAaD5Q<!A$s1vv+3M!"1qtCFF{QqT#a&&['@!B B B B B>>!1qtCFF{QqT#a&&['@!"1qtCFF{QqT#a&&['@!A$!!N N N N N1Q4##!uSVV|B1c!ffR'GGGGG1Q4##!uSVV|B1c!ffR'GGGGG1Q4##q((((1Q4d+++qtCFF{QqT#a&&[/HHHHH1Q4d+++!uSVV|ad3q66k/IIIII1Q4d+++qt33331Q48ad13h.1ac91==1bqQRtTVwWXWZ{AZZZZZ1Q48ad13h.1ac91==1Q413QRSTQUVXQXYZY\Q\A\\\\\1Q4!9QqT>1555Q4!A$s1vv!SVV+,ad3q66kAaDQK.GHI I I IAaD1IadNA..qTAaD!G8C!HH$qtVAaD[QqS!"qT1WS1XX !"# %-HJJ!4 4 4 4 1Q48ad13h&1ac1155aDQK!A$s1vv+%qs*ad3q66kQ4A;/. d13h'' ' ' ' 1Q48ad13h&1ac11!# # ##+8::1acAaDH1DqtACx1OP P P P1Q48ad13h&1ac1155aDQK!A$s1vv+%qs*qTE#a&&L1Q4A;&+,./d13h77 7 7 7 1Q48ad13h&1ac11!# # ##+8::1acAaDH1DqtACx1OP P P P	C1"ac++ACC):):)@)@)B)BCCCqT1Q41qtQqT1Q401 1 1 1	C!QS13Y_!566AnnQGGAaDM""q1vc!ff}Q1a'?'(1vc!bd(mm';A'=(>'(tAv(.01!A$s1r!t8}}0DQ0F(G ()tAv(. / / / / GAaDM""b1gc!bd(mm&;A&=Q46'adF3q66M!O'$&'d1f'-/01vc!bd(mm/CA/E'FHI!Q'O O O O OGAaDM""b1gc!bd(mm&;A&=!Q&FQqT6#a"Q$h--!'"$%aDF'+-.qtVCFF]1_'=?@tAv'F F F F F F Fr&   c                     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        z  k    sJ |
                    |          ||
j        z  ||	j        z  z   k    sJ |                    |          ||j        z  ||
j        z  z   ||	j        z  z   k    sJ |                    d
d||j        g          }|                    |          dk    sJ |                    |	          | |j        z  k    sJ |                    |
          | |	j        z  ||
j        z  z
  k    sJ |                    |          | |	j        z  ||
j        z  z
  ||
j        z  z
  k    sJ |                    |          | |j        z  k    sJ |	                    |          ||j        z  k    sJ |	                    |	          dk    sJ |	                    |
          | |
j        z  k    sJ |	                    |          | |
j        z  ||
j        z  z
  k    sJ |	                    |          ||j        z  ||j        z  z
  k    sJ |
                    |          ||	j        z  ||	j        z  z   k    sJ |
                    |	          ||	j        z  k    sJ |
                    |
          dk    sJ |
                    |          | |
j        z  k    sJ |
                    |          ||	j        z  ||	j        z  z   ||j        z  z
  k    sJ |                    |          ||	j        z  ||	j        z  z   ||
j        z  z   k    sJ |                    |	          ||	j        z  ||j        z  z   k    sJ |                    |
          ||
j        z  k    sJ |                    |          dk    sJ |                    |          ||	j        z  ||	j        z  z   ||
j        z  z   ||j        z  z
  k    sJ |                    |          ||j        z  k    sJ |                    |	          ||j        z  ||j        z  z
  k    sJ |                    |
          ||j        z  ||	j        z  z
  ||	j        z  z
  k    sJ |                    |          ||j        z  ||	j        z  z
  ||	j        z  z
  ||
j        z  z
  k    sJ |                    |          dk    sJ |                    |||j        z  ||j        z  z   ||j        z  z              |                    |          ||j        z  ||j        z  z   ||j        z  z   k    sJ |                    |          | |j        z  | |j        z  z   | |j        z  z   k    sJ |                    |          ||j        z  ||j        z  z   ||j        z  z   | |j        z  z   k    sJ |                    |          | |j        z  | |j        z  z   | |j        z  z   ||j        z  z   k    sJ t          d          }t          dd          }|                    dd|| ||f          }|                    |          d||z  ||z  z   ||z  z
  || z  z
  z  |j        z  d||z  || z  z   ||z  z
  ||z  z
  z  |j        z  z   d||z  ||z  z   || z  z
  ||z  z
  z  |j        z  z   k    sJ |                    dd| ||fd          }|                    |          t          |          t          |          z  |z  t          |          |z  z   |j        z  t          |          t          |          z  |z  t          |          |z  z
  |j        z  z   t          |          |z  |z   |j        z  z   k    sJ |                    dd| |j        |j        z   f          }|                    |          ||j        |j        z   
                                z  k    sJ |                    |          | |j        |j        z   
                                z  k    sJ d S )Nq1 q2 q3 q4r/   r7   r   r4   r   r   r   zu1 u2 u3A2r   q0r   
Quaternionr0   r   Bodyi9  G)r   r   rC   rD   r*   rE   
ang_vel_inset_ang_velr   r   	normalize)q1q2q3q4q1dq2dq3dq4dr7   r   r   r   r   u1u2u3rL   rM   q0dr   r   rP   s                         r#   test_ang_velr`   f   s   #M22NBB'q99Cc3sA	C"ac++A	C"ac++A	C"ac++A	C"ac++A
++JBB<<??sACi''''<<??sACi3)33333<<??sACi3)3sACi?????	
T6B9	-	-B<<??a<<??sd13h&&&&<<??sd13hQS00000<<??sd13hQS03qs7:::::<<tACx''''<<??c!#g%%%%<<??a<<??eACi''''<<??eACi#ac'11111<<s13wQS00000<<??c!#gAC/////<<??c!#g%%%%<<??a<<??sd13h&&&&<<s13wQS03qs7:::::<<??c!#gAC/#ac'99999<<??c!#gAC/////<<??c!#g%%%%<<??a<<s13wQS03qs7:SWDDDDD==s24x''''==s24x#ac'11111==s13wQS03qs7:::::==s13wQS03qs7:SWDDDDD==!!!!MM!RVbf_r!#v-...<<??r13h"ac1RH<<<<<<<??sACiB3)3sACi?????<<??r13h"ac1RH<aczIIIII<<??sACiB3)3sACi?3)KKKKK			B
q
!
!C	CBB'788A<<??	S2Xb 38+cBh67!#=	S2Xb 38+cBh67!#=	>	S2Xb 38+cBh67!#=	>? ? ? ?
 	
C"b"s33A<<??BB 3c"ggck A13F	RR	s2wws{	*AC/ 036r773;3Dac2I J K K K K	C"acACi11A<<??cQS13Y$9$9$;$;;;;;;<<??sdacACi%:%:%<%<<<<<<<<r&   c                     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          |          z  t          |          z  t          |           t          |          z  z   t          |            t          |          z  t          |           t          |          z  t          |          z  t          |          t          |           z  z   gt          |           t          |          z  t          |          t          |          z  t          |           z  z   t          |           t          |          z  t          |           t          |          z  t          |          t          |           z  t          |          z  z
  gt          |           t          |          z  t          |          t          |          t          |          z  gg          k    sJ |                    |          t          t          |           t          |          z  t          |          z  t          |          t          |           t          |          z  t          |           t          |          z  t          |          z  z   z  z
  t          |           t          |          z  t          |           t          |          z  t          |          z  z
  t          |          t          |           z  t          |          z  t          |          t          |           t          |          z  t          |           t          |          z  t          |          z  z   z  z   gt          |           t          |          z  t          |          t          |          z  t          |           z  z   t          |           t          |          z  t          |           t          |          z  t          |          t          |           z  t          |          z  z
  gt          |          t          |           z  t          |          z  t          |          t          |          t          |          z  t          |           t          |          z  t          |          z  z   z  z
  t          |          t          |          z  t          |           t          |          z  t          |          z  z
  t          |          t          |          z  t          |           z  t          |          t          |          t          |          z  t          |           t          |          z  t          |          z  z   z  z   gg          z
  }
|

                                t          dd          k    sJ |	                    |          t          t          |          t          |          z  t          |          t          |          z  t          |           gt          |           t          |          z  t          |          z  t          |          t          |           z  z
  t          |           t          |          z  t          |          z  t          |           t          |          z  z   t          |           t          |          z  gt          |           t          |          z  t          |          t          |           z  t          |          z  z   t          |            t          |          z  t          |          t          |          z  t          |           z  z   t          |           t          |          z  gg          k    sJ d S )NrK   r7   r   r4   r   r   r   r   Space123r2   )r   r   rC   rD   r*   rE   dcmMatrixr   r   expandr	   )rT   rU   rV   rW   r7   r   r   r   r   r   test_mats              r#   test_dcmrh      s   #M22NBBsA	C"ac++A	C"ac++A	C"ac++A	C"ac++A	C2r2,66A5588vr77SWW	s2ww	&R3r77):	:c"ggIB=R3r77"SWW,s2wwR/@@	BDGGGBEb''CGG#c"gg-E./22wwR/@#b''GGC"ggB'#b''1C2D37:2wwYR5H#b''B#b''5	       uuQxx&
b''CGG
c"gg
%BSWW9s2ww3FB#b''CGG#4$ )% %(+Bi#b''&9CGGGG="gg= '"2wwR03r77:SWW#b''	BIb''CGG#c"gg-I. >/  /
0 36b''CGG2CB#b''CGG#3$%(WWs2ww%6B#b''8IGGc"ggB'9(2)+.r77SWW+<s2ww+FB3r77SWW$s2wwR'83r77'BBC,DEHWWBFb''CGG+c"gg5F67:2wwR7H3r777RB3r77SWW,s2wwR/@3r77/JJK8L+M	N	O 	O 	OH ??a++++5588v
b''#b''/3r773r77?SWWH	5	RRR	 3r773r77?	2CGGCGGOCGG4KBB5RR	*,/GGCGGOBBB- #&r773r77!2SWWSWW_SWW5L!L	RR,	       r&   c            
      T   t          d          } t          d          }t          d          \  }}}t          d          \  }}}t          d          \  }}	}
t          dd          \  }}}t          dd          \  }}}t          dd          \  }}}t          |||g|||g||	|
gg          }|                    | d|           |j                            |           }|j                            |           }|j                            |           }|                    | |j        t          |
                    |           |j                  z  |j        t          |
                    |           |j                  z  z   |j        t          |
                    |           |j                  z  z              ||z  ||z  z   |	|z  z   |j        z  ||z  ||z  z   |
|z  z   |j        z  z   ||z  ||z  z   ||z  z   |j        z  z   }|                    |           |z
  d	k    sJ d S )
Nr   r   zC11 C12 C13zC21 C22 C23zC31 C32 C33r/   )levelDCMr   )r   r   re   orientr*   r   rE   rD   rR   r   dtrQ   )r   r   c11c12c13c21c22c23c31c32c33c11dc12dc13dc21dc22dc23dc31dc32dc33drk   b1ab2ab3aexprs                            r#   test_w_diff_dcm1r      s;    	sAsA"=11MCc"=11MCc"=11MCc%m1===D$%m1===D$%m1===D$
	c3	c3	c3  C HHQs3--

C3--

C3--

C MM!QS#shhqkk13//0S#shhqkk13//01S#shhqkk13//01 2 2 2
 4x#d("SX-qs24x#d("SX-qs234x#d("SX-qs23D <<??T!Q&&&&&&r&   c                     t          d          \  } }}t          d          }|                    dd| |j        g          }|                    dd||j        g          }|                    dd||j        g          }|                    |          j        }|                    dd|          }|                    |          |                    |          cxk    rt          t          |          t          |          z  t          |           t          |          z  t          |          z  t          |          t          |           z  z   t          |           t          |          z  t          |          t          |           z  t          |          z  z
  gt          |           t          |          z  t          |            t          |          z  t          |          z  t          |           t          |          z  z   t          |           t          |          z  t          |          t          |          z  t          |           z  z   gt          |          t          |            t          |          z  t          |           t          |          z  gg          k    sn J |                    |          |                    |          z
                      |                                          d	k    sJ d S )
Nq1:4r7   r   axisr   r   r   rk   r   )r   r   rC   r*   rE   rD   rd   Tre   r   r   rQ   r   r   )	rT   rU   rV   r7   r   r   r   rk   r   s	            r#   test_w_diff_dcm2r      s   ''JBBsA	C"ac++A	C"ac++A	C"ac++A
%%((*C	C$$A
 5588quuQxx 7 7 7 76	RR#b''#b''/#b''1BBRRBBB 	!$'GG8CGG#3	RRR 3r773r77?2BB#b''#b''/#b''11#3 
R3r77(3r77"CGGCGGO4+6 $7 $7 7 7 7 7 7 7 LLOOall1oo-66q99BBDDIIIIIIr&   c                       G d dt                     }  | d          }|                    ddd|j        g          }t          ||           sJ d S )Nc                       e Zd ZdS )>test_orientnew_respects_parent_class.<locals>.MyReferenceFrameN)__name__
__module____qualname__r9   r&   r#   MyReferenceFramer     s        r&   r   r   r   r4   r   )r   rC   r*   r@   )r   r   r   s      r#   $test_orientnew_respects_parent_classr     st        >   A	C!QS**Aa)*******r&   c                     t          d          } t          d          }|                     dd|| j        g          }d | j        D             }|                     dd|| j        g|          }| j        |j        k    sJ |j        |k    sJ d S )Nr7   rT   ar4   c                     g | ]}|d z   S 1r9   r:   r*   s     r#   
<listcomp>z9test_orientnew_respects_input_indices.<locals>.<listcomp>  s    &&&qQsU&&&r&   bindices)r   r   rC   rD   r   )r7   rT   r   mindsr   s        r#   %test_orientnew_respects_input_indicesr     s    sA			B	C"ac++A&&AI&&&E	C"acE::A9	!!!!9r&   c                     t          d          } t          d          }|                     dd|| j        g          }d|j                                        d|j        d         dd|j                                        d|j        d	         dd|j                                        d|j        d
         dg}d}d | j        D             }d|                                d|d         dd|                                d|d	         dd|                                d|d
         dg}|                     |d|| j        g|          }|j        |k    sJ |j        |k    sJ |j        |k    sJ d S )Nr7   rT   r   r4   z\mathbf{\hat{z}_r   }r/   r0   r   c                     g | ]}|d z   S r   r9   r   s     r#   r   z8test_orientnew_respects_input_latexs.<locals>.<listcomp>$  s    (((qu(((r&   z}_{z}})latexs)r   r   rC   rD   namelowerr   
latex_vecs)r7   rT   r   def_latex_vecsr   r   new_latex_vecsr   s           r#   $test_orientnew_respects_input_latexsr     s   sA			B	C"ac++AA 34&,,....illl$ $v||~~~~qy|||(5 (523&,,....illl$&N D((ai(((GG48JJLLLLajjj" "zz||||WQZZZ&1 &148JJLLLLajjj"$N 	
D&2qs)NCCA<>))))<>))))9r&   c                     t          d          } t          d          }|                     dd|| j        g          }d}d | j        D             }|                     |d|| j        g|          }t          |j                  D ](\  }}|j        |j        dz   |j        |         z   k    sJ )t          |j                  D ]\  }}|j        ||         k    sJ d S )	Nr7   rT   r   r4   r   c                     g | ]
}d |z   dz   S )notb_r   r9   r   s     r#   r   z;test_orientnew_respects_input_variables.<locals>.<listcomp>8  s     666qWQYs]666r&   r5   _)r   r   rC   rD   r   	enumeratevarlistr   )r7   rT   r   r   new_variablesr   jvars           r#   'test_orientnew_respects_input_variablesr   1  s    sA			B	C"ac++A D66AI666M	D&2qs)}EEA19%% 7 7#x16C<!)A,66666619%% , ,#x=++++++, ,r&   c                  r    t          d          } t          d          }|                    dd| d           d S )Nzu:3Ir   spaceXYZ)r   r   rC   )ur   s     r#   test_issue_10348r   A  s:    uAsAKKWa'''''r&   c                      t          d          } |                     ddd| j        g           t          d          }|                     |dd|j        g           d S )Nr   r   r4   #   r   F   )r   rC   rE   rl   rD   )r   r   s     r#   test_issue_11503r   G  sZ    sAKKVb!#Y'''sAHHQQS	"""""r&   c                  V   t          d          } t          d          }t          d          \  }}|                    | ||j        z  || j        z  z              |                     ||          |j         k    sJ |                     |||          |j         | j         fk    sJ |                    | |          |j        k    sJ |                    | ||          |j        | j        fk    sJ |                     | |          dk    sJ |                    ||          dk    sJ d S )Nr7   r   zu1, u2r   )r   r   rR   r*   rE   partial_velocity)r7   r   r\   r]   s       r#   test_partial_velocityr   N  s<   sAsAH%%FBMM!R!#XQS()))a$$,,,,aR((acTAC4L8888a$$++++aR((QS!#J6666a$$))))a$$))))))r&   c            
         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    sJ |                     |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    sJ |                    |           j        |                     |          k    sJ d S )Nr   r   rk   r2   r/   r   r   r   r/   r   r   r   r/   )r   r   )r   r   r   )r   r   r   )r   rl   r   rd   re   r   r   r   s     r#   test_issue_11498r   a  sr   sAsA HHQs1vv5588vyyy)))YYY?@@@@@@5588vyyy)))YYY?@@@@@@
 HHQvyyy***jjjABBCCC5588vyyy***jjjABBBBBB5588vzzz999jjjABBBBBB5588:q!!!!!!r&   c            	      d    t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d	            t          t          d
            t          d          d         t	          dd          k    sJ d         t	          dd          k    sJ d         t	          dd          k    sJ t          t          fd           t          dg d          d         j        k    sJ d         j        k    sJ d         j        k    sJ t          t          fd           t                    dk    sJ t          d           t          d          t          d          \  t          t           fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd            t          t          fd!           t          t          fd"           t          t          fd#           t          t          fd$           t          t          fd%                               d                                         t          d          k    sJ                     d                                         t          d          k    sJ d S )&Nc                       t          d          S r(   r   r9   r&   r#   r$   z&test_reference_frame.<locals>.<lambda>t  s    nQ// r&   c                  "    t          dd          S )Nr7   r   r   r9   r&   r#   r$   z&test_reference_frame.<locals>.<lambda>u  s    nS!44 r&   c                  &    t          dddg          S )Nr7   r   r/   r   r9   r&   r#   r$   z&test_reference_frame.<locals>.<lambda>v  s    ~cAq6:: r&   c                  &    t          dg d          S )Nr7   r   r/   r0   r   r9   r&   r#   r$   z&test_reference_frame.<locals>.<lambda>w  s    nS)))<< r&   c                  (    t          dg dd          S Nr7   r   r   cr   r   r9   r&   r#   r$   z&test_reference_frame.<locals>.<lambda>x  s    nS///1EE r&   c                  ,    t          dg dddg          S Nr7   r   r   r/   r   r9   r&   r#   r$   z&test_reference_frame.<locals>.<lambda>y  s    ~c???QFKK r&   c                  ,    t          dg dg d          S Nr7   r   r   r   r9   r&   r#   r$   z&test_reference_frame.<locals>.<lambda>z  s    nS///999MM r&   c                  .    t          dg dg dd          S r   r   r9   r&   r#   r$   z&test_reference_frame.<locals>.<lambda>{  s#    nS///1@!E E r&   c                  2    t          dg dg dddg          S r   r   r9   r&   r#   r$   z&test_reference_frame.<locals>.<lambda>}  s'    ~c???.=oo1v G  G r&   c                  2    t          dg dg dg d          S r   r   r9   r&   r#   r$   z&test_reference_frame.<locals>.<lambda>  s'    nS///-<__iiiI I r&   r7   r   N_xr/   N_yr0   N_zc                       d         S )Nr2   r9   r7   s   r#   r$   z&test_reference_frame.<locals>.<lambda>  s    qt r&   r   r   r   r   c                       d         S )Ndr9   r   s   r#   r$   z&test_reference_frame.<locals>.<lambda>  s    qv r&   r   r   zq0 q1 q2 q3c                  2                          dd          S )Nrk   r   rl   r   s   r#   r$   z&test_reference_frame.<locals>.<lambda>  s    ahhq%33 r&   c                  :                          dgd          S )Nrb   222r   )r   r7   rT   rU   rV   s   r#   r$   z&test_reference_frame.<locals>.<lambda>  s    ahhq'BB<GG r&   c                  X                          dj        dj        z  z   gd          S )Nr4   r0   r   )rl   r*   rE   r   r7   rT   s   r#   r$   z&test_reference_frame.<locals>.<lambda>  s*    ahhq&2qsQW}2EuMM r&   c                  2                          d          S Nr4   r   r   s   r#   r$   z&test_reference_frame.<locals>.<lambda>  s    ahhq&"55 r&   c                  4                          dg          S r   r   r   s   r#   r$   z&test_reference_frame.<locals>.<lambda>  s    qxx6B488 r&   c                  <                          dgd          S )NrN   r   r   )r   r7   rM   rT   rU   rV   s   r#   r$   z&test_reference_frame.<locals>.<lambda>  s"    ahhq,RR8H%PP r&   c                  2                          d          S NrN   r   )r   r7   rM   s   r#   r$   z&test_reference_frame.<locals>.<lambda>  s    ahhq,;; r&   c                  8                          dg          S r   r   r   r7   rM   rT   rU   s   r#   r$   z&test_reference_frame.<locals>.<lambda>  s    ahhq,REE r&   c                  8                          dg          S )NFoor   r   s   r#   r$   z&test_reference_frame.<locals>.<lambda>  s    EBB<(H(H r&   c                  8                          dgd          S )NrO   232r   r   r7   rT   rU   s   r#   r$   z&test_reference_frame.<locals>.<lambda>  s    ahhq&2r(EBB r&   c                  8                          dgd          S )Nrb   r   r   r   s   r#   r$   z&test_reference_frame.<locals>.<lambda>  s    ahhq'B8UCC r&   )r   	TypeErrorr+   r   r   r*   rE   rD   strr   
IndexErrorNotImplementedErrorset_ang_acc
ang_acc_inr   rR   rQ   )r   r   r7   rM   rT   rU   rV   s   @@@@@@@r#   test_reference_framer   s  s   
9//000
944555
:::;;;
9<<===
9EEFFF
:KKLLL
9MMNNN
9 E E F F F
: G G H H H
9 I I J J JsAQ4=1------Q4=1------Q4=1------
:||||$$$sOOO,,AS6QS====S6QS====S6QS====
:~~~~&&&q66S====sAsA]++NBB
933333444
9GGGGGGGGHHH
9MMMMMMNNN
9555555666
:888888999
9PPPPPPPPPQQQ
9;;;;;;<<<
9EEEEEEEEFFF
 H H H H H H H HIII
9BBBBBBBCCC
9CCCCCCCDDDMM!Q<<??fQii''''MM!Q<<??fQii''''''r&   c                  2    t          t          d            d S )Nc                       t          d          S r(   r   r9   r&   r#   r$   z"test_check_frame.<locals>.<lambda>  s    LOO r&   )r   r   r9   r&   r#   test_check_framer     s    
?3344444r&   c                     t          d          \  } }}t          |           }t          |           }t          |          }t          |          }t          |          }t          |          }t          ||z  ||z  |z  ||z  z
  ||z  |z  ||z  z   g||z  ||z  |z  ||z  z   ||z  |z  ||z  z
  g| ||z  ||z  gg          }	t	          d          }
t	          d          }|                    |
d|	           |                    |
          }||z  |                                 z  ||                                z  z   }||z  |                                z  ||                                z  z   }t          |	                    |
j
                  |z
            dk    sJ t          |	                    |j
                  |z
            dk    sJ d S )Nr   r   r   rk   r   )r   r   r   re   r   rl   rQ   diffr   r   rE   )rT   rU   rV   s1c1s2c2s3c3rd   r   r   AwBalpha2beta2s                  r#   test_dcm_diff_16824r    s     ''JBB	RB	RB	RB	RB	RB	RB
2b5"R%(RU*BrE"Hr"u,<=b5"R%(RU*BrE"Hr"u,<=3"R%BrE24 5 5C 	sAsAHHQs
,,q//CU27799_r"''))|+FrE"''))Obl*ECGGACLL6)**a////CGGACLL5())Q......r&   c                     t          d          \  } }}t          d          \  }}}t          d          \  }}}t          dd          \  }	}
}t          dd          \  }}}t          dd          \  }}}t          d          }t          d          }t          | ||g|||g|||gg          }||z  ||z  z   ||z  z   |j        z  ||	z  ||z  z   ||z  z   |j        z  z   | |z  ||
z  z   ||z  z   |j        z  z   }|                    ||           |                    |          |k    sJ |                    |          |k    sJ |                    |          | k    sJ 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   re   r*   rE   rD   orient_explicitrd   rQ   )cxxcyyczzcxycxzcyxcyzczxczydcxxdcyydczzdcxydcxzdcyxdcyzdczxdczyr   r   B_C_AB_w_As                         r#   test_orient_explicitr"    s   "#;<<MCc"#;<<MCc"#;<<MCc%&>BBD$%&>BBD$%&>BBD$sAsAS#sO#sO#sO% & &E $hT!CH,ac1XD 3t8+QS01XD 3t8+QS01E a5588u<<??e####<<??uf$$$$$$r&   c                  ~   t          d          \  } }}t          d          \  }}}t          d          \  }}}t          | ||g|||g|||gg          }	t          d          }
t          d          }|                    |
|	           |                    |
          t          | ||g|||g|||gg          k    sJ d S )Nr
  r  r  r   r   )r   re   r   
orient_dcmrd   )r  r  r  r  r  r  r  r  r  r   r   r   s               r#   test_orient_dcmr%    s    "#;<<MCc"#;<<MCc"#;<<MCcS#sO#sO#sO% & &E 	sAsALLE5588vS# #S# #S#0 1 1 1 1 1 1 1 1r&   c                     t          d          t          d                              j         d                                         }                     j        d                                         }                    dj                                                  }| |k    sJ ||k    sJ t	          t
          fd           d S )Nr   r   r/   r   c                  2                          dd          S )Nr/   )r)   r   s   r#   r$   z"test_orient_axis.<locals>.<lambda>  s    ammAq!44 r&   )r   r)   r*   rd   r   r   )A1rL   A3r   r   s      @@r#   test_orient_axisr*    s    sAsAMM!QSD!	
qBMM!QS"	
qBMM!Q	
qB88888888
94444455555r&   c            
         t          d          } t          d          }|                    | dd           |                    |           t          t	          d          t          d          dz  t          d           t	          d          z  gdt	          d          t          d          gt          d          t          d           t	          d          z  t	          d          dz  gg          k    sJ d S )Nr   r   )r/   r/   r   XYXr/   r0   r   )r   orient_body_fixedrd   re   r   r   r   s     r#   test_orient_bodyr.    s    sAsA7E***5588vAA	CFF73q66>BQAPSTUPVPVDWZ]^_Z`Z`cfghcicibijmnojpjpbpruvwrxrxz{r{Y|}~~~~~~~~r&   c                  l   t          d          \  } }}t          d          \  }}}t          dd          \  }}}t          d          t          d          }
}	|
                    |	| ||fd           |	                    |
          t          t          |            t          |          z  t          |          z  t          |           t          |          z  z   t          |            t          |          z  t          |           t          |          z  t          |          z  t          |          t          |           z  z   gt          |           t          |          z  t          |          t          |          z  t          |           z  z   t          |           t          |          z  t          |           t          |          z  t          |          t          |           z  t          |          z  z
  gt          |           t          |          z  t          |          t          |          t          |          z  gg          k    sJ |
                    |	          	                    |
          t          t          |           t          |          z  |z  t          |          |z  z   gt          |          |z  |z   gt          |          |z  t          |          t          |          z  |z  z   gg          k    sJ t          d          t          d          }
}	|
                    |	| ||fd           |	                    |
          t          t          |          t          |           t          |          z  t          |          t          |          z  gt          |          t          |           z  t          |            t          |          z  t          |          t          |           z  t          |          z  z   t          |            t          |          z  t          |          t          |          z  t          |           z  z
  gt          |          t          |           z  t          |           t          |          z  t          |          z  t          |          t          |           z  z   t          |            t          |          z  t          |          z  t          |           t          |          z  z   gg          k    sJ |
                    |	          	                    |
          t          t          |          |z  |z   gt          |           t          |          z  |z  gt          |          t          |          z  |z  gg          k    sJ t          d          t          d          }
}	|
                    |	|||fd           |
                    |	          t          d	          k    sJ d S )
Nr   c1:4r/   r   r   zxy   {   r   )r   r   r   r-  rd   re   r   r   rQ   	to_matrixr   rT   rU   rV   r   r  r  r\   r]   r^   r   r   s              r#   test_orient_body_advancedr6    s+   ''JBBJBB**JBB #s 3 3qABB<///5588v
b''CGG	c"gg	%B#b''(9	9CGG8c"gg;M	R3r77	SWW	$s2wwR'8	8	:	R3r77	SWWs2ww.R8	8#b''CGG:K	R3r77	SWWs2ww.R8	8	:
b''CGG	SWWc"ggB&78: ; ; ; ; ; ; <<??$$Q''6
b''CGG	b	 3r77R<	/0	R2		R2B#b'')B.	./31 ,2 ,2 2 2 2 2 #s 3 3qABB<---5588v	R3r77(SWW$c"ggB&78	R3r77	SWWHs2ww.R3r771BSWW1LL
b''CGG	c"ggB/#b''9	9	;	R3r77	CGGc"gg-B7#b''CGG:KK
b''CGG	c"gg	%B#b''(9	9	;	< = = = = = = <<??$$Q''6	R2	
b''CGG	b	 !	R3r77	R	 3" ,# ,# # # # # #s 3 3qABB<---<<??fQii''''''r&   c                  l   t          d          \  } }}t          d          \  }}}t          dd          \  }}}t          d          t          d          }
}	|
                    |	||| fd           |	                    |
          t          t          |            t          |          z  t          |          z  t          |           t          |          z  z   t          |            t          |          z  t          |           t          |          z  t          |          z  t          |          t          |           z  z   gt          |           t          |          z  t          |          t          |          z  t          |           z  z   t          |           t          |          z  t          |           t          |          z  t          |          t          |           z  t          |          z  z
  gt          |           t          |          z  t          |          t          |          t          |          z  gg          k    sJ |
                    |	          	                    |
          t          t          |           t          |          z  |z  t          |          |z  z   gt          |          |z  |z   gt          |          |z  t          |          t          |          z  |z  z   gg          k    sJ t          d          t          d          }
}	|
                    |	||| fd           |	                    |
          t          t          |          t          |           t          |          z  t          |          t          |          z  gt          |          t          |           z  t          |            t          |          z  t          |          t          |           z  t          |          z  z   t          |            t          |          z  t          |          t          |          z  t          |           z  z
  gt          |          t          |           z  t          |           t          |          z  t          |          z  t          |          t          |           z  z   t          |            t          |          z  t          |          z  t          |           t          |          z  z   gg          k    sJ |
                    |	          	                    |
          t          t          |          |z  |z   gt          |           t          |          z  |z  gt          |          t          |          z  |z  gg          k    sJ t          d          t          d          }
}	|
                    |	|||fd           |
                    |	          t          d	          k    sJ d S )
Nr   r0  r/   r   r   yxzr2  r3  r   )r   r   r   orient_space_fixedrd   re   r   r   rQ   r4  r   r5  s              r#   test_orient_space_advancedr:  #  s+   ''JBBJBB**JBB #s 3 3qARRL%0005588v
b''CGG	c"gg	%B#b''(9	9CGG8c"gg;M	R3r77	SWW	$s2wwR'8	8	:	R3r77	SWWs2ww.R8	8#b''CGG:K	R3r77	SWWs2ww.R8	8	:
b''CGG	SWWc"ggB&78: ; ; ; ; ; ; <<??$$Q''6
b''CGG	b	 3r77R<	/0	R2		R2B#b'')B.	./31 ,2 ,2 2 2 2 2 #s 3 3qARRL#...5588v	R3r77(SWW$c"ggB&78	R3r77	SWWHs2ww.R3r771BSWW1LL
b''CGG	c"ggB/#b''9	9	;	R3r77	CGGc"gg-B7#b''CGG:KK
b''CGG	c"gg	%B#b''(9	9	;	< = = = = = = <<??$$Q''6	R2	
b''CGG	b	 !	R3r77	R	 3" ,# ,# # # # # #s 3 3qARRL#...<<??fQii''''''r&   c                     t          d          \  } }}t           j        }t          d          }t          d          }|                    || ||fd           |                    |          }|j        d         d         |k    sJ |j        d         d         d         t          |          t          |          z  |                     |          z  t          |          |                    |          z  z   k    sJ |j        d         d         d         t          |          t          |          z  |                     |          z  t          |          |                    |          z  z
  k    sJ |j        d         d         d         t          |          |                     |          z  |                    |          z   k    sJ 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/   r0   N)	r   _tr   r-  rQ   argsr   r   r   )psithetaphitr   r   A_w_Bs          r#   test_orient_body_simple_ang_velrD  K  s    %%9::OCAsAsAC,e444LLOOE:a=q    :a=A3u::c#hh#6sxx{{#B#&s88EJJqMM#9$: ; ; ; ;:a=A3u::c#hh#6sxx{{#B#&s88EJJqMM#9$: ; ; ; ;:a=A#e**SXXa[["8388A;;"FFFFFFFr&   c                      t          d          } t          d          }|                    | dd           |                    |           t          g dg dg dg          k    sJ d S )Nr   r   r   r   r   rc   r   r   r   )r   r9  rd   re   r   s     r#   test_orient_spacerG  ]  sp    sAsAGU+++5588vyyy)))YYY?@@@@@@@@r&   c                      t          d          } t          d          }|                    | d           |                    |           t          g dg dg dg          k    sJ d S )Nr   r   )r   r   r   r   rF  )r   orient_quaternionrd   re   r   s     r#   test_orient_quaternionrJ  c  sn    sAsA9%%%5588vyyy)))YYY?@@@@@@@@r&   c                  4   t          d          } t          d          }t          d          }t          d          \  }}}|                    | | j        |           |                    ||j        |           t	          j        d          5 }t	          j        d           |                     ||j        |           t          |d         j        t                    sJ d	t          |d         j                  v sJ 	 d d d            d S # 1 swxY w 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   ws          r#   test_looped_frame_warningrW  i  sr   sAsAsAgGAq!MM!QS!MM!QS!		 $	/	/	/ j1h'''	aa   !B%.+66666TWZ[\]_[`[hWiWij j j j j	j j j j j j j j j j j j j j j j j js   A1DDDc                  D   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    sJ |j        i k    sJ |                    ||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          |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        |           |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   rL  r   r   )r   r   r)   r*   	_dcm_dictre   r   r   )r   r   r   r   r   r   s         r#   test_frame_dictrZ  y  s   sAsAsAgGAq!MM!QS!;1fiiiCFFSVVG0DaQRUVWRXRXEY%Z[[\\\\\;1fiiiSVVSVV0Da#a&&RUVWRXRXEY%Z[[\\\\\;"MM!QS!;1fiiiCFFSVVG0DaQRUVWRXRXEY%Z[[\\\\\;1fiiiSVVSVV0Da#a&&RUVWRXRXEY%Z[[	6999a#a&&#a&&11s1vvgs1vv2FGHHJ J J J J;1fiiiCFFSVVG0DaQRUVWRXRXEY%Z[[\\\\\MM!QS!;1fiiiSVVSVV0Da#a&&RUVWRXRXEY%Z[[	6999aQ#a&&11c!ffs1vv2FGHHJ J J J J;1fiiiSVVSVV0Da#a&&RUVWRXRXEY%Z[[\\\\\;1fiiiCFFSVVG0DaQRUVWRXRXEY%Z[[\\\\\\\r&   c                  	   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    s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          |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        |j        k    sJ |	                    |            t          | j                                                  | ||gk    sJ 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    sJ | j        | j        k    s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 d S )Nr   r   r   r   rL  r   r   )r   r   r)   r*   rY  re   r   r   
_dcm_cacherd   listkeys)r   r   r   r   r   r   r   s          r#   test_dcm_cache_dictr_    s   sAsAsAsAgGAq!MM!QS!MM!QS!MM!QS!;1fiiiSVVSVV0Da#a&&RUVWRXRXEY%Z[[\\\\\;1fiiiSVVSVV0Da#a&&RUVWRXRXEY%Z[[	6999aQ#a&&11c!ffs1vv2FGHHJ J J J J;1fiiiSVVSVV0Da#a&&RUVWRXRXEY%Z[[	6999aQ#a&&11c!ffs1vv2FGHHJ J J J J;1fiiiCFFSVVG0DaQRUVWRXRXEY%Z[[\\\\\;!,&&&&EE!HHH!!##$$Aq	1111!!##$$A....  ""##s****  ""##s****;!,&&&&MM!QS!;1fiiiSVVSVV0Da#a&&RUVWRXRXEY%Z[[\\\\\;!,&&&&;1fiiiCFFSVVG0DaQRUVWRXRXEY%Z[[	6999aQ#a&&11c!ffs1vv2FGHHJ J J J J J Jr&   c                      t          d          } t          dg d          }| j        t          j        | j        | j                  k    sJ |j        t          j        |j        |j                  k    sJ d S Nr7   r   )r   23r   )r   xxr   outerr*   r7   r   s     r#   test_xx_dyadrg    q    sAsOOO444A46<QS))))))46<QS))))))))r&   c                      t          d          } t          dg d          }| j        t          j        | j        | j                  k    sJ |j        t          j        |j        |j                  k    sJ d S ra  )r   xyr   re  r*   rE   rf  s     r#   test_xy_dyadrk    rh  r&   c                      t          d          } t          dg d          }| j        t          j        | j        | j                  k    sJ |j        t          j        |j        |j                  k    sJ d S ra  )r   xzr   re  r*   rD   rf  s     r#   test_xz_dyadrn    rh  r&   c                      t          d          } t          dg d          }| j        t          j        | j        | j                  k    sJ |j        t          j        |j        |j                  k    sJ d S ra  )r   yxr   re  rE   r*   rf  s     r#   test_yx_dyadrq    rh  r&   c                      t          d          } t          dg d          }| j        t          j        | j        | j                  k    sJ |j        t          j        |j        |j                  k    sJ d S ra  )r   yyr   re  rE   rf  s     r#   test_yy_dyadrt    rh  r&   c                      t          d          } t          dg d          }| j        t          j        | j        | j                  k    sJ |j        t          j        |j        |j                  k    sJ d S ra  )r   yzr   re  rE   rD   rf  s     r#   test_yz_dyadrw    rh  r&   c                      t          d          } t          dg d          }| j        t          j        | j        | j                  k    sJ |j        t          j        |j        |j                  k    sJ d S ra  )r   zxr   re  rD   r*   rf  s     r#   test_zx_dyadrz    rh  r&   c                      t          d          } t          dg d          }| j        t          j        | j        | j                  k    sJ |j        t          j        |j        |j                  k    sJ d S ra  )r   zyr   re  rD   rE   rf  s     r#   test_zy_dyadr}    rh  r&   c                      t          d          } t          dg d          }| j        t          j        | j        | j                  k    sJ |j        t          j        |j        |j                  k    sJ d S ra  )r   zzr   re  rD   rf  s     r#   test_zz_dyadr    rh  r&   c                      t          d          } t          dg d          }| j        | j        | j        z   | j        z   k    sJ |j        |j        |j        z   |j        z   k    sJ d S ra  )r   r   rd  rs  r  rf  s     r#   test_unit_dyadicr    so    sAsOOO444A3!$+$$$$$3!$+$$$$$$$r&   c                  ~   t          d          } t          d          }|                    | | j        d           |                    |           }t	          j        t	          j        |                     }t          |j        	                                          d         }|                    |          |k    sJ d S )Nr7   r   r/   r   )
r   r)   r*   rd   pickleloadsdumpstuplerY  r^  )r7   r   A_C_NN1r(  s        r#   test_pickle_framer    s    sAsAMM!QS!EE!HHE	fl1oo	&	&B	r|  ""	#	#A	&B66"::r&   )Isympy.core.numbersr   sympy.core.symbolr   sympy.simplifyr   (sympy.functions.elementary.trigonometricr   r   sympy.matrices.denser   r	   sympy.matrices.immutabler
   re   sympy.simplify.simplifyr   sympy.physics.vectorr   r   r   r   r   r   r   sympy.physics.vector.framer   sympy.physics.vector.vectorr   sympy.testing.pytestr   rO  r  r,   rI   r`   rh   r   r   r   r   r   r   r   r   r   r   r   r   r  r"  r%  r*  r.  r6  r:  rD  rG  rJ  rW  rZ  r_  rg  rk  rn  rq  rt  rw  rz  r}  r  r  r  r9   r&   r#   <module>r     s   ! ! ! ! ! ! % % % % % % # # # # # # ? ? ? ? ? ? ? ? - - - - - - - - C C C C C C , , , , , ,' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 4 3 3 3 3 3 7 7 7 7 7 7 ' ' ' ' ' '  3 3 347F 7F 7Ft?= ?= ?=D  B#' #' #'JJ J J,+ + +	 	 	     4, , , ( ( (# # #* * *&" " "$,( ,( ,(^5 5 5/ / /@% % %(1 1 16 6 6  $( $( $(N%( %( %(PG G G$A A AA A Aj j j ] ] ]4 J  J  JD* * ** * ** * ** * ** * ** * ** * ** * ** * *% % %    r&   