
    Rie1>                        d dl mZ d dl mZ d dlmZmZmZmZ d dlm	Z	 d dl
mZmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZmZmZmZmZ d d
lmZ d dl m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+m,Z,  ed          \  Z-Z.Z/Z0 ed          Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d  Z?d! Z@d" ZAd# ZBd$ ZCd%S )&    )diff)expand)EIRationalpi)S)Symbolsymbols)Abs	conjugateimresign)log)sqrt)acosasincossinatan2atan)	integrate)Matrix)simplify)trigsimp)
Quaternion)raises)permutationsproductzw:zphic                     t          t          t          t          t                    } | | z   t          dt          z  dt          z  dt          z  dt          z            k    sJ t          j        t          d          dz  t          d          dz  t          d          dz  ft          t          dd          z            }|t          t          j
        t          j
        t          j
        t          j
                  k    sJ t          t          t                    t          t                     dgt          t                    t          t                    dgg dg          }t          t          j        |                    }|t          t          d          t          t          t                    dz             z  dz  ddt          ddt          t                    z  z
            t#          t          t                              z  dz            k    sJ t%          dd          t'          t(          fd	           d S )
N      r   r   r      r&   ncFcommutativec                  F    t          t          t           t                    S N)r   wxz)r'   s   Dlib/python3.11/site-packages/sympy/algebras/tests/test_quaternion.py<lambda>z.test_quaternion_construction.<locals>.<lambda>$   s    z!QA66     )r   r,   r-   yr.   from_axis_angler   r   r   r	   Halfr   r   r!   r   r   from_rotation_matrixr   r
   r   
ValueError)qq2Mq3r'   s       @r/   test_quaternion_constructionr;      s   1aAAq5JqsAaC1ac222222		#T!WWQYQ	47719$E$&x1~~$5
7 
7BAFAFFAF, , , , , , 	SCHH9a(3s88SXXq*A999MNNA	*1!44	5	5BQSXX\"""1$aDQs3xxZ,@,@c#hh,OPQ,QS S S S S S 
%	(	(	(B
:666677777r1   c                     t          t          d           } t          t          t          t          t
                    }t          | |z                                  dz  |                                 dz  |                                dz  z  z
            dk    sJ t          t          t          t          t
          d          }| |z                                  |                                 k    sJ d S )Na:dr#   r   r&   )norm)r   r   r,   r-   r2   r.   r   r>   )q1r8   r:   s      r/   !test_quaternion_construction_normr@   '   s    	WU^^	$B	Aq!Q		B2b5,,..!#rwwyy!|bggiil'BCDDIIII	Aq!QQ	'	'	'BG>>rwwyy((((((r1   c                  t   t          t          t          t          t                    } t          j        |                                           }t          j        |                     d                    }| |z
                                  sJ |                                 |z
                                  sJ d S )NT)	r   r,   r-   r2   r.   from_Matrix	to_Matrixis_zero_quaternionvector_part)r7   q_fullq_vects      r/   test_to_and_from_MatrixrH   1   s    1aAA#AKKMM22F#AKK$5$566FJ**,,,,,MMOOf$88:::::::r1   c                     t          t          t          t          t                    } t          t          d           }| |z                                  | j        |                                z  k    sJ | |z                                  |j        |                                 z  k    sJ | j        | j        j	        z  dd dd f         }t          |                                 |                                 dz  z            }||k    sJ d S )Nr=   r&   r#   )r   r,   r-   r2   r.   r   rC   product_matrix_leftproduct_matrix_rightTr   to_rotation_matrixr>   )r?   r8   R1R2s       r/   test_product_matricesrP   9   s    	Aq!Q		B	genn	&BG  B$:R\\^^$KKKKKG  B$;bllnn$LLLLL

 2#:#<
<abb!""f	EB	"''))"''))Q,6	7	7B888888r1   c                     ddt           dz  t          d          dz  t          d          dz  ddffdt           dz  t          d          dz  dt          d          dz  dffdt           dz  t          d          dz  ddt          d          dz  ffdt           dfdt           dfdt           d	fd
t           ddt          d          z  dt          d          z  dt          d          z  fft          d          dz  t          d          dz  t          d          dz  ft           dz  dz  t          j        t          j        t          j        t          j        ffg	} | D ](\  }}}t	          j        ||          t	          | k    sJ )d S )N)r&   r   r   r   )r&   r   r   r   rR   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	   r4   r   r3   )	test_dataaxisangleexpecteds       r/   test_quaternion_axis_anglerZ   D   sr    	%	BqD47719d1ggaiA67	BqD47719aaA67	BqD47719aDGGAI67	B%	B%	B%	BAd1ggIaQi$q''	:;
q''!)T!WWQYQ		*BqDFQVQVQVQV4TU
I "+ P PeX)$66*h:OOOOOOP Pr1   c                     t          j        dt          d                    } | j        t	          t          d          dz            k    sJ | j        t          d          t          t          d          dz            z  dz  k    sJ | j        t          d          t          t          d          dz            z  dz  k    sJ | j	        dt          d          z  t          t          d          dz            z  dz  k    sJ d S )N)r&   r#   r$      r#         r$   )
r   r3   r   ar   br   r   cd)results    r/   )test_quaternion_axis_angle_simplificationrd   V   s    '	477;;F8s47719~~%%%%8tBxxDGGAI.r111118tBxxDGGAI.q000008qbz#d1ggai..03333333r1   c            
         t          dd          } t          dd          }t          dd          t          t          t          t          t
                    | z   t          t          t          |           z   t          t          |           z   t          t
                    k    sJ d	z   t          d	t          z   t          t          t
                    k    sJ t          z   t          t          d	t          z   t          t
                    k    sJ |z   t          t          |z   t          t          t
                    k    sJ t          t          fd
           t          t          fd           t          t          fd            t          t           t           t           t
                     k    sJ t          ddt          z  z   ddt          z  z   dddt          z  z   d          }t          d	ddd          }|ddt          z  z   z   t          ddt          z  z   ddt          z  z   dddt          z  z             k    sJ |ddt          z  z   z   t          dddd          k    sJ |ddt          z  z   z  t          ddt          z  z   ddt          z  z   z  ddt          z  z   ddt          z  z   z  dddt          z  z   ddt          z  z   z            k    sJ |ddt          z  z   z  t          dddd          k    sJ t          d	ddd          }t          dddd          }||z   |k    sJ ||z
  |k    sJ ||z
  |k    sJ d S )Nr_   Tcomplexr`   realra   Fr(   r&   c                       z   S r+    ra   r7   s   r/   r0   z7test_quaternion_complex_real_addition.<locals>.<lambda>h       q1u r1   c                       z  S r+   rk   rl   s   r/   r0   z7test_quaternion_complex_real_addition.<locals>.<lambda>i   rm   r1   c                       z  S r+   rk   rl   s   r/   r0   z7test_quaternion_complex_real_addition.<locals>.<lambda>j   rm   r1   r$   r\   r#      r   r^      
real_fieldi   &   )r   r   r,   r-   r2   r.   r   r   r   r   r6   )r_   r`   r?   r8   q0ra   r7   s        @@r/   %test_quaternion_complex_real_additionrx   ]   s   T"""A$A'''A1aAAq5Jq2a55y!bee)Q::::::q5Jq1uaA......q5Jq!a%A......q5Jq1uaA......
:}}}}}%%%
:}}}}}%%%
:}}}}}%%%2QBQB++++++	A!GQ1WaQqSu	E	E	EB	Aq!Q		BQqS>ZAaCQqS!Q1WEEEEEEQqS>Z1a333333QqS>AaC!ac'"Q1Wq1Q3w$7Q1Wq1Q3w<OPPQ Q Q QQqS>ZRR888888	Aq!Q		B	Aq!Q		B7b====7b====7b======r1   c            
      f   t          t          d          ddt          d                                                    t          t          d                                          ddt          d                                                    k    sJ t          dt          d          z  dddt          d          z                                            t          dt          d          z                                  dddt          d          z                                            k    sJ d S )Nr#   r   r$   r&   )r   r   evalfrk   r1   r/   test_quaternion_evalfr{   ~   s    tAww1d1gg..4466tAww}}1d1ggmmoo>>? ? ? ?qay!Q$q''	2288::$q''	((**Aq1T!WW92C2C2E2EFFG G G G G Gr1   c                  n#   t          t          t          t          t                    } t          dddd          t          dddd          t          |           t          t          t           t           t                     k    sJ |                                 t          t          dz  t          dz  z   t          dz  z   t          dz  z             k    sJ |                                 t          t          t          t          t                    t          t          dz  t          dz  z   t          dz  z   t          dz  z             z  k    sJ | 	                                t          t          t           t           t                     t          dz  t          dz  z   t          dz  z   t          dz  z   z  k    sJ | 	                                | 
                    d          k    sJ t          t          fd           | 
                    d          t          t          dz  t          dz  z
  t          dz  z
  t          dz  z
  dt          z  t          z  dt          z  t          z  dt          z  t          z            k    sJ | dz  t          t          dz  t          dz  z
  t          dz  z
  t          dz  z
  dt          z  t          z  dt          z  t          z  dt          z  t          z            k    sJ 
                    d          t          t          d	d
          t          dd
          t          dd          t          dd
                    k    sJ dz  t          t          d	d
          t          dd
          t          dd          t          dd
                    k    sJ 
                    d          t          k    sJ t          t          fd                                           t          t"          t%          t          d                    z  dt          d          z  t"          z  t'          t          d                    z  dz  dt          d          z  t"          z  t'          t          d                    z  dz  dt          d          z  t"          z  t'          t          d                    z  dz            k    sJ                                 t          t+          t          d                    dt          d          z  t-          t          d          dz            z  dz  dt          d          z  t-          t          d          dz            z  dz  dt          d          z  t-          t          d          dz            z  dz            k    sJ                     d          t          dt%          dt-          t          d          dz            z            z  dt          d          z  t'          dt-          t          d          dz            z            z  dz  dt          d          z  t'          dt-          t          d          dz            z            z  dz  dt          d          z  t'          dt-          t          d          dz            z            z  dz            k    sJ t1          t          t          t          t          t                    t                    t          dddd          k    sJ t3          t          t          t          t          t                    t                    t          t          dz  dz  t          dz  dz  t          dz  dz  t          dz  dz            k    sJ t          j        d          t6          j        dz  dt7          d          dz  fk    sJ t;          d          t          t          fd           t;          dd          t          t          fd           t          dddd                                          dk    sJ t          t          t          t          t                                                    t          k    sJ t          dddd                                          t          dddd          k    sJ t          t          t          t          t                                                    t          dt          t          t                    k    sJ                                  t          ddt          d          z  dz  dt          d          z  dz  dt          d          z  dz            k    sJ                                  
                    d          t          dddd          k    sJ                                                                  dk    sJ |                                  t          dt          t          t          dz  t          dz  z   t          dz  z             z  t          t          t          dz  t          dz  z   t          dz  z             z  t          t          t          dz  t          dz  z   t          dz  z             z            k    sJ !                                du sJ !                                du sJ t          dddd          !                                du sJ t          ddd d          !                                du sJ t          t          dd d          !                                J "                                tG          t          d                    k    sJ | "                                tI          t          t          dz  t          dz  z   t          dz  z             t                    k    sJ t          j%        t          ddd!d                    du sJ t          j%        t          ddd"d#                    du sJ t          j%        t          ddd$d%                    du sJ t          j%        t          dddd                    du sJ t          j%        t          t          dd!d                    du sJ t          j%        t          dddd                    du sJ t          j%        t          t          t          t          t                              J t          t          fd&           t          j&        t          ddd$d%          t          ddd!d          t          dddd                    du sJ t          j&        t          dddd          t          ddd!d          t          dddd                    du sJ t          j&        t          dddd!          t          ddd!d!          t          dddd                    du sJ t          j&        t          dddd          t          ddt          d!          t          dd!dd                    	 J t          t          fd'           t          dddd          '                    t          dddd!                    du sJ t          dddd          '                    t          dddd!                    du sJ t          dddd          '                    t          t          t          t          d!                    J t          t          fd(           t          dddd          (                    t          dddd                    du sJ t          dddd          (                    t          dddd!                    du sJ t          dddd          (                    t          t          t          t          d!                    J t          t          fd)           )                                t          ddt          d*          z  dz  dt          d*          z  dz  dt          d*          z  dz            k    sJ t          ddd+d          )                                t          ddd+d          k    sJ t          ddd+d          *                                t+          t          d,                    k    sJ t          dddd          *                                t+          t          d                    k    sJ +                                du sJ +                                du sJ t          t          ddd          +                                J d S )-Nr&   r#   r$   r\   r   c                  ,                                      S r+   inverserw   s   r/   r0   z+test_quaternion_functions.<locals>.<lambda>   s    rzz|| r1   i            c                       dz  S )Nr   rk   )r?   s   r/   r0   z+test_quaternion_functions.<locals>.<lambda>   s    b4j r1         <   Z   x   rU   rp   r^   nc                       z  S r+   rk   r   r?   s   r/   r0   z+test_quaternion_functions.<locals>.<lambda>       b!e r1   T)integerc                       z  S r+   rk   r   s   r/   r0   z+test_quaternion_functions.<locals>.<lambda>   r   r1         7   rq   F
            c                  .    t          j                   S r+   )r   arc_coplanarrw   r?   s   r/   r0   z+test_quaternion_functions.<locals>.<lambda>   s    z6r2>> r1   c            	      P    t          j         t          dddd                    S )Nr   r\   r   rq   )r   vector_coplanarr   s   r/   r0   z+test_quaternion_functions.<locals>.<lambda>   s(    "2z!Q1'='=rBB r1   c                  .                                    S r+   )parallelr   s   r/   r0   z+test_quaternion_functions.<locals>.<lambda>   s    r{{2 r1   c                  .                                    S r+   )
orthogonalr   s   r/   r0   z+test_quaternion_functions.<locals>.<lambda>   s    r}}R00 r1   if  	   z   ),r   r,   r-   r2   r.   r   r>   r   	normalizer   powr   r6   r   NotImplemented	TypeErrorexpr   r   r   _lnr   r   pow_cos_sinr   r   rotate_pointr	   Oner
   scalar_partrE   rW   is_purerX   r   r   r   r   r   r   index_vectormensorrD   )r7   r   rw   r?   s    @@@r/   test_quaternion_functionsr      s   1aAA	Aq!Q		B	Aq!Q		BQ<<:a!aR!4444446688tAqD1a4K!Q$.A5666666;;==Jq!Q22T!Q$A+1:LqRSt:S5T5TTTTTT99;;*QQB33q!tad{QT7IAqD7PQQQQQ99;;!%%))####
:++++,,,5588z!Q$A+1"4q!t";QqSUAaCE1Q3q5QQQQQQq6Z1q!tad 2QT 91Q3q5!A#a%1QOOOOOO66"::S8B,,hr3.?.?"cARART T T T T T8zS8B,,hr3.?.?"cARART T T T T T66$<<>))))
9(((()))6688q3tBxx== 488|a#d2hh--/"4488|a#d2hh--/"4488|a#d2hh--/"46 66 6 6 6
 6688s488}}488|d488B;///"4488|d488B;///"4488|d488B;///"46 66 6 6 6 >>!rCDb"---...DHH}s1tDHHRK'8'8#8999B>DHH}s1tDHHRK'8'8#8999B>T"XX~AT"XXb[(9(9$9 : ::R?A AA A A A 
1aA&&**jAq!.D.DDDDDZ1a++Q//q!taxA1a4!8QTAX667 7 7 7 "9b11aeaiAaDD1H5MMMMMsA
9mmmmm$$$sD!!!A
9mmmmm$$$b"b!$$0022b8888aAq!!--//14444b"b!$$0022jBA6N6NNNNNaAq!!--//:aAq3I3IIIII7799
1aRjmQtBxxZ]Ad2hhJrMRRRRRR7799==z"aA6666667799  ""a''''FFHH
1#$T!Q$A+1*<%=%=#=#$T!Q$A+1*<%=%=#=#$T!Q$A+1*<%=%=#=? ? ? ? ? ?
 ::<<4::<<5    aAq!!))++t3333aB""**,,4444aB""**,,44488::d2hh''''7799d1a4!Q$;A#566::::::"2z!Q1'='=>>$FFFF"2z!RR'@'@AATIIII"2z!QB'?'?@@DHHHH"2z!Q1'='=>>$FFFF"2z!Q1'='=>>$FFFF"2z!Q1'='=>>%GGGG"2z!Q1'='=>>FFF
:>>>>>???%1aR  1aA1aA    $(( ( ( ( %1aA
1aA 6 6
1aA8N8NP PSWX X X X%1aA
1aA 6 6
1aA8N8NP PSXY Y Y Y%1aA1aA1aA    $(( ( ( : C C C C C D D D aAq!!**:aAq+A+ABBdJJJJaAq!!**:aAq+A+ABBeKKKKaAq!!**:aAq+A+ABBJJJ
:.....///aAq!!,,Z2q!-D-DEEMMMMaAq!!,,Z1a-C-CDDMMMMaAq!!,,Z1a-C-CDDLLL
:00000111??
	1T#YY;r>	$s))B	$s))B! !     aAq!!..00Jq!Q4J4JJJJJaAq!!((**c$s))nn<<<<aAq!!((**c$r((mm;;;;  ""d****  ""e++++aAq!!4466>>>>>r1   c                  N   t          dddd          } |                                 dt          d          z  dz  dt          d          z  dz  dt          d          z  dz  fdt          t          d          dz            z  fk    sJ |                                 t          t          dd          t          dd          t          d	d          gt          dd          t          d
d          t          dd          gt          dd          t          dd          t          dd          gg          k    sJ |                     d          t          t          dd          t          dd          t          d	d          t          dd          gt          dd          t          d
d          t          dd          t          j        gt          dd          t          dd          t          dd          t          dd          gt          j        t          j        t          j        t          j	        gg          k    sJ t          dd          }t          t          |dz            ddt          |dz                      }t          |                                          t          t          |          t          |           dgt          |          t          |          dgg dg          k    sJ |                                ddt          |dz            t          t          |dz                      z  fdt          t          |dz                      z  fk    sJ t          |                    d                    t          t          |          t          |           dt          |          t          |          z
  dz   gt          |          t          |          dt          |           t          |          z
  dz   gg dg dg          k    sJ d S )Nr&   r#   r$   r\   r   r   r      rt   r}   r]   rU   rp   thetaTrh   r   r%   rS   rT   )r   to_axis_angler   r   rM   r   r   r	   Zeror   r   r   r   r   r   )r?   r   r8   s      r/   test_quaternion_conversionsr      s   	Aq!Q		B1tBxx<?#$tBxx<?#$tBxx<?#4 $%tDHHRK'8'8#8": : : : :
 !!##Xb!__hq"ooxB7G7GHa^^Xb!__hq!nnEa^^Xb"%5%5x2GI J JJ J J J
 !!),,"a(1b//8B3C3CXaQR^^T!Q"a(1a..!&I!Q"b!1!18Ar??HRQROOT/	1 2 22 2 2 2 G$'''E	CaLL!QE!G	5	5BB))++,,03E

SZZK/K03E

SZZ/K/K/K/K8M 1N 1N N N N N
 1aU1Wc#eAg,,6G6G)G"H#$T#eAg,,%7%7#7"9 9 9 9 9 B)))4455E

SZZKCJJU,Ca,GHE

SZZSZZK#e**,Dq,HI//////	A1 :2 :2 2 2 2 2 2 2r1   c                  4   t          t          t          t          t                    } |                     d          |                                 dz  z  }t          |                     d          |                                 dz  z            }||k    sJ d S )NT)homogeneousr#   F)r   r,   r-   r2   r.   rM   r>   r   )r7   rN   rO   s      r/    test_rotation_matrix_homogeneousr   !  s|    1aAA	
		$		/	/!&&((A+	=B	!&&5&99AFFHHaKG	H	HB888888r1   c            
         t          t          t          dz            t          t          dz            dd          } t	          |                                           t          g ddt          t                    t          t                     gdt          t                    t          t                    gg          k    sJ dS )a3  
    There was a sign mistake in the definition,
    of the rotation matrix. This tests that particular sign mistake.
    See issue 1593 for reference.
    See wikipedia
    https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#Quaternion-derived_rotation_matrix
    for the correct definition
    r#   r   rR   N)r   r   r!   r   r   rM   r   r7   s    r/    test_quaternion_rotation_iss1593r   (  s     	3s1u::s3q5zz1a00AA((**++v(((CHHs3xxi(CHHs3xx(7* 0+ 0+ + + + + + +r1   c            	         t          ddt          z  z   ddt          z  z   dddt          z  z   d	          } t          d
ddd          }t          d
d
d
t                    }t          j        t	          d          t          j                  dk    sJ t          j        t	          d          |           t          ddt          z  z   ddt          z  z   dddt          z  z             k    sJ |                    d          t          dddd          k    sJ |                    |          t          dt          z  dz
  dt          z  dz
  ddt          z  z
  t          dz             k    sJ |                    |          ||z  k    sJ t          dd          }t          t          |          t          |          dd          }t          t          dd           }||z  ||z  k    sJ ||z  ||z  k    sJ d S )Nr$   r\   r#   rp   r   r^   rq   Frr   r&   r   r             r   r   rv   r   r.   Trf   zq:4rh   )
r   r   r2   _generic_mulr	   r   mulr   r   r   )r?   r8   r:   r.   z_quatr7   s         r/   test_quaternion_multiplicationr   8  s   	A!GQ1WaQqSu	E	E	EB	Aq!Q		B	Aq!Q		B"1Q44//14444#AaDD"--rBqDy!bd(ArBqDy99: : : :66!99
1aB//////66"::BqD1HacAgq1Q3wAFFFFFF66"::BT"""A1r!uua++FGE---.Aq5FQJq5AJr1   c                     t          dddd          t          t          fd           t          dddd          } |                                 \  }}t          j        d||f          t
          j        dz  dt          d	          dz  fk    sJ t          d
ddd          } t          d           dz  t          d           dz  t          d           dz  f}dt          z  dz  }||f|                                 k    sJ d S )Nr   c                      d z  S )Nr&   rk   r   s   r/   r0   z"test_issue_16318.<locals>.<lambda>O  s    qt r1   r&   r#   r$   r\   rU   rp   r^   r}   )	r   r   r6   r   r   r	   r   r   r   )r7   rW   rX   rw   s      @r/   test_issue_16318r   L  s   	Aq!Q		B
:||||$$$1aAAOO%%MT5"9tUm<<AqQRttVWx@XXXXX2q!QA!WWHQJa
T!WWHQJ/DbDFE%=AOO--------r1   c                  (   t          t          t          t          t                    } |                                 }g d}|d |D             z  }|D ]A}|                     |          }t          t          j        ||                    }||k    sJ Bd S )N)zxyzyxzyzzxzc                 6    g | ]}|                                 S rk   )upper).0seqs     r/   
<listcomp>z!test_to_euler.<locals>.<listcomp>`  s     )))SSYY[[)))r1   )	r   r,   r-   r2   r.   r   to_eulerr   
from_euler)r7   q_normalizedseqsr   euler_from_qq_backs         r/   test_to_eulerr   [  s    1aAA;;==L'''D))D))))D & &zz#*/cBBCC%%%%%& &r1   c                      t          j        t          ddfd          } t          |                     d          d          t          ddfk    sJ dS )z_
    There was a mistake in the degenerate case testing
    See issue 24504 for reference.
    r   r   Tr   N)r   r   r!   r   r   r   s    r/   test_to_euler_iss24504r   h  sR    
 	sAqk511AAJJu%%t444aCCCCCCr1   c                     d }  | t           dz  ddfd            | t           dz  ddfd            | t           dz  t           dfd            | t           dz  t           dfd            | t           dz  t           dz  dfd            | t           dz  t            dz  dfd            | t           dz  t           dz  dfd            | t           dz  t            dz  dfd           d S )Nc                 f    t          j        | |          }|                    |          | k    sJ d S r+   )r   r   r   )anglesr   r7   s      r/   test_one_casez<test_to_euler_numerical_singilarities.<locals>.test_one_cases  s5    !&#..zz#&((((((r1   r#   r   r   ZYZr   ZYX)r   )r   s    r/   %test_to_euler_numerical_singilaritiesr   q  s   ) ) )
 M2a4!Q-'''M2a4!Q-'''M2a4"a.%(((M2a4"a.%((( M2a4"Q$"E***M2a42#a%#U+++M2a4"Q$"E***M2a42#a%#U+++++r1   c            	      J   fd} dD ]}t          |          D ]}dD ]}|r+d                    |d         |d         |d         g          nd                    |          t          g dd	          D ]*}t          | }|                                s | |           +d S )
Nc                 4   t          |                     dd                    }t          |                     dd                    }t          ||z
                                            }|D ]'}|t          z   dt          z  z  t          z
  }|dk     sJ (d S )NTFr#   gư>)r   r   r   rz   r   )r7   angles1angles2angle_errorsangle_errorr   s        r/   r   z,test_to_euler_options.<locals>.test_one_case  s    Ct4455C6677006688' 	' 	'K&+B7"<K&&&&&	' 	'r1   )xyzXYZ)TF r   r&   )r}   r   r&   r\   )repeat)r   joinr    r   rD   )r   r   	seq_tuple	symmetricelementsr7   r   s         @r/   test_to_euler_optionsr     s    ' ' ' ' '  ) )%c** 
	) 
	)I* 	) 	)	 -''9Q<1y|"LMMCC''),,C '


1 = = = ) )H"H-A//11 )%a((()	)
	)) )r1   N)Dsympy.core.functionr   r   sympy.core.numbersr   r   r   r   sympy.core.singletonr	   sympy.core.symbolr
   r   $sympy.functions.elementary.complexesr   r   r   r   r   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   r   r   r   r   sympy.integrals.integralsr   sympy.matrices.denser   sympy.simplifyr   sympy.simplify.trigsimpr   sympy.algebras.quaternionr   sympy.testing.pytestr   	itertoolsr   r    r,   r-   r2   r.   r!   r;   r@   rH   rP   rZ   rd   rx   r{   r   r   r   r   r   r   r   r   r   r   rk   r1   r/   <module>r     s   $ $ $ $ $ $ & & & & & & 3 3 3 3 3 3 3 3 3 3 3 3 " " " " " " / / / / / / / / O O O O O O O O O O O O O O 6 6 6 6 6 6 9 9 9 9 9 9 X X X X X X X X X X X X X X X X / / / / / / ' ' ' ' ' ' # # # # # # , , , , , , 0 0 0 0 0 0 ' ' ' ' ' ' + + + + + + + +WU^^
1agenn8 8 8$) ) ); ; ;  P P P$4 4 4  BH H Ht? t? t?l#2 #2 #2L  , , ,   (. . .
& 
& 
&D D D, , ,&) ) ) ) )r1   