
    \h@                     "   S SK Jr  S SKJrJrJr  S SKJr  S SKJ	r	  S SK
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  S S	KJrJrJrJr  S S
KJr  S SKJrJ r J!r!  S SK"J#r#  S SK$J%r%J&r&  S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2S r3g)    )Basic)IRationalpievaluate)S)Symbol)sympify)sqrt)LinePointPoint2DPoint3DLine3DPlane)rotatescale	translateGeometryEntity)Matrix)subsetspermutationscartes)Undecidable)raiseswarnsc                    ^^^^^ [        SSS9n [        SSS9n[        SSS9n[        SSS9n[        SSS9n[        SSS9n[        R                  n[        X#5      m[        XE5      n[        S	S	5      m[        S
S
5      n[        S	S
5      n	[	        [        S
S	5      S
S9mTT;   d   eTU;  d   eUR
                  U:X  d   eTU-   U:X  d   eUT-
  [        XB-
  XS-
  5      :X  d   eU* [        U* U* 5      :X  d   e[        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [        S[        S5      5      [        [        SS5      [        S5      5      :X  d   e[        R                  " TU5      [        Xf5      :X  d   e[        R                  " TU5      [        XfU-  -   XfU-  -   5      :X  d   e[        R                  " Xw5      U:X  d   eUR                  U5      U:X  d   eTR                  [        S	S	5      :X  d   e[        R                  " TU5      [        S5      :X  d   e[        R                  " TT5      S	:X  d   e[        R                  " TU5      [        UR                  S-  UR
                  S-  -   5      :X  d   e[        [        U4S j5        [        [        U4S j5        TR                  T5      TR                  T5      :X  d   eUR                  T5      TR                  U5      :X  d   e[        R                  " UT5      S:X  d   e[        R                   " X5      S
:X  d   e[        [        U4S j5        [        X"5      m[        XU5      n
[        US
-   U5      n[        R"                  " T5      (       d   e[%        [&        SS9   [        R"                  " T[        TSS95      (       d   e S S S 5        TR#                  5       (       d   e[        R"                  " TU5      (       d   e[        R"                  " TUTU
5      (       d   e[        R"                  " TUTU5      SL d   e[        R"                  " TTX5      SL d   e[        [        U4S j5        [        [        UU4S j5        TR)                  [        S	S	5      5      T/:X  d   eTR)                  U5      / :X  d   eTR)                  T5      / :X  d   e[%        [&        SS9   [        R(                  " [        S	S	S	5      [        S	S	5      5      [        S	S	S	5      /:X  d   e S S S 5        [        SSS9n[        US	5      n[        S	U5      n[        U* S	5      n[        S	U* 5      n[        US 5      n[        R*                  " U5      (       d   e[        R*                  " X5      (       d   e[        R*                  " XUU5      (       d   e[-        XUU45       H  n[        R*                  " U6 SL a  M   e   [        R*                  " XS-  US-  5      SL d   e[        S	S	5      R+                  S!S"S#5      SL d   e[        R*                  " [        S	S	S	S	5      [        S
S	S	S	5      [        S
S
S	S	5      [        S
S
S
S	5      5      SL d   eTR/                  T5      (       d   eTR/                  ST-  5      (       d   eTR/                  U5      (       a   e[        R.                  " [        S
S
5      S$5      (       d   e[        R.                  " [        S	S	5      S%5      (       d   e[        [0        S& 5        [        S	S
5      R2                  [        S
S	5      :X  d   e[        S
S	5      R2                  [        S	S
5      :X  d   eTR4                  b   eTR4                  (       d   eUR4                  SL d   eTR6                  b   eTR6                  SL d   eUR6                  (       d   eUR9                  SS5      [        SS5      :X  d   eTR9                  SS5      T:X  d   eUR;                  [<        [        S'S'5      5      T:X  d   eTR?                  U5      TR                  U5      R9                  SS5      :X  d   eT* RA                  U5      TR                  U5      R9                  SS5      :X  d   eUS -  [        S S 5      :X  d   eUS -  [        S(S(5      :X  d   eS U-  [        S S 5      :X  d   e[        [        S) 5        [        X S
-
  -  U5      [        U S-  U -
  US
-   5      -
  [        S	S*5      :X  d   e[        R                  [        S
S5      nn[        UU5      RC                  S5      [        URE                  S5      URE                  S5      SS+9:X  d   e[        [        S, 5        [        RF                  " S-S.5      [        S	S	5      :X  d   e[        RF                  " S!S.5      [        S
S	5      :X  d   e[        [        U4S/ j5        [        S
S	5      mTR;                  [<        S-  5      [        S	S
5      :X  d   eTR;                  [<        S-  T5      T:X  d   e[        S
S
5      mTR9                  SS5      [        SS5      :X  d   eTRI                  S
S5      [        SS5      :X  d   eTRI                  S
5      [        SS
5      :X  d   eTRI                  S
S09[        S
S5      :X  d   eTRH                  " TRJ                  6 [        SS5      :X  d   e[        [        U4S1 j5        [        [        U4S2 j5        S	[        S	S	S	S	5      ;   d   eS
[        S	S	S	S	5      ;  d   e[        RL                  " 5       S*:X  d   eg ! , (       d  f       GN= f! , (       d  f       GN= f)3NxTrealyx1x2y1y2r      )slopec                      [        S5      $ Nr'   r        W/var/www/auris/envauris/lib/python3.13/site-packages/sympy/geometry/tests/test_point.py<lambda>test_point.<locals>.<lambda>%   s    eAhr-   c                      [        S/5      $ r*   r+   r,   r-   r.   r/   r0   &   s
    uaSzr-   c                  "    [        S[        5      $ N   r   r   r,   r-   r.   r/   r0   '   s
    uQ{r-   c                  0    [        S[        -  [        5      $ )N   r5   r,   r-   r.   r/   r0   (   s    uQqS!}r-   c                  0    [        S[        -   [        5      $ r3   r5   r,   r-   r.   r/   r0   )   s    uQUAr-   fffffA@r4        r7   c                  2   > [         R                  " T S5      $ Nr   )r   distancep1s   r.   r/   r0   5   s    ennR3r-   c                  B   > [         R                  " T [        5       5      $ N)r   r>   r   r?   s   r.   r/   r0   6   s    ennR1ABr-   c                  2   > [         R                  " T T 5      $ rB   )r   canberra_distancep3s   r.   r/   r0   ?   s    u66r2>r-   Ftest_stacklevel   )dimc                  0   > [         R                  " T 5      $ rB   )r   is_collinear)lines   r.   r/   r0   N   s    e006r-   c                  &   > TR                  T 5      $ rB   )rL   )rM   p1_1s   r.   r/   r0   O   s    d//5r-   )positive   r'   r'   )r7   r7   )r7   r'   )rS   )r   rS   c                  |    [         R                  " [        [        S5      [        S5      5      [        SS5      5      $ )Nzx1%y1zx2%y2r   r'   )r   is_scalar_multipler   r,   r-   r.   r/   r0   l   s.     8 8ww?OQXY`Qa9bdijkmndo pr-   g      ?皙?c                       [        SS5      S-   $ Nr   
   r+   r,   r-   r.   r/   r0      s    uQ{R/r-   rS   r   c                       [        SS5      S-   $ Nr'   r7   r+   r,   r-   r.   r/   r0      s    uQ{Qr-   )r   r'   )r'   r   c                  F   > [         R                  " T [        SS5      5      $ r=   )r   projectr?   s   r.   r/   r0      s    u}}Rq!=r-   )r"   c                  &   > T R                  T 5      $ rB   	transformrE   s   r.   r/   r0      s    r||B/r-   c                  D   > T R                  [        SS/SS//5      5      $ Nr'   r   r`   r   ps   r.   r/   r0           q{{6Aq6Aq62B+CDr-   )'r
   r	   Halfr   r   r"   r   	TypeError
ValueErrorr   r   midpointoriginr>   r   taxicab_distancerD   rL   r   UserWarningintersectionis_concyclicr   rU   r   orthogonal_directionis_zero
is_nonzeror   r   r   __radd____rsub__evalfnr]   r   argsaffine_rank)r   r"   r#   r$   r%   r&   halfp2p4p5p1_2p1_3x_posp2_1p2_2p2_3p2_4p2_5ptsabrM   re   r@   rO   rF   s                        @@@@@r.   
test_pointr      s_
   sAsA	4	 B	4	 B	4	 B	4	 B66D	rB	rB	q!B	q!B	q!Ba1%D8O8R<<442::G??Gbgrw////3%bS/!!!
9&'
:)*
:*+
:,-
:./Q E(3*;T!W$EEEE>>"b!U4%6666>>"b!U4r'>4r'>%JJJJ>>"!R''';;r?b   99a###>>"b!T!W,,,>>"b!Q&&&>>"b!T"$$'BDD!G*;%<<<<
934
9BC ;;tb 1111;;tb 1111!!"b)Q...""2*a///
:>?=D=DaDb!!!!	{E	2!!"eBA&67777 
3??b"%%%%b"dD1111b"dD1U:::b"b-666
967
956??5A;'B4///??2"$$$??4 B&&&	{E	2!!%1a.%1+>5Aq>BRRRR 
3 3&E?DE?D%DUFD?Dd####d))))d$5555Tt45!!3'5000 6bq&"q&1U:::A;##FFF;uDDDeAq!Q/q!Q1BE!QPQSTDUW\]^`acdfgWhimrrrr  $$$$  2&&&&$$R((((##E!QK::::##E!QK9999
;pqA;++uQ{:::A;++uQ{::::::::::==   ==E!!!===88Aq>U1a[(((88Aq>R99RsC)R///;;r?bkk"o33Aq9999C>>"R!6!6q!!<<<<6U1a[   6U3_$$$r6U1a[   
:/0 EAq!taxQ!775B<GGG668Aq>qAA;Qacc!facc!fu-. . .
:./ ==(E!QK777==(E!QK777
:=> 	aA88BqD>U1a[(((88BqD!!!!aA771a=E!QK''';;q!a+++;;q>U1a[(((;;;uQ{***;;5A;... :/0
:DE aAq!!!!E!Q1%%%% "$$$A 
3	2 
3	2s   'n5?o5
o
oc            	        ^^ [        SSS9m[        SSS9n [        SSS9n[        SSS9n[        SSS9n[        SSS9n[        S	SS9n[        S
SS9n[        R                  n[        XU5      n[        XEU5      n	[        SSS5      n
[        SSS5      n[        SSS5      nX;   d   eX;  d   eU	R                  U:X  d   eX-   U:X  d   eX-
  [        XA-
  XR-
  Xc-
  5      :X  d   eU	* [        U* U* U* 5      :X  d   e[        S[        S5      5      [        [        SS5      [        S5      5      :X  d   e[        R                  " X5      [        XwU5      :X  d   e[        R                  " X5      [        XwU-  -   XwU-  -   XwU-  -   5      :X  d   e[        R                  " X5      U	:X  d   eU	R                  U	5      U	:X  d   e[        R                  " X5      [        S5      :X  d   e[        R                  " X5      S:X  d   e[        R                  " X5      [        U	R                  S-  U	R                  S-  -   U	R                  S-  -   5      :X  d   e[        XU5      n[        XUU5      n[        US-   X5      n[        R                  " U
5        [        R                  " X5      (       d   e[        R                  " XX5      (       d   e[        R                  " XX5      SL d   e[        R                  " XX5      SL d   eU
R                  [        SSS5      5      U
/:X  d   eU
R                  U5      / :X  d   eUS-  [        SSS5      :X  d   eUS-  [        SSS5      :X  d   eSU-  [        SSS5      :X  d   e[        [        S 5        UR                   XU4:X  d   eU	R                   XEU4:X  d   eU
R                   S:X  d   eUR                   S:X  d   eUR                   S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   e[        TTS-
  -  U S5      [        TS-  T-
  U S-   S5      -
  [        SSS5      :X  d   e[        R                  [        SS5      [        SS5      nnn[        UUU5      R#                  S5      [        UR%                  S5      UR%                  S5      UR%                  S5      SS9:X  d   e[        [        S 5        [        SSS5      mTR'                  SS5      [        SSS5      :X  d   eTR)                  SS5      [        SSS5      :X  d   eTR)                  S5      [        SSS5      :X  d   eTR)                  SS9[        SSS5      :X  d   eTR(                  " TR*                  6 [        SSS5      :X  d   e[        SSSSS 9R*                  S   R,                  (       d   eTR.                  S:X  d   eUR.                  S:X  d   eUR.                  S:X  d   e[        [0        UU4S! j5        [
        R2                  " 5       (       d   e[
        R2                  " S"S"S#5      (       d   e[
        R2                  " S"S$5      (       d   e[5        [6        SS%9   [        [        S& 5        S S S 5        [        R2                  " S"S$5      (       d   e[
        R2                  " SS'SS(5      SL d   e[        SSS5      n[        SSS5      n[        R2                  " TUU5      S:X  d   e[        R2                  " TUUU
5      S:X  d   e[
        R2                  " TU5      (       d   e[        SSS5      n[        SSS5      n[        R2                  " TUU5      (       d   e[9        S(S)S*5      n[
        R2                  " [;        S5       Vs/ s H  nUR=                  SU-  U45      PM     sn6 (       d   e[
        R2                  " [        TU 5      [        TTU -   5      [        U TS-   5      5      SL d   eUR                  [?        TU5      5      [        SSS5      /:X  d   eUR'                  SSS5      U:X  d   eUR'                  SSSU5      [        SSS5      :X  d   eUR'                  SSSU
5      U:X  d   e[A        / S+Q/ S,Q/ S-Q/ S.Q/5      nTRC                  U5      T:X  d   e[A        / S/Q/ S0Q/ S1Q/ S.Q/5      nTRC                  U5      [        SSS5      :X  d   e[        [        U4S2 j5        [        [        U4S3 j5        TRE                  U5      S:X  d   e[        SSSS5      n[5        [6        SS%9   TU-
  [        SSSS5      :X  d   e S S S 5        [        SSSS5      n[5        [6        SS%9   TU-
  [        SSSS5      :X  d   e S S S 5        g ! , (       d  f       GN5= fs  snf ! , (       d  f       Nc= f! , (       d  f       g = f)4Nr   Tr    r"   r#   r$   x3r%   r&   y3r   r'   r7   r9   r4   r:   r;   FrQ   rV   c                  "    [        SSS5      S-   $ rX   r   r,   r-   r.   r/   test_point3D.<locals>.<lambda>   s    wq!Q/"4r-   )r   r   r   )r'   r'   r'   )r   r'   r7   rS   rI   r   c                  "    [        SSS5      S-   $ )Nr'   r7   r4   r   r,   r-   r.   r/   r      s    wq!Q/!3r-   )z皙?ignore)r   on_morphc                  2   > [         R                  " T T5      $ rB   r   are_collinear)re   r   s   r.   r/   r     s    g33Aq9r-   )r'   r7   r   )r'   r4   r   r'   r7   r4   rG   c                  0    [         R                  " SS5      $ )Nr'   r7   r   )r   are_coplanarr,   r-   r.   r/   r   	  s    7#7#7	#Jr-   )r'   r'   r   )r'   r7   r'   )r7   r'   r   )r4   r'   r7   )r'   r   r   r   )r   r'   r   r   )r   r   r'   r   )r   r   r   r'   )r'   r   r   r'   )r   r'   r   r'   )r   r   r'   r'   c                  &   > T R                  T 5      $ rB   r_   rd   s   r.   r/   r   '  s    q{{1~r-   c                  D   > T R                  [        SS/SS//5      5      $ rb   rc   rd   s   r.   r/   r   (  rf   r-   )#r
   r	   rg   r   r"   r   r   r   rj   r>   r   r   r   rn   r   ri   coordinatesru   rv   r   r   rw   is_Floatlengthrh   r   r   rm   r   range
projectionr   r   r`   equals)r"   r#   r$   r   r%   r&   r   ry   r@   rz   rF   r{   r|   rO   r}   r~   r   r   cplanar2planar3planeiidentitytransp_4dp_4d3dre   r   s                              @@r.   test_point3Dr      st	   sAsA	4	 B	4	 B	4	 B	4	 B	4	 B	4	 B66D		B		B	Aq	B	Aq	B	Aq	B8O8<<442::G??G"'::::3'2#sRC((((Q E(3*;T!W$EEEEB#wt4'@@@@B#wt2g~t2g~)-R(9 9 9 9B#r)));;r?b   B#tAw...B#q(((B#tBDD!GbddAg,=a,G'HHHH22D22D262"D"  ((((  4444  4===  0E999??71a+,444??2"$$$ 6WQ1%%%%6WS#s++++r6WQ1%%%%
:45 >>bb\)))>>bb\)))>>Y&&&>>Y&&&>>Y&&&441994419944199 1a!e9a#gadQhAq&AA2q   ffhq!nhq!n!qA1a!!!$acc!facc!facc!fu56 6 6
:34 	1aA771a=GAq!,,,,;;q!1a 0000;;q>WQ1----;;;wq!Q////;;71a#3333 3eh?DDQGPPPP 88q==;;!;;! 99: iI>>>>i3333	{E	2zJK 
3	95555iIyIURRRaQGb!QG7G4<<<7GR8EAAAa))))aAGaAG7G4444)Y	2EaQ1 0 02'1 >QRRR eAqk5AE?E!QUOLPTTTT q' 231a8H7IIII ==Aq!W,,,==Aq'*gaA.>>>>==Aq"%000 |\<NOH;;x A%%%L,lKLE;;uAq!1111
:-.
:DE 88B<5    Aq!D	{E	24x5Aq"---- 
31aAF	{E	26zU1aA.... 
3	2U 
3	2  R4 
3	2 
3	2s*   g? g#2g(/g9
g (
g69
hc                     [        SS5      n [        SS5      nSnU R                  U5      [        S5      S-  :X  d   eUR                  U5      [        S5      S-  :X  d   eU R                  S:X  d   eU R                  S:X  d   eUR                  S:X  d   eUR                  [        S5      S-  :X  d   eU R                  S	:X  d   eUR                  S[        S5      S-  4:X  d   eU R                  S
:X  d   eg )Nr'   rQ   rI   g      @)   r4   =   r7      )r'   rQ   )r'   rQ   r'   rQ   )r   r>   r   r   r"   r	   r   boundsr@   rz   rF   s      r.   test_Point2Dr   6  s     
AB	CB	B;;r?d2hqj(((;;r?d2hqj((( 441994419944199441Q46>>>>V###>>a1a[((( 99$$$r-   c                      [        SSS5      n [        SSS5      n[        SSS5      n[         R                  " XU5      SL d   eg )	NrI   r   r'   r7   r4      Fr   r   s      r.   test_issue_9214r   J  sG    	B	B	Aq	B	Aq	B  ,555r-   c                      [        SSS5      n [        SS5      n[        [        SS9   U R	                  U5      [        S5      :X  d   e S S S 5        g ! , (       d  f       g = f)Nr'   r   r7   FrG   rQ   )r   r   r   rm   r>   r   r@   rz   s     r.   test_issue_11617r   R  sJ    	1QB	1B	{E	2{{2$q'))) 
3	2	2s   !A
A!c                     [        SS5      n U R                  [        [        S-  5      5      [        SS5      :X  d   eU R                  [	        SS5      5      [        SS5      :X  d   eU R                  [        SS5      5      [        SS5      :X  d   e[        SS5      R	                  SSS5      [        SS5      :X  d   e[        SS5      R                  SS	5      [        S	S
5      :X  d   eg )Nr'   r7   rS   r4   )rI   rQ   r   irI   rQ   r   )r   r`   r   r   r   r   rd   s    r.   test_transformr   Z  s    aA;;vbd|$b!444;;uQ{#uQ{222;;yA'5A;666A;Q6*b"  A;  A&a  r-   c                      [        SS5      [        SS5      p[        SS5      [        SS5      p2[         R                  " XU5      (       d   e[         R                  " XX#5      (       a   eg )NrS   r   r'   r7   )r   ro   )r@   rz   rF   r{   s       r.   test_concyclic_doctest_bugr   e  s]    2q\5A;1a[%A,bb))))!!""11111r-   c                     SSS/[        SS5      4n SSS/[        SS5      4n[        X5      n[        SS5      nS/ SQ[        SSS5      4n[        US5      n[	        SSS5      nS/ SQ[        SSSS5      4n[        US5      n[        SSSS5      n	/ S	Qn
S
S/nU  H  n[        U5        M     U
 H  nU  H  n[        X=5      " U5        M     M     U H  nU H  n[        X=5      " U6   M     M     S/nU H  n[	        U5        M     U
 H  nU H  n[        Xm5      " U5        M     M     U H  nU H  n[        Xm5      " U6   M     M     S/nU H  n[        U5        M     U
 H  nU H  n[        X5      " U5        M     M     U H  nU H  n[        X5      " U6   M     M     [        S5      n[        SS5      nUSU4-   [        SSU-   SS9:X  d   e[        SS5      nUS-  [        SSSS9:X  d   e[        SS5      nUS-  [        SSSS9:X  d   e[        SSSS9n[        USSS9nUR                  S:X  d   e[        S UR                  SS  5       5      (       d   e[        S [        U5      R                   5       5      (       d   e[        SSS9(       d   e[        [        S 5        [        [        S 5        [        [        S 5        g)zFunctions accepting `Point` objects in `geometry`
should also accept tuples and lists and
automatically convert them to points.r   r'   r7   )r'   r4   r4   r   )r'   r7   r4   rI   rI   )	r>   rU   rl   rj   rn   dotr   __add____sub__ro   rL   r   r   r   Fr   g      $@rV   r   rJ   r   )r   rV   r   r   c              3   8   #    U  H  oR                   v   M     g 7frB   r   .0r   s     r.   	<genexpr>!test_arguments.<locals>.<genexpr>  s     /;azz;   Nc              3   8   #    U  H  oR                   v   M     g 7frB   r   r   s     r.   r   r     s     1=azz=r   errorc                      [        SSSSS9$ )Nr'   r4   r   r   r+   r,   r-   r.   r/    test_arguments.<locals>.<lambda>  s    uQq7Cr-   c                      [        SSSSS9$ )Nr'   r4   unknownr   r+   r,   r-   r.   r/   r     s    uQq9Er-   c                  :    [        [        5       [        5       5      $ rB   )r   r   r,   r-   r.   r/   r     s    eEGUW5r-   )r   r   r   r   r   getattrr
   rw   allr   ri   rh   )	singles2d
singles2d2	doubles2dp2d	singles3d	doubles3dp3d	singles4d	doubles4dp4dtest_singletest_doublere   funcr   r   uu4s                     r.   test_argumentsr   l  s   
 1uQqz*I!Aa
+Jy-I
!A,C'51Q<0I	1%I
!Aa.CIuQq1~6I	1%I
!Aa.C LK!>2K
 ACq!   AC"  
 ""K
 ACq!   AC"  
 ""Ka ACq!   AC"  
 	sAaAQx<5a!ee<<<<aAT6U1cE2222aAT6U1dU3333 	b"u%A	qa(	+B77n$$$/2772A;/////158==11111 Q))) :CD
:EF
956r-   c                      [        SS5      R                  [        [        S5      S-  [        S5      S-  5      :X  d   eg r[   )r   unitr   r,   r-   r.   	test_unitr     s3    A;uT!WQYQ	::::r-   c                  &    [        [        S 5        g )Nc                  L    [        SS5      R                  [        SS5      5      $ )Nr'   r7   )r   r   rR   )r   r   r   r,   r-   r.   r/   test_dot.<locals>.<lambda>  s    eAqkood66.BCr-   )r   rh   r,   r-   r.   test_dotr     s    
9CDr-   c                  $   [         R                  " [        SS5      [        SS5      5      [        SS5      [        SS5      /:X  d   e[         R                  " [        SS5      [        SSS5      SS9[        SSS5      [        SSS5      /:X  d   eg )Nr'   r7   r4   rI   r   r   )r   )r   _normalize_dimensionr,   r-   r.   test__normalize_dimensionr     s    %%eAqk5A;?aU1a[D" " " "%%aU1a^h8aAaA<(( ( (r-   c                  f    [        S5         [        SS5        S S S 5        g ! , (       d  f       g = f)NFr'   r7   )r   r   r,   r-   r.   test_issue_22684r     s    	%a 
s   "
0c                     [        SSS5      n [        SSS5      nU R                  [        SSS5      5      / SQ:X  d   eU R                  [        SSS5      5      / SQ:X  d   eU R                  [        SS[        5      5      / SQ:X  d   eU R                  [        SSS5      5      / SQ:X  d   eU R                  [        S[        S5      S5      5      / SQ:X  d   eU R                  [        SSS5      5      / SQ:X  d   eU R                  [        SSS5      5      [        S	5      S	-  [        S	5      S	-  S/:X  d   eU R                  [        SSS5      5      [        S5      S-  [        S5      S-  [        S5      S-  /:X  d   eU R                  [        S
S5      5      S[        S5      -  S-  S[        S5      -  S-  S/:X  d   eUR                  [        SSS5      5      [        S5      * S-  [        S5      * S-  [        S5      * S-  /:X  d   eUR                  [        SSS5      5      / SQ:X  d   eUR                  [        SSS5      5      [        S	5      S	-  S[        S	5      S	-  /:X  d   eg )Nr   r'   )r'   r   r   )r   r'   r   )r   r   r'   rQ   r4   g333333@r7   ii)      )r   direction_cosiner   r   r   s     r.   test_direction_cosiner     sU   	Aq	B	Aq	Bwq!Q/0I===wq!Q/0I===wq!R01Y>>>wq!Q/0I===wq$q'156)CCCwq!Q/0I===wsC34aDGAIq8QQQQwq!Q/0T!Wq[$q'A+tTUwYZ{4[[[[wsE2348B4PR8TVXY7ZZZZwq!Q/0d1gX\DG8a<RVWXRYQY\]Q]4^^^^wq!R01Y>>>wr1b12tAw{AtAwQR{6SSSSr-   N)4sympy.core.basicr   sympy.core.numbersr   r   r   sympy.core.parametersr   sympy.core.singletonr	   sympy.core.symbolr
   sympy.core.sympifyr   (sympy.functions.elementary.miscellaneousr   sympy.geometryr   r   r   r   r   r   sympy.geometry.entityr   r   r   r   sympy.matricesr   sympy.utilities.iterablesr   r   r   sympy.utilities.miscr   sympy.testing.pytestr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r,   r-   r.   <module>r     s    " 0 0 * " $ & 9 G G J J ! C C , .V%rJ/Z%(6*2K7Z;E(Tr-   