§
    OŠtj©A  ã                   óà  — 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(„ ¦   «         ZGdS ))é    )Ú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	„¦  «         d S )
Né   é   r   ©r   r   é   r'   ÚncF©Úcommutativec                  óF   •— t          t          t          ‰ t          ¦  «        S ©N)r   ÚwÚxÚz)r(   s   €úb/var/www/html/CA-Chatbot/venv/lib/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       @r0   Útest_quaternion_constructionr<      sÕ  ø€ Ý•1•a��AÑÔ€AØˆq‰5•J˜q¥™s A¥a¡C¨­1©¨aµ©cÑ2Ô2Ò2Ð2Ð2Ð2å	Ô	#¥T¨!¡W¤W¨Q¡Yµ°Q±´¸±	½4À¹7¼7À1¹9Ð$EÝ$&¥x°°1¡~¤~Ñ$5ñ
7ô 
7€Bà•�AœF¥A¤FÝœF¥A¤Fñ,ô ,ò ,ð ,ð ,ð ,õ 	••S‘”�C¥™HœH˜9 aÐ(­3­s©8¬8µS½±X´X¸qÐ*AÀ9À9À9ÐMÑNÔN€AÝ	•*Ô1°!Ñ4Ô4Ñ	5Ô	5€BØ•ÝˆQ‰Œ••S�‘X”X ‘\Ñ"Ô"Ñ" 1Ñ$ a¨­D°°Qµs½3±x´x±Z±Ñ,@Ô,@ÅÅcÍ#ÁhÄhÁÄÑ,OÐPQÑ,QñSô Sò Sð Sð Sð Sõ 
� %Ð	(Ñ	(Ô	(€BÝ
�:Ð6Ð6Ð6Ð6Ñ7Ô7Ð7Ð7Ð7r2   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.   r3   r/   r   r?   )Úq1r9   r;   s      r0   Ú!test_quaternion_construction_normrA   )   s¶   € Ý	•W˜U‘^”^Ð	$€Bå	•A•q�!�QÑ	Ô	€BÝ�2�b‘5—,’,‘.”. !Ñ# r§w¢w¡y¤y°!¡|°b·g²g±i´iÀ±lÑ'BÑCÑDÔDÈÒIÐIÐIÐIå	•A•q�!�Q QÐ	'Ñ	'Ô	'€BØ�‰G�>Š>ÑÔ˜rŸwšw™yœyÒ(Ð(Ð(Ð(Ð(Ð(r2   c                  óæ   — t          dddd¦  «        } t          j        ddt          j        z  dz  ¦  «        }|                     ¦   «         }|| z  |z  }|| z
                       ¦   «         dk     sJ ‚d S )Nr'   r   ©r'   r'   r'   r%   é   g»½×Ùß|Û=)r   r4   Úmathr	   Úinverser?   )Úpr8   ÚqiÚtests       r0   Útest_issue_25254rJ   3   sr   € õ 	�1�a˜˜AÑÔ€AÝÔ" 9¨aµ$´'©k¸!©mÑ<Ô<€AØ	
�Š‰Œ€BØˆq‰5�2‰:€DØ�A‰X�OŠOÑÔ Ò%Ð%Ð%Ð%Ð%Ð%r2   c                  ót  — t          t          t          t          t          ¦  «        } t          j        |                      ¦   «         ¦  «        }t          j        |                      d¦  «        ¦  «        }| |z
                       ¦   «         sJ ‚|                      ¦   «         |z
                       ¦   «         sJ ‚d S )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   =   s�   € Ý•1•a��AÑÔ€AÝÔ# A§K¢K¡M¤MÑ2Ô2€FÝÔ# A§K¢K°Ñ$5Ô$5Ñ6Ô6€FØ�‰J×*Ò*Ñ,Ô,Ð,Ð,Ð,Ø�MŠM‰OŒO˜fÑ$×8Ò8Ñ:Ô:Ð:Ð:Ð:Ð:Ð:r2   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.   r3   r/   r   rM   Úproduct_matrix_leftÚproduct_matrix_rightÚTr   Úto_rotation_matrixr?   )r@   r9   ÚR1ÚR2s       r0   Útest_product_matricesrZ   E   sæ   € Ý	•A•q�!�QÑ	Ô	€BÝ	•g˜e‘n”nÐ	&€BØ�‰G×ÒÑ Ô  BÔ$:¸R¿\º\¹^¼^Ñ$KÒKÐKÐKÐKØ�‰G×ÒÑ Ô  BÔ$;¸b¿lºl¹n¼nÑ$LÒLÐLÐLÐLà
Ô
  2Ô#:Ô#<Ñ
<¸a¸b¸bÀ!À"À"¸fÔ	E€BÝ	�"×'Ò'Ñ)Ô)¨"¯'ª'©)¬)°Q©,Ñ6Ñ	7Ô	7€BØ�Š8ˆ8ˆ8ˆ8ˆ8ˆ8r2   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   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   sr  € ð 	%Ø	•B�q‘D�4 ™7œ7 1™9¥d¨1¡g¤g¨a¡i°°AÐ6Ð7Ø	•B�q‘D�4 ™7œ7 1™9 a­¨a©¬°©°AÐ6Ð7Ø	•B�q‘D�4 ™7œ7 1™9 a¨­D°©G¬G°A©IÐ6Ð7Ø	•B˜Ð%Ø	•B˜Ð%Ø	•B˜Ð%Ø	•B˜˜A�d 1™gœg™I a­¨Q©¬¡i°µ$°q±'´'±	Ð:Ð;Ý
ˆq‰'Œ'�!‰)•T˜!‘W”W˜Q‘Y¥ Q¡¤¨¡	Ð	*­B¨q©D°©FµQ´V½Q¼VÅQÄVÍQÌVÐ4TÐUð
€Ið "+ð Pð PÑˆˆe�XÝÔ)¨$°Ñ6Ô6½*ÀhÐ:OÒOÐOÐOÐOÐOðPð P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 ‚d S )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´7Ñ;Ô;€FØŒ8•s�4 ™7œ7 1™9‘~”~Ò%Ð%Ð%Ð%ØŒ8•t˜B‘x”x¥¥D¨¡G¤G¨A¡I¡¤Ñ.¨rÑ1Ò1Ð1Ð1Ð1ØŒ8•t˜B‘x”x¥¥D¨¡G¤G¨A¡I¡¤Ñ.¨qÑ0Ò0Ð0Ð0Ð0ØŒ8�q�˜b™œ‘z¥#¥d¨1¡g¤g¨a¡i¡.¤.Ñ0°Ñ3Ò3Ð3Ð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 ‚d S )Nrg   T©Úcomplexrh   ©Úrealri   Fr)   r'   c                  ó   •— ‰ ‰z   S r,   © ©ri   r8   s   €€r0   r1   z7test_quaternion_complex_real_addition.<locals>.<lambda>t   ó   ø€ ˜q 1™u€ r2   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å•1•a��AÑÔ€AØˆq‰5•J�q¥2 a¡5¤5™y­!­b°©e¬e©)µQ½Ñ:Ô:Ò:Ð:Ð:Ð:Øˆq‰5•J˜q¥1™u¥a­­AÑ.Ô.Ò.Ð.Ð.Ð.Ýˆq‰5•J�q !¥a¡%­­AÑ.Ô.Ò.Ð.Ð.Ð.Øˆq‰5•J�q 1™u¥a­­AÑ.Ô.Ò.Ð.Ð.Ð.Ý
�:�}�}�}�}�}Ñ%Ô%Ð%Ý
�:�}�}�}�}�}Ñ%Ô%Ð%Ý
�:�}�}�}�}�}Ñ%Ô%Ð%àˆ2•�Q˜B¥ ¥Q B­¨Ñ+Ô+Ò+Ð+Ð+Ð+å	�A˜�!™‘G˜Q ¥1¡™W a¨¨Q­q©S©¸uÐ	EÑ	EÔ	E€BÝ	�A�q˜!˜QÑ	Ô	€Bà��Q•q‘S‘‰>�Z¨¨A­a©C©°°Qµq±S±¸!¸QÀÅ1Á¹WÑEÔEÒEÐEÐEÐEØ��Q•q‘S‘‰>�Z¨¨1¨a°Ñ3Ô3Ò3Ð3Ð3Ð3Ø��Q•q‘S‘‰>Ý��A•a‘C‘˜!˜a¥™c™'Ñ" Q¨­1©¡W¨q°1µQ±3©wÑ$7¸¸QÀÅ1Á¹WÀqÈ1ÍQÉ3ÁwÑ<OÑPÔPòQð Qð Qð Qà��Q•q‘S‘‰>�Z¨¨R°°RÑ8Ô8Ò8Ð8Ð8Ð8å	�A�q˜!˜QÑ	Ô	€BÝ	�A�q˜!˜QÑ	Ô	€BØ�‰7�bŠ=ˆ=ˆ=ˆ=Ø�‰7�bŠ=ˆ=ˆ=ˆ=Ø�‰7�bŠ=ˆ=ˆ=ˆ=ˆ=ˆ=r2   c                  óœ   — t          j        dt          ¦  «        } |                      t          d¦  «        t          dddd¦  «        k    sJ ‚d S )Nr&   r   r'   )r   r4   r"   Úsubs©r8   s    r0   Útest_quaternion_subsr„   Š   sE   € ÝÔ" 9­cÑ2Ô2€AØ�6Š6•#�q‰>Œ>�Z¨¨1¨a°Ñ3Ô3Ò3Ð3Ð3Ð3Ð3Ð3r2   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   Úevalfrs   r2   r0   Útest_quaternion_evalfr‡   �   sþ   € Ý•t˜A‘w”w  1¥d¨1¡g¤gÑ.Ô.×4Ò4Ñ6Ô6Ý•t˜A‘w”w—}’}‘”¨¨1­d°1©g¬g¯mªm©o¬oÑ>Ô>ò?ð ?ð ?ð ?å�q�˜a™œ‘y ! Q¨­$¨q©'¬'©	Ñ2Ô2×8Ò8Ñ:Ô:Ý˜�$˜q™'œ'™	×(Ò(Ñ*Ô*¨A¨q°1µT¸!±W´W±9×2CÒ2CÑ2EÔ2EÑFÔFòGð Gð Gð Gð Gð 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 ‚|                      ¦   «         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 ‚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          dt          t          dz  t          dz  ¦  «                             t          ¦  «        t          t          t          dz  dz  t          dz  dz  t          dz  dz  ¦  «        k    sJ ‚t          t'          t          ¦  «        t%          t          ¦  «        t'          dt          z  ¦  «        t%          dt          z  ¦  «        ¦  «                             t          ¦  «        t          t%          t          ¦  «         t'          t          ¦  «        t%          dt          z  ¦  «         dz  t'          dt          z  ¦  «        dz  ¦  «        k    sJ ‚t          t          dz  t          dz  t          dz  t          t          z  t          z  ¦  «                             t          t          ¦  «        t          t          dz  t          z  dz  t          t          dz  z  dz  t          t          z  t          dz  z  t          dz  t          dz  z  t          z  dz  ¦  «        k    sJ ‚t          j        d‰¦  «        t4          j        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¦  «                             ¦   «         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 ‚‰ !                    ¦   «         dtE          t          d¦  «        ¦  «        z  k    sJ ‚|  !                    ¦   «         dtG          t          t          dz  t          dz  z   t          dz  z   ¦  «        t          ¦  «        z  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%   rD   r   éÿÿÿÿc                  ó,   •— ‰                       ¦   «         S r,   ©rF   ©r   s   €r0   r1   z+test_quaternion_functions.<locals>.<lambda>    s   ø€ ˜rŸzšz™|œ|€ r2   éþÿÿÿiùÿÿÿéá   é–   ç      à¿c                  ó   •— ‰ dz  S )Nr�   rs   )r@   s   €r0   r1   z+test_quaternion_functions.<locals>.<lambda>¨   s   ø€ ˜b 4™j€ r2   é   é   é<   éZ   éx   rC   rx   rf   Únc                  ó   •— ‰‰ z  S r,   rs   ©r—   r@   s   €€r0   r1   z+test_quaternion_functions.<locals>.<lambda>Ë   ó   ø€ ˜b !™e€ r2   T)Úintegerc                  ó   •— ‰‰ z  S r,   rs   r™   s   €€r0   r1   z+test_quaternion_functions.<locals>.<lambda>Í   rš   r2   é   é   é7   ry   Fé
   é   éýÿÿÿéüÿÿÿé   é   c                  ó.   •— t          j        ‰‰ ¦  «        S r,   )r   Úarc_coplanar©r   r@   s   €€r0   r1   z+test_quaternion_functions.<locals>.<lambda>í   s   ø€ �zÔ6°r¸2Ñ>Ô>€ r2   c            	      óP   •— 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(   ø€ ÝÔ" 2¥z°!°Q¸¸1Ñ'=Ô'=¸rÑBÔBð r2   c                  ó.   •— ‰                       ‰¦  «        S r,   )Úparallelr¨   s   €€r0   r1   z+test_quaternion_functions.<locals>.<lambda>  s   ø€ ˜rŸ{š{¨2™œ€ r2   c                  ó.   •— ‰                       ‰¦  «        S r,   )Ú
orthogonalr¨   s   €€r0   r1   z+test_quaternion_functions.<locals>.<lambda>  s   ø€ ˜rŸ}š}¨RÑ0Ô0€ r2   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½   –   ss  øøø€ Ý•1•a��AÑÔ€AÝ	�A�q˜!˜QÑ	Ô	€BÝ	�A�q˜!˜QÑ	Ô	€Bå�Q‰<Œ<�:¥a­!¨­a¨Rµ!°Ñ4Ô4Ò4Ð4Ð4Ð4Ø�6Š6‰8Œ8•t�A˜q™D¥1 a¡4™K­!¨Q©$Ñ.µ°A±Ñ5Ñ6Ô6Ò6Ð6Ð6Ð6Ø�;Š;‰=Œ=�J¥q­!­QµÑ2Ô2µT½!¸Q¹$ÅÀAÁ¹+ÍÈ1ÉÑ:LÍqÐRSÉtÑ:SÑ5TÔ5TÑTÒTÐTÐTÐTØ�9Š9‰;Œ;�*¥Q­¨­Q¨Bµ°Ñ3Ô3µq¸!±t½aÀ¹d±{ÅQÈÁTÑ7IÍAÈqÉDÑ7PÑQÒQÐQÐQÐQØ�9Š9‰;Œ;˜!Ÿ%š% ™)œ)Ò#Ð#Ð#Ð#Ý
�:Ð+Ð+Ð+Ð+Ñ,Ô,Ð,Ø�5Š5�‰8Œ8•z¥! Q¡$­¨A©¡+µ°1±Ñ"4µq¸!±tÑ";¸Q½q¹SÅ¹UÀAÅaÁCÍÁEÈ1ÍQÉ3ÍqÉ5ÑQÔQÒQÐQÐQÐQØˆq‰6•Z¥ 1¡¥q¨!¡t¡­a°©dÑ 2µQ¸±TÑ 9¸1½Q¹3½q¹5À!ÅAÁ#ÅaÁ%ÈÍ1ÉÍQÉÑOÔOÒOÐOÐOÐOØ�6Š6�"‰:Œ:�Ý��SÑÔ�8 B¨Ñ,Ô,­h°r¸3Ñ.?Ô.?ÅÈ"ÈcÑARÔARñTô Tò Tð Tð Tð Tà�‰8•zÝ��SÑÔ�8 B¨Ñ,Ô,­h°r¸3Ñ.?Ô.?ÅÈ"ÈcÑARÔARñTô Tò Tð Tð Tð Tà�6Š6�$‰<Œ<�>Ò)Ð)Ð)Ð)Ý
�9Ð(Ð(Ð(Ð(Ñ)Ô)Ð)à�6Š6‰8Œ8Ý�q•3•t˜B‘x”x‘=”=Ñ Ø•4˜‘8”8‰|�aÑ¥#¥d¨2¡h¤h¡-¤-Ñ/°"Ñ4Ø•4˜‘8”8‰|�aÑ¥#¥d¨2¡h¤h¡-¤-Ñ/°"Ñ4Ø•4˜‘8”8‰|�aÑ¥#¥d¨2¡h¤h¡-¤-Ñ/°"Ñ4ñ6ô 6ò6ð 6ð 6ð 6ð
 �6Š6‰8Œ8Ý�s•4˜‘8”8‰}Œ}Ø•4˜‘8”8‰|�d¥4¨¡8¤8¨B¡;Ñ/Ô/Ñ/°"Ñ4Ø•4˜‘8”8‰|�d¥4¨¡8¤8¨B¡;Ñ/Ô/Ñ/°"Ñ4Ø•4˜‘8”8‰|�d¥4¨¡8¤8¨B¡;Ñ/Ô/Ñ/°"Ñ4ñ6ô 6ò6ð 6ð 6ð 6ð �>Š>˜!ÑÔÝˆr•C˜�D¥ b¡¤¨"¡Ñ-Ô-Ñ-Ñ.Ô.Ñ.Ø•D˜‘H”H‰}�s 1¥t­D°©H¬H°R©KÑ'8Ô'8Ñ#8Ñ9Ô9Ñ9¸BÑ>Ø•D˜‘H”H‰}�s 1¥t­D°©H¬H°R©KÑ'8Ô'8Ñ#8Ñ9Ô9Ñ9¸BÑ>Ø•T˜"‘X”X‰~¥ A­­T°"©X¬X°b©[Ñ(9Ô(9Ñ$9Ñ :Ô :Ñ:¸RÑ?ñAô AòAð Að Að Aõ •
�1�a¥¥AÑ&Ô&­Ñ*Ô*­j¸¸A¸qÀ!Ñ.DÔ.DÒDÐDÐDÐDå•Z¥¥1¥a­Ñ+Ô+­QÑ/Ô/Ý�q�!‰t�a‰x�˜A™ ™¥1 a¡4¨!¡8­Q°©T°A©XÑ6Ô6ò7ð 7ð 7ð 7õ �a��A˜q™D¥! Q¡$Ñ'Ô'×1Ò1µ!Ñ4Ô4Ý�q•!�Q‘$�q‘&�!˜Q™$˜q™&¥! Q¡$ q¡&Ñ)Ô)ò*ð *ð *ð *õ •c�!‘f”f�c¥!™fœf¥c¨!­A©#¡h¤hµ°Aµa±C±´Ñ9Ô9×CÒCÅAÑFÔFÝ••A‘”ˆw��A™œ¥ Q¥q¡S¡¤ 	¨!¡­S°µ1±©X¬X°a©ZÑ8Ô8ò9ð 9ð 9ð 9õ •a˜‘d�A˜q™D¥! Q¡$­­!©­A©Ñ.Ô.×8Ò8½½AÑ>Ô>Ý�q�!‰t•A‰v�a‰x��1˜a™4™ ™¥1¥Q¡3¥q¨!¡t¡8­Q°©Tµ!°Q±$©Yµq©[¸©]Ñ;Ô;ò<ð <ð <ð <õ Ô" 9¨bÑ1Ô1µa´e¸a±iÀÅAÀaÁDÄDÈ1ÁHÐ5MÒMÐMÐMÐMÝˆs‰Œ€AÝ
�9�m�m�m�m�mÑ$Ô$Ð$Ýˆs˜DÐ!Ñ!Ô!€AÝ
�9�m�m�m�m�mÑ$Ô$Ð$å�b˜"˜b !Ñ$Ô$×0Ò0Ñ2Ô2°bÒ8Ð8Ð8Ð8Ý•a��A�qÑ!Ô!×-Ò-Ñ/Ô/µ1Ò4Ð4Ð4Ð4å�b˜"˜b !Ñ$Ô$×0Ò0Ñ2Ô2µjÀÀBÈÈAÑ6NÔ6NÒNÐNÐNÐNÝ•a��A�qÑ!Ô!×-Ò-Ñ/Ô/µ:¸aÅÅAÅqÑ3IÔ3IÒIÐIÐIÐIà�7Š7‰9Œ9�
 1 a­¨R©¬¡j°¡m°Qµt¸B±x´x±ZÀ±]ÀAÅdÈ2ÁhÄhÁJÈrÁMÑRÔRÒRÐRÐRÐRØ�7Š7‰9Œ9�=Š=˜ÑÔ�z¨"¨a°°AÑ6Ô6Ò6Ð6Ð6Ð6Ø�7Š7‰9Œ9× Ò Ñ"Ô" aÒ'Ð'Ð'Ð'Ø�FŠF‰HŒH�
 1Ý#$¥T­!¨Q©$µ°A±©+½¸1¹Ñ*<Ñ%=Ô%=Ñ#=Ý#$¥T­!¨Q©$µ°A±©+½¸1¹Ñ*<Ñ%=Ô%=Ñ#=Ý#$¥T­!¨Q©$µ°A±©+½¸1¹Ñ*<Ñ%=Ô%=Ñ#=ñ?ô ?ò ?ð ?ð ?ð ?ð
 �:Š:‰<Œ<˜4ÐÐÐÐØ�:Š:‰<Œ<˜5Ð Ð Ð Ð Ý�a˜˜A˜qÑ!Ô!×)Ò)Ñ+Ô+¨tÐ3Ð3Ð3Ð3Ý�a˜˜B Ñ"Ô"×*Ò*Ñ,Ô,°Ð4Ð4Ð4Ð4Ý•a˜˜B Ñ"Ô"×*Ò*Ñ,Ô,Ð4Ð4Ð4à�8Š8‰:Œ:˜�4¥ R¡¤™>œ>Ñ)Ò)Ð)Ð)Ð)Ø�7Š7‰9Œ9˜�%¥¥Q¨¡T­A¨q©D¡[µ1°a±4Ñ%7Ñ 8Ô 8½!Ñ<Ô<Ñ<Ò<Ð<Ð<Ð<åÔ" 2¥z°!°Q¸¸1Ñ'=Ô'=Ñ>Ô>À$ÐFÐFÐFÐFÝÔ" 2¥z°!°R¸¸RÑ'@Ô'@ÑAÔAÀTÐIÐIÐIÐIÝÔ" 2¥z°!°Q¸¸BÑ'?Ô'?Ñ@Ô@ÀDÐHÐHÐHÐHÝÔ" 2¥z°!°Q¸¸1Ñ'=Ô'=Ñ>Ô>À$ÐFÐFÐFÐFÝÔ" 2¥zµ!°Q¸¸1Ñ'=Ô'=Ñ>Ô>À$ÐFÐFÐFÐFÝÔ" 2¥z°!°Q¸¸1Ñ'=Ô'=Ñ>Ô>À%ÐGÐGÐGÐGÝÔ" 2¥zµ!µQ½½1Ñ'=Ô'=Ñ>Ô>ÐFÐFÐFÝ
�:Ð>Ð>Ð>Ð>Ð>Ñ?Ô?Ð?åÔ%Ý�1�a˜˜RÑ Ô Ý�1�a˜˜AÑÔÝ�1�a˜˜AÑÔñ ô  ð $(ð(ð (ð (ð (õ Ô%Ý�1�a˜˜AÑÔ¥
¨1¨a°°AÑ 6Ô 6½
À1ÀaÈÈAÑ8NÔ8NñPô PØSWðXð Xð Xð XåÔ%Ý�1�a˜˜AÑÔ¥
¨1¨a°°AÑ 6Ô 6½
À1ÀaÈÈAÑ8NÔ8NñPô PØSXðYð Yð Yð YåÔ%Ý�1�a˜˜AÑÔÝ�1�a�˜AÑÔÝ�1�a˜˜AÑÔñ ô  ð $(ð(ð (ð (õ �:ð Cð Cð Cð Cð Cñ Dô Dð Dõ �a˜˜A˜qÑ!Ô!×*Ò*­:°a¸¸A¸qÑ+AÔ+AÑBÔBÀdÐJÐJÐJÐJÝ�a˜˜A˜qÑ!Ô!×*Ò*­:°a¸¸A¸qÑ+AÔ+AÑBÔBÀeÐKÐKÐKÐKÝ�a˜˜A˜qÑ!Ô!×*Ò*­:µa½½A¸qÑ+AÔ+AÑBÔBÐJÐJÐJÝ
�:Ð.Ð.Ð.Ð.Ð.Ñ/Ô/Ð/å�a˜˜A˜qÑ!Ô!×,Ò,­Z¸¸2¸qÀ!Ñ-DÔ-DÑEÔEÈÐMÐMÐMÐMÝ�a˜˜A˜qÑ!Ô!×,Ò,­Z¸¸1¸aÀÑ-CÔ-CÑDÔDÈÐMÐMÐMÐMÝ�a˜˜A˜qÑ!Ô!×,Ò,­Z½½1½aÀÑ-CÔ-CÑDÔDÐLÐLÐLÝ
�:Ð0Ð0Ð0Ð0Ð0Ñ1Ô1Ð1à�?Š?ÑÔ¥
Ø	ˆ1�T�#‰YŒY‰;�r‰>Ø	�$ˆs‰)Œ)‰�B‰Ø	�$ˆs‰)Œ)‰�B‰ñ!ô !ò ð ð ð õ �a˜˜A˜qÑ!Ô!×.Ò.Ñ0Ô0µJ¸qÀ!ÀQÈÑ4JÔ4JÒJÐJÐJÐJå�a˜˜A˜qÑ!Ô!×(Ò(Ñ*Ô*­cµ$°s±)´)©n¬nÒ<Ð<Ð<Ð<Ý�a˜˜A˜qÑ!Ô!×(Ò(Ñ*Ô*­cµ$°r±(´(©m¬mÒ;Ð;Ð;Ð;à× Ò Ñ"Ô" dÐ*Ð*Ð*Ð*Ø× Ò Ñ"Ô" eÐ+Ð+Ð+Ð+Ý•a˜˜A˜qÑ!Ô!×4Ò4Ñ6Ô6Ð>Ð>Ð>Ð>Ð>r2   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%   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è  € Ý	�A�q˜!˜QÑ	Ô	€Bà×ÒÑÔ 1¥t¨B¡x¤x¡<°¡?Ø#$¥t¨B¡x¤x¡<°¡?Ø#$¥t¨B¡x¤x¡<°¡?ð#4ð $%¥t­D°©H¬H°R©KÑ'8Ô'8Ñ#8ð":ò :ð :ð :ð :ð
 ×!Ò!Ñ#Ô#Ý•X˜b !‘_”_¥h¨q°"¡o¤oµxÀÀBÑ7GÔ7GÐHÝ˜a ‘^”^¥X¨b°!¡_¤_µh¸qÀ!±n´nÐEÝ˜a ‘^”^¥X¨b°"Ñ%5Ô%5µxÀÀ2±´ÐGðIñ Jô JòJð Jð Jð Jð
 ×!Ò! )Ñ,Ô,ÝÝ˜"˜a‘”¥(¨1¨b¡/¤/µ8¸BÀÑ3CÔ3CÅXÈaÐQRÁ^Ä^ÐTÝ˜!˜Q‘”¥¨"¨a¡¤µ(¸1¸a±.´.Å!Ä&ÐIÝ˜!˜Q‘”¥¨"¨bÑ!1Ô!1µ8¸A¸r±?´?ÅHÈRÐQRÁOÄOÐTÝ”�œ¥¤­¬Ð/ð	1ñ 2ô 2ò2ð 2ð 2ð 2õ �G $Ð'Ñ'Ô'€EÝ	•C˜˜a™‘L”L ! Q­¨E°!©G©¬Ñ	5Ô	5€Bå�B×)Ò)Ñ+Ô+Ñ,Ô,µÝ03°E±
´
½SÀ¹Z¼Z¸KÈÐ/KÝ03°E±
´
½SÀ¹Z¼ZÈÐ/KØ/KÐ/KÐ/Kð8Mñ 1Nô 1Nò Nð Nð Nð Nð
 ×ÒÑÔ 1 a­¨U°1©W©¬µc½#¸eÀA¹g¹,¼,Ñ6GÔ6GÑ)GÐ"HØ#$¥T­#¨e°A©g©,¬,Ñ%7Ô%7Ñ#7ð"9ò 9ð 9ð 9ð 9õ �B×)Ò)¨)Ñ4Ô4Ñ5Ô5½Ý�E‘
”
�S ™ZœZ˜K¨­C°©J¬J½¸U¹¼Ñ,CÀaÑ,GÐHÝ�E‘
”
�S ™ZœZ¨­S°©Z¬Z¨K½#¸e¹*¼*Ñ,DÀqÑ,HÐIØ/Ð/Ð/Ø/Ð/Ð/ð	A1ñ :2ô :2ò 2ð 2ð 2ð 2ð 2ð 2r2   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.   r3   r/   rW   r?   r   )r8   rX   rY   s      r0   Ú test_rotation_matrix_homogeneousrÆ   ;  s|   € Ý•1•a��AÑÔ€AØ	
×	Ò	¨$Ð	Ñ	/Ô	/°!·&²&±(´(¸A±+Ñ	=€BÝ	�!×&Ò&°5Ð&Ñ9Ô9¸A¿FºF¹H¼HÀa¹KÑGÑ	HÔ	H€BØ�Š8ˆ8ˆ8ˆ8ˆ8ˆ8r2   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   r\   N)r   r   r"   r   r   rW   r   rƒ   s    r0   Ú test_quaternion_rotation_iss1593rÈ   B  s¨   € õ 	•3•s˜1‘u‘:”:�s¥3 q¡5™zœz¨1¨aÑ0Ô0€AÝ�A×(Ò(Ñ*Ô*Ñ+Ô+­vØ(Ð(Ð(Ø•C�‘H”H�s¥3™xœx˜iÐ(Ø•C�‘H”H�s¥3™xœxÐ(ð7*ñ 0+ô 0+ò +ð +ð +ð +ð +ð +r2   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%   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Ð   R  sÞ  € Ý	�A˜�!™‘G˜Q ¥1¡™W a¨¨Q­q©S©¸uÐ	EÑ	EÔ	E€BÝ	�A�q˜!˜QÑ	Ô	€BÝ	�A�q˜!�QÑ	Ô	€BåÔ"¥1 Q¡4¤4­¬Ñ/Ô/°1Ò4Ð4Ð4Ð4ÝÔ#¥A a¡D¤D¨"Ñ-Ô-Ý�r˜B�q™D‘y ! b­¡d¡(¨A¨r°Bµq±D©yÑ9Ô9ò:ð :ð :ð :à�6Š6�!‰9Œ9�
 1 a¨¨BÑ/Ô/Ò/Ð/Ð/Ð/Ø�6Š6�"‰:Œ:� B¥q¡D¨1¡H¨aµ©c°A©g°q¸1½Q¹3±wÅÀAÁÑFÔFÒFÐFÐFÐFØ�6Š6�"‰:Œ:˜˜B™ÒÐÐÐå�˜TÐ"Ñ"Ô"€AÝ�˜1™œ�r !™uœu a¨Ñ+Ô+€FÝ•G˜E¨Ð-Ñ-Ô-Ð.€Aàˆq‰5�F˜Q‘JÒÐÐÐØˆq‰5�A˜‘JÒÐÐÐÐÐr2   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'   rs   rŒ   s   €r0   r1   z"test_issue_16318.<locals>.<lambda>i  s   ø€ ˜q ™t€ r2   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Ó   f  s  ø€ å	�A�q˜!˜QÑ	Ô	€BÝ
�:�|�|�|�|Ñ$Ô$Ð$å�1�a˜˜AÑÔ€AØ—O’OÑ%Ô%�M€Tˆ5ÝÔ" 9¨t°U¨mÑ<Ô<ÅÄÈÁÈAÍqÐQRÉtÌtÐVWÉxÐ@XÒXÐXÐXÐXå�2�q˜!˜QÑÔ€AÝ�!‰WŒWˆH�Q‰J�˜a™œ˜ ™
¥T¨!¡W¤W H¨Q¡JÐ/€DØ�b‰D�‰F€EØ�%ˆ=˜AŸOšOÑ-Ô-Ò-Ð-Ð-Ð-Ð-Ð-r2   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 rs   )Úupper)Ú.0Úseqs     r0   ú
<listcomp>z!test_to_euler.<locals>.<listcomp>{  s    € Ð)Ð)Ð)˜SˆS�YŠY‰[Œ[Ð)Ð)Ð)r2   )	r   r-   r.   r3   r/   r±   Úto_eulerr   Ú
from_euler)r8   Úq_normalizedÚseqsrÜ   Úeuler_from_qÚq_backs         r0   Útest_to_eulerrä   u  sœ   € å•1•a��AÑÔ€AØ—;’;‘=”=€Là'Ð'Ð'€DØÐ)Ð) DÐ)Ñ)Ô)Ñ)€Dàð &ð &ˆØ—z’z #‘”ˆÝ�*Ô/°¸cÑBÔBÑCÔCˆØ˜Ò%Ð%Ð%Ð%Ð%ð&ð &r2   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    r0   Útest_to_euler_iss24504ræ   ƒ  sR   € õ
 	Ô�s A q˜k¨5Ñ1Ô1€AÝ�A—J’J˜uÑ%Ô%¨tÐ4Ñ4Ô4½¸aÀ¸ÒCÐCÐCÐ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¦  «         d S )Nc                 óf   — t          j        | |¦  «        }|                     |¦  «        | k    sJ ‚d S r,   )r   rß   rÞ   )ÚanglesrÜ   r8   s      r0   Útest_one_casez<test_to_euler_numerical_singilarities.<locals>.test_one_caseŽ  s5   € ÝÔ! &¨#Ñ.Ô.ˆØ�zŠz˜#‰Œ &Ò(Ð(Ð(Ð(Ð(Ð(r2   r$   r   r×   ÚZYZrÖ   ÚZYX)r	   )rê   s    r0   Ú%test_to_euler_numerical_singilaritiesrí   Œ  s  € ð)ð )ð )ð
 €M•2�a‘4˜!˜Q�- Ñ'Ô'Ð'Ø€M•2�a‘4˜!˜Q�- Ñ'Ô'Ð'Ø€M•2�a‘4�"˜a�. %Ñ(Ô(Ð(Ø€M•2�a‘4�"˜a�. %Ñ(Ô(Ð(ð €M•2�a‘4�"˜Q™$ Ð" EÑ*Ô*Ð*Ø€M•2�a‘4�2˜#˜a™% Ð# UÑ+Ô+Ð+Ø€M•2�a‘4�"˜Q™$ Ð" EÑ*Ô*Ð*Ø€M•2�a‘4�2˜#˜a™% Ð# UÑ+Ô+Ð+Ð+Ð+r2   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   r†   r	   )r8   Úangles1Úangles2Úangle_errorsÚangle_errorrÜ   s        €r0   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Ø Ò&Ð&Ð&Ð&Ð&ð	'ð 	'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Ø*ð 	)ð 	)�	Øð -ØŸ'š' 9¨Q¤<°¸1´¸yÈ¼|Ð"LÑMÔM�C�CàŸ'š' )Ñ,Ô,�Cå '¨
¨
¨
¸1Ð =Ñ =Ô =ð )ð )�HÝ" HÐ-�AØ×/Ò/Ñ1Ô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Ð 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Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø €€€Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +àˆW�U‰^Œ^�
€€1€aˆØ€gˆe�n„n€ð8ð 8ð 8ð$)ð )ð )ð'ð 'ð 'ð;ð ;ð ;ðð ð ðPð Pð Pð$4ð 4ð 4ðð ð ðB4ð 4ð 4ð
Hð Hð Hð}?ð }?ð }?ð~#2ð #2ð #2ðLð ð ð,ð ,ð ,ð ð ð ð(.ð .ð .ð ð
&ð 
&ñ „ð
&ðDð Dð Dð,ð ,ð ,ð& ð)ð )ñ „ð)ð )ð )r2   