
    hs                        S SK Jr  S SKJr  S SKJr  S SKJrJr  S SK	J
r
Jr  S SKJr  S SKJr  S SKJrJrJrJrJrJrJr  S S	KJr  S S
KJr  S SKJr  S SKrS SK r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2S r3S  r4S! r5S" r6S# r7S$ r8S% r9S& r:S' r;S( r<S) r=S* r>S+ r?S, r@S- rAS. rBS/ rCS0 rDS1 rES2 rFS3 rGS4 rHg)5    )pi)symbols)trigsimp)cossin)eyezeros)ImmutableDenseMatrix)simplify)ReferenceFrameVectorCoordinateSymdynamicsymbolstime_derivativeexpressdot_check_frame)VectorTypeError)raisesNc                  l  ^^^^ [        S5      m[        S5      n [        S5      m[        S5      n[        S5      m[        S5      mU R                  TTR                  S5        TR                  X R                  S5        UR                  TTR                  S5        UR                  TS5      UTU T/:X  d   eTR                  XR                  S5        TR                  TS5      TU T/:X  d   eTR                  TS5      TUT/:X  d   e[	        [
        UU4S	 j5        [	        [
        UU4S
 j5        g )NABCDEFg      ?r   c                  (   > T R                  TS5      $ )N   
_dict_list)r   r   s   _/var/www/fran/franai/venv/lib/python3.13/site-packages/sympy/physics/vector/tests/test_frame.py<lambda> test_dict_list.<locals>.<lambda>'       q||Aq1    c                  (   > TR                  T S5      $ Nr   r    )r   r   s   r"   r#   r$   )   r%   r&   )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                    ^ [        S5      m[        STS5      TS   :X  d   e[        STS5      TS   :X  d   e[        STS5      TS   :X  d   e[        [        U4S j5        [	        S5      n [	        SS5      n[        TS   [        5      (       a0  [        TS   [        5      (       a  [        TS   [        5      (       d   eTR                  T5      TS   TS   TS   TS   TS   TS   0:X  d   eTS   R                  T:X  d   eTR                  SS	U TR                  /5      nUR                  T5      US   TS   US   TS   * [        U 5      -  TS   [        U 5      -  -   US   TS   [        U 5      -  TS   [        U 5      -  -   0:X  d   eTR                  U5      TS   US   [        U 5      -  US   [        U 5      -  -
  TS   US   [        U 5      -  US   [        U 5      -  -   TS   US   0:X  d   e[        US   T5      TS   * [        U 5      -  U-  TS   [        U 5      -  U-  -   :X  d   e[        US   T5      TS   * [        U 5      -  U-  TS   [        U 5      -  U-  -
  :X  d   e[        US   T5      S:X  d   e[        US   TS
S9TS   [        U 5      -  TS   [        U 5      -  -   :X  d   e[        US   TS
S9TS   * [        U 5      -  TS   [        U 5      -  -   :X  d   e[        US   TS
S9TS   :X  d   e[        TS   TR                  -  TS   TR                  -  -   TS   TR                  -  -   U5      TS   U-  TR                  -  TS   U-  TR                  -  -
  :X  d   e[        US   UR                  -  US   UR                  -  -   US   UR                  -  -   T5      US   * U-  UR                  -  US   U-  UR                  -  -   :X  d   e[        US   US   -  US   -  TS
S9TS   TS   * [        U 5      -  TS   [        U 5      -  -   -  TS   [        U 5      -  TS   [        U 5      -  -   -  :X  d   e[        US   US   -  US   -  T5      TS   TS   S-  * [        SU -  5      -  STS   -  TS   -  [        SU -  5      -  -
  TS   S-  [        SU -  5      -  -   -  U-  -
  R!                  5       S:X  d   e[        US   UR                  -  US   UR                  -  -   US   UR                  -  -   T5      US   [        U 5      -  US   [        U 5      -  -
  TR                  -  US   [        U 5      -  US   [        U 5      -  -   TR                  -  -   US   TR                  -  -   :X  d   e[        US   UR                  -  US   UR                  -  -   US   UR                  -  -   TS
S9R#                  5       TS   TR                  -  TS   TR                  -  -   TS   TR                  -  -   :X  d   e[        TS   TR                  -  TS   TR                  -  -   TS   TR                  -  -   U5      TS   [        U 5      -  TS   [        U 5      -  -   UR                  -  TS   * [        U 5      -  TS   [        U 5      -  -   UR                  -  -   TS   UR                  -  -   :X  d   e[        TS   TR                  -  TS   TR                  -  -   TS   TR                  -  -   US
S9R#                  5       US   UR                  -  US   UR                  -  -   US   UR                  -  -   :X  d   eUR                  SS	U * UR                  /5      nUR                  T5      R%                  5        VVs0 s H  u  pEXER#                  5       _M     snnUS   TS   US   TS   US   TS   0:X  d   eTR                  SS	U TR                  TR                  -   TR                  -   /5      nTR                  U5      n[!        UTS      5      SUS   -  [        U 5      -  S-  US   S-  -   SUS   -  [        U [&        S-  -   5      -  S-  -
  US   S-  -   SUS   -  [        U [&        S-  -   5      -  S-  -
  US   S-  -   :X  d   e[!        UTS      5      SUS   -  [        U [&        S-  -   5      -  S-  US   S-  -   SUS   -  [        U 5      -  S-  -   US   S-  -   SUS   -  [        U [&        S-  -   5      -  S-  -
  US   S-  -   :X  d   e[!        UTS      5      SUS   -  [        U [&        S-  -   5      -  S-  US   S-  -   SUS   -  [        U [&        S-  -   5      -  S-  -
  US   S-  -   SUS   -  [        U 5      -  S-  -   US   S-  -   :X  d   egs  snnf )z,Tests the coordinate variables functionalityr   Axr         c                     > [        ST S5      $ )Nr.      )r   )r   s   r"   r#   &test_coordinate_vars.<locals>.<lambda>2   s    }T1a8r&   qr   AxisT	variablesNr   r2      N)r   r   r   r+   r   
isinstancevariable_mapframe	orientnewzr   r   r   r   r*   yr   r   itemsr   )	r4   qdr   r8   kvr   mappingr   s	           @r"   test_coordinate_varsrF   ,   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   2gc                     [        S5      u  pp#[        SS5      u  pEpg[        S5      nUR                  SSXR                  /5      n	U	R                  SSXR                  /5      n
U
R                  SSX*R
                  /5      nUR                  SSX8R
                  /5      n[        S	5      u  pnU	R                  U5      XIR                  -  :X  d   eU
R                  U5      XZR                  -  XIR                  -  -   :X  d   eUR                  U5      XkR
                  -  XZR                  -  -   XIR                  -  -   :X  d   eUR                  S
SX8R
                  /5      nUR                  U5      S:X  d   eUR                  U	5      U* UR                  -  :X  d   eUR                  U
5      U* U	R                  -  XZR                  -  -
  :X  d   eUR                  U5      U* U	R                  -  XZR                  -  -
  XjR
                  -  -
  :X  d   eUR                  U5      U* UR
                  -  :X  d   eU	R                  U5      XHR                  -  :X  d   eU	R                  U	5      S:X  d   eU	R                  U
5      U* U
R                  -  :X  d   eU	R                  U5      U* U
R                  -  XjR
                  -  -
  :X  d   eU	R                  U5      XHR                  -  XxR
                  -  -
  :X  d   eU
R                  U5      XIR                  -  XYR                  -  -   :X  d   eU
R                  U	5      XYR                  -  :X  d   eU
R                  U
5      S:X  d   eU
R                  U5      U* U
R
                  -  :X  d   eU
R                  U5      XIR                  -  XYR                  -  -   XxR
                  -  -
  :X  d   eUR                  U5      XIR                  -  XYR                  -  -   XjR
                  -  -   :X  d   eUR                  U	5      XYR                  -  XkR
                  -  -   :X  d   eUR                  U
5      XjR
                  -  :X  d   eUR                  U5      S:X  d   eUR                  U5      XIR                  -  XYR                  -  -   XjR
                  -  -   XxR
                  -  -
  :X  d   eUR                  U5      UUR
                  -  :X  d   eUR                  U	5      UUR
                  -  XHR                  -  -
  :X  d   eUR                  U
5      XxR
                  -  XIR                  -  -
  XYR                  -  -
  :X  d   eUR                  U5      XxR
                  -  XIR                  -  -
  XYR                  -  -
  XjR
                  -  -
  :X  d   eUR                  U5      S:X  d   eUR                  XUR                  -  XR
                  -  -   XR                  -  -   5        UR                  U5      XR                  -  XR
                  -  -   XR                  -  -   :X  d   eUR                  U5      U* UR                  -  U* UR
                  -  -   U* UR                  -  -   :X  d   eUR                  U5      XR                  -  XR
                  -  -   XR                  -  -   U* UR
                  -  -   :X  d   eUR                  U5      U* UR                  -  U* UR
                  -  -   U* UR                  -  -   X|R
                  -  -   :X  d   e[        S5      n[        SS5      nUR                  SSUXU45      nUR                  U5      SUU-  XR-  -   Xa-  -
  UU -  -
  -  UR                  -  SUU-  X`-  -   XB-  -
  UU-  -
  -  UR
                  -  -   SUU-  XA-  -   XP-  -
  UU-  -
  -  UR                  -  -   :X  d   eUR                  SSXU4S5      nUR                  U5      [        U5      [        U5      -  U-  [        U5      U-  -   UR                  -  [        U5      [        U5      -  U-  [        U5      U-  -
  UR
                  -  -   [        U5      U-  U-   UR                  -  -   :X  d   eUR                  SSXR                  UR
                  -   45      nUR                  U5      XHR                  UR
                  -   R                  5       -  :X  d   eUR                  U5      U* UR                  UR
                  -   R                  5       -  :X  d   eg )Nq1 q2 q3 q4r/   r8   r   r5   r   r   r   zu1 u2 u3A2r   q0r   
Quaternionr0   r   Bodyi9  G)r   r   r>   r?   r*   r@   
ang_vel_inset_ang_velr   r   	normalize)q1q2q3q4q1dq2dq3dq4dr8   r   r   r   r   u1u2u3rI   rJ   q0dr   r   rM   s                         r"   test_ang_velr]   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                     [        S5      u  pp#[        S5      nUR                  SSXR                  /5      nUR                  SSXR                  /5      nUR                  SSX&R
                  /5      nUR                  SSX4R
                  /5      nUR                  SS	XU/S
5      n	UR                  U5      [        [        U 5      * [        U5      -  [        U5      -  [        U 5      [        U5      -  -   [        U 5      * [        U5      -  [        U 5      [        U5      -  [        U5      -  [        U5      [        U 5      -  -   /[        U 5      [        U5      -  [        U5      [        U5      -  [        U 5      -  -   [        U 5      [        U5      -  [        U 5      [        U5      -  [        U5      [        U 5      -  [        U5      -  -
  /[        U5      * [        U5      -  [        U5      [        U5      [        U5      -  //5      :X  d   eUR                  U5      [        [        U 5      [        U5      -  [        U5      -  [        U5      [        U5      * [        U5      -  [        U 5      [        U5      -  [        U5      -  -   -  -
  [        U5      * [        U5      -  [        U 5      [        U5      -  [        U5      -  -
  [        U5      [        U 5      -  [        U5      -  [        U5      [        U5      * [        U5      -  [        U 5      [        U5      -  [        U5      -  -   -  -   /[        U 5      [        U5      -  [        U5      [        U5      -  [        U 5      -  -   [        U 5      [        U5      -  [        U 5      [        U5      -  [        U5      [        U 5      -  [        U5      -  -
  /[        U5      [        U 5      -  [        U5      -  [        U5      [        U5      [        U5      -  [        U 5      [        U5      -  [        U5      -  -   -  -
  [        U5      [        U5      -  [        U 5      [        U5      -  [        U5      -  -
  [        U5      [        U5      -  [        U 5      -  [        U5      [        U5      [        U5      -  [        U 5      [        U5      -  [        U5      -  -   -  -   //5      -
  n
U
R                  5       [        SS5      :X  d   eU	R                  U5      [        [        U5      [        U5      -  [        U5      [        U5      -  [        U5      * /[        U 5      [        U5      -  [        U5      -  [        U5      [        U 5      -  -
  [        U 5      [        U5      -  [        U5      -  [        U 5      [        U5      -  -   [        U 5      [        U5      -  /[        U 5      [        U5      -  [        U5      [        U 5      -  [        U5      -  -   [        U 5      * [        U5      -  [        U5      [        U5      -  [        U 5      -  -   [        U 5      [        U5      -  //5      :X  d   eg )NrH   r8   r   r5   r   r   r   r   Space123r2   )r   r   r>   r?   r*   r@   dcmMatrixr   r   expandr	   )rQ   rR   rS   rT   r8   r   r   r   r   r   test_mats              r"   test_dcmre      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            
         [        S5      n [        S5      n[        S5      u  p#n[        S5      u  pVn[        S5      u  pn
[        SSS9u  pn[        SSS9u  pn[        SSS9u  nnn[        X#U/XVU/XU
//5      nUR                  U SU5        UR                  R                  U 5      nUR                  R                  U 5      nUR                  R                  U 5      nUR                  XR                  [        UR                  U 5      UR                  5      -  UR                  [        UR                  U 5      UR                  5      -  -   UR                  [        UR                  U 5      UR                  5      -  -   5        X=-  UU-  -   U	U-  -   UR                  -  XK-  X~-  -   U
U-  -   UR                  -  -   X,-  X_-  -   UU-  -   UR                  -  -   nUR                  U 5      U-
  S	:X  d   eg )
Nr   r   zC11 C12 C13zC21 C22 C23zC31 C32 C33r/   )levelDCMr   )r   r   rb   orientr*   r   r@   r?   rO   r   dtrN   )r   r   c11c12c13c21c22c23c31c32c33c11dc12dc13dc21dc22dc23dc31dc32dc33drh   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                     [        S5      u  pn[        S5      nUR                  SSXR                  /5      nUR                  SSXR                  /5      nUR                  SSX%R
                  /5      nUR                  U5      R                  nUR                  SSU5      nUR                  U5      UR                  U5      s=:X  Ga`  [        [        U5      [        U5      -  [        U 5      [        U5      -  [        U5      -  [        U5      [        U 5      -  -   [        U 5      [        U5      -  [        U5      [        U 5      -  [        U5      -  -
  /[        U5      * [        U5      -  [        U 5      * [        U5      -  [        U5      -  [        U 5      [        U5      -  -   [        U 5      [        U5      -  [        U5      [        U5      -  [        U 5      -  -   /[        U5      [        U 5      * [        U5      -  [        U 5      [        U5      -  //5      :X  d   e   eUR                  U5      UR                  U5      -
  R                  U5      R                  5       S	:X  d   eg )
Nq1:4r8   r   axisr   r   r   rh   r   )r   r   r>   r*   r@   r?   ra   Trb   r   r   rN   r   r   )	rQ   rR   rS   r8   r   r   r   rh   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                       " S S[         5      n U " S5      nUR                  SSSUR                  /5      n[        X 5      (       d   eg )Nc                       \ rS rSrSrg)>test_orientnew_respects_parent_class.<locals>.MyReferenceFramei   N)__name__
__module____qualname____firstlineno____static_attributes__r   r&   r"   MyReferenceFramer     s    r&   r   r   r   r5   r   )r   r>   r*   r;   )r   r   r   s      r"   $test_orientnew_respects_parent_classr     sC    > A	C!QSS*Aa****r&   c                  H   [        S5      n [        S5      nU R                  SSXR                  /5      nU R                   Vs/ s H  o3S-   PM	     nnU R                  SSXR                  /US9nU R                  UR                  :X  d   eUR                  U:X  d   eg s  snf )Nr8   rQ   ar5   1bindices)r   r   r>   r?   r   )r8   rQ   r   r*   mindsr   s         r"   %test_orientnew_respects_input_indicesr     s    sA		B	C"cc+AII&IqsUIE&	C"ccE:A99		!!!99	 's   Bc                      [        S5      n [        S5      nU R                  SSXR                  /5      nSUR                  R                  5       < SUR                  S   < S3SUR                  R                  5       < SUR                  S	   < S3SUR                  R                  5       < SUR                  S
   < S3/nSnU R                   Vs/ s H  oUS-   PM	     nnSUR                  5       < SUS   < S3SUR                  5       < SUS	   < S3SUR                  5       < SUS
   < S3/nU R                  USXR                  /US9nUR                  U:X  d   eUR                  U:X  d   eUR                  U:w  d   eg s  snf )Nr8   rQ   r   r5   z\mathbf{\hat{z}_r   }r/   r0   r   r   z}_{z}})latexs)r   r   r>   r?   namelowerr   
latex_vecs)	r8   rQ   r   def_latex_vecsr   r*   r   new_latex_vecsr   s	            r"   $test_orientnew_respects_input_latexsr     sN   sA		B	C"cc+A 34&&,,.iil$vv||~qyy|(523&&,,.iil$&N Dii(iuiG(G48JJLaj"zz|WQZ&148JJLaj"$N 	
D&2ss)NCA<<>)))<<>)))99 )s   Fc                     [        S5      n [        S5      nU R                  SSXR                  /5      nSnU R                   Vs/ s H  nSU-   S-   PM     nnU R                  USXR                  /US9n[        UR                  5       H4  u  pxUR                  UR                  S	-   UR                  U   -   :X  a  M4   e   [        UR                  5       H  u  pxUR                  XW   :X  a  M   e   g s  snf )
Nr8   rQ   r   r5   r   notb_r   r6   _)r   r   r>   r?   r   	enumeratevarlistr   )	r8   rQ   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   C6c                  X    [        S5      n [        S5      nUR                  SSU S5        g )Nzu:3Ir   spaceXYZ)r   r   r>   )ur   s     r"   test_issue_10348r   A  s(    uAsAKKWa'r&   c                      [        S5      n U R                  SSSU R                  /5        [        S5      nU R                  USSUR                  /5        g )Nr   r   r5   #   r   F   )r   r>   r@   ri   r?   )r   r   s     r"   test_issue_11503r   G  sF    sAKKVb!##Y'sAHHQQSS	"r&   c                  B   [        S5      n [        S5      n[        S5      u  p#UR                  XUR                  -  X0R                  -  -   5        U R                  X5      UR                  * :X  d   eU R                  XU5      UR                  * U R                  * 4:X  d   eUR                  X5      UR                  :X  d   eUR                  XU5      UR                  U R                  4:X  d   eU R                  X5      S:X  d   eUR                  X5      S:X  d   eg )Nr8   r   zu1, u2r   )r   r   rO   r*   r@   partial_velocity)r8   r   rY   rZ   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            
      Z   [        S5      n [        S5      nU R                  US[        S5      5        U R                  U5      [	        / SQ/ SQ/ SQ/5      :X  d   eUR                  U 5      [	        / SQ/ SQ/ SQ/5      :X  d   eU R                  US[	        / SQ/ SQ/ S	Q/5      5        UR                  U 5      [	        / SQ/ SQ/ S	Q/5      :X  d   eU R                  U5      [	        / SQ/ SQ/ S
Q/5      :X  d   eUR                  U 5      R
                  U R                  U5      :X  d   eg )Nr   r   rh   r2   r/   r   r   r   r/   r   r   r   r/   )r   r   )r   r   r   )r   r   r   )r   ri   r   ra   rb   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            	        ^ ^^^^^^ [        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [        [        S	 5        [        [        S
 5        [        S5      mTS   [	        STS5      :X  d   eTS   [	        STS5      :X  d   eTS   [	        STS5      :X  d   e[        [        U4S j5        [        S/ SQ5      mTS   TR
                  :X  d   eTS   TR                  :X  d   eTS   TR                  :X  d   e[        [        U4S j5        [        T5      S:X  d   e[        S5      m [        S5      m[        S5      u  mmmm[        [        U U4S j5        [        [        UUUUU4S j5        [        [        UUU4S j5        [        [        UUU4S j5        [        [        UUU4S j5        [        [        UUUUUU4S  j5        [        [        UUU4S! j5        [        [        UUUUU4S" j5        [        [        UUUUU4S# j5        [        [        UUUU4S$ j5        [        [        UUUU4S% j5        TR                  TS5        TR                  T5      [        S5      :X  d   eTR                  TS5        TR!                  T5      [        S5      :X  d   eg )&Nc                      [        S5      $ r(   r   r   r&   r"   r#   &test_reference_frame.<locals>.<lambda>t  s	    nQ/r&   c                      [        SS5      $ )Nr8   r   r   r   r&   r"   r#   r   u  s    nS!4r&   c                      [        SSS/5      $ )Nr8   r   r/   r   r   r&   r"   r#   r   v  s    ~cAq6:r&   c                      [        S/ SQ5      $ )Nr8   r   r/   r0   r   r   r&   r"   r#   r   w  s    nS)<r&   c                       [        S/ SQS5      $ Nr8   r   r   cr   r   r   r&   r"   r#   r   x  s    nS/1Er&   c                  $    [        S/ SQSS/5      $ Nr8   r   r   r/   r   r   r&   r"   r#   r   y  s    ~c?QFKr&   c                  $    [        S/ SQ/ SQ5      $ Nr8   r   r   r   r   r&   r"   r#   r   z  s    nS/9Mr&   c                  &    [        S/ SQ/ SQS5      $ r   r   r   r&   r"   r#   r   {  s    nS/1@!Er&   c                  *    [        S/ SQ/ SQSS/5      $ r   r   r   r&   r"   r#   r   }  s    ~c?.=1v Gr&   c                  *    [        S/ SQ/ SQ/ SQ5      $ r   r   r   r&   r"   r#   r     s    nS/-<iIr&   r8   r   N_xr/   N_yr0   N_zc                     > T S   $ )Nr2   r   r8   s   r"   r#   r     s	    qtr&   r   r   r   r   c                     > T S   $ )Ndr   r   s   r"   r#   r     s	    qvr&   r   r   zq0 q1 q2 q3c                  *   > T R                  TSS5      $ )Nrh   r   ri   r   s   r"   r#   r     s    ahhq%3r&   c                  2   > T R                  TSTTT/S5      $ )Nr_   222r   )r   r8   rQ   rR   rS   s   r"   r#   r     s    ahhq'BB<Gr&   c                  d   > T R                  TSTTR                  STR                  -  -   /S5      $ )Nr5   r0   r   )ri   r*   r@   r   r8   rQ   s   r"   r#   r     s)    ahhq&2qssQW}2EuMr&   c                  *   > T R                  TST5      $ Nr5   r   r   s   r"   r#   r     s    ahhq&"5r&   c                  ,   > T R                  TST/5      $ r   r   r   s   r"   r#   r     s    qxx6B48r&   c                  4   > T R                  TSTTTT/S5      $ )NrK   r   r   )r   r8   rJ   rQ   rR   rS   s   r"   r#   r     s    ahhq,RR8H%Pr&   c                  *   > T R                  TST5      $ NrK   r   )r   r8   rJ   s   r"   r#   r     s    ahhq,;r&   c                  0   > T R                  TSTTT/5      $ r   r   r   r8   rJ   rQ   rR   s   r"   r#   r     s    ahhq,REr&   c                  0   > T R                  TSTTT/5      $ )NFoor   r   s   r"   r#   r     s    EBB<(Hr&   c                  0   > T R                  TSTT/S5      $ )NrL   232r   r   r8   rQ   rR   s   r"   r#   r     s    ahhq&2r(EBr&   c                  0   > T R                  TSTT/S5      $ )Nr_   r   r   r   s   r"   r#   r     s    ahhq'B8UCr&   )r   	TypeErrorr+   r   r   r*   r@   r?   strr   
IndexErrorNotImplementedErrorset_ang_acc
ang_acc_inr   rO   rN   )r   r   r8   rJ   rQ   rR   rS   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                  &    [        [        S 5        g )Nc                      [        S5      $ r(   r   r   r&   r"   r#   "test_check_frame.<locals>.<lambda>  s    LOr&   )r   r   r   r&   r"   test_check_framer     s    
?34r&   c                     [        S5      u  pn[        U 5      n[        U 5      n[        U5      n[        U5      n[        U5      n[        U5      n[        Xh-  X5-  U-  Xt-  -
  XE-  U-  Xs-  -   /Xg-  X5-  U-  X-  -   XE-  U-  X-  -
  /U* X6-  XF-  //5      n	[	        S5      n
[	        S5      nUR                  U
SU	5        UR                  U
5      nXv-  U R                  5       -  XR                  5       -  -   nX6-  UR                  5       -  XAR                  5       -  -   n[        UR                  U
R                  5      U-
  5      S:X  d   e[        UR                  UR                  5      U-
  5      S:X  d   eg )Nr   r   r   rh   r   )r   r   r   rb   r   ri   rN   diffr   r   r@   )rQ   rR   rS   s1c1s2c2s3c3ra   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                  b   [        S5      u  pn[        S5      u  p4n[        S5      u  pgn[        SS5      u  pn[        SS5      u  pn[        SS5      u  nnn[        S5      n[        S5      n[        XU/XQU/XxU//5      nUU-  UU-  -   Xk-  -   UR                  -  Xy-  X-  -   X--  -   UR                  -  -   X-  X:-  -   XO-  -   UR
                  -  -   nUR                  UU5        UR                  U5      U:X  d   eUR                  U5      U:X  d   eUR                  U5      U* :X  d   eg )Nc_{xx}, c_{yy}, c_{zz}c_{xy}, c_{xz}, c_{yx}c_{yz}, c_{zx}, c_{zy}r/   r   r   )	r   r   rb   r*   r@   r?   orient_explicitra   rN   )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                      [        S5      u  pn[        S5      u  p4n[        S5      u  pgn[        XU/XQU/XxU//5      n	[        S5      n
[        S5      nUR                  X5        UR	                  U
5      [        XU/XQU/XxU//5      :X  d   eg )Nr  r  r  r   r   )r   rb   r   
orient_dcmra   )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                    ^^ [        S5      m[        S5      mTR                  TTR                  * S5        TR                  T5      n TR                  TTR                  S5        TR                  T5      nTR                  TSTR                  * 5        TR                  T5      nX:X  d   eX:X  d   e[	        [
        UU4S j5        g )Nr   r   r/   r   c                  *   > T R                  TSS5      $ )Nr/   )r)   r   s   r"   r#   "test_orient_axis.<locals>.<lambda>  s    ammAq!4r&   )r   r)   r*   ra   r   r   )A1rI   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            
      ~   [        S5      n [        S5      nUR                  U SS5        UR                  U 5      [        [	        S5      [        S5      S-  [        S5      * [	        S5      -  /S[	        S5      [        S5      /[        S5      [        S5      * [	        S5      -  [	        S5      S-  //5      :X  d   eg )Nr   r   )r/   r/   r   XYXr/   r0   r   )r   orient_body_fixedra   rb   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                  b	   [        S5      u  pn[        S5      u  p4n[        SS5      u  pgn[        S5      [        S5      pU
R                  XX4S5        U	R	                  U
5      [        [        U 5      * [        U5      -  [        U5      -  [        U 5      [        U5      -  -   [        U 5      * [        U5      -  [        U 5      [        U5      -  [        U5      -  [        U5      [        U 5      -  -   /[        U 5      [        U5      -  [        U5      [        U5      -  [        U 5      -  -   [        U 5      [        U5      -  [        U 5      [        U5      -  [        U5      [        U 5      -  [        U5      -  -
  /[        U5      * [        U5      -  [        U5      [        U5      [        U5      -  //5      :X  d   eU
R                  U	5      R                  U
5      [        [        U5      * [        U5      -  U-  [        U5      U-  -   /[        U5      U-  U-   /[        U5      U-  [        U5      [        U5      -  U-  -   //5      :X  d   e[        S5      [        S5      pU
R                  XXB4S5        U	R	                  U
5      [        [        U5      [        U5      * [        U5      -  [        U5      [        U5      -  /[        U5      [        U 5      -  [        U 5      * [        U5      -  [        U5      [        U 5      -  [        U5      -  -   [        U 5      * [        U5      -  [        U5      [        U5      -  [        U 5      -  -
  /[        U5      [        U 5      -  [        U 5      [        U5      -  [        U5      -  [        U5      [        U 5      -  -   [        U 5      * [        U5      -  [        U5      -  [        U 5      [        U5      -  -   //5      :X  d   eU
R                  U	5      R                  U
5      [        [        U5      U-  U-   /[        U5      * [        U5      -  U-  /[        U5      [        U5      -  U-  //5      :X  d   e[        S5      [        S5      pU
R                  XXE4S5        U
R                  U	5      [        S	5      :X  d   eg )
Nr   c1:4r/   r   r   zxy   {   r   )r   r   r   r*  ra   rb   r   r   rN   	to_matrixr   rQ   rR   rS   r   r   r   rY   rZ   r[   r   r   s              r"   test_orient_body_advancedr3    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                  b	   [        S5      u  pn[        S5      u  p4n[        SS5      u  pgn[        S5      [        S5      pU
R                  XX4S5        U	R	                  U
5      [        [        U 5      * [        U5      -  [        U5      -  [        U 5      [        U5      -  -   [        U 5      * [        U5      -  [        U 5      [        U5      -  [        U5      -  [        U5      [        U 5      -  -   /[        U 5      [        U5      -  [        U5      [        U5      -  [        U 5      -  -   [        U 5      [        U5      -  [        U 5      [        U5      -  [        U5      [        U 5      -  [        U5      -  -
  /[        U5      * [        U5      -  [        U5      [        U5      [        U5      -  //5      :X  d   eU
R                  U	5      R                  U
5      [        [        U5      * [        U5      -  U-  [        U5      U-  -   /[        U5      U-  U-   /[        U5      U-  [        U5      [        U5      -  U-  -   //5      :X  d   e[        S5      [        S5      pU
R                  XX@4S5        U	R	                  U
5      [        [        U5      [        U5      * [        U5      -  [        U5      [        U5      -  /[        U5      [        U 5      -  [        U 5      * [        U5      -  [        U5      [        U 5      -  [        U5      -  -   [        U 5      * [        U5      -  [        U5      [        U5      -  [        U 5      -  -
  /[        U5      [        U 5      -  [        U 5      [        U5      -  [        U5      -  [        U5      [        U 5      -  -   [        U 5      * [        U5      -  [        U5      -  [        U 5      [        U5      -  -   //5      :X  d   eU
R                  U	5      R                  U
5      [        [        U5      U-  U-   /[        U5      * [        U5      -  U-  /[        U5      [        U5      -  U-  //5      :X  d   e[        S5      [        S5      pU
R                  XXE4S5        U
R                  U	5      [        S	5      :X  d   eg )
Nr   r-  r/   r   r   yxzr/  r0  r   )r   r   r   orient_space_fixedra   rb   r   r   rN   r1  r   r2  s              r"   test_orient_space_advancedr7  #  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                     [        S5      u  pn[         R                  n[        S5      n[        S5      nUR                  X@X4S5        UR	                  U5      nUR
                  S   S   U:X  d   eUR
                  S   S   S   [        U5      [        U5      -  U R                  U5      -  [        U5      UR                  U5      -  -   :X  d   eUR
                  S   S   S   [        U5      [        U5      -  U R                  U5      -  [        U5      UR                  U5      -  -
  :X  d   eUR
                  S   S   S   [        U5      U R                  U5      -  UR                  U5      -   :X  d   eg)	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   ZXZr   r/   r0   N)	r   _tr   r*  rN   argsr   r   r   )psithetaphitr   r   A_w_Bs          r"   test_orient_body_simple_ang_velrA  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                      [        S5      n [        S5      nUR                  U SS5        UR                  U 5      [        / SQ/ SQ/ SQ/5      :X  d   eg )Nr   r   r   r   r   r`   r   r   r   )r   r6  ra   rb   r   s     r"   test_orient_spacerD  ]  sJ    sAsAGU+558vy)Y?@@@@r&   c                      [        S5      n [        S5      nUR                  U S5        UR                  U 5      [        / SQ/ SQ/ SQ/5      :X  d   eg )Nr   r   )r   r   r   r   rC  )r   orient_quaternionra   rb   r   s     r"   test_orient_quaternionrG  c  sH    sAsA9%558vy)Y?@@@@r&   c                     [        S5      n [        S5      n[        S5      n[        S5      u  p4nUR                  X R                  U5        UR                  XR                  U5        [        R
                  " SS9 n[        R                  " S5        U R                  X"R                  U5        [        US   R                  [        5      (       d   eS	[        US   R                  5      ;   d   e S S S 5        g ! , (       d  f       g = f)
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_warningrT  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   <A5C;;
D	c                     [        S5      n [        S5      n[        S5      n[        S5      u  p4nUR                  X R                  U5        U R                  U[        / SQS[        U5      [        U5      * /S[        U5      [        U5      //5      0:X  d   eUR                  U [        / SQS[        U5      [        U5      /S[        U5      * [        U5      //5      0:X  d   eUR                  0 :X  d   eUR                  X"R                  U5        U R                  U[        / SQS[        U5      [        U5      * /S[        U5      [        U5      //5      0:X  d   eUR                  U [        / SQS[        U5      [        U5      /S[        U5      * [        U5      //5      U[        / SQS[        U5      [        U5      /S[        U5      * [        U5      //5      0:X  d   eUR                  U[        / SQS[        U5      [        U5      * /S[        U5      [        U5      //5      0:X  d   eU R                  XR                  U5        UR                  U[        / SQS[        U5      [        U5      /S[        U5      * [        U5      //5      U [        / SQS[        U5      [        U5      * /S[        U5      [        U5      //5      0:X  d   eU R                  U[        / SQS[        U5      [        U5      /S[        U5      * [        U5      //5      0:X  d   eUR                  U[        / SQS[        U5      [        U5      * /S[        U5      [        U5      //5      0:X  d   eg )Nr   r   r   rI  r   r   )r   r   r)   r*   	_dcm_dictrb   r   r   )r   r   r   r   r   r   s         r"   test_frame_dictrW  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   [        S5      n [        S5      n[        S5      n[        S5      n[        S5      u  pEnUR                  X R                  U5        UR                  XR                  U5        UR                  X"R                  U5        UR                  U[        / SQS[        U5      [        U5      /S[        U5      * [        U5      //5      0:X  d   eUR                  U[        / SQS[        U5      [        U5      /S[        U5      * [        U5      //5      U[        / SQS[        U5      [        U5      * /S[        U5      [        U5      //5      0:X  d   eUR                  U [        / SQS[        U5      [        U5      /S[        U5      * [        U5      //5      U[        / SQS[        U5      [        U5      * /S[        U5      [        U5      //5      0:X  d   eU R                  U[        / SQS[        U5      [        U5      * /S[        U5      [        U5      //5      0:X  d   eUR                  UR                  :X  d   eUR                  U 5        [        U R                  R                  5       5      XU/:X  d   e[        UR                  R                  5       5      X /:X  d   e[        U R                  R                  5       5      U/:X  d   e[        UR                  R                  5       5      U/:X  d   eU R                  U R                  :w  d   eU R                  XR                  U5        U R                  U[        / SQS[        U5      [        U5      /S[        U5      * [        U5      //5      0:X  d   eU R                  U R                  :X  d   eUR                  U[        / SQS[        U5      [        U5      * /S[        U5      [        U5      //5      U [        / SQS[        U5      [        U5      * /S[        U5      [        U5      //5      0:X  d   eg )Nr   r   r   r   rI  r   r   )r   r   r)   r*   rV  rb   r   r   
_dcm_cachera   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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                     [        S5      n [        S/ SQS9nU R                  [        R                  " U R                  U R                  5      :X  d   eUR                  [        R                  " UR                  UR                  5      :X  d   eg Nr8   r   )r   23r   )r   xxr   outerr*   r8   r   s     r"   test_xx_dyadrd    b    sAsO4A446<<QSS))))446<<QSS))))r&   c                     [        S5      n [        S/ SQS9nU R                  [        R                  " U R                  U R
                  5      :X  d   eUR                  [        R                  " UR                  UR
                  5      :X  d   eg r^  )r   xyr   rb  r*   r@   rc  s     r"   test_xy_dyadrh    re  r&   c                     [        S5      n [        S/ SQS9nU R                  [        R                  " U R                  U R
                  5      :X  d   eUR                  [        R                  " UR                  UR
                  5      :X  d   eg r^  )r   xzr   rb  r*   r?   rc  s     r"   test_xz_dyadrk    re  r&   c                     [        S5      n [        S/ SQS9nU R                  [        R                  " U R                  U R
                  5      :X  d   eUR                  [        R                  " UR                  UR
                  5      :X  d   eg r^  )r   yxr   rb  r@   r*   rc  s     r"   test_yx_dyadrn    re  r&   c                     [        S5      n [        S/ SQS9nU R                  [        R                  " U R                  U R                  5      :X  d   eUR                  [        R                  " UR                  UR                  5      :X  d   eg r^  )r   yyr   rb  r@   rc  s     r"   test_yy_dyadrq    re  r&   c                     [        S5      n [        S/ SQS9nU R                  [        R                  " U R                  U R
                  5      :X  d   eUR                  [        R                  " UR                  UR
                  5      :X  d   eg r^  )r   yzr   rb  r@   r?   rc  s     r"   test_yz_dyadrt    re  r&   c                     [        S5      n [        S/ SQS9nU R                  [        R                  " U R                  U R
                  5      :X  d   eUR                  [        R                  " UR                  UR
                  5      :X  d   eg r^  )r   zxr   rb  r?   r*   rc  s     r"   test_zx_dyadrw    re  r&   c                     [        S5      n [        S/ SQS9nU R                  [        R                  " U R                  U R
                  5      :X  d   eUR                  [        R                  " UR                  UR
                  5      :X  d   eg r^  )r   zyr   rb  r?   r@   rc  s     r"   test_zy_dyadrz    re  r&   c                     [        S5      n [        S/ SQS9nU R                  [        R                  " U R                  U R                  5      :X  d   eUR                  [        R                  " UR                  UR                  5      :X  d   eg r^  )r   zzr   rb  r?   rc  s     r"   test_zz_dyadr}    re  r&   c                  
   [        S5      n [        S/ SQS9nU R                  U R                  U R                  -   U R                  -   :X  d   eUR                  UR                  UR                  -   UR                  -   :X  d   eg r^  )r   r   ra  rp  r|  rc  s     r"   test_unit_dyadicr    sf    sAsO4A33!$$+$$$$33!$$+$$$$r&   c                  X   [        S5      n [        S5      nUR                  X R                  S5        UR                  U 5      n[        R
                  " [        R                  " U 5      5      n[        UR                  R                  5       5      S   nUR                  U5      U:X  d   eg )Nr8   r   r/   r   )
r   r)   r*   ra   pickleloadsdumpstuplerV  r[  )r8   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
   rb   sympy.simplify.simplifyr   sympy.physics.vectorr   r   r   r   r   r   r   sympy.physics.vector.framer   sympy.physics.vector.vectorr   sympy.testing.pytestr   rL  r  r,   rF   r]   re   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r!  r'  r+  r3  r7  rA  rD  rG  rT  rW  r\  rd  rh  rk  rn  rq  rt  rw  rz  r}  r  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&   