+
    hs                        ^ RI Ht ^ RIHt ^ RIHt ^ RIHtHt ^ RI	H
t
Ht ^ RIHt ^ RIHt ^ RIHtHtHtHtHtHtHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIt^ RI t R t!R t"R t#R t$R t%R t&R t'R t(R t)R t*R t+R t,R t-R t.R t/R t0R t1R t2R t3R  t4R! t5R" t6R# t7R$ t8R% t9R& t:R' t;R( t<R) t=R* t>R+ t?R, t@R- tAR. tBR/ tCR0 tDR1 tER2 tFR3 tGR4 tHR# )5    )pi)symbols)trigsimp)cossin)eyezeros)ImmutableDenseMatrix)simplify)ReferenceFrameVectorCoordinateSymdynamicsymbolstime_derivativeexpressdot_check_frame)VectorTypeError)raisesNc                  t  aaaa \        R 4      o\        R4      p \        R4      o\        R4      p\        R4      o\        R4      oV P                  SSP                  R4       SP                  W P                  R4       VP                  SSP                  R4       VP                  S^ 4      VSV S.8X  g   Q hSP                  WP                  R4       SP                  S^ 4      SV S.8X  g   Q hSP                  S^ 4      SVS.8X  g   Q h\	        \
        VV3R l4       \	        \
        VV3R l4       R	# )
ABCDEFg      ?c                  (   < S P                  S^4      # )   
_dict_list)r   r   s   G/usr/lib/python3/dist-packages/sympy/physics/vector/tests/test_frame.py<lambda> test_dict_list.<locals>.<lambda>'       q||Aq1    c                  (   < SP                  S ^ 4      # r   r    )r   r   s   r"   r#   r$   )   r%   r&   N)r   orient_axisxr!   r   
ValueError)r   r   r   r   r   r   s     @@@@r"   test_dict_listr,      s   sAsAsAsAsAsAMM!QSS#MM!SS#MM!QSS#<<1!Q1---MM!SS#<<1!Q***<<1!Q*** :12
:12r&   c                    a \        R4      o\        RS^ 4      S^ ,          8X  g   Q h\        RS^4      S^,          8X  g   Q h\        RS^4      S^,          8X  g   Q h\        \        V3R l4       \	        R4      p \	        R^4      p\        S^ ,          \        4      '       d;   \        S^ ,          \        4      '       d   \        S^ ,          \        4      '       g   Q hSP                  S4      S^ ,          S^ ,          S^,          S^,          S^,          S^,          /8X  g   Q hS^ ,          P                  S8X  g   Q hSP                  RRV SP                  .4      pVP                  S4      V^,          S^,          V^,          S^ ,          ) \        V 4      ,          S^,          \        V 4      ,          ,           V^ ,          S^ ,          \        V 4      ,          S^,          \        V 4      ,          ,           /8X  g   Q hSP                  V4      S^ ,          V^ ,          \        V 4      ,          V^,          \        V 4      ,          ,
          S^,          V^ ,          \        V 4      ,          V^,          \        V 4      ,          ,           S^,          V^,          /8X  g   Q h\        V^ ,          S4      S^ ,          ) \        V 4      ,          V,          S^,          \        V 4      ,          V,          ,           8X  g   Q h\        V^,          S4      S^ ,          ) \        V 4      ,          V,          S^,          \        V 4      ,          V,          ,
          8X  g   Q h\        V^,          S4      ^ 8X  g   Q h\        V^ ,          SRR7      S^ ,          \        V 4      ,          S^,          \        V 4      ,          ,           8X  g   Q h\        V^,          SRR7      S^ ,          ) \        V 4      ,          S^,          \        V 4      ,          ,           8X  g   Q h\        V^,          SRR7      S^,          8X  g   Q h\        S^ ,          SP                  ,          S^,          SP                  ,          ,           S^,          SP                  ,          ,           V4      S^,          V,          SP                  ,          S^ ,          V,          SP                  ,          ,
          8X  g   Q h\        V^ ,          VP                  ,          V^,          VP                  ,          ,           V^,          VP                  ,          ,           S4      V^,          ) V,          VP                  ,          V^ ,          V,          VP                  ,          ,           8X  g   Q h\        V^ ,          V^,          ,          V^,          ,          SRR7      S^,          S^ ,          ) \        V 4      ,          S^,          \        V 4      ,          ,           ,          S^ ,          \        V 4      ,          S^,          \        V 4      ,          ,           ,          8X  g   Q h\        V^ ,          V^,          ,          V^,          ,          S4      S^,          S^ ,          ^,          ) \        ^V ,          4      ,          ^S^ ,          ,          S^,          ,          \        ^V ,          4      ,          ,
          S^,          ^,          \        ^V ,          4      ,          ,           ,          V,          ,
          P!                  4       ^ 8X  g   Q h\        V^ ,          VP                  ,          V^,          VP                  ,          ,           V^,          VP                  ,          ,           S4      V^ ,          \        V 4      ,          V^,          \        V 4      ,          ,
          SP                  ,          V^ ,          \        V 4      ,          V^,          \        V 4      ,          ,           SP                  ,          ,           V^,          SP                  ,          ,           8X  g   Q h\        V^ ,          VP                  ,          V^,          VP                  ,          ,           V^,          VP                  ,          ,           SRR7      P#                  4       S^ ,          SP                  ,          S^,          SP                  ,          ,           S^,          SP                  ,          ,           8X  g   Q h\        S^ ,          SP                  ,          S^,          SP                  ,          ,           S^,          SP                  ,          ,           V4      S^ ,          \        V 4      ,          S^,          \        V 4      ,          ,           VP                  ,          S^ ,          ) \        V 4      ,          S^,          \        V 4      ,          ,           VP                  ,          ,           S^,          VP                  ,          ,           8X  g   Q h\        S^ ,          SP                  ,          S^,          SP                  ,          ,           S^,          SP                  ,          ,           VRR7      P#                  4       V^ ,          VP                  ,          V^,          VP                  ,          ,           V^,          VP                  ,          ,           8X  g   Q hVP                  R	RV ) VP                  .4      pVP                  S4      P%                  4        UUu/ uF  w  rEWEP#                  4       bK  	  uppV^ ,          S^ ,          V^,          S^,          V^,          S^,          /8X  g   Q hSP                  R
RV SP                  SP                  ,           SP                  ,           .4      pSP                  V4      p\!        VS^ ,          ,          4      ^V^ ,          ,          \        V 4      ,          ^,          V^ ,          ^,          ,           ^V^,          ,          \        V \&        ^,          ,           4      ,          ^,          ,
          V^,          ^,          ,           ^V^,          ,          \        V \&        ^,          ,           4      ,          ^,          ,
          V^,          ^,          ,           8X  g   Q h\!        VS^,          ,          4      RV^ ,          ,          \        V \&        ^,          ,           4      ,          ^,          V^ ,          ^,          ,           ^V^,          ,          \        V 4      ,          ^,          ,           V^,          ^,          ,           ^V^,          ,          \        V \&        ^,          ,           4      ,          ^,          ,
          V^,          ^,          ,           8X  g   Q h\!        VS^,          ,          4      RV^ ,          ,          \        V \&        ^,          ,           4      ,          ^,          V^ ,          ^,          ,           ^V^,          ,          \        V \&        ^,          ,           4      ,          ^,          ,
          V^,          ^,          ,           ^V^,          ,          \        V 4      ,          ^,          ,           V^,          ^,          ,           8X  g   Q hR# u uppi )z,Tests the coordinate variables functionalityr   Axc                     < \        R S ^4      # )r.   )r   )r   s   r"   r#   &test_coordinate_vars.<locals>.<lambda>2   s    }T1a8r&   qr   AxisT	variablesNr   N)r   r   r   r+   r   
isinstancevariable_mapframe	orientnewzr   r   r   r   r*   yr   r   itemsr   )	r1   qdr   r5   kvr   mappingr   s	           @r"   test_coordinate_varsrB   ,   s
   sAq!$!,,,q!$!,,,q!$!,,,
:89sA	Q	BadM**adM**adM**+ + >>!1adAaD1qtAaD AAAAQ4::??	C!QSS*A>>!1qtQqTAaD5Q<!A$s1v+3M!"1qtCF{QqT#a&['@!B B B B>>!1qtCF{QqT#a&['@!"1qtCF{QqT#a&['@!A$!!N N N N1Q4#!uSV|B1c!fR'GGGG1Q4#!uSV|B1c!fR'GGGG1Q4#q(((1Q4d+qtCF{QqT#a&[/HHHH1Q4d+!uSV|ad3q6k/IIII1Q4d+qt3331Q48ad133h.1acc91=1bqQRtTVwWXWZWZ{AZZZZ1Q48ad133h.1acc91=1Q4133QRSTQUVXQXYZY\Y\Q\A\\\\1Q4!9QqT>15Q4!A$s1v!SV+,ad3q6kAaDQK.GHI I IAaD1IadNA.qTAaD!G8C!H$qtVAaD[QqS!"qT1WS1X !"# %-HJ!4 4 4 1Q48ad133h&1acc115aDQK!A$s1v+%qss*ad3q6kQ4A;/. d133h'' ' ' 1Q48ad133h&1acc11!##+8:1accAaDH1DqtACCx1OP P P1Q48ad133h&1acc115aDQK!A$s1v+%qss*qTE#a&L1Q4A;&+,./d133h77 7 7 1Q48ad133h&1acc11!##+8:1accAaDH1DqtACCx1OP P P	C1"acc+A)*):)@)@)BC)BQ

_)BCqT1Q41qtQqT1Q401 2 1	C!QSS133Y_!56AnnQGGAaDM"q1vc!f}Q1a'?'(1vc!bd(m';A'=(>'(tAv(.01!A$s1r!t8}0DQ0F(G ()tAv(. / / / GAaDM"b1gc!bd(m&;A&=Q46'adF3q6M!O'$&'d1f'-/01vc!bd(m/CA/E'FHI!Q'O O O OGAaDM"b1gc!bd(m&;A&=!Q&FQqT6#a"Q$h-!'"$%aDF'+-.qtVCF]1_'=?@tAv'F F F F Ds    |
c                  ~   \        R 4      w  rr#\        R ^4      w  rErg\        R4      pVP                  RRWP                  .4      p	V	P                  RRWP                  .4      p
V
P                  RRW*P
                  .4      pVP                  RRW8P
                  .4      p\        R4      w  rpV	P                  V4      WIP                  ,          8X  g   Q hV
P                  V4      WZP                  ,          WIP                  ,          ,           8X  g   Q hVP                  V4      WkP
                  ,          WZP                  ,          ,           WIP                  ,          ,           8X  g   Q hVP                  RRW8P
                  .4      pVP                  V4      ^ 8X  g   Q hVP                  V	4      V) VP                  ,          8X  g   Q hVP                  V
4      V) V	P                  ,          WZP                  ,          ,
          8X  g   Q hVP                  V4      V) V	P                  ,          WZP                  ,          ,
          WjP
                  ,          ,
          8X  g   Q hVP                  V4      V) VP
                  ,          8X  g   Q hV	P                  V4      WHP                  ,          8X  g   Q hV	P                  V	4      ^ 8X  g   Q hV	P                  V
4      V) V
P                  ,          8X  g   Q hV	P                  V4      V) V
P                  ,          WjP
                  ,          ,
          8X  g   Q hV	P                  V4      WHP                  ,          WxP
                  ,          ,
          8X  g   Q hV
P                  V4      WIP                  ,          WYP                  ,          ,           8X  g   Q hV
P                  V	4      WYP                  ,          8X  g   Q hV
P                  V
4      ^ 8X  g   Q hV
P                  V4      V) V
P
                  ,          8X  g   Q hV
P                  V4      WIP                  ,          WYP                  ,          ,           WxP
                  ,          ,
          8X  g   Q hVP                  V4      WIP                  ,          WYP                  ,          ,           WjP
                  ,          ,           8X  g   Q hVP                  V	4      WYP                  ,          WkP
                  ,          ,           8X  g   Q hVP                  V
4      WjP
                  ,          8X  g   Q hVP                  V4      ^ 8X  g   Q hVP                  V4      WIP                  ,          WYP                  ,          ,           WjP
                  ,          ,           WxP
                  ,          ,
          8X  g   Q hVP                  V4      VVP
                  ,          8X  g   Q hVP                  V	4      VVP
                  ,          WHP                  ,          ,
          8X  g   Q hVP                  V
4      WxP
                  ,          WIP                  ,          ,
          WYP                  ,          ,
          8X  g   Q hVP                  V4      WxP
                  ,          WIP                  ,          ,
          WYP                  ,          ,
          WjP
                  ,          ,
          8X  g   Q hVP                  V4      ^ 8X  g   Q hVP                  WVP                  ,          WP
                  ,          ,           WP                  ,          ,           4       VP                  V4      WP                  ,          WP
                  ,          ,           WP                  ,          ,           8X  g   Q hVP                  V4      V) VP                  ,          V) VP
                  ,          ,           V) VP                  ,          ,           8X  g   Q hVP                  V4      WP                  ,          WP
                  ,          ,           WP                  ,          ,           V) VP
                  ,          ,           8X  g   Q hVP                  V4      V) VP                  ,          V) VP
                  ,          ,           V) VP                  ,          ,           W|P
                  ,          ,           8X  g   Q h\        R	4      p\        R	^4      pVP                  R
RVWV34      pVP                  V4      ^VV,          WR,          ,           Wa,          ,
          VV ,          ,
          ,          VP                  ,          ^VV,          W`,          ,           WB,          ,
          VV,          ,
          ,          VP
                  ,          ,           ^VV,          WA,          ,           WP,          ,
          VV,          ,
          ,          VP                  ,          ,           8X  g   Q hVP                  RRWV3R4      pVP                  V4      \        V4      \        V4      ,          V,          \        V4      V,          ,           VP                  ,          \        V4      \        V4      ,          V,          \        V4      V,          ,
          VP
                  ,          ,           \        V4      V,          V,           VP                  ,          ,           8X  g   Q hVP                  RRWP                  VP
                  ,           34      pVP                  V4      WHP                  VP
                  ,           P                  4       ,          8X  g   Q hVP                  V4      V) VP                  VP
                  ,           P                  4       ,          8X  g   Q hR# )q1 q2 q3 q4r5   r   r2   r   r   r   zu1 u2 u3A2q0r   
Quaternionr   Bodyi9  GN)r   r   r:   r;   r*   r<   
ang_vel_inset_ang_velr   r   	normalize)q1q2q3q4q1dq2dq3dq4dr5   r   r   r   r   u1u2u3rE   rF   q0dr   r   rI   s                         r"   test_ang_velrY   f   s   #M2NBB'q9CcsA	C"cc+A	C"cc+A	C"cc+A	C"cc+A
+JBB<<?sCCi'''<<?sCCi3)3333<<?sCCi3)3sCCi????	
T6B9	-B<<?a<<?sd133h&&&<<?sd133hSS0000<<?sd133hSS03ss7::::<<tACCx'''<<?c##g%%%<<?a<<?eACCi'''<<?eACCi#cc'1111<<s33wSS0000<<?c##gCC////<<?c##g%%%<<?a<<?sd133h&&&<<s33wSS03ss7::::<<?c##gCC/#cc'9999<<?c##gCC////<<?c##g%%%<<?a<<s33wSS03ss7:SWDDDD==s244x'''==s244x#cc'1111==s33wSS03ss7::::==s33wSS03ss7:SWDDDD==!!!MM!Vbf_r##v-.<<?r33h"cc1RH<<<<<<?sACCiB3)3sACCi????<<?r33h"cc1RH<acczIIII<<?sACCiB3)3sACCi?3)KKKK		B
q
!C	CBB'78A<<?	S2X 38+cBh67!##=	S2X 38+cBh67!##=	>	S2X 38+cBh67!##=	>? ? ?
 	
C""s3A<<?BB 3c"gck A133F	RR	s2ws{	*ACC/ 036r73;3Dacc2I J K K K	C"ccACCi1A<<?cSS133Y$9$9$;;;;;<<?sdaccACCi%:%:%<<<<<r&   c                     \        R 4      w  rr#\        R4      pVP                  RRWP                  .4      pVP                  RRWP                  .4      pVP                  RRW&P
                  .4      pVP                  RRW4P
                  .4      pVP                  RRWV.R	4      p	VP                  V4      \        \        V 4      ) \        V4      ,          \        V4      ,          \        V 4      \        V4      ,          ,           \        V 4      ) \        V4      ,          \        V 4      \        V4      ,          \        V4      ,          \        V4      \        V 4      ,          ,           .\        V 4      \        V4      ,          \        V4      \        V4      ,          \        V 4      ,          ,           \        V 4      \        V4      ,          \        V 4      \        V4      ,          \        V4      \        V 4      ,          \        V4      ,          ,
          .\        V4      ) \        V4      ,          \        V4      \        V4      \        V4      ,          ..4      8X  g   Q hVP                  V4      \        \        V 4      \        V4      ,          \        V4      ,          \        V4      \        V4      ) \        V4      ,          \        V 4      \        V4      ,          \        V4      ,          ,           ,          ,
          \        V4      ) \        V4      ,          \        V 4      \        V4      ,          \        V4      ,          ,
          \        V4      \        V 4      ,          \        V4      ,          \        V4      \        V4      ) \        V4      ,          \        V 4      \        V4      ,          \        V4      ,          ,           ,          ,           .\        V 4      \        V4      ,          \        V4      \        V4      ,          \        V 4      ,          ,           \        V 4      \        V4      ,          \        V 4      \        V4      ,          \        V4      \        V 4      ,          \        V4      ,          ,
          .\        V4      \        V 4      ,          \        V4      ,          \        V4      \        V4      \        V4      ,          \        V 4      \        V4      ,          \        V4      ,          ,           ,          ,
          \        V4      \        V4      ,          \        V 4      \        V4      ,          \        V4      ,          ,
          \        V4      \        V4      ,          \        V 4      ,          \        V4      \        V4      \        V4      ,          \        V 4      \        V4      ,          \        V4      ,          ,           ,          ,           ..4      ,
          p
V
P                  4       \        ^^4      8X  g   Q hV	P                  V4      \        \        V4      \        V4      ,          \        V4      \        V4      ,          \        V4      ) .\        V 4      \        V4      ,          \        V4      ,          \        V4      \        V 4      ,          ,
          \        V 4      \        V4      ,          \        V4      ,          \        V 4      \        V4      ,          ,           \        V 4      \        V4      ,          .\        V 4      \        V4      ,          \        V4      \        V 4      ,          \        V4      ,          ,           \        V 4      ) \        V4      ,          \        V4      \        V4      ,          \        V 4      ,          ,           \        V 4      \        V4      ,          ..4      8X  g   Q hR
# )rD   r5   r   r2   r   r   r   r   Space123N)r   r   r:   r;   r*   r<   dcmMatrixr   r   expandr	   )rM   rN   rO   rP   r5   r   r   r   r   r   test_mats              r"   test_dcmra      st   #M2NBBsA	C"cc+A	C"cc+A	C"cc+A	C"cc+A	C22,6A558vr7SW	s2w	&R3r7):	:c"gIB=R3r7"SW,s2wR/@@	BDGGBEb'CG#c"g-E./22wR/@#b'GC"gB'#b'1C2D37:2wYR5H#b'B#b'5	     uuQx&
b'CG
c"g
%BSW9s2w3FB#b'CG#4$ )% %(+Bi#b'&9CGG="g= '"2wR03r7:SW#b'	BIb'CG#c"g-I. >/  /
0 36b'CG2CB#b'CG#3$%(Ws2w%6B#b'8IGc"gB'9(2)+.r7SW+<s2w+FB3r7SW$s2wR'83r7'BBC,DEHWBFb'CG+c"g5F67:2wR7H3r77RB3r7SW,s2wR/@3r7/JJK8L+M	N	O 	OH ??a+++558v
b'#b'/3r73r7?SWH	5	RRR	 3r73r7?	2CGCGOCG4KBB5RR	*,/GCGOBBB- #&r73r7!2SWSW_SW5L!L	RR,	   r&   c            
         \        R 4      p \        R4      p\        R4      w  r#p\        R4      w  rVp\        R4      w  rp
\        R^R7      w  rp\        R^R7      w  rp\        R^R7      w  ppp\        W#V.WVV.WV
..4      pVP                  V RV4       VP                  P                  V 4      pVP                  P                  V 4      pVP                  P                  V 4      pVP                  WP                  \        VP                  V 4      VP                  4      ,          VP                  \        VP                  V 4      VP                  4      ,          ,           VP                  \        VP                  V 4      VP                  4      ,          ,           4       W=,          VV,          ,           V	V,          ,           VP                  ,          WK,          W~,          ,           V
V,          ,           VP                  ,          ,           W,,          W_,          ,           VV,          ,           VP                  ,          ,           pVP                  V 4      V,
          ^ 8X  g   Q hR# )r   r   zC11 C12 C13zC21 C22 C23zC31 C32 C33)levelDCMN)r   r   r^   orientr*   r   r<   r;   rK   r   dtrJ   )r   r   c11c12c13c21c22c23c31c32c33c11dc12dc13dc21dc22dc23dc31dc32dc33drd   b1ab2ab3aexprs                            r"   test_w_diff_dcm1r}      s    	sAsA"=1MCc"=1MCc"=1MCc%m1=D%m1=D%m1=D$
	3	3	3 C HHQs33--
C33--
C33--
C MM!SS#shhqk133/0SS#shhqk133/01SS#shhqk133/01 2
 x#d("SX-qss2x#("SX-qss23x#("SX-qss23D <<?T!Q&&&r&   c                     \        R 4      w  rp\        R4      pVP                  RRWP                  .4      pVP                  RRWP                  .4      pVP                  RRW%P
                  .4      pVP                  V4      P                  pVP                  RRV4      pVP                  V4      VP                  V4      u;8X  Ed   \        \        V4      \        V4      ,          \        V 4      \        V4      ,          \        V4      ,          \        V4      \        V 4      ,          ,           \        V 4      \        V4      ,          \        V4      \        V 4      ,          \        V4      ,          ,
          .\        V4      ) \        V4      ,          \        V 4      ) \        V4      ,          \        V4      ,          \        V 4      \        V4      ,          ,           \        V 4      \        V4      ,          \        V4      \        V4      ,          \        V 4      ,          ,           .\        V4      \        V 4      ) \        V4      ,          \        V 4      \        V4      ,          ..4      8X  g   Q h Q hVP                  V4      VP                  V4      ,
          P                  V4      P                  4       ^ 8X  g   Q hR# )	q1:4r5   r   axisr   r   r   rd   N)r   r   r:   r*   r<   r;   r]   Tr^   r   r   rJ   r   r   )	rM   rN   rO   r5   r   r   r   rd   r   s	            r"   test_w_diff_dcm2r      s   'JBBsA	C"cc+A	C"cc+A	C"cc+A
%%(**C	C$A
 558quuQx 76	RR#b'#b'/#b'1BBRRBBB 	!$'G8CG#3	RRR 3r73r7?2BB#b'#b'/#b'11#3 
R3r7(3r7"CGCGO4+6 $7 7 7 7 7 7 LLOall1o-66q9BBDIIIr&   c                       ! R  R\         4      p V ! R4      pVP                  RR^ VP                  .4      p\        W 4      '       g   Q hR# )c                       ] tR tRtRtR# )>test_orientnew_respects_parent_class.<locals>.MyReferenceFramei   N)__name__
__module____qualname____firstlineno____static_attributes__r   r&   r"   MyReferenceFramer     s    r&   r   r   r   r2   N)r   r:   r*   r7   )r   r   r   s      r"   $test_orientnew_respects_parent_classr     sC    > A	C!QSS*Aa****r&   c                  Z   \        R 4      p \        R4      pV P                  RRWP                  .4      pV P                   Uu. uF  q3R,           NK  	  ppV P                  RRWP                  .VR7      pV P                  VP                  8X  g   Q hVP                  V8X  g   Q hR# u upi )r5   rM   ar2   1bindicesN)r   r   r:   r;   r   )r5   rM   r   r*   mindsr   s         r"   %test_orientnew_respects_input_indicesr     s    sA		B	C"cc+AII&IqsUUIE&	C"ccE:A99		!!!99	 's   B(c                  d   \        R 4      p \        R4      pV P                  RRWP                  .4      pRVP                  P                  4       : RVP                  ^ ,          : R2RVP                  P                  4       : RVP                  ^,          : R2RVP                  P                  4       : RVP                  ^,          : R2.pRpV P                   Uu. uF  qUR,           NK  	  ppRVP                  4       : R	V^ ,          : R
2RVP                  4       : R	V^,          : R
2RVP                  4       : R	V^,          : R
2.pV P                  VRWP                  .VR7      pVP                  V8X  g   Q hVP                  V8X  g   Q hVP                  V8w  g   Q hR# u upi )r5   rM   r   r2   z\mathbf{\hat{z}_}r   r   z}_{z}})latexsN)r   r   r:   r;   namelowerr   
latex_vecs)	r5   rM   r   def_latex_vecsr   r*   r   new_latex_vecsr   s	            r"   $test_orientnew_respects_input_latexsr     s\   sA		B	C"cc+A 34&&,,.iill$vv||~qyy||(523&&,,.iill$&N Dii(iuuiG(G48JJLajj"zz|WQZZ&148JJLajj"$N 	
D&2ss)NCA<<>)))<<>)))99 )s    F-c                  0   \        R 4      p \        R4      pV P                  RRWP                  .4      pRpV P                   Uu. uF  pRV,           R,           NK  	  ppV P                  VRWP                  .VR7      p\        VP                  4       FA  w  rxVP                  VP                  R,           VP                  V,          ,           8X  d   KA  Q h	  \        VP                  4       F  w  rxVP                  WW,          8X  d   K  Q h	  R	# u upi )
r5   rM   r   r2   r   notb_r   r3   _N)r   r   r:   r;   r   	enumeratevarlistr   )	r5   rM   r   r   r*   new_variablesr   jvars	            r"   'test_orientnew_respects_input_variablesr   1  s    sA		B	C"cc+A D,-II6IqWQYs]]IM6	D&2ss)}EA199%xx166C<!))A,6666 & 199%xx=++++ & 7s   Dc                  Z    \        R 4      p \        R4      pVP                  RRV R4       R# )zu:3Ir   spaceXYZN)r   r   r:   )ur   s     r"   test_issue_10348r   A  s(    uAsAKKWa'r&   c                      \        R 4      p V P                  RR^#V P                  .4       \        R4      pV P                  VR^FVP                  .4       R# )r   r   r2   r   N)r   r:   r<   re   r;   )r   r   s     r"   test_issue_11503r   G  sF    sAKKVb!##Y'sAHHQQSS	"r&   c                  h   \        R 4      p \        R4      p\        R4      w  r#VP                  WVP                  ,          W0P                  ,          ,           4       V P                  W4      VP                  ) 8X  g   Q hV P                  WV4      VP                  ) V P                  ) 38X  g   Q hVP                  W4      VP                  8X  g   Q hVP                  WV4      VP                  V P                  38X  g   Q hV P                  W4      ^ 8X  g   Q hVP                  W4      ^ 8X  g   Q hR# )r5   r   zu1, u2N)r   r   rK   r*   r<   partial_velocity)r5   r   rU   rV   s       r"   test_partial_velocityr   N  s   sAsAH%FBMM!!##XSS()a$,,,aR(accTACC4L888a$+++aR(QSS!##J666a$)))a$)))r&   c            
      f   \        R 4      p \        R4      pV P                  VR\        ^4      4       V P                  V4      \	        . RO. RO. RO.4      8X  g   Q hVP                  V 4      \	        . RO. RO. RO.4      8X  g   Q hV P                  VR\	        . RO. RO. RO.4      4       VP                  V 4      \	        . RO. RO. RO.4      8X  g   Q hV P                  V4      \	        . RO. RO. R	O.4      8X  g   Q hVP                  V 4      P
                  V P                  V4      8X  g   Q hR# )
r   r   rd   N   r   r   r   r   r   r   r   r   )r   r   )r   r   r   )r   r   r   )r   re   r   r]   r^   r   r   r   s     r"   test_issue_11498r   a  s    sAsA HHQs1v558vy)Y?@@@@558vy)Y?@@@@
 HHQvy*jABC558vy*jABBBB558vz9jABBBB558::q!!!r&   c            	      \  a aaaaaa \        \        R  4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R 4       \        \        R	 4       \        R
4      oS^ ,          \	        RS^ 4      8X  g   Q hS^,          \	        RS^4      8X  g   Q hS^,          \	        RS^4      8X  g   Q h\        \        V3R l4       \        R
. R"O4      oSR,          SP
                  8X  g   Q hSR,          SP                  8X  g   Q hSR,          SP                  8X  g   Q h\        \        V3R l4       \        S4      R
8X  g   Q h\        R4      o \        R4      o\        R4      w  oooo\        \        V V3R l4       \        \        VVVVV3R l4       \        \        VVV3R l4       \        \        VVV3R l4       \        \        VVV3R l4       \        \        VVVVVV3R l4       \        \        VVV3R l4       \        \        VVVVV3R l4       \        \        VVVVV3R l4       \        \        VVVV3R l4       \        \        VVVV3R  l4       SP                  S^ 4       SP                  S4      \        ^ 4      8X  g   Q hSP                  S^ 4       SP!                  S4      \        ^ 4      8X  g   Q hR!# )#c                      \        ^ 4      # r(   r   r   r&   r"   r#   &test_reference_frame.<locals>.<lambda>t  s	    nQ/r&   c                      \        R ^ 4      # r5   r   r   r&   r"   r#   r   u  s    nS!4r&   c                      \        R ^ ^.4      # r   r   r   r&   r"   r#   r   v  s    ~cAq6:r&   c                      \        R . RO4      # )r5   r   r      r   r   r&   r"   r#   r   w  s    nS)<r&   c                       \        R . RO^ 4      # r5   r   r   cr   r   r&   r"   r#   r   x  s    nS/1Er&   c                  $    \        R . RO^ ^.4      # r   r   r   r&   r"   r#   r   y  s    ~c?QFKr&   c                  $    \        R . RO. RO4      # r5   r   r   r   r   r&   r"   r#   r   z  s    nS/9Mr&   c                  &    \        R . RO. RO^ 4      # r   r   r   r&   r"   r#   r   {  s    nS/1@!Er&   c                  *    \        R . RO. RO^ ^.4      # r   r   r   r&   r"   r#   r   }  s    ~c?.=1v Gr&   c                  *    \        R . RO. RO. RO4      # r   r   r   r&   r"   r#   r     s    nS/-<iIr&   r5   N_xN_yN_zc                     < S ^,          # )   r   r   s   r"   r#   r     s	    qtr&   r   r   r   c                     < S R ,          # )dr   r   s   r"   r#   r     s	    qvr&   r   r   zq0 q1 q2 q3c                  *   < S P                  SR ^ 4      # )rd   re   r   s   r"   r#   r     s    ahhq%3r&   c                  2   < S P                  SR SSS.R4      # )r[   222r   )r   r5   rM   rN   rO   s   r"   r#   r     s    ahhq'BB<Gr&   c                  t   < S P                  SR SSP                  ^SP                  ,          ,           .R4      # )r2   r   )re   r*   r<   r   r5   rM   s   r"   r#   r     s)    ahhq&2qssQW}2EuMr&   c                  *   < S P                  SR S4      # r2   r   r   s   r"   r#   r     s    ahhq&"5r&   c                  ,   < S P                  SR S.4      # r   r   r   s   r"   r#   r     s    qxx6B48r&   c                  4   < S P                  SR SSSS.R4      # )rG   r   r   )r   r5   rF   rM   rN   rO   s   r"   r#   r     s    ahhq,RR8H%Pr&   c                  *   < S P                  SR S4      # rG   r   )r   r5   rF   s   r"   r#   r     s    ahhq,;r&   c                  0   < S P                  SR SSS.4      # r   r   r   r5   rF   rM   rN   s   r"   r#   r     s    ahhq,REr&   c                  0   < S P                  SR SSS.4      # )Foor   r   s   r"   r#   r     s    EBB<(Hr&   c                  0   < S P                  SR SS.R4      # )rH   232r   r   r5   rM   rN   s   r"   r#   r     s    ahhq&2r(EBr&   c                  0   < S P                  SR SS.R4      # )r[   r   r   r   s   r"   r#   r     s    ahhq'B8UCr&   Nr   )r   	TypeErrorr+   r   r   r*   r<   r;   strr   
IndexErrorNotImplementedErrorset_ang_acc
ang_acc_inr   rK   rJ   )r   r   r5   rF   rM   rN   rO   s   @@@@@@@r"   test_reference_framer   s  sF   
9/0
945
::;
9<=
9EF
:KL
9MN
9 E F
: G H
9 I JsAQ4=1----Q4=1----Q4=1----
:|$sO,AS6QSS==S6QSS==S6QSS==
:~&q6S==sAsA]+NBB
934
9GGH
9MN
956
:89
9PPQ
9;<
9EEF
 H HI
9BC
9CDMM!Q<<?fQi'''MM!Q<<?fQi'''r&   c                  (    \        \        R  4       R# )c                      \        ^ 4      # r(   r   r   r&   r"   r#   "test_check_frame.<locals>.<lambda>  s    LOr&   N)r   r   r   r&   r"   test_check_framer     s    
?34r&   c                     \        R 4      w  rp\        V 4      p\        V 4      p\        V4      p\        V4      p\        V4      p\        V4      p\        Wh,          W5,          V,          Wt,          ,
          WE,          V,          Ws,          ,           .Wg,          W5,          V,          W,          ,           WE,          V,          W,          ,
          .V) W6,          WF,          ..4      p	\	        R4      p
\	        R4      pVP                  V
RV	4       VP                  V
4      pWv,          V P                  4       ,          WP                  4       ,          ,           pW6,          VP                  4       ,          WAP                  4       ,          ,           p\        VP                  V
P                  4      V,
          4      ^ 8X  g   Q h\        VP                  VP                  4      V,
          4      ^ 8X  g   Q hR# )r   r   r   rd   N)r   r   r   r^   r   re   rJ   diffr   r   r<   )rM   rN   rO   s1c1s2c2s3c3r]   r   r   AwBalpha2beta2s                  r"   test_dcm_diff_16824r     si     'JBB	RB	RB	RB	RB	RB	RB
25"%(RU*BE"Hru,<=5"%(RU*BE"Hru,<=3"%BE24 5C 	sAsAHHQs
,,q/CU2779_r'')|+FE"'')Obl*ECGGACCL6)*a///CGGACCL5()Q...r&   c                  
   \        R 4      w  rp\        R4      w  r4p\        R4      w  rgp\        R ^4      w  rp\        R^4      w  rp\        R^4      w  ppp\        R4      p\        R4      p\        WV.WQV.WxV..4      pVV,          VV,          ,           Wk,          ,           VP                  ,          Wy,          W,          ,           W-,          ,           VP                  ,          ,           W,          W:,          ,           WO,          ,           VP
                  ,          ,           pVP                  VV4       VP                  V4      V8X  g   Q hVP                  V4      V8X  g   Q hVP                  V4      V) 8X  g   Q hR# zc_{xx}, c_{yy}, c_{zz}zc_{xy}, c_{xz}, c_{yx}zc_{yz}, c_{zx}, c_{zy}r   r   N)	r   r   r^   r*   r<   r;   orient_explicitr]   rJ   )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    sZ   "#;<MCc"#;<MCc"#;<MCc%&>BD%&>BD%&>BD$sAsASsOsOsO% &E $hT!CH,acc1X 38+QSS01X 38+QSS01E a558u<<?e###<<?uf$$$r&   c                  $   \        R 4      w  rp\        R4      w  r4p\        R4      w  rgp\        WV.WQV.WxV..4      p	\        R4      p
\        R4      pVP                  W4       VP	                  V
4      \        WV.WQV.WxV..4      8X  g   Q hR# r  )r   r^   r   
orient_dcmr]   )r  r  r  r  r  r	  r
  r  r  r  r   r   s               r"   test_orient_dcmr    s    "#;<MCc"#;<MCc"#;<MCcSsOsOsO% &E 	sAsALL558v# ## ##0 1 1 1 1r&   c                    aa \        R 4      o\        R4      oSP                  SSP                  ) ^4       SP                  S4      p SP                  SSP                  R4       SP                  S4      pSP                  S^SP                  ) 4       SP                  S4      pW8X  g   Q hW8X  g   Q h\	        \
        VV3R l4       R# )r   r   c                  *   < S P                  S^^4      # )r   )r)   r   s   r"   r#   "test_orient_axis.<locals>.<lambda>  s    ammAq!4r&   Nr   )r   r)   r*   r]   r   r   )A1rE   A3r   r   s      @@r"   test_orient_axisr!    s    sAsAMM!QSSD!	
qBMM!QSS"	
qBMM!Q	
qB8O88O8
945r&   c            
         \        R 4      p \        R4      pVP                  V RR4       VP                  V 4      \        \	        ^4      \        ^4      ^,          \        ^4      ) \	        ^4      ,          .^ \	        ^4      \        ^4      .\        ^4      \        ^4      ) \	        ^4      ,          \	        ^4      ^,          ..4      8X  g   Q hR# )r   r   XYXN)r   r   r   )r   orient_body_fixedr]   r^   r   r   r   s     r"   test_orient_bodyr%    s    sAsA7E*558vAA	CF73q6>BQAPSTUPVDWZ]^_Z`cfghcibijmnojpbpruvwrxz{r{Y|}~~~~r&   c                  .   \        R 4      w  rp\        R4      w  r4p\        R ^4      w  rgp\        R4      \        R4      rV
P                  WW3R4       V	P	                  V
4      \        \        V 4      ) \        V4      ,          \        V4      ,          \        V 4      \        V4      ,          ,           \        V 4      ) \        V4      ,          \        V 4      \        V4      ,          \        V4      ,          \        V4      \        V 4      ,          ,           .\        V 4      \        V4      ,          \        V4      \        V4      ,          \        V 4      ,          ,           \        V 4      \        V4      ,          \        V 4      \        V4      ,          \        V4      \        V 4      ,          \        V4      ,          ,
          .\        V4      ) \        V4      ,          \        V4      \        V4      \        V4      ,          ..4      8X  g   Q hV
P                  V	4      P                  V
4      \        \        V4      ) \        V4      ,          V,          \        V4      V,          ,           .\        V4      V,          V,           .\        V4      V,          \        V4      \        V4      ,          V,          ,           ..4      8X  g   Q h\        R4      \        R4      rV
P                  WWB3^4       V	P	                  V
4      \        \        V4      \        V4      ) \        V4      ,          \        V4      \        V4      ,          .\        V4      \        V 4      ,          \        V 4      ) \        V4      ,          \        V4      \        V 4      ,          \        V4      ,          ,           \        V 4      ) \        V4      ,          \        V4      \        V4      ,          \        V 4      ,          ,
          .\        V4      \        V 4      ,          \        V 4      \        V4      ,          \        V4      ,          \        V4      \        V 4      ,          ,           \        V 4      ) \        V4      ,          \        V4      ,          \        V 4      \        V4      ,          ,           ..4      8X  g   Q hV
P                  V	4      P                  V
4      \        \        V4      V,          V,           .\        V4      ) \        V4      ,          V,          .\        V4      \        V4      ,          V,          ..4      8X  g   Q h\        R4      \        R4      rV
P                  WWE3^{4       V
P                  V	4      \        ^ 4      8X  g   Q hR# )r   c1:4r   r   zxyN)r   r   r   r$  r]   r^   r   r   rJ   	to_matrixr   rM   rN   rO   r   r   r   rU   rV   rW   r   r   s              r"   test_orient_body_advancedr+    s   'JBBJBB*JBB #s 3q</558v
b'CG	c"g	%B#b'(9	9CG8c"g;M	R3r7	SW	$s2wR'8	8	:	R3r7	SWs2w.R8	8#b'CG:K	R3r7	SWs2w.R8	8	:
b'CG	SWc"gB&78: ; ; ; ; <<?$$Q'6
b'CG	b	 3r7R<	/0	R2		R2B#b')B.	./31 ,2 2 2 2 #s 3q<-558v	R3r7(SW$c"gB&78	R3r7	SWHs2w.R3r71BSW1LL
b'CG	c"gB/#b'9	9	;	R3r7	CGc"g-B7#b'CG:KK
b'CG	c"g	%B#b'(9	9	;	< = = = = <<?$$Q'6	R2	
b'CG	b	 !	R3r7	R	 3" ,# # # # #s 3q<-<<?fQi'''r&   c                  .   \        R 4      w  rp\        R4      w  r4p\        R ^4      w  rgp\        R4      \        R4      rV
P                  WW3R4       V	P	                  V
4      \        \        V 4      ) \        V4      ,          \        V4      ,          \        V 4      \        V4      ,          ,           \        V 4      ) \        V4      ,          \        V 4      \        V4      ,          \        V4      ,          \        V4      \        V 4      ,          ,           .\        V 4      \        V4      ,          \        V4      \        V4      ,          \        V 4      ,          ,           \        V 4      \        V4      ,          \        V 4      \        V4      ,          \        V4      \        V 4      ,          \        V4      ,          ,
          .\        V4      ) \        V4      ,          \        V4      \        V4      \        V4      ,          ..4      8X  g   Q hV
P                  V	4      P                  V
4      \        \        V4      ) \        V4      ,          V,          \        V4      V,          ,           .\        V4      V,          V,           .\        V4      V,          \        V4      \        V4      ,          V,          ,           ..4      8X  g   Q h\        R4      \        R4      rV
P                  WW@3^4       V	P	                  V
4      \        \        V4      \        V4      ) \        V4      ,          \        V4      \        V4      ,          .\        V4      \        V 4      ,          \        V 4      ) \        V4      ,          \        V4      \        V 4      ,          \        V4      ,          ,           \        V 4      ) \        V4      ,          \        V4      \        V4      ,          \        V 4      ,          ,
          .\        V4      \        V 4      ,          \        V 4      \        V4      ,          \        V4      ,          \        V4      \        V 4      ,          ,           \        V 4      ) \        V4      ,          \        V4      ,          \        V 4      \        V4      ,          ,           ..4      8X  g   Q hV
P                  V	4      P                  V
4      \        \        V4      V,          V,           .\        V4      ) \        V4      ,          V,          .\        V4      \        V4      ,          V,          ..4      8X  g   Q h\        R4      \        R4      rV
P                  WWE3^{4       V
P                  V	4      \        ^ 4      8X  g   Q hR# )r   r'  r   r   yxzN)r   r   r   orient_space_fixedr]   r^   r   r   rJ   r)  r   r*  s              r"   test_orient_space_advancedr/  #  s   'JBBJBB*JBB #s 3qL%0558v
b'CG	c"g	%B#b'(9	9CG8c"g;M	R3r7	SW	$s2wR'8	8	:	R3r7	SWs2w.R8	8#b'CG:K	R3r7	SWs2w.R8	8	:
b'CG	SWc"gB&78: ; ; ; ; <<?$$Q'6
b'CG	b	 3r7R<	/0	R2		R2B#b')B.	./31 ,2 2 2 2 #s 3qL#.558v	R3r7(SW$c"gB&78	R3r7	SWHs2w.R3r71BSW1LL
b'CG	c"gB/#b'9	9	;	R3r7	CGc"g-B7#b'CG:KK
b'CG	c"g	%B#b'(9	9	;	< = = = = <<?$$Q'6	R2	
b'CG	b	 !	R3r7	R	 3" ,# # # # #s 3qL#.<<?fQi'''r&   c                    \        R4      w  rp\         P                  p\        R4      p\        R4      pVP                  W@W3R4       VP	                  V4      pVP
                  ^ ,          ^,          V8X  g   Q hVP
                  ^ ,          ^ ,          ^ ,          \        V4      \        V4      ,          V P                  V4      ,          \        V4      VP                  V4      ,          ,           8X  g   Q hVP
                  ^ ,          ^ ,          ^,          \        V4      \        V4      ,          V P                  V4      ,          \        V4      VP                  V4      ,          ,
          8X  g   Q hVP
                  ^ ,          ^ ,          ^,          \        V4      V P                  V4      ,          VP                  V4      ,           8X  g   Q hR# )zThis test ensures that the simplest form of that linear system solution
is returned, thus the == for the expression comparison.zpsi, theta, varphir   r   ZXZN)	r   _tr   r$  rJ   argsr   r   r   )psithetaphitr   r   A_w_Bs          r"   test_orient_body_simple_ang_velr9  K  s_    %%9:OCAsAsA,e4LLOE::a=q   ::a=A3u:c#h#6sxx{#B#&s8EJJqM#9$: ; ; ;::a=A3u:c#h#6sxx{#B#&s8EJJqM#9$: ; ; ;::a=A#e*SXXa["8388A;"FFFFr&   c                      \        R 4      p \        R4      pVP                  V RR4       VP                  V 4      \        . RO. RO. RO.4      8X  g   Q hR# )r   r   r\   Nr   r   r   r   r   r   )r   r.  r]   r^   r   s     r"   test_orient_spacer<  ]  sJ    sAsAGU+558vy)Y?@@@@r&   c                      \        R 4      p \        R4      pVP                  V R4       VP                  V 4      \        . RO. RO. RO.4      8X  g   Q hR# )r   r   N)r   r   r   r   r;  )r   orient_quaternionr]   r^   r   s     r"   test_orient_quaternionr?  c  sH    sAsA9%558vy)Y?@@@@r&   c                  J   \        R 4      p \        R4      p\        R4      p\        R4      w  r4pVP                  W P                  V4       VP                  WP                  V4       \        P
                  ! RR7      ;_uu_ 4       p\        P                  ! R4       V P                  W"P                  V4       \        VR,          P                  \        4      '       g   Q hR	\        VR,          P                  4      9   g   Q h RRR4       R#   + '       g   i     R# ; i)
r   r   r   a b cT)recordalwaysNr   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_warningrL  i  s    sAsAsAgGA!MM!SS!MM!SS!		 	 $	/	/1h'	aa !B%..+6666TWZ[\]_[`[h[hWij 	j j	 
0	/	/	/s   A?DD"	c                     \        R 4      p \        R4      p\        R4      p\        R4      w  r4pVP                  W P                  V4       V P                  V\        . RO^ \        V4      \        V4      ) .^ \        V4      \        V4      ..4      /8X  g   Q hVP                  V \        . RO^ \        V4      \        V4      .^ \        V4      ) \        V4      ..4      /8X  g   Q hVP                  / 8X  g   Q hVP                  W"P                  V4       V P                  V\        . RO^ \        V4      \        V4      ) .^ \        V4      \        V4      ..4      /8X  g   Q hVP                  V \        . RO^ \        V4      \        V4      .^ \        V4      ) \        V4      ..4      V\        . RO^ \        V4      \        V4      .^ \        V4      ) \        V4      ..4      /8X  g   Q hVP                  V\        . RO^ \        V4      \        V4      ) .^ \        V4      \        V4      ..4      /8X  g   Q hV P                  WP                  V4       VP                  V\        . RO^ \        V4      \        V4      .^ \        V4      ) \        V4      ..4      V \        . RO^ \        V4      \        V4      ) .^ \        V4      \        V4      ..4      /8X  g   Q hV P                  V\        . RO^ \        V4      \        V4      .^ \        V4      ) \        V4      ..4      /8X  g   Q hVP                  V\        . RO^ \        V4      \        V4      ) .^ \        V4      \        V4      ..4      /8X  g   Q hR# )r   r   r   rA  Nr   )r   r   r)   r*   	_dcm_dictr^   r   r   )r   r   r   r   r   r   s         r"   test_frame_dictrO  y  s    sAsAsAgGA!MM!SS!;;1fiCFSVG0DaQRUVWRXEY%Z[\\\\;;1fiSVSV0Da#a&RUVWRXEY%Z[\\\\;;"MM!SS!;;1fiCFSVG0DaQRUVWRXEY%Z[\\\\;;1fiSVSV0Da#a&RUVWRXEY%Z[	69a#a&#a&11s1vgs1v2FGHJ J J J;;1fiCFSVG0DaQRUVWRXEY%Z[\\\\MM!SS!;;1fiSVSV0Da#a&RUVWRXEY%Z[	69aQ#a&11c!fs1v2FGHJ J J J;;1fiSVSV0Da#a&RUVWRXEY%Z[\\\\;;1fiCFSVG0DaQRUVWRXEY%Z[\\\\r&   c                     \        R 4      p \        R4      p\        R4      p\        R4      p\        R4      w  rEpVP                  W P                  V4       VP                  WP                  V4       VP                  W"P                  V4       VP                  V\        . RO^ \        V4      \        V4      .^ \        V4      ) \        V4      ..4      /8X  g   Q hVP                  V\        . RO^ \        V4      \        V4      .^ \        V4      ) \        V4      ..4      V\        . RO^ \        V4      \        V4      ) .^ \        V4      \        V4      ..4      /8X  g   Q hVP                  V \        . RO^ \        V4      \        V4      .^ \        V4      ) \        V4      ..4      V\        . RO^ \        V4      \        V4      ) .^ \        V4      \        V4      ..4      /8X  g   Q hV P                  V\        . RO^ \        V4      \        V4      ) .^ \        V4      \        V4      ..4      /8X  g   Q hVP                  VP                  8X  g   Q hVP                  V 4       \        V P                  P                  4       4      WV.8X  g   Q h\        VP                  P                  4       4      W .8X  g   Q h\        V P                  P                  4       4      V.8X  g   Q h\        VP                  P                  4       4      V.8X  g   Q hV P                  V P                  8w  g   Q hV P                  WP                  V4       V P                  V\        . RO^ \        V4      \        V4      .^ \        V4      ) \        V4      ..4      /8X  g   Q hV P                  V P                  8X  g   Q hVP                  V\        . RO^ \        V4      \        V4      ) .^ \        V4      \        V4      ..4      V \        . RO^ \        V4      \        V4      ) .^ \        V4      \        V4      ..4      /8X  g   Q hR# )r   r   r   r   rA  Nr   )r   r   r)   r*   rN  r^   r   r   
_dcm_cacher]   listkeys)r   r   r   r   r   r   r   s          r"   test_dcm_cache_dictrT    s   sAsAsAsAgGA!MM!SS!MM!SS!MM!SS!;;1fiSVSV0Da#a&RUVWRXEY%Z[\\\\;;1fiSVSV0Da#a&RUVWRXEY%Z[	69aQ#a&11c!fs1v2FGHJ J J J;;1fiSVSV0Da#a&RUVWRXEY%Z[	69aQ#a&11c!fs1v2FGHJ J J J;;1fiCFSVG0DaQRUVWRXEY%Z[\\\\;;!,,&&&EE!H!!#$q	111!!#$...  "#s***  "#s***;;!,,&&&MM!SS!;;1fiSVSV0Da#a&RUVWRXEY%Z[\\\\;;!,,&&&;;1fiCFSVG0DaQRUVWRXEY%Z[	69aQ#a&11c!fs1v2FGHJ J J Jr&   c                  *   \        R 4      p \        R. ROR7      pV P                  \        P                  ! V P                  V P                  4      8X  g   Q hVP                  \        P                  ! VP                  VP                  4      8X  g   Q hR# r5   r   r   N)r   23)r   xxr   outerr*   r5   r   s     r"   test_xx_dyadr\    b    sAsO4A446<<QSS))))446<<QSS))))r&   c                  *   \        R 4      p \        R. ROR7      pV P                  \        P                  ! V P                  V P
                  4      8X  g   Q hVP                  \        P                  ! VP                  VP
                  4      8X  g   Q hR# rV  )r   xyr   rZ  r*   r<   r[  s     r"   test_xy_dyadr`    r]  r&   c                  *   \        R 4      p \        R. ROR7      pV P                  \        P                  ! V P                  V P
                  4      8X  g   Q hVP                  \        P                  ! VP                  VP
                  4      8X  g   Q hR# rV  )r   xzr   rZ  r*   r;   r[  s     r"   test_xz_dyadrc    r]  r&   c                  *   \        R 4      p \        R. ROR7      pV P                  \        P                  ! V P                  V P
                  4      8X  g   Q hVP                  \        P                  ! VP                  VP
                  4      8X  g   Q hR# rV  )r   yxr   rZ  r<   r*   r[  s     r"   test_yx_dyadrf    r]  r&   c                  *   \        R 4      p \        R. ROR7      pV P                  \        P                  ! V P                  V P                  4      8X  g   Q hVP                  \        P                  ! VP                  VP                  4      8X  g   Q hR# rV  )r   yyr   rZ  r<   r[  s     r"   test_yy_dyadri    r]  r&   c                  *   \        R 4      p \        R. ROR7      pV P                  \        P                  ! V P                  V P
                  4      8X  g   Q hVP                  \        P                  ! VP                  VP
                  4      8X  g   Q hR# rV  )r   yzr   rZ  r<   r;   r[  s     r"   test_yz_dyadrl    r]  r&   c                  *   \        R 4      p \        R. ROR7      pV P                  \        P                  ! V P                  V P
                  4      8X  g   Q hVP                  \        P                  ! VP                  VP
                  4      8X  g   Q hR# rV  )r   zxr   rZ  r;   r*   r[  s     r"   test_zx_dyadro    r]  r&   c                  *   \        R 4      p \        R. ROR7      pV P                  \        P                  ! V P                  V P
                  4      8X  g   Q hVP                  \        P                  ! VP                  VP
                  4      8X  g   Q hR# rV  )r   zyr   rZ  r;   r<   r[  s     r"   test_zy_dyadrr    r]  r&   c                  *   \        R 4      p \        R. ROR7      pV P                  \        P                  ! V P                  V P                  4      8X  g   Q hVP                  \        P                  ! VP                  VP                  4      8X  g   Q hR# rV  )r   zzr   rZ  r;   r[  s     r"   test_zz_dyadru    r]  r&   c                  6   \        R 4      p \        R. ROR7      pV P                  V P                  V P                  ,           V P                  ,           8X  g   Q hVP                  VP                  VP                  ,           VP                  ,           8X  g   Q hR# rV  )r   r   rY  rh  rt  r[  s     r"   test_unit_dyadicrw    sf    sAsO4A33!$$+$$$$33!$$+$$$$r&   c                  d   \        R 4      p \        R4      pVP                  W P                  ^4       VP                  V 4      p\        P
                  ! \        P                  ! V 4      4      p\        VP                  P                  4       4      ^ ,          pVP                  V4      V8X  g   Q hR# )r5   r   N)
r   r)   r*   r]   pickleloadsdumpstuplerN  rS  )r5   r   A_C_NN1r  s        r"   test_pickle_framer    s}    sAsAMM!SS!EE!HE	fll1o	&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
   r^   sympy.simplify.simplifyr   sympy.physics.vectorr   r   r   r   r   r   r   sympy.physics.vector.framer   sympy.physics.vector.vectorr   sympy.testing.pytestr   rD  ry  r,   rB   rY   ra   r}   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r!  r%  r+  r/  r9  r<  r?  rL  rO  rT  r\  r`  rc  rf  ri  rl  ro  rr  ru  rw  r  r   r&   r"   <module>r     s   ! % # ? - C ,' ' ' 4 7 '  347Ft?=DB#'JJ,+	 4, (#*&"$,(^5/@%(16$(N%(PG$AAj ]4 JD*********%r&   