+
    hL                        ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHtHt ^ RIHt ^ R	IHtHtHtHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIH t  ^ RI!H"t" ^ RI#H$t$H%t%H&t&H't' ]! R4      w  t(t)t*]! R4      w  t+t,t-t.]! R4      w  t/t0t1t2R t3R t4R t5R t6R t7R t8R t9R t:R t;R t<R t=R t>R  t?R! t@R"# )#    )raises
CoordSys3D)
BaseScalar)expand)pisymbols)coshsinh)sqrt)acosatan2cossin)zeros)ImmutableDenseMatrix)simplify)express)Point)Vector)AxisOrienterBodyOrienterSpaceOrienterQuaternionOrienterx y zza b c qzq1 q2 q3 q4c                  2   \        R 4      p V P                  P                  ! V P                  P                  !  V P                  8X  g   Q h^V P                  ,          ^V P                  ,          ,           pVP                  ! VP                  !  V8X  g   Q hV P
                  P                  ! V P
                  P                  !  V P
                  8X  g   Q hV P                  V P
                  ,          V P                  V P                  ,          ,           V P                  V P                  ,          ,           pVP                  ! VP                  !  V8X  g   Q hV P                  P                  ! V P                  P                  !  V P                  8X  g   Q hR# )AN)
r   xfuncargsyijzkorigin)r   exprvs      F/usr/lib/python3/dist-packages/sympy/vector/tests/test_coordsysrect.pytest_func_argsr+      s   3A3388QSSXX!##%%%QSS51QSS5=D99dii D(((3388QSSXX!##%%%	ACC!##acc'ACCG#A66166?a88==!((--(AHH444    c                  h    \        R 4      p \        R 4      pW8X  g   Q h\        R4      pW8w  g   Q hR# )r   BNr   )r   A1r.   s      r*   test_coordsys3d_equivalencer0   $   s/    3A	CB7N73A6M6r,   c                     \        R 4      p \        \        V P                  4      p\	        \        \
        \        R4      p\        \        \
        \        R4      p\        \        \        \        \        4      pVP                  V 4      \        \        \        4      \!        \        4      ^ .\!        \        4      ) \        \        4      ^ .. RO.4      8X  g   Q hVP                  4       \        \        \
        4      \        \        4      ,          \!        \        4      \!        \
        4      ,          \        \        4      ,          \!        \        4      \        \        4      ,          ,           \!        \        4      \!        \        4      ,          \!        \
        4      \        \        4      ,          \        \        4      ,          ,
          .\!        \        4      ) \        \
        4      ,          \!        \        4      ) \!        \
        4      ,          \!        \        4      ,          \        \        4      \        \        4      ,          ,           \!        \        4      \        \        4      ,          \!        \
        4      \!        \        4      ,          \        \        4      ,          ,           .\!        \
        4      \!        \        4      ) \        \
        4      ,          \        \        4      \        \
        4      ,          ..4      8X  g   Q hVP                  4       \        \        \
        4      \        \        4      ,          \!        \        4      \        \
        4      ,          \!        \
        4      ) .\!        \        4      \!        \
        4      ,          \        \        4      ,          \!        \        4      \        \        4      ,          ,
          \!        \        4      \!        \
        4      ,          \!        \        4      ,          \        \        4      \        \        4      ,          ,           \!        \        4      \        \
        4      ,          .\!        \        4      \!        \        4      ,          \!        \
        4      \        \        4      ,          \        \        4      ,          ,           \!        \        4      ) \        \        4      ,          \!        \
        4      \!        \        4      ,          \        \        4      ,          ,           \        \        4      \        \
        4      ,          ..4      8X  g   Q hVP                  4       \        \        ^,          \        ^,          ,           \        ^,          ,
          \        ^,          ,
          ^\        ,          \        ,          ^\        ,          \        ,          ,           R\        ,          \        ,          ^\        ,          \        ,          ,           .R\        ,          \        ,          ^\        ,          \        ,          ,           \        ^,          \        ^,          ,
          \        ^,          ,           \        ^,          ,
          ^\        ,          \        ,          ^\        ,          \        ,          ,           .^\        ,          \        ,          ^\        ,          \        ,          ,           R\        ,          \        ,          ^\        ,          \        ,          ,           \        ^,          \        ^,          ,
          \        ^,          ,
          \        ^,          ,           ..4      8X  g   Q hR# )r   123N)r   r      )r   r   ar&   r   bcr   r   q1q2q3q4rotation_matrixMatrixr   r   )r   axis_orienterbody_orienterspace_orienter
q_orienters        r*   test_orientersrB   ,   s   3A ACC(M Aq%0M"1aE2N#BB3J((+v
a&#a&!
a&#a&!7 0    ((*f
a&Q-#a&Q-A.QA>
a&Q-#a&Q-A.
.	0
a&Q#a&QA.QA>	QAQAs1v-	-	/QQAQA	 6! /" " " " ))+v	QAAs1vc!fW5	QAs1v	As1v	-	QAs1v	As1v	-s1vc!f}	>	QAQAs1v-	-Aws1v~	QAs1v	0"1vc!f}	.	7/ 00 0 0 0 %%'6	QQQ	Q	&"R!B$r'(9	BrAbDG			BrAbDG	RURU]RU2RU:	
2b1R47			
2b1R47		BrAbDG	RURU]RU2RU:	<3= ,> > > >r,   c                 F"   \        R4      p \        ^ V RR4      V P                  8X  g   Q h\        ^V RR4      V P                  8X  g   Q h\        ^V RR4      V P                  8X  g   Q h\        ^ V RR4      P                  4       V P                  P                  4       8X  g   Q h\        V P                  \        4      '       dA   \        V P                  \        4      '       d!   \        V P                  \        4      '       g   Q hV P                  V P                  ,          V P                  V P                  ,          8X  g   Q hV P                  V 4      V P                  V P                  V P                  V P                  V P                  V P                  /8X  g   Q hV P                  P                  V 8X  g   Q hV P                  P                  V P                  4      ^8X  g   Q hV P                  R\        V P                  4      pVP                  V 4      VP                  V P                  VP                  V P                  ) \        \        4      ,          V P                  \        \        4      ,          ,           VP                  V P                  \        \        4      ,          V P                  \        \        4      ,          ,           /8X  g   Q hV P                  V4      V P                  VP                  \        \        4      ,          VP                  \        \        4      ,          ,
          V P                  VP                  \        \        4      ,          VP                  \        \        4      ,          ,           V P                  VP                  /8X  g   Q h\        VP                  V R	R
7      V P                  \        \        4      ,          V P                  \        \        4      ,          ,           8X  g   Q h\        VP                  V R	R
7      V P                  ) \        \        4      ,          V P                  \        \        4      ,          ,           8X  g   Q h\        VP                  V R	R
7      V P                  8X  g   Q h\!        \        VP                  VP                  ,          VP                  ,          V R	R
7      4      \!        V P                  V P                  ) \        \        4      ,          V P                  \        \        4      ,          ,           ,          V P                  \        \        4      ,          V P                  \        \        4      ,          ,           ,          4      8X  g   Q h\        VP                  VP"                  ,          VP                  VP$                  ,          ,           VP                  VP                  ,          ,           V 4      VP                  \        \        4      ,          VP                  \        \        4      ,          ,
          V P"                  ,          VP                  \        \        4      ,          VP                  \        \        4      ,          ,           V P$                  ,          ,           VP                  V P                  ,          ,           8X  g   Q h\'        \        VP                  VP"                  ,          VP                  VP$                  ,          ,           VP                  VP                  ,          ,           V R	R
7      4      V P                  V P"                  ,          V P                  V P$                  ,          ,           V P                  V P                  ,          ,           8X  g   Q h\        V P                  V P"                  ,          V P                  V P$                  ,          ,           V P                  V P                  ,          ,           V4      V P                  \        \        4      ,          V P                  \        \        4      ,          ,           VP"                  ,          V P                  ) \        \        4      ,          V P                  \        \        4      ,          ,           VP$                  ,          ,           V P                  VP                  ,          ,           8X  g   Q h\'        \        V P                  V P"                  ,          V P                  V P$                  ,          ,           V P                  V P                  ,          ,           VR	R
7      4      VP                  VP"                  ,          VP                  VP$                  ,          ,           VP                  VP                  ,          ,           8X  g   Q hVP                  R\        ) VP                  4      pVP                  V 4      VP                  V P                  VP                  V P                  VP                  V P                  /8X  g   Q hV P                  R\        V P"                  V P$                  ,           V P                  ,           4      pV P                  V4      pW@P                  ,          P)                  VP                  ^\        \        4      ,          ^,           ,          ^,          VP                  R\        \        \*        ^,          ,           4      ,          ^,           ,          ^,          ,           VP                  R\        \        \*        ^,          ,           4      ,          ^,           ,          ^,          ,           4      '       g   Q hW@P                  ,          P)                  VP                  R\        \        \*        ^,          ,           4      ,          ^,           ,          ^,          VP                  ^\        \        4      ,          ^,           ,          ^,          ,           VP                  R\        \        \*        ^,          ,           4      ,          ^,           ,          ^,          ,           4      '       g   Q hW@P                  ,          P)                  VP                  R\        \        \*        ^,          ,           4      ,          ^,           ,          ^,          VP                  R\        \        \*        ^,          ,           4      ,          ^,           ,          ^,          ,           VP                  ^\        \        4      ,          ^,           ,          ^,          ,           4      '       g   Q hV P-                  R\.        V P"                  ,          \0        V P$                  ,          ,           \2        V P                  ,          ,           4      pVP                  V 4      VP                  V P                  \2        ,
          VP                  V P                  \.        ,
          VP                  V P                  \0        ,
          /8X  g   Q hV P                  R\.        V P                  \.        V P"                  ,          \0        V P$                  ,          ,           \2        V P                  ,          ,           4      pV P                  V4      V P                  VP                  \2        ,           V P                  VP                  \        \.        4      ,          VP                  \        \.        4      ,          ,
          \.        ,           V P                  VP                  \        \.        4      ,          VP                  \        \.        4      ,          ,           \0        ,           /8X  g   Q hVP                  V 4      VP                  V P                  \.        ,
          \        \.        4      ,          V P                  \0        ,
          \        \.        4      ,          ,           VP                  V P                  ) \.        ,           \        \.        4      ,          V P                  \0        ,
          \        \.        4      ,          ,           VP                  V P                  \2        ,
          /8X  g   Q hV P-                  R\4        P6                  4      pV P                  V4      V P                  VP                  V P                  VP                  V P                  VP                  /8X  g   Q hR# )zc
Tests the coordinate variables functionality with respect to
reorientation of coordinate systems.
r   A_xz\mathbf{{x}_{A}}A_yz\mathbf{{y}_{A}}A_zz\mathbf{{z}_{A}}r.   T)	variablesNCDEFNr4   )r   r   r   r"   r%   __hash__
isinstance
scalar_mapsystemdifforient_new_axisqr&   r   r   r   r   r#   r$   r   equalsr   
locate_newr5   r6   r7   r   zero)r   r.   rH   rI   mappingrJ   rK   rL   s           r*   test_coordinate_varsrX   L   s
   
 	3AaE#67133>>>aE#67133>>>aE#67133>>>aE#67@@BaccllnTTTacc:&&acc:&&acc:&&' ' 33qss7acc!##g<<?qssACCacc133<<<<33::??3388ACC=A	#q!##&A<<?qssACCqssd3q6kACCAJ.F!"acc#a&j133s1v:&=? ? ? ?<<?qssACCAJSV$;!"acc#a&j133s1v:&=qssACCI I I I133T*acc#a&j133s1v:.EEEE133T*qssd3q6kACCAJ.FFFF133T*acc111'!##acc'!##+qD9:!##tCF{QSSQZ/0!##c!f*qss3q6z2IJKL L L133qss7QSSW$qss133w.2CCAJSV#QSS(ACCAJ33s1v:-ss, SSW%% % % GACCGacc!##g-ACC7&*, -33qss7QSSWqss133w&' ' ' 133qss7QSSW$qss133w.2CCAJSV#QSS(SSDQK!##c!f*$acc)*,-CCG44 4 4 GACCGacc!##g-ACC7&*, -33qss7QSSWqss133w&' ' ' 	
#r133'A<<?CCacc133QSS)* * *	#q!##)acc/2All1oG33<qssAc!fHqL1!3CCCBqDM!1A!56q8 9CCCBqDM!1A!56q8 9 : : : : 33<qssBs1r!t8}$4q$89!;CC3q6A.q0 1CCCBqDM!1A!56q8 9 : : : : 33<qssBs1r!t8}$4q$89!;CCCBqDM!1A!56q8 9CC3q6A.q0 1 2 2 2 2 	
S!ACC%!ACC%-!ACC%/0A<<?qssACC!GQSS!##'133aHHHH	#q!##ququ}qu'<=A<<?qssACC!G ssACCAJSV$;a$? ssACCAJSV$;a$?A A A A <<?qssQSS1Wc!f$4aQ7G$G ssaccTAXs1v$5q#a&8H$H ssACC!G- - - - 	
S&++&A<<?qssACCacc133<<<<r,   c                     \        R 4      p V P                  R\        V P                  4      pVP                  R\        VP
                  4      pVP                  R\        VP                  4      pV P                  R\        V P                  4      pV P                  R\        \        \        R4      pV P                  R\        \        \        \        4      pV P                  R\        \        \        R4      pV P                  V4      \        \        \        4      ) \        \        4      ,          \        \        4      ,          \        \        4      \        \        4      ,          ,           \        \        4      ) \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          \        \        4      \        \        4      ,          ,           .\        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,           \        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,
          .\        \        4      ) \        \        4      ,          \        \        4      \        \        4      \        \        4      ,          ..4      8X  g   Q hVP                  V4      \        \        \        4      \        \        4      ,          \        \        4      ,          \        \        4      \        \        4      ) \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,           ,          ,
          \        \        4      ) \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,
          \        \        4      \        \        4      ,          \        \        4      ,          \        \        4      \        \        4      ) \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,           ,          ,           .\        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,           \        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,
          .\        \        4      \        \        4      ,          \        \        4      ,          \        \        4      \        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,           ,          ,
          \        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,
          \        \        4      \        \        4      ,          \        \        4      ,          \        \        4      \        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,           ,          ,           ..4      ,
          pVP!                  4       \#        ^^4      8X  g   Q hVP                  V 4      \        \        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ) .\        \        4      \        \        4      ,          \        \        4      ,          \        \        4      \        \        4      ,          ,
          \        \        4      \        \        4      ,          \        \        4      ,          \        \        4      \        \        4      ,          ,           \        \        4      \        \        4      ,          .\        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,           \        \        4      ) \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,           \        \        4      \        \        4      ,          ..4      8X  g   Q hVP                  V 4      \        \        ^,          \        ^,          ,           \        ^,          ,
          \        ^,          ,
          ^\        ,          \        ,          ^\        ,          \        ,          ,           R
\        ,          \        ,          ^\        ,          \        ,          ,           .R
\        ,          \        ,          ^\        ,          \        ,          ,           \        ^,          \        ^,          ,
          \        ^,          ,           \        ^,          ,
          ^\        ,          \        ,          ^\        ,          \        ,          ,           .^\        ,          \        ,          ^\        ,          \        ,          ,           R
\        ,          \        ,          ^\        ,          \        ,          ,           \        ^,          \        ^,          ,
          \        ^,          ,
          \        ^,          ,           ..4      8X  g   Q hVP                  V 4      \        \        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          \        \        4      \        \        4      ,          ,           \        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,
          .\        \        4      ) \        \        4      ,          \        \        4      ) \        \        4      ,          \        \        4      ,          \        \        4      \        \        4      ,          ,           \        \        4      \        \        4      ,          \        \        4      \        \        4      ,          \        \        4      ,          ,           .\        \        4      \        \        4      ) \        \        4      ,          \        \        4      \        \        4      ,          ..4      8X  g   Q hR	# )rH   r   r.   rI   rJ   rK   r2   rL   GNr4   )r   rR   r8   r&   r9   r#   r:   r$   r;   orient_new_spaceorient_new_quaternionorient_new_bodyr<   r=   r   r   r   r   )	rH   r   r.   rI   rJ   rK   rL   rZ   test_mats	            r*   test_rotation_matrixr_      s    3A	#r133'A	#r133'A	#r133'A	#r133'A	3BE2A	RR4A	#r2r51AQ6r7SW	s2w	&R3r7):	:c"gIB=R3r7"SW,s2wR/@@	B	R3r7	SWs2w.R8	8	R3r7	CGc"g-B#b'0A	R1 	"gIB'R#b'CG2CD+F $G G G G   #f
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W9s2wR3r7!2SW!<<>>  >
? b'CG
c"gB/#b'9
93r7
b'<r7SW$s2wR'83r7'BB
D
b'CG
c"g
%B3r7SW3D36r7SW3D36r74;4; )< <=@WB>b'CG+c"g5>67:2w
b'8G8!"gR3r7):),R3r7):SW)D*E F8F
G	H'I IH ??a+++Q6
b'#b'/3r73r7?SWH	5	RRR	 3r73r7?	2	RRR	 3r73r7?	2CGCGO	E
b'#b'/CGCGOCG3
3
b'6b'6GCGOCG36458WSW_
F	G$H H H H Q6
AAAA%	"R!B$r'2b58ad2g-,/13BrAbDG1CEBEMBE!BE)1R47QrT"W+<0>,-bDGad2g,=,.rE"HqtBw,> "AAA 5A =,?	+@ $A A A A Q6BB#b'#b'/#b'1CGCGOCBB#b'#b'/#b'11,3 WHSWs2whs2w.s2w6RRHGCGOc"gc"goc"g5557 B#b'#b')3r73r7?8<	+= $> > > >r,   c            	     D   \        R4      p V P                  R\        V P                  4      pVP                  R\        VP
                  4      pVP                  R\        VP                  4      p\        V P
                  ,          \        V P                  ,          ,           \        V P                  ,          ,           pVP                  V4      \        \        \        \        4      ,          \        \        \        4      ,          ,           .\        ) \        \        4      ,          \        \        \        4      ,          ,           .\        ..4      8X  g   Q hV P
                  P                  VP
                  4      \        \        4      8X  g   Q hV P
                  P                  VP                  4      \        \        4      ) 8X  g   Q hV P
                  P                  VP                  4      ^ 8X  g   Q hV P                  P                  VP
                  4      \        \        4      8X  g   Q hV P                  P                  VP                  4      \        \        4      8X  g   Q hV P                  P                  VP                  4      ^ 8X  g   Q hV P                  P                  VP
                  4      ^ 8X  g   Q hV P                  P                  VP                  4      ^ 8X  g   Q hV P                  P                  VP                  4      ^8X  g   Q hV P
                  P                  VP
                  VP                  ,           4      \        \        4      ) \        \        4      ,           u;8X  d=   VP
                  VP                  ,           P                  V P
                  4      8X  g   Q h Q hVP
                  P                  VP
                  4      \        \        4      8X  g   Q hVP
                  P                  VP                  4      ^ 8X  g   Q hVP
                  P                  VP                  4      \        \        4      8X  g   Q hVP                  P                  VP
                  4      \        \        4      \        \        4      ,          8X  g   Q hVP                  P                  VP                  4      \        \        4      8X  g   Q hVP                  P                  VP                  4      \        \        4      ) \        \        4      ,          8X  g   Q hVP                  P                  VP
                  4      \        \        4      ) \        \        4      ,          8X  g   Q hVP                  P                  VP                  4      \        \        4      8X  g   Q hVP                  P                  VP                  4      \        \        4      \        \        4      ,          8X  g   Q hV P
                  P!                  VP
                  4      \        \        4      VP                  ,          8X  g   Q hV P
                  P!                  VP                  4      \        \        4      VP                  ,          8X  g   Q hV P
                  P!                  VP                  4      \        \        4      ) VP
                  ,          \        \        4      VP                  ,          ,
          8X  g   Q hV P                  P!                  VP
                  4      \        \        4      ) VP                  ,          8X  g   Q hV P                  P!                  VP                  4      \        \        4      VP                  ,          8X  g   Q hV P                  P!                  VP                  4      \        \        4      VP
                  ,          \        \        4      VP                  ,          ,
          8X  g   Q hV P                  P!                  VP
                  4      VP                  8X  g   Q hV P                  P!                  VP                  4      VP
                  ) 8X  g   Q hV P                  P!                  VP                  4      \"        P$                  8X  g   Q hV P
                  P!                  VP
                  4      \        \        4      VP                  ,          8X  g   Q hV P
                  P!                  VP                  4      \        \        4      VP                  ,          8X  g   Q hV P
                  P!                  VP
                  VP                  ,           4      \        \        4      VP                  ,          \        \        4      VP                  ,          ,           8X  g   Q hVP
                  VP                  ,           P!                  V P
                  4      \        \        4      ) \        \        4      ,
          V P                  ,          8X  g   Q hVP
                  P!                  VP
                  4      \        \        4      VP                  ,          8X  g   Q hVP
                  P!                  VP                  4      \        \        4      ) VP
                  ,          \        \        4      VP                  ,          ,           8X  g   Q hVP
                  P!                  VP                  4      \        \        4      ) VP                  ,          8X  g   Q hVP
                  P!                  VP
                  4      \        \        4      ) \        \        4      ,          VP                  ,          \        \        4      ) \        \        4      ,          VP                  ,          ,           8X  g   Q hVP                  P!                  VP
                  4      \        \        4      VP                  ,          \        \        4      ) VP                  ,          ,           8X  g   Q h\'        VP                  P!                  VP
                  4      V4      P)                  4       \        \        4      VP                  ,          8X  g   Q hR# )zT
Tests the effects of orientation of coordinate systems on
basic vector operations.
rH   r   r.   rI   N)r   rR   r8   r&   r9   r#   r:   r$   r5   r6   r7   	to_matrixr=   r   r   dotcrossr   rV   r   trigsimp)rH   r   r.   rI   v1s        r*   test_vector_with_orientationrf      s   
 	3A	#r133'A	#r133'A	#r133'A 
133133133	B<<?f#b'	Ac"gI(=&>()r#b'zAc"gI'=&><=&>&@ A A A A
 3377133<3r7"""3377133<CG8###3377133<13377133<3r7"""3377133<3r7"""3377133<13377133<13377133<13377133<133771339#b'CG!3  CC!##I??133          3377133<3r7"""3377133<13377133<3r7"""3377133<3r73r7?***3377133<3r7"""3377133<CG8CG++++3377133<CG8CG++++3377133<3r7"""3377133<3r73r7?*** 3399QSS>SWQSS[(((3399QSS>SWQSS[(((3399QSS>c"gXacc\CGACCK77773399QSS>c"gXacc\)))3399QSS>SWQSS[(((3399QSS>SWQSS[3r7133;66663399QSS>QSS   3399QSS>accT!!!3399QSS>V[[(((3399QSS>SWQSS[(((3399QSS>SWQSS[(((3399QSS133Y3r7133;R#<<<<CC!##IQSS!s2whR&8!##%====3399QSS>SWQSS[(((3399QSS>c"gXacc\CGACCK77773399QSS>c"gXacc\)))3399QSS>s2whs2w.3WHSWacc!" " " "3399QSS>c"gqss]s2wh^;;;;13399QSS>1%..0CGACCK???r,   c                     \        R 4      p \        \        V P                  4      p\	        \
        \        \        R4      p\        \
        \        \        \        4      p\        \
        \        \        R4      pV P                  RV34      pV P                  RV34      pV P                  RV34      pV P                  RV34      pWPP                  R\        V P                  4      8X  g   Q hW`P                  R\
        \        \        R4      8X  g   Q hWpP                  R\
        \        \        \        4      8X  g   Q hWP                  R\
        \        \        R4      8X  g   Q hR# )rH   r2   rJ   rK   rL   rZ   N)r   r   r;   r$   r   r8   r9   r:   r   r   
orient_newrR   r[   r\   r]   )	rH   	orienter1	orienter2	orienter3	orienter4rJ   rK   rL   rZ   s	            r*   test_orient_new_methodsrm     s   3AR%Ib"b%0I"2r2r2IRR/I	S9-(A	S9-(A	S9-(A	S9-(A!!#r133////""3BE::::''RR<<<<!!#r2r59999r,   c                    \        R4      p \        V P                  \        4      '       g   Q h\        V P
                  ,          \        V P                  ,          ,           \        V P                  ,          ,           pV P                  RV4      pVP                  P                  V 4      VP                  V 4      u;8X  d4   VP                  P                  V P                  4      u;8X  d	   V8X  g   Q h Q hV P                  P                  V4      V P                  V4      u;8X  d5   V P                  P                  VP                  4      u;8X  d
   V) 8X  g   Q h Q hV P                  P                  V4      \        ) \        ) \        ) 38X  g   Q hV P                  P                  RV) 4      pVP                  V 4      \        ) \        ) \        ) 38X  g   Q hVP                  VP                  4      VP                  V4      u;8X  d   RV,          8X  g   Q h Q hVP                  R^V,          4      pVP                  VP                  4      \        P                  8X  g   Q hVP                  V4      R8X  g   Q hVP                  RV P
                  4      pVP                  V4      ^V,          V P
                  ,
          8X  g   Q hVP                  V4      R\        ,          ^,           R\        ,          R\        ,          38X  g   Q hR# )	z9
Tests Point class, and locate_new method in CoordSys3D.
r   rI   pp1p2Nr4   )r   r   r   )r   rN   r'   r   r5   r#   r6   r$   r7   r&   rU   position_wrtexpress_coordinatesr   rV   )r   r)   rI   ro   rp   rq   s         r*   test_locatenew_pointrt     sm    	3Aahh&&&&	!##!##!##A	S!A88  #>>!088  *0./0 0 0 0 0 88  #>>!188  *1/0b1 1 1 1 1 88''*rA2rl:::	C!$A  #QB|333>>!((#q~~a'8 6    	
dAaC	 B??188$333!!!$	111	
dACC	 B??2!A#)+++!!!$A2a4A(>>>>r,   c            
         \        R 4      p V P                  RRR7      pVP                  V 8X  g   Q hVP                  4       VP                  \        VP                  4      ,          \        VP                  4      ,          VP                  \        VP                  4      ,          \        VP                  4      ,          VP                  \        VP                  4      ,          38X  g   Q hVP                  4       \        V P                  ^,          V P                  ^,          ,           V P                  ^,          ,           4      \        V P                  \        V P                  ^,          V P                  ^,          ,           V P                  ^,          ,           4      ,          4      \        V P                  V P                  4      38X  g   Q hR# )r5   r7   	sphericaltransformationN)r   
create_new_parenttransformation_to_parentrr   thetar   phitransformation_from_parentr   r   r"   r%   r   r   )r5   r7   s     r*   test_create_newr   -  s;   3A	S5A99>>%%'CCAGGSZ'S\)9#aee*)Dacc#agg,FVWX X X'')a!##q&1336)*DT!##q&1336/ACCQRF:R5S1S,TV[\]\_\_abadadVefg g gr,   c                  v   \        R 4      p ^V P                  ,          ^V P                  ,          ,           \        V P                  ,          ,           pVP                  4       VP                  4       8X  g   Q hVP                  \        ^/R7      VP                  \        ^4      P                  4       8X  g   Q hR# )r   )subsN)r   r#   r$   r5   r&   nevalfr   )r   r)   s     r*   
test_evalfr   7  s{    3A	!##!##!##A335AGGI7717!&&A,"4"4"6666r,   c                     \        R R4      p V P                  4       ^V P                  \        V P                  4      V P                  ,          38X  g   Q h\        R 4      p V P                  4       R8X  g   Q h\        R R4      p V P                  4       R8X  g   Q h\        R R4      p V P                  4       ^V P                  ^38X  g   Q hR# )r5   rv   	cartesiancylindricalNr3   r3   r3   )r   lame_coefficientsr|   r   r}   r5   s    r*   test_lame_coefficientsr   >  s    3$A QS\!##-=$>>>>3A I---3$A I---3&A QQK///r,   c            
      n  aaaa \        R 4      w  ooo\        RR. ROR7      oSP                  4       w  rpV SP                  8X  g   Q hVSP                  8X  g   Q hVSP
                  8X  g   Q h\        \        V3R l4       \        \        V3R l4       \        \        V3R l4       SP                  4       V \        V4      ,          \        V4      ,          V \        V4      ,          \        V4      ,          V \        V4      ,          38X  g   Q hSP                  4       ^W \        V4      ,          38X  g   Q hSP                  4       ! SSS4      \        S^,          S^,          ,           S^,          ,           4      \        S\        S^,          S^,          ,           S^,          ,           4      ,          4      \        SS4      38X  g   Q h\        RR. ROR7      oSP                  4       w  roSP                  4       V \        V4      ,          V \        V4      ,          S38X  g   Q hSP                  4       ^SP                  ^38X  g   Q hSP                  4       ! SSS4      \        S^,          S^,          ,           4      \        SS4      S38X  g   Q h\        RR4      oSP                  4       SP                   SP"                  SP$                  38X  g   Q hSP                  4       R8X  g   Q hSP                  4       ! SSS4      SSS38X  g   Q h\        R 4      w  ooo\        RSSS3SSS334      oSP'                  4        SP                  4       SP(                  SP*                  SP,                  38X  g   Q hSP                  4       R8X  g   Q hSP                  4       ! SSS4      SSS38X  g   Q h\        R	4      w  ro\        RWS3V \        V4      ,          V \        V4      ,          S3.. ROR
7      oSP                  4       w  roSP                  4       V \        V4      ,          V \        V4      ,          S38X  g   Q hSP                  4       \        \        V4      ^,          \        V4      ^,          ,           4      \        V ^,          \        V4      ^,          ,          V ^,          \        V4      ^,          ,          ,           4      ^38X  g   Q h\        RR 4      oSP                  4       SP(                  SP*                  SP,                  38X  g   Q hSP                  4       R8X  g   Q hSP'                  4        SP                  4       ! SSS4      SSS38X  g   Q h\        RR . ROR
7      oSP                  4       w  rpSP                  4       V \        V4      ,          \        V4      ,          V \        V4      ,          \        V4      ,          V \        V4      ,          38X  g   Q hSP                  4       \        \        V4      ^,          \        V4      ^,          ,          \        V4      ^,          \        V4      ^,          ,          ,           \        V4      ^,          ,           4      \        V ^,          \        V4      ^,          ,          \        V4      ^,          ,          V ^,          \        V4      ^,          ,          ,           V ^,          \        V4      ^,          ,          \        V4      ^,          ,          ,           4      \        V ^,          \        V4      ^,          ,          \        V4      ^,          ,          V ^,          \        V4      ^,          ,          \        V4      ^,          ,          ,           4      38X  g   Q h\        RR . ROR
7      oSP                  4       w  roSP                  4       V \        V4      ,          V \        V4      ,          S38X  g   Q hSP                  4       \        \        V4      ^,          \        V4      ^,          ,           4      \        V ^,          \        V4      ^,          ,          V ^,          \        V4      ^,          ,          ,           4      ^38X  g   Q h\        \.        VVV3R l4       R# )r   r5   rv   )rx   variable_namesc                     < S P                   # N)r   r   s   r*   <lambda>/test_transformation_equations.<locals>.<lambda>U  	    133r,   c                     < S P                   # r   )r"   r   s   r*   r   r   V  r   r,   c                     < S P                   # r   )r%   r   s   r*   r   r   W  r   r,   r   r   z	r theta z)r   c                 
    WV3# r    r   r"   r%   s   &&&r*   r   r     s    q	r,   c                     V \        V4      ,          \        V4      ,          V \        V4      ,          \        V4      ,          V \        V4      ,          3# r   )r   r   r|   r}   r~   s   &&&r*   r   r     s=    qU|CH/DaE
lSVWZS[F[]^_bch_i]i.jr,   c                 L    V \        V4      ,          V \        V4      ,          V3# r   )r   r   r|   r}   r%   s   &&&r*   r   r     s    	
3u:qU|Q'r,   c                     < \        R S S \        S4      ,          \        S4      ,          SS \        S4      ,          \        S4      ,          SS \        S4      ,          /R7      # r5   rw   r   r   r   r   s   r*   r   r     sF    j	1SV8CF?AaAhs1voq1SV8>= >r,   Nr   r   r   )r
   r   base_scalarsr|   r}   r~   r   AttributeErrorr{   r   r   r   #transformation_from_parent_functionr   r   r   r   r"   r%   _calculate_inv_trans_equationsx1x2x3	TypeError)r|   r}   r~   r5   r   r"   r%   s      @@@@r*   test_transformation_equationsr   I  s+   gGAq!3{"7	9ANN$MAc8O8AGG!%%<<
>;'
>;'
>;'%%'	#e*SX	#e*SX	#e*,   
  QSZ<$88880021a;Q!Va1f_qAv%&a41q!tad*++,a@   
 	3}"5	7A.."KAa%%'	#e*	#e*	,   
  QQK///0021a;QTAqD[@Q!!QK@, , , , 	3$A%%'ACCacc?::: I---0021a;1ayHHH
 gGAq!3!QQ1I./A$$&%%'ADD!$$+==== I---0021a;1ayHHH+&KAa 	3!A3u:qU|Q(GH"5	7A.."KAa%%'	#e*aE
lA,     SZ]SZ]*+QT#e*a-!Q$s5z1}"445	%    	312A%%'ADD!$$+==== I---$$&0021a;1ayHHH 	3j"7	9ANN$MAc%%'	#e*SXqSz#e*4aE
l,     SXq[UQ&UQs3x{)BBSZQR]RSQT#c(A+c%j!m+ad3u:q=.@@1a4CRSCSTWX]T^`aTaCaabQT#c(A+c%j!m+ad3u:q=.@S1.LLM%    	3 (*	A .."KAa%%'Ac%jL!CJ,+JJJJ SZ]SZ]*+QT#e*a-!Q$s5z1}"445	%    9 > ?r,   c            
      "  aaa \        R 4      w  ooo\        R4      w  r\        RSSS3S\        S4      ,          \        S4      ,          S\        S4      ,          \        S4      ,          S\        S4      ,          33R7      pVP	                  VP
                  4      RJ g   Q h\        RSSS3S\        S4      ,          S\        S4      ,          S33R7      pVP	                  VP
                  4      RJ g   Q h\        RWS3\        V 4      \        V4      ,          \        V 4      \        V4      ,          S33R7      pVP	                  VP
                  4      RJ g   Q h\        \        VVV3R l4       \        \        VVV3R l4       R# )r   zu, vr5   rw   Tc                  .   < \        R S SS3S S S33R7      # r   r   r   s   r*   r   *test_check_orthogonality.<locals>.<lambda>  s    z#1ay1aQR)>TUr,   c            
         < \        R S SS3S \        S^,          4      ,          \        S4      ,          S \        S4      ,          \        S4      ,          S \        S4      ,          33R7      # r   r   r   s   r*   r   r     sR    z#	
Aq	Ac!A#hJs1v%qQxA#a&A?C  Dr,   N)
r
   r   r   r   _check_orthogonality_transformationr   r   r   
ValueError)ur)   r5   r   r"   r%   s      @@@r*   test_check_orthogonalityr     sK   gGAq!
&/CA3Aq	Ac!fHSVOQs1vXcRSf_VWX[\]X^V^3_'`aA!!!"3"34<<<3Aq	AAJCF
A3N'OPA!!!"3"34<<<3q	DGc!f4Dd1gPSTUPVFVXY3Z'[\A!!!"3"34<<<
:UV
: D Er,   c                  *   \        R 4      p ^ RIHp V! R4      pV P                  V P                  V P                  4       4      V P                  V P                  V P                  38X  g   Q hV P                  V P                  4       V P                  4       4      V P                  V P                  V P                  38X  g   Q hV P                  R^ V P                  ) 4      pVP                  VP                  VP                  4       4      VP                  VP                  VP                  38X  g   Q hVP                  VP                  4       VP                  4       4      VP                  VP                  VP                  38X  g   Q hV P                  RW P                  ) 4      pVP                  VP                  VP                  4       4      \        V4      ) VP                  ,          \        V4      VP                  ,          ,           \        V4      VP                  ,          \        V4      VP                  ,          ,           VP                  38X  g   Q hVP                  VP                  4       VP                  4       4      \        V4      VP                  ,          \        V4      VP                  ,          ,           \        V4      ) VP                  ,          \        V4      VP                  ,          ,           VP                  38X  g   Q hR# )r5   r	   q0r6   r7   N)r   sympy.core.symbolr
   _rotation_trans_equations_parent_rotation_matrixr   r   r"   r%   _inverse_rotation_matrixrR   r&   r   r   )r5   r
   r   r6   r7   s        r*   test_rotation_trans_equationsr     sT   3A)	B&&q'@'@!..BRSXYX[X[]^]`]`bcbebeWffff&&q'A'A'CQ^^EUV[\[^[^`a`c`cefehehZiiii	#q133$'A&&q'@'@!..BRSXYX[X[]^]`]`bcbebeWffff&&q'A'A'CQ^^EUV[\[^[^`a`c`cefehehZiiii	#rCC4(A&&q'@'@!..BRSWHqssNSWqss]*CGaccMCGaccM,I133OP P P&&q'A'A'CQ^^EUVGaccMCGaccM)CG8acc>CGaccM+I133OP P Pr,   N)Asympy.testing.pytestr   sympy.vector.coordsysrectr   sympy.vector.scalarr   sympy.core.functionr   sympy.core.numbersr   r   r
   %sympy.functions.elementary.hyperbolicr   r   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   r   r   sympy.matrices.denser   sympy.matrices.immutabler   r=   sympy.simplify.simplifyr   sympy.vector.functionsr   sympy.vector.pointr   sympy.vector.vectorr   sympy.vector.orientersr   r   r   r   r   r"   r%   r5   r6   r7   rS   r8   r9   r:   r;   r+   r0   rB   rX   r_   rf   rm   rt   r   r   r   r   r   r   r   r,   r*   <module>r      s    ' 0 * & ! % > 9 L L & C , * $ &G G '
1aY
1a'BB5>@@=F/>d>@B: ?6g70h?VEPr,   