
    g=@                        d dl mZ 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+Z+d dl,m-Z-m.Z.  ed      \  Z/Z0Z1Z2 ed      Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d  Z?d! Z@d" ZAd# ZBd$ ZCed%        ZDd& ZEd' ZFed(        ZGy))    )slow)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)raisesN)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	       y )
N      r   r   r      r'   ncFcommutativec                  8    t        t        t         t              S N)r   wxz)r(   s   Y/var/www/openai/venv/lib/python3.12/site-packages/sympy/algebras/tests/test_quaternion.py<lambda>z.test_quaternion_construction.<locals>.<lambda>&   s    z!QA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       @r0   test_quaternion_constructionr<      sw   1aAAq5JqsAaC1ac2222		#	#T!WQYQ	4719$E$&x1~$5
7BAFFAFFFFAFF, , , , 	SCH9a(3s8SXq*A9MNA	*11!4	5BQSX\""1$aDQs3xZ,@c#h,OPQ,QS S S S 
%	(B
:67r2   c                     t        t        d       } t        t        t        t        t
              }t        | |z  j                         dz  | j                         dz  |j                         dz  z  z
        dk(  sJ t        t        t        t        t
        d      }| |z  j                         | j                         k(  sJ y )Na:dr$   r   r'   )norm)r   r   r-   r.   r3   r/   r   r?   )q1r9   r;   s      r0   !test_quaternion_construction_normrA   )   s    	WU^	$B	Aq!Q	B2b5,,.!#rwwy!|bggil'BCDIII	Aq!QQ	'BG>>rwwy(((r2   c                      t        dddd      } t        j                  ddt        j                  z  dz        }|j	                         }|| z  |z  }|| z
  j                         dk  sJ y )Nr'   r   r'   r'   r'   r%      g|=)r   r4   mathr	   inverser?   )pr8   qitests       r0   test_issue_25254rJ   3   sc     	1aAA""9a$''k!m<A	
Bq52:DAXOO%&%r2   c                  >   t        t        t        t        t              } t        j
                  | j                               }t        j
                  | j                  d            }| |z
  j                         sJ | j                         |z
  j                         sJ y )NT)	r   r-   r.   r3   r/   from_Matrix	to_Matrixis_zero_quaternionvector_part)r8   q_fullq_vects      r0   test_to_and_from_MatrixrR   =   st    1aAA##AKKM2F##AKK$56FJ**,,,MMOf$88:::r2   c                     t        t        t        t        t              } t        t        d       }| |z  j                         | j                  |j                         z  k(  sJ | |z  j                         |j                  | j                         z  k(  sJ | j                  | j                  j                  z  dd dd f   }t        | j                         | j                         dz  z        }||k(  sJ y )Nr>   r'   r$   )r   r-   r.   r3   r/   r   rM   product_matrix_leftproduct_matrix_rightTr   to_rotation_matrixr?   )r@   r9   R1R2s       r0   test_product_matricesrZ   E   s    	Aq!Q	B	gen	&BG B$:$:R\\^$KKKKG B$;$;blln$LLLL

 
 2#:#:#<#<
<ab!"f	EB	"'')"'')Q,6	7B8O8r2   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(  r'J  y )N)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'   rC   r'   r%   )r	   r   r
   r5   r   r4   )	test_dataaxisangleexpecteds       r0   test_quaternion_axis_anglerc   P   sI    	%	BqD4719d1gaiA67	BqD4719aaA67	BqD4719aDGAI67	B%	B%	B%	BAd1gIaQi$q'	:;
q'!)T!WQYQ		*BqDFQVVQVVQVVQVV4TU
I "+eX))$6*h:OOOO "+r2   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 y )N)r'   r$   r%   rD   r$         r%   )
r   r4   r   ar   br   r   cd)results    r0   )test_quaternion_axis_angle_simplificationrl   b   s    ''	47;F88s4719~%%%88tBxDGAI.r111188tBxDGAI.q000088qbz#d1gai.03333r2   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 y )Nrg   Tcomplexrh   realri   Fr)   r'   c                       z   S r,    ri   r8   s   r0   r1   z7test_quaternion_complex_real_addition.<locals>.<lambda>t   	    q1ur2   c                       z  S r,   rs   rt   s   r0   r1   z7test_quaternion_complex_real_addition.<locals>.<lambda>u   ru   r2   c                       z  S r,   rs   rt   s   r0   r1   z7test_quaternion_complex_real_addition.<locals>.<lambda>v   ru   r2   r%   rD   r$      r   rf      
real_fieldi   &   )r   r   r-   r.   r3   r/   r   r   r   r   r7   )rg   rh   r@   r9   q0ri   r8   s        @@r0   %test_quaternion_complex_real_additionr   i   s   T"A$A'A1aAAq5Jq2a5y!be)Q::::q5Jq1uaA....q5Jq!a%A....q5Jq1uaA....
:}%
:}%
:}%2QBQB++++	A!GQ1WaQqSu	EB	Aq!Q	BQqS>ZAaCQqS!Q1WEEEEQqS>Z1a3333QqS>AaC!ac'"Q1Wq1Q3w$7Q1Wq1Q3w<OPQ Q QQqS>ZRR8888	Aq!Q	B	Aq!Q	B7b==7b==7b==r2   c                      t        j                  dt              } | j                  t        d      t        dddd      k(  sJ y )Nr&   r   r'   )r   r4   r"   subsr8   s    r0   test_quaternion_subsr      s7    ""9c2A66#q>Z1a3333r2   c            
         t        t        d      ddt        d            j                         t        t        d      j                         ddt        d      j                               k(  sJ t        dt        d      z  dddt        d      z        j                         t        dt        d      z  j                         dddt        d      z  j                               k(  sJ y )Nr$   r   r%   r'   )r   r   evalfrs   r2   r0   test_quaternion_evalfr      s    tAw1d1g.446tAw}}1d1gmmo>? @ ?qay!Q$q'	288:$q'	((*Aq1T!W92C2C2EFG H Gr2   c                     t        t        t        t        t              } t        dddd      t        dddd      t        |       t        t        t         t         t               k(  sJ | j                         t        t        dz  t        dz  z   t        dz  z   t        dz  z         k(  sJ | 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 | 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 | j                         | j                  d      k(  sJ t        t        fd       | j                  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 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 j                  d      t        k(  sJ t        t        fd       j!                         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 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 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 t/        t        t        t        t        t              t              t        dddd      k(  sJ t1        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        j2                  d      t4        j6                  dz  dt5        d      dz  fk(  sJ t9        d      t        t        fd       t9        dd      t        t        fd       t        dddd      j;                         dk(  sJ t        t        t        t        t              j;                         t        k(  sJ t        dddd      j=                         t        dddd      k(  sJ t        t        t        t        t              j=                         t        dt        t        t              k(  sJ j?                         t        ddt        d      z  dz  dt        d      z  dz  dt        d      z  dz        k(  sJ j?                         j                  d      t        dddd      k(  sJ j?                         j;                         dk(  sJ | 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 jA                         du sJ jA                         du sJ t        dddd      jA                         du sJ t        ddd d      jA                         du sJ t        t        dd d      jA                         J jC                         dtE        t        d            z  k(  sJ | jC                         dtG        t        t        dz  t        dz  z   t        dz  z         t              z  k(  sJ t        jH                  t        ddd!d            du sJ t        jH                  t        ddd"d#            du sJ t        jH                  t        ddd$d%            du sJ t        jH                  t        dddd            du sJ t        jH                  t        t        dd!d            du sJ t        jH                  t        dddd            du sJ t        jH                  t        t        t        t        t                    J t        t        fd&       t        jJ                  t        ddd$d%      t        ddd!d      t        dddd            du sJ t        jJ                  t        dddd      t        ddd!d      t        dddd            du sJ t        jJ                  t        dddd!      t        ddd!d!      t        dddd            du sJ t        jJ                  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      jM                  t        dddd!            du sJ t        dddd      jM                  t        dddd!            du sJ t        dddd      jM                  t        t        t        t        d!            J t        t        fd(       t        dddd      jO                  t        dddd            du sJ t        dddd      jO                  t        dddd!            du sJ t        dddd      jO                  t        t        t        t        d!            J t        t        fd)       jQ                         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      jQ                         t        ddd+d      k(  sJ t        ddd+d      jS                         t)        t        d,            k(  sJ t        dddd      jS                         t)        t        d            k(  sJ jU                         du sJ jU                         du sJ t        t        ddd      jU                         J y )-Nr'   r$   r%   rD   r   c                  $     j                         S r,   rF   r   s   r0   r1   z+test_quaternion_functions.<locals>.<lambda>   s    rzz|r2   i            c                       dz  S )Nr   rs   )r@   s   r0   r1   z+test_quaternion_functions.<locals>.<lambda>   s	    b4jr2         <   Z   x   rC   rx   rf   nc                       z  S r,   rs   r   r@   s   r0   r1   z+test_quaternion_functions.<locals>.<lambda>   	    b!er2   T)integerc                       z  S r,   rs   r   s   r0   r1   z+test_quaternion_functions.<locals>.<lambda>   r   r2         7   ry   F
            c                  0    t        j                         S r,   )r   arc_coplanarr   r@   s   r0   r1   z+test_quaternion_functions.<locals>.<lambda>   s    z66r2>r2   c            	      J    t        j                   t        dddd            S )Nr   rD   r   ry   )r   vector_coplanarr   s   r0   r1   z+test_quaternion_functions.<locals>.<lambda>   s     ""2z!Q1'=rBr2   c                  &     j                        S r,   )parallelr   s   r0   r1   z+test_quaternion_functions.<locals>.<lambda>   s    r{{2r2   c                  &     j                        S r,   )
orthogonalr   s   r0   r1   z+test_quaternion_functions.<locals>.<lambda>   s    r}}R0r2   if  	   z   )+r   r-   r.   r3   r/   r   r?   r   	normalizerF   powr   r7   r   NotImplemented	TypeErrorexpr   r   r   r   r   pow_cos_sinr   r   rotate_pointr
   Oner   scalar_partrO   r`   is_purera   r   r   r   r   r   r   index_vectormensorrN   )r8   r   r   r@   s    @@@r0   test_quaternion_functionsr      s   1aAA	Aq!Q	B	Aq!Q	BQ<:a!aR!4444668tAqD1a4K!Q$.A56666;;=Jq!Q2T!Q$A+1:LqRSt:S5TTTTT99;*QQB3q!tad{QT7IAqD7PQQQQ99;!%%)###
:+,558z!Q$A+1"4q!t";QqSUAaCE1Q3q5QQQQq6Z1q!tad 2QT 91Q3q5!A#a%1QOOOO66":S8B,hr3.?"cART T T T8zS8B,hr3.?"cART T T T66$<>)))
9()668q3tBx= 48|a#d2h-/"448|a#d2h-/"448|a#d2h-/"466 6 6
 668s48}48|d48B;//"448|d48B;//"448|d48B;//"466 6 6 >>!rCDb"--..DH}s1tDHRK'8#899B>DH}s1tDHRK'8#899B>T"X~AT"Xb[(9$9 ::R?AA A A 
1aA&*jAq!.DDDDZ1a+Q/q!taxA1a4!8QTAX67 7 7 ""9b1aeeaiAaD1H5MMMMsA
9m$sD!A
9m$b"b!$002b888aAq!--/1444b"b!$002jBA6NNNNaAq!--/:aAq3IIII779
1aRjmQtBxZ]Ad2hJrMRRRR779==z"aA6666779  "a'''FFH
1#$T!Q$A+1*<%=#=#$T!Q$A+1*<%=#=#$T!Q$A+1*<%=#=? ? @ ?
 ::<4::<5   aAq!))+t333aB"**,444aB"**,44488:4R>))))779%QTAqD[1a4%7 8!<<<<<""2z!Q1'=>$FFF""2z!RR'@ATIII""2z!QB'?@DHHH""2z!Q1'=>$FFF""2z!Q1'=>$FFF""2z!Q1'=>%GGG""2z!Q1'=>FFF
:>?%%1aR 1aA1aA  $(( ( ( %%1aA
1aA 6
1aA8NPSWX X X%%1aA
1aA 6
1aA8NPSXY Y Y%%1aA1aA1aA  $(( ( ( : C D aAq!**:aAq+ABdJJJaAq!**:aAq+ABeKKKaAq!**:aAq+ABJJJ
:./aAq!,,Z2q!-DEMMMaAq!,,Z1a-CDMMMaAq!,,Z1a-CDLLL
:01??
	1T#Y;r>	$s)B	$s)B!    aAq!..0Jq!Q4JJJJaAq!((*c$s)n<<<aAq!((*c$r(m;;;  "d***  "e+++aAq!446>>>r2   c                     t        dddd      } | j                         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 | 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 | 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        |j	                               t        t        |      t        |       dgt        |      t        |      dgg dg      k(  sJ |j                         ddt        |dz        t        t        |dz              z  fdt        t        |dz              z  fk(  sJ t        |j	                  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 y )Nr'   r$   r%   rD   r   r   r      r|   r   re   rC   rx   thetaTrp   r   r&   r]   r^   )r   to_axis_angler   r   rW   r   r   r
   Zeror   r   r   r   r   r   )r@   r   r9   s      r0   test_quaternion_conversionsr     s   	Aq!Q	B1tBx<?#$tBx<?#$tBx<?#4 $%tDHRK'8#8": : : :
 !!#Xb!_hq"oxB7GHa^Xb!_hq!nEa^Xb"%5x2GI JJ K J
 !!),"a(1b/8B3CXaQR^T!Q"a(1a.!&&I!Q"b!18Ar?HRQROT/	1 22 3 2 G$'E	CaL!QE!G	5BB))+,03E
SZK/K03E
SZ/K/K8M 1N N N N
 1aU1Wc#eAg,6G)G"H#$T#eAg,%7#7"9 9 9 9 B)))45E
SZKCJU,Ca,GHE
SZSZK#e*,Dq,HI//	A1 :2 2 2 2r2   c                      t        t        t        t        t              } | j                  d      | j                         dz  z  }t        | j                  d      | j                         dz  z        }||k(  sJ y )NT)homogeneousr$   F)r   r-   r.   r3   r/   rW   r?   r   )r8   rX   rY   s      r0    test_rotation_matrix_homogeneousr   2  sf    1aAA	
		$		/!&&(A+	=B	!&&5&9AFFHaKG	HB8O8r2   c            
      .   t        t        t        dz        t        t        dz        dd      } t	        | j                               t        g ddt        t              t        t               gdt        t              t        t              gg      k(  sJ y)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   r\   N)r   r   r"   r   r   rW   r   r   s    r0    test_quaternion_rotation_iss1593r   9  sy     	3s1u:s3q5z1a0AA((*+v(CHs3xi(CHs3x(7* 0+ + , +r2   c            	      X   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 |j                  d      t        dddd      k(  sJ |j                  |      t        dt        z  dz
  dt        z  dz
  ddt        z  z
  t        dz         k(  sJ |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 y )Nr%   rD   r$   rx   r   rf   ry   Frz   r'   r   r             r   r   r~   r   r/   Trn   zq:4rp   )
r   r   r3   _generic_mulr
   r   mulr   r   r   )r@   r9   r;   r/   z_quatr8   s         r0   test_quaternion_multiplicationr   I  s   	A!GQ1WaQqSu	EB	Aq!Q	B	Aq!Q	B""1Q4/1444##AaD"-rBqDy!bd(ArBqDy9: ; :66!9
1aB////66":BqD1HacAgq1Q3wAFFFF66":BT"A1r!ua+FGE-.Aq5FQJq5AJr2   c                     t        dddd      t        t        fd       t        dddd      } | j                         \  }}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| j                         k(  sJ y )Nr   c                      d z  S )Nr'   rs   r   s   r0   r1   z"test_issue_16318.<locals>.<lambda>`  s	    qtr2   r'   r$   r%   rD   rC   rx   rf   r   )	r   r   r7   r   r   r
   r   r   r	   )r8   r`   ra   r   s      @r0   test_issue_16318r   ]  s    	Aq!Q	B
:|$1aAAOO%MT5""9tUm<AqQRtVWx@XXXX2q!QA!WHQJa
T!WHQJ/DbDFE%=AOO----r2   c                  0   t        t        t        t        t              } | j                         }g d}||D cg c]  }|j                          c}z  }|D ]9  }| j                  |      }t        t        j                  ||            }||k(  r9J  y c c}w )N)zxyzyxzyzzxz)
r   r-   r.   r3   r/   r   upperto_eulerr   
from_euler)r8   q_normalizedseqsseqeuler_from_qq_backs         r0   test_to_eulerr   l  s    1aAA;;=L'DD)DSSYY[D))Dzz#*//cBC%%%  *s   Bc                      t        j                  t        ddfd      } t        | j	                  d      d      t        ddfk(  sJ y)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    r0   test_to_euler_iss24504r   z  s@    
 	sAqk51AAJJu%t4aCCCr2   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       y )Nc                 \    t        j                  | |      }|j                  |      | k(  sJ y r,   )r   r   r   )anglesr   r8   s      r0   test_one_casez<test_to_euler_numerical_singilarities.<locals>.test_one_case  s*    !!&#.zz#&(((r2   r$   r   r   ZYZr   ZYX)r	   )r   s    r0   %test_to_euler_numerical_singilaritiesr     s    )
 2a4!Q-'2a4!Q-'2a4"a.%(2a4"a.%( 2a4"Q$"E*2a42#a%#U+2a4"Q$"E*2a42#a%#U+r2   c            	         fd} dD ]  }t        |      D ]o  }dD ]h  }|rdj                  |d   |d   |d   g      ndj                  |      t        g dd	      D ]#  }t        | }|j	                         r | |       % j q  y )
Nc                     t        | j                  dd            }t        | j                  dd            }t        ||z
        j                         }|D ]#  }|t        z   dt        z  z  t        z
  }|dk  r#J  y )NTFr$   gư>)r   r   r   r   r	   )r8   angles1angles2angle_errorsangle_errorr   s        r0   r   z,test_to_euler_options.<locals>.test_one_case  sx    Ct45C670668'K&+B7"<K&&& (r2   )xyzXYZ)TF r   r'   )r   r   r'   rD   )repeat)r    joinr!   r   rN   )r   r   	seq_tuple	symmetricelementsr8   r   s         @r0   test_to_euler_optionsr     s    ' %c*I*	''9Q<1y|"LMC''),C '
1 =H"H-A//1%a( !> + + r2   )Hsympy.testing.pytestr   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   r   rE   	itertoolsr    r!   r-   r.   r3   r/   r"   r<   rA   rJ   rR   rZ   rc   rl   r   r   r   r   r   r   r   r   r   r   r   r   r   rs   r2   r0   <module>r	     s    % $ & 3 3 " / O O 6 9 X X / ' # , 0 '  +U^
1aen8$)';P$4B4
Ht?l#2L, (. 
& 
&D,& ) )r2   