+
    Z°³j‡Ì ã            
       óT"  € ^ RI t ^ RIt^ RIt^ RIHt ^ RIHtHt ^ RI	H
u Hu Ht ^ RIH
u Hu Ht ^ RIHt ^ RIHtHt ^ RIHt ^ RIt^ RIHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$ ^ RI%H&u H't( ^ RI)t)^ RI*t*]#! ]R3]R	34      t+R
 t,R R lt-R t.R t/R t0R t1]Pd                  Pg                  R]4! ]5! ^^4      4      4      R R l4       t6]"! ]R34      R 4       t7R t8R t9R t:]"! ]R34      R 4       t;R t<R t=]"! ]R3]R34      R 4       t>]Pd                  Pg                  R]4! ]5! ^^4      4      4      R  R! l4       t?R" t@]"! ]R34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      R# R$ l4       4       tA]"! ]R34      R% 4       tB]"! ]R34      R& 4       tC]"! ]R'34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      R( R) l4       4       tD]"! ]R'34      R* 4       tE]"! ]R'3]R34      R+ 4       tF]"! ]R'3]R34      R, 4       tG]"! ]R'3]R34      R- 4       tH]"! ]R'3]R34      R. 4       tI]"! ]R'3]R34      R/ 4       tJR0 tK]"! ]R'34      R1 4       tL]"! ]R234      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      R3 R4 l4       4       tM]"! ]R234      R5 4       tN]"! ]R234      R6 4       tO]"! ]R23]R734      R8 4       tP]"! ]R234      R9 4       tQ]"! ]R234      R: 4       tR]"! ]R234      R; 4       tS]"! ]R234      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      R< R= l4       4       tT]"! ]R734      R> 4       tU]"! ]R734      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      R? R@ l4       4       tV]"! ]R'3]R734      RA 4       tW]"! ]R23]R734      RB 4       tX]"! ]RC34      ]Pd                  Pg                  R]5! ^^4      4      RD RE l4       4       tYRF tZ]"! ]RC34      RG 4       t[]"! ]RC34      RH 4       t\]"! ]RC34      ]Pd                  Pg                  R]5! ^^4      4      RI RJ l4       4       t]]"! ]RK34      RL 4       t^]"! ]R3]RK34      RM 4       t_]"! ]RK34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      RN RO l4       4       t`]"! ]RC3]RK34      RP 4       ta]"! ]R34      RQ 4       tb]"! ]R34      RR 4       tc]"! ]R34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      RS RT l4       4       td]"! ]R3]R34      RU 4       te]"! ]R34      RV 4       tf]"! ]R3]R34      RW 4       tg]"! ]R3]R34      RX 4       th]"! ]R3]R34      RY 4       ti]"! ]R3]R34      RZ 4       tj]"! ]R3]R34      R[ 4       tkR\ tlR] tm]"! ]R3]R^34      ]Pd                  Pg                  R_]4! ]! R`4      4      4      ]Pd                  Pg                  RaRù4      Rb 4       4       4       tn]"! ]R3]R^34      ]Pd                  Pg                  R_]4! ]! R`4      4      4      ]Pd                  Pg                  RaRù4      Rc 4       4       4       to]Rd 4       tp]"! ]R3]R3]R^34      ]Pd                  Pg                  R_]4! ]! R`4      4      4      ]Pd                  Pg                  RaRù4      ]Pd                  Pg                  ReRù4      Rf 4       4       4       4       tq]"! ]R3]R3]R^34      ]Pd                  Pg                  R_]4! ]! R`4      4      4      ]Pd                  Pg                  RaRù4      ]Pd                  Pg                  ReRù4      Rg 4       4       4       4       tr]"! ]R3]R^34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      Rh Ri l4       4       ts]"! ]R3]R34      Rj 4       tt]"! ]R3]R34      Rk 4       tu]"! ]Rl3]R34      Rm 4       tv]"! ]Rl3]R34      Rn 4       tw]"! ]R3]Rl34      Ro 4       tx]"! ]R3]Rl34      Rp 4       tyRq tz]"! ]Rl34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      Rr Rs l4       4       t{]"! ]Rl34      Rt 4       t|]"! ]R3]Rl3]Ru34      Rv 4       t}]"! ]R23]Ru34      Rw 4       t~]"! ]R3]Rl3]Ru34      Rx 4       t]"! ]Ru34      Ry 4       t€]"! ]R23]Rz3]Rl34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      R{ R| l4       4       t�]"! ]R23]Rz3]Rl34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      R} R~ l4       4       t‚]"! ]Rz3]Rl34      R 4       tƒ]"! ]R23]Rz3]R3]Rl34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      R€ R� l4       4       t„]"! ]Rz34      R‚ 4       t…]"! ]Rƒ34      R„ 4       t†]"! ]Rƒ34      R… 4       t‡]"! ]Rƒ3]R3]Rl34      R† 4       tˆ]"! ]R'3]R‡34      Rˆ 4       t‰]"! ]R'3]R‡34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      R‰ RŠ l4       4       tŠ]"! ]R'3]R‡34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      R‹ RŒ l4       4       t‹]"! ]R'3]R‡34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      R� RŽ l4       4       tŒ]"! ]R‡34      R� 4       t�R� tŽR‘ t�]"! ]R‡34      R’ 4       t�]"! ]R'3]R3]R“34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      R” R• l4       4       t‘]"! ]R“34      R– 4       t’]"! ]R'3]R“3]R34      R— 4       t“]"! ]R˜34      R™ 4       t”]"! ]R˜34      Rš 4       t•]"! ]R˜34      R› 4       t–]"! ]R˜34      Rœ 4       t—]"! ]R'34      R� 4       t˜Rž t™]"! ]RŸ3]R34      R  4       tš]"! ]R‡3]RŸ34      R¡ 4       t›]"! ]RŸ3]R‡34      R¢ 4       tœ]"! ]RŸ34      R£ 4       t�]"! ]RŸ3]R34      R¤ 4       tž]"! ]R‡3]R23]RŸ34      R¥ 4       tŸ]"! ]RŸ34      R¦ 4       t ]"! ]RŸ3]R3]R‡34      R§ 4       t¡]"! ]RŸ3]R34      R¨ 4       t¢]"! ]RŸ3]R34      R© 4       t£]"! ]RŸ3]Rl3]R‡3]R23]R73]R34      Rª 4       t¤]"! ]RŸ3]R‡34      R« 4       t¥R¬ t¦]"! ]R‡3]RŸ34      R­ 4       t§]"! ]R®34      R¯ 4       t¨R° t©]"! ]R±3]R²34      R³ 4       tª]"! ]R±34      R´ 4       t«Rµt¬]"! ]R±34      R¶ 4       t­]"! ]R±34      R· 4       t®]"! ]R±34      R¸ 4       t¯]"! ]R±34      R¹ 4       t°]"! ]R±34      Rº 4       t±]"! ]R±34      R» 4       t²]"! ]R±34      R¼ 4       t³]"! ]R±34      R½ 4       t´]"! ]R±3]R²34      R¾ 4       tµ]"! ]R±3]R²34      R¿ 4       t¶]"! ]R±3]R²3]R3]R3]Rl34      RÀ 4       t·]"! ]R34      RÁ 4       t¸]"! ]R34      RÂ 4       t¹]"! ]R34      RÃ 4       tº]"! ]R34      RÄ 4       t»]"! ]R3]RÅ3]R3]Rl3]R23]R734      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      RÆ RÇ l4       4       t¼]"! ]RÅ34      RÈ 4       t½RÉ t¾]"! ]R34      ]Pd                  EP                  RÊRËRÌ7      RÍ 4       4       tÀ]"! ]R34      ]Pd                  EP                  RÊRÎRÌ7      RÏ 4       4       tÁRÐ tÂ]"! ]RÑ34      RÒ 4       tÃ]"! ]RÑ34      RÓ 4       tÄ]"! ]RÑ34      RÔ 4       tÅ]"! 4       RÕ 4       tÆ]"! ]RÖ34      R× 4       tÇ]"! ]R23]RÖ34      RØ 4       tÈ]"! ]RÖ34      ]Pd                  Pg                  R]4! ]5! ^^4      4      4      RÙ RÚ l4       4       tÉ]"! ]RÖ34      RÛ 4       tÊ]"! ]RÖ34      RÜ 4       tËRÝ tÌ]"! ]RÖ3]RÞ34      Rß 4       tÍ]"! ]RÖ3]RÞ34      Rà 4       tÎ]"! ]RÖ3]RÞ3]R34      ]Pd                  Pg                  ReRù4      Rá 4       4       tÏ]"! ]R3]RÖ34      Râ 4       tÐ]"! ]R3]R^3]RÞ34      Rã 4       tÑ]"! ]R'3]R3]R23]RÖ3]RC34      Rä 4       tÒ]"! ]R3]R^3]R73]RK3]RÞ34      Rå 4       tÓ]"! ]R‡34      Ræ 4       tÔ]"! ]R34      Rç 4       tÕ]"! ]RÑ34      Rè 4       tÖ]"! ]RÅ34      Ré 4       t×]"! ]R34      Rê 4       tØ]"! ]Rl34      Rë 4       tÙ]"! ]Rz34      Rì 4       tÚ]"! ]Ru34      Rí 4       tÛ]Pd                  EP                  RîRïRÌ7      Rð 4       tÜ]"! ]R“34      Rñ 4       tÝ]"! ]Rò34      Ró 4       tÞ]Pd                  Pg                  R]4! ]5! ^^4      4      4      Rô Rõ l4       tßRö tàR÷ táRø tâR# )úé    N)Úassert_equal)ÚRotationÚSlerp)Úspecial_ortho_group)ÚpermutationsÚproduct)Úcontextmanager)Úxp_assert_equalÚarray_namespaceÚis_numpyÚis_lazy_arrayÚxp_vector_normÚxp_assert_closeÚeager_warnsÚxp_default_dtypeÚmake_xp_test_caseÚmake_xp_pytest_marksÚxp_device_typeÚas_quatÚ	from_quatc                 óH   € V R 8X  d   . RO# V R8X  d   . RO# V R8X  d   . RO# R# )ÚxÚyÚzN©é   r   r   ©r   r   r   ©r   r   r   © ©Úaxiss   &Úl/home/luca/screen-checking/.venv/lib/python3.14/site-packages/scipy/spatial/transform/tests/test_rotation.pyÚ	basis_vecr#   %   s.   € Øˆs„{ÚÐØ	�ŒÚÐØ	�ŒÚÐñ 
ó    c                ó$   € V ^8„  d   QhR\         /# )é   Úr©r   )Úformats   "r"   Ú__annotate__r*   .   s   € ÷ Dñ D”hñ Dr$   c                 ó˜   € \         P                  ! V4      p\        P                  ! VP	                  V P                  4       VR 7      4      # )©Údtype)ÚxpxÚdefault_dtyper   r   Úasarrayr   )r'   Úxpr-   s   && r"   Úrotation_to_xpr2   .   s6   € Ü×Ò˜bÓ!€EÜ×Ò˜bŸj™j¨¯©«¸E˜jÓBÓCÐCr$   c                  óT   € \        R4       \        . RO4       \        . RO..4       R# ©r   N©r   r   r   r   r(   r   r$   r"   Útest_init_non_arrayr6   3   s   € Üˆ\ÔÜŠ\ÔÜŠ|ˆnÐÖr$   c                  ó˜  € \         P                  ! \        P                  ! . RO4      4      p V P                  \
        J g   Q h\         P                  ! \        P                  ! . RO.4      4      p V P                  \
        J g   Q h\         P                  ! \        P                  ! . RO..4      4      p V P                  \        J g   Q hR# r4   )r   r   ÚnpÚarrayÚ_backendÚcython_backendÚ
xp_backend©r'   s    r"   Útest_cython_backend_selectionr>   9   sŠ   € Ü×Òœ2Ÿ8š8¢LÓ1Ó2€AØ�:‰:œÓ'Ð'Ð'Ü×Òœ2Ÿ8š8¢\ NÓ3Ó4€AØ�:‰:œÓ'Ð'Ð'Ü×Òœ2Ÿ8š8¢l ^Ð$4Ó5Ó6€AØ�:‰:œÓ#Ð#Ò#r$   c                  ó~   € \         P                  ! \        P                  ! . RO\        P                  R7      4       R# )r   r,   N©r   r   r   r   )r   r   r8   r9   Úfloat32r   r$   r"   Útest_numpy_float32_inputsrB   B   s   € Ü×Ò”r—x’x¢´B·J±JÔ?Ö@r$   c                 óÊ   € V P                  . RO. RO.4      p\        P                  ! V4      pWP                  R.R..4      ,          p\        VP	                  4       V4       R# )ç      @ç      @g      *@N©rD   é   r   r   )é   é   r   r   ©r0   r   r   r   r   ©r1   r   r'   Úexpected_quats   &   r"   Útest_generic_quat_matrixrM   F   sN   € Ø
�
‰
’N¢MÐ2Ó3€AÜ×Ò˜1Ó€AØŸ
™
 S E¨D¨6 ?Ó3Õ3€MÜ�A—I‘I“K Ö/r$   Úndimc                ó$   € V ^8„  d   QhR\         /# ©r&   rN   ©Úint)r)   s   "r"   r*   r*   N   s   € ÷ 0ñ 0¬Sñ 0r$   c                 óì   € V P                  . RO4      pV P                  VRV^,
          ,          R,           4      p\        P                  ! V4      pV^,          p\	        VP                  4       V4       R# )rD   NrF   ©r   ©rG   )r0   Úreshaper   r   r   r   )r1   rN   r   r'   rL   s   &&   r"   Útest_from_single_nd_quaternionrW   M   sW   € à
�
‰
’>Ó"€AØ
�
‰
�1�d˜d Q�hÕ'¨$Õ.Ó/€AÜ×Ò˜1Ó€AØ˜•E€MÜ�A—I‘I“K Ö/r$   Ú	as_matrixc                 óÂ  € \         P                  P                  ^ 4      p\        P                  ! V P                  . R
O4      RR7      p\        VP                  4       V P                  ^4      RRR7       V P                  V P                  . R
O4      R4      p\        P                  ! VRR7      p\        VP                  4       V P                  V P                  ^4      R4      RRR7       V P                  VP                  ^d^4      4      pV\        V^R7      R,          ,          p\        VP                  ^ ,          4       FQ  pW4R3,          p\        P                  ! VRR7      p\        V P                  VP                  4       ^4      VRR	7       KS  	  \        P                  ! VRR7      p\        V P                  VP                  4       ^^R7      VRR	7       R# )r   T©Úscalar_firstçVçž¯Ò<ç¼‰Ø—²Òœ<©ÚrtolÚatolr    N.©r_   r@   ©é
   r   )rc   r   r   ©ºNNNN)r8   ÚrandomÚRandomStater   r   r0   r   rX   ÚeyeÚtileÚrandnr   ÚrangeÚshapeÚrollr   ©r1   Úrngr'   ÚqÚiÚqis   &     r"   Útest_from_quat_scalar_firstrs   V   sY  € ä
�)‰)×
Ñ
 Ó
"€Cä×Ò˜2Ÿ:™:¢lÓ3À$ÔG€AÜ�A—K‘K“M 2§6¡6¨!£9°5¸uÕEà
�‰�—
‘
š<Ó(¨'Ó2€AÜ×Ò˜1¨4Ô0€AÜØ	�‰‹�r—w‘w˜rŸv™v a›y¨*Ó5¸EÈõð 	�
‰
�3—9‘9˜S !Ó$Ó%€AØŒ˜ Ô	" 7Õ	+Õ+€AÜ�1—7‘7˜1•:ÖˆØ�#ˆv�YˆÜ×Ò˜r°Ô5ˆÜ˜Ÿ™ §	¡	£¨QÓ/°¸%×@ñ ô
 	×Ò˜1¨4Ô0€AÜ�B—G‘G˜AŸI™I›K¨°�GÓ3°Q¸U×Cr$   c                  ó  € \         P                  P                  ^{4      p \        P                  ! V R7      p\        P                  ! VP                  4       P                  4       4      pVP                  VRR7      '       g   Q h\        P                  ! ^V R7      p\        P                  ! VP                  4       P                  4       4      p\         P                  ! VP                  VRR7      4      '       g   Q hV P                  RR7      pV\        VRR7      R	,          ,          p\        P                  ! V4      p\        P                  ! V4      p\         P                  ! VP                  VRR7      4      '       g   Q hR# )
é{   ©ro   çê-�™—q=©r`   ©Úsizer    N)é   rG   rH   rG   éÿÿÿÿ).N)r8   rf   Údefault_rngr   r   r   ÚtolistÚapprox_equalÚallÚnormalr   )ro   Ú
r_expectedr'   rp   s       r"   Útest_from_quat_array_likerƒ   n   s(  € Ü
�)‰)×
Ñ
 Ó
$€Cä—’ SÔ)€JÜ×Ò˜:×-Ñ-Ó/×6Ñ6Ó8Ó9€AØ×"Ñ" 1¨5Ð"×1Ò1Ð1Ð1ô —’ ¨Ô,€JÜ×Ò˜:×-Ñ-Ó/×6Ñ6Ó8Ó9€AÜ�6Š6�*×)Ñ)¨!°%Ð)Ó8×9Ò9Ð9Ð9ð 	�
‰
˜ˆ
Ó%€AØŒ˜ Ô	# IÕ	.Õ.€AÜ×#Ò# AÓ&€JÜ×Ò˜1Ó€AÜ�6Š6�*×)Ñ)¨!°%Ð)Ó8×9Ò9Ð9Ò9r$   c                 ó¨   € \         P                  ! V P                  . RO4      4      pVP                  4       P                  \        V 4      8X  g   Q hR# )r   Nr@   )r   r   r0   r   r-   r   ©r1   r'   s   & r"   Útest_from_quat_int_dtyper†   ‚   s;   € Ü×Ò˜2Ÿ:™:¢lÓ3Ó4€AØ�9‰9‹;×ÑÔ 0°Ó 4Ô4Ð4Ò4r$   c                 óz  € V P                  . RO4      p\        \        P                  ! V4      P	                  RR7      V) 4       V P                  . RO4      p\        \        P                  ! V4      P	                  RR7      V) 4       V P                  . RO4      p\        \        P                  ! V4      P	                  RR7      V) 4       V P                  . RO4      p\        \        P                  ! V4      P	                  RR7      V) 4       V P                  . RO4      pV\        V4      ,          p\        \        P                  ! V4      P	                  RR7      V4       V P                  . R	O4      pV\        V4      ,          p\        \        P                  ! V4      P	                  RR7      V4       R# )
ç        T©Ú	canonicalN©rˆ   r   r   r|   ©ç      ð¿r   r   r   )rˆ   r|   r   r   )rˆ   r   r|   r   )rˆ   çš™™™™™¹¿r   çÍÌÌÌÌÌì?)rˆ   rˆ   rŽ   r�   )r0   r   r   r   r   r   )r1   rp   s   & r"   Útest_quat_canonicalr�   ‡   sP  € à
�
‰
’?Ó#€AÜ”H×&Ò& qÓ)×1Ñ1¸DÐ1ÓAÀAÀ2ÔFà
�
‰
’?Ó#€AÜ”H×&Ò& qÓ)×1Ñ1¸DÐ1ÓAÀAÀ2ÔFà
�
‰
’?Ó#€AÜ”H×&Ò& qÓ)×1Ñ1¸DÐ1ÓAÀAÀ2ÔFà
�
‰
’?Ó#€AÜ”H×&Ò& qÓ)×1Ñ1¸DÐ1ÓAÀAÀ2ÔFà
�
‰
Ò&Ó'€AØ	ŒN˜1ÓÕ€AÜ”H×&Ò& qÓ)×1Ñ1¸DÐ1ÓAÀ1ÔEà
�
‰
Ò(Ó)€AØ	ŒN˜1ÓÕ€AÜ”H×&Ò& qÓ)×1Ñ1¸DÐ1ÓAÀ1ÖEr$   Ú
from_eulerc           
      ó¢  € \         P                  P                  ^ 4      p\        P                  ! RV P                  ^4      4      p\        VP                  RR7      V P                  . RO4      RRR7       \        P                  ! RV P                  R4      4      p\        VP                  RR7      V P                  V P                  . RO4      R4      RRR7       V P                  VP                  ^d^4      4      pV\        V^R7      R,          ,          p\        VP                  ^ ,          4       F�  pW4R	3,          p\        P                  ! V4      p\        VP                  RR7      V P                  V^4      RR
7       \        VP                  RRR7      V P                  VP                  RR7      ^4      RR
7       K’  	  \        P                  ! V4      p\        VP                  RR7      V P                  V^^R7      RR
7       \        VP                  RRR7      V P                  VP                  RR7      ^^R7      RR
7       R# )r   ÚxyzTrZ   r\   r]   r^   r    N.ra   )rŠ   r[   r‰   )ç      ð?r   r   r   )rc   r{   rb   rd   )r8   rf   rg   r   r‘   Úzerosr   r   r0   ri   rj   r   rk   rl   r   rm   rn   s   &     r"   Útest_as_quat_scalar_firstr–   ž   sÓ  € ä
�)‰)×
Ñ
 Ó
"€Cä×Ò˜E 2§8¡8¨A£;Ó/€AÜ�A—I‘I¨4�IÓ0°"·*±*º^Ó2LØ Uõ,ô 	×Ò˜E 2§8¡8¨GÓ#4Ó5€AÜ�A—I‘I¨4�IÓ0Ø—G‘G˜BŸJ™J¢~Ó6¸Ó@Ø Uõ,ð 	�
‰
�3—9‘9˜S !Ó$Ó%€AØŒ˜ Ô	" 7Õ	+Õ+€AÜ�1—7‘7˜1•:ÖˆØ�#ˆv�YˆÜ×Ò˜rÓ"ˆÜ˜Ÿ	™	¨t˜	Ó4°b·g±g¸bÀ!³nØ"õ	$ô 	˜Ÿ	™	¨D¸t˜	ÓDØŸ™ §	¡	°D 	Ó 9¸1Ó=Ø"÷	$ñ ô 	×Ò˜1Ó€AÜ�A—I‘I¨4�IÓ0°"·'±'¸!¸QÀQ°'Ó2GØõ ô �A—I‘I¨¸4�IÓ@Ø—G‘G˜AŸI™I°˜IÓ5°q¸q�GÓAÈ÷Or$   c           	      óò   € V P                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! V4      pWP                  R.^.^.^.^.^..4      ,          p\        VP	                  4       V4       R# )	rD   rE   N)rD   r   r   rG   ©rH   r   rI   r   r5   )r|   r|   r|   r   ©r   r   r   r|   ©r|   r|   r|   r|   rJ   rK   s   &   r"   Útest_from_square_quat_matrixr›   ¿   ss   € à
�
‰
ÚÚÚÚÚÚð
ó 	€Aô 	×Ò˜1Ó€AØŸ
™
 S E¨B¨4°!°°q°c¸A¸3ÀÀÐ#DÓEÕE€MÜ�A—I‘I“K Ö/r$   c                 óþ   € V P                  . RO. RO. RO. RO. R	O.4      p\        P                  ! V4      pV P                  V4      \	        V^R7      R
,          ,          p\        VP                  RR7      V4       R# )r”   r    NTr‰   rŒ   )r   r|   r   r   )r   r   r|   r   r™   rš   rd   )r0   r   r   Úabsr   r   r   rK   s   &   r"   Ú*test_quat_double_to_canonical_single_coverrž   Î   si   € Ø
�
‰
ÚÚÚÚÚð
ó 	€Aô 	×Ò˜1Ó€AØ—F‘F˜1“I¤¨q°qÔ 9¸'Õ BÕB€MÜ�A—I‘I¨�IÓ-¨}Ö=r$   ÚinvÚ__mul__c                 óÆ  € V P                  . RO4      p\        P                  ! V4      p\        WP	                  RR7      4       V P                  . RO4      \
        P                  ! ^4      ,          p\        P                  ! V4      pW",          V,          p\        VP	                  RR7      \
        P                  ! ^4      ,          V P                  . RO4      4       \        VP                  4       P	                  RR7      \
        P                  ! ^4      ,          V P                  . RO4      4       \        VP	                  RR7      \
        P                  ! ^4      ,          V P                  . R	O4      4       \        VP                  4       P	                  RR7      \
        P                  ! ^4      ,          V P                  . R
O4      4       \        W"P                  4       ,          P	                  RR7      V P                  . RO4      RR7       \        W3P                  4       ,          P	                  RR7      V P                  . RO4      RR7       \        W#,          P	                  RR7      V P                  . RO4      RR7       \        VP                  4       VP                  4       ,          P	                  RR7      V P                  . RO4      RR7       R# )rˆ   Fr‰   g¼‰Ø—²Ò¬<rx   Nr‹   )r”   r   r   r   )r�   r   r   r   )r”   r   r   r|   )r�   r   r   r|   ©rˆ   r   r   r   )	r0   r   r   r
   r   ÚmathÚsqrtr   rŸ   )r1   rp   r'   Úr3s   &   r"   Útest_quat_double_coverr¦   Û   sí  € ð
 	�
‰
’?Ó#€AÜ×Ò˜1Ó€AÜ�A—y‘y¨5�yÓ1Ô2à
�
‰
’>Ó"¤4§9¢9¨Q£<Õ/€AÜ×Ò˜1Ó€AØ	
�ˆQ�€BÜ�A—I‘I¨�IÓ.¬t¯yªy¸«|Õ;Ø—J‘Jš~Ó.ô0ä�A—E‘E“G—O‘O¨e�OÓ4´T·Y²Y¸q³\ÕAØ—J‘JšÓ/ô1ä�B—J‘J¨�JÓ/´·	²	¸!³Õ<Ø—J‘JšÓ/ô1ä�B—F‘F“H×$Ñ$¨uÐ$Ó5´d·i²iÀ³lÕBØ—J‘JÒ/Ó0ô2ô �Q—u‘u“w•Y×'Ñ'°%Ð'Ó8Ø—J‘Jš~Ó.°Uõ<ä�RŸ™›•[×)Ñ)°EÐ)Ó:Ø—J‘Jš~Ó.°Uõ<ä�Q•T—N‘N¨U�NÓ3Ø—J‘JšÓ/°eõ=ä�Q—U‘U“W˜rŸv™v›xÕ'×0Ñ0¸5Ð0ÓAØ—J‘JšÓ/°e÷=r$   c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   ü   s   € ÷ !ñ !¬ñ !r$   c                 óî   € V P                  . RV,          O^N54      p\        P                  ! \        RR7      ;_uu_ 4        \        P
                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   zExpected `quat` to have shape©ÚmatchNrT   )r•   ÚpytestÚraisesÚ
ValueErrorr   r   )r1   rN   Úquats   && r"   Útest_from_quat_wrong_shaper¯   û   sO   € à�8‰8Ð'�t˜d•{Ð' QÑ'Ó(€DÜ	�Š”zÐ)H×	IÖ	IÜ×Ò˜4Ô ÷ 
J×	I×	IÒ	Iús   ÁA#Á#A4	c                 ó¬  € V P                  . RO. RO. RO.4      p\        V4      '       dT   V P                  V P                  \        P
                  ! V4      P                  4       R,          4      4      '       g   Q hR# \        P                  ! \        4      ;_uu_ 4        \        P
                  ! V4       RRR4       R#   + '       g   i     R# ; i)r{   N)r{   rG   r   r   )r   r   r   r   r˜   ©r   .)
r0   r   r€   Úisnanr   r   r   r«   r¬   r­   )r1   r   s   & r"   Útest_zero_norms_from_quatr³     sŽ   € Ø
�
‰
ÚÚÚðó 	€Aô
 �Q×ÒØ�v‰v�b—h‘hœx×1Ò1°!Ó4×<Ñ<Ó>¸vÕFÓG×HÒHÐHÒHä�]Š]œ:×&Õ&Ü×Ò˜qÔ!÷ '×&×&Ò&ús   Â!CÃC	c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*     s   € ÷ 
3ñ 
3´#ñ 
3r$   c                 ó^  € V P                  . RO4      pV P                  VRV^,
          ,          R,           4      p\        P                  ! V4      P	                  4       pV P                  . RO. RO. R	O.4      pV P                  VRV^,
          ,          R
,           4      p\        W4RR7       R# )r   r]   rx   N©r   r   r   r   rT   rU   ©rˆ   r|   r   r   r   ©r{   r{   )r0   rV   r   r   rX   r   )r1   rN   r®   ÚmatÚexpected_mats   &&   r"   Ú#test_as_matrix_single_nd_quaternionr»     s�   € ð �:‰:’lÓ#€DØ�:‰:�d˜D D¨1¥HÕ-°Õ4Ó5€DÜ
×
Ò
˜TÓ
"×
,Ñ
,Ó
.€CØ—:‘:ÚÚÚð
ó €Lð
 —:‘:˜l¨D°D¸1µHÕ,=ÀÕ,FÓG€LÜ�C¨E×2r$   c                 óø  € V P                  . RO. RO. RO. RO.4      p\        P                  ! V4      P                  4       p\	        VP
                  R4       V P                  . R	O. R
O. RO.4      p\        VR,          VRR7       V P                  . RO. RO. RO.4      p\        VR,          VRR7       \        VR,          V P                  ^4      4       \        VR,          V P                  ^4      4       R# )r   r]   rx   Nr¶   ©r   r   r   r   r5   r™   )rG   r{   r{   r·   r   r   ©r   .©rˆ   r   r   r   ©r|   r   r   r±   ©r&   .©r{   .)r0   r   r   rX   r   rl   r   rh   )r1   Úquatsr¹   Ú	expected0Ú	expected1s   &    r"   Ú test_as_matrix_from_square_inputrÆ     sÒ   € à�J‰JÚÚÚÚð	ó €Eô ×
Ò
˜UÓ
#×
-Ñ
-Ó
/€CÜ�—‘˜IÔ&à—
‘
ÚÚÚð
ó €Iô
 �C˜•K °Õ7à—
‘
ÚÚÚð
ó €Iô
 �C˜•K °Õ7Ü�C˜•K §¡¨£Ô+Ü�C˜•K §¡¨£Ö+r$   c                 óÒ  € V P                  . RO. RO. RO.4      p\        P                  ! V4      P                  4       p\	        VP
                  R4       V P                  . RO. R	O. R
O.4      p\        VR,          VRR7       V P                  . RO. RO. RO.4      p\        VR,          VRR7       V P                  . RO. RO. RO.4      ^,          p\        VR,          V4       R# )r   r]   rx   Nr¶   r½   ©r   r&   r{   rG   )r{   r{   r{   r·   r   r   r¾   r¿   r   rÀ   r±   )çš™™™™™Ù?éþÿÿÿgš™™™™™@)gffffff@r   rÉ   )r|   r&   r&   rÁ   )r0   r   r   rX   r   rl   r   )r1   rÃ   r¹   rÄ   rÅ   Ú	expected2s   &     r"   Ú!test_as_matrix_from_generic_inputrÌ   :  sÙ   € à�J‰JÚÚÚðó €Eô
 ×
Ò
˜UÓ
#×
-Ñ
-Ó
/€CÜ�—‘˜IÔ&à—
‘
ÚÚÚð
ó €Iô
 �C˜•K °Õ7à—
‘
ÚÚÚð
ó €Iô
 �C˜•K °Õ7à—
‘
ÚÚÚð
ó ð õ	€Iô
 �C˜•K Ö+r$   Úfrom_matrixc                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   \  s   € ÷ 	Hñ 	H¬ñ 	Hr$   c                 óX  € V P                  . RO. RO. RO.4      pV P                  VRV^,
          ,          R,           4      pV P                  . RO4      pV P                  VRV^,
          ,          R,           4      p\        \        P                  ! V4      P                  4       V4       R# )	r   Nr   r   r   rT   r¸   )ç      à?rÐ   rÐ   rÐ   rU   )r0   rV   r   r   rÍ   r   )r1   rN   r¹   rL   s   &&  r"   Útest_from_single_nd_matrixrÑ   Z  s‹   € ð �*‰*ÚÚÚðó €Cð
 �*‰*�S˜$ $¨¥(Õ+¨fÕ4Ó
5€CØ—J‘JÒ3Ó4€MØ—J‘J˜}¨d°d¸QµhÕ.?À$Õ.FÓG€MÜ”H×(Ò(¨Ó-×5Ñ5Ó7¸ÖGr$   c                 ó˜  € R pV P                  . RO4      \        P                  ! ^'4      ,          pV P                  . RO. RO. RO.4      p\        \        P
                  ! V4      P                  4       W!R7       \        \        P
                  ! V P                  VR4      4      P                  4       V P                  VR4      VR7       R# )	ç:Œ0âŽyE>rx   N)r”   r   é   r   )çÓ3~Ë·ì¿gâ6¿iÐ¿çnzÃoùÖ?)rÖ   rÕ   çâ6¿iÐ?)r×   rÖ   gÓ3~Ë·ì?©r   r{   r{   ©r   rG   )r0   r£   r¤   r   r   rÍ   r   rV   )r1   r`   rL   r¹   s   &   r"   Útest_from_matrix_calculationrÚ   h  s˜   € à€DØ—J‘Jš~Ó.´·²¸2³Õ>€MØ
�*‰*Ú/Ú.Ú-ðó €Cô
 ”H×(Ò(¨Ó-×5Ñ5Ó7¸ÕRÜ”H×(Ò(¨¯©°C¸Ó)CÓD×LÑLÓNØ—J‘J˜}¨fÓ5Ø÷r$   c                 ó²   € V P                  \        P                  ! ^^
^ R7      4      p\        \        P
                  ! V4      P                  4       V4       R# )r{   )rz   Úrandom_stateN)r0   r   Úrvsr   r   rÍ   rX   ©r1   r¹   s   & r"   Ú test_matrix_calculation_pipelinerß   w  s>   € à
�*‰*Ô(×,Ò,¨Q°RÀaÔHÓ
I€CÜ”H×(Ò(¨Ó-×7Ñ7Ó9¸3Ö?r$   c                 óÔ  € \         P                  ! V 4      pWP                  8X  d   R MRp\        P                  P                  ^ 4      pV P                  VP                  R4      VR7      pV P                  P                  V4      p\        VP                  ^ ,          4       FI  pWV,          ^ 8  g   K  \         P                  ! V4      VR3,          P                  WFR3,          ) 4      pKK  	  \        P                  ! V4      P!                  4       pV P#                  WpP%                  V4      4      pV P'                  R4      V P)                  ^4      ,           p	\+        W‰VR7       R# )rw   ç�íµ ÷Æ°>r,   .rx   N)éd   r{   r{   )r.   r/   Úfloat64r8   rf   rg   r0   Úrandom_sampleÚlinalgÚdetrk   rl   ÚatÚsetr   rÍ   rX   ÚmatmulÚmatrix_transposer•   rh   r   )
r1   r-   r`   Úrndr¹   Údetsrq   Ú	ortho_matÚmult_resultÚeye3ds
   &         r"   Útest_from_matrix_ortho_outputrð   }  s  € ä×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€DÜ
�)‰)×
Ñ
 Ó
"€CØ
�*‰*�S×&Ñ& {Ó3¸5ˆ*Ó
A€CØ�9‰9�=‰=˜Ó€DÜ�4—:‘:˜a•=Ö!ˆà�7�QŽ;Ü—&’&˜“+˜a ˜fÕ%×)Ñ)¨3°#¨v­;¨,Ó7ŠCñ "ô ×$Ò$ SÓ)×3Ñ3Ó5€Ià—)‘)˜I×':Ñ':¸9Ó'EÓF€Kà�H‰H�[Ó! B§F¡F¨1£IÕ-€EÜ�K¨T×2r$   c                 óz  € V P                  . RO. RO. RO.4      pV P                  . RO. RO. R	O.4      p\        \        P                  ! V4      P	                  4       VRR7       V P                  . R
O. RO. RO.4      pV P                  . RO. RO. RO.4      p\        \        P                  ! V4      P	                  4       VRR7       V P                  WP                  ^4      .4      pV P                  W P                  ^4      .4      p\        \        P                  ! V4      P	                  4       VRR7       R# )r   rá   rx   N©r   r   r   r   r   )ç½5_%Ÿì?gÔx'ŸÜ?rˆ   )gÔx'ŸÜ¿ró   rˆ   )rˆ   rˆ   r”   )r   ç      à¿r   )rÐ   r   r   )r   r   rÐ   r·   r   )r0   r   r   rÍ   rX   Ústackrh   )r1   r¹   Úexpecteds   &  r"   Útest_from_matrix_normalizer÷   �  s  € à
�*‰*ÚÚÚðó €Cð �z‰zÒ5Ú5Ú5ð7ó 8€Hô ”H×(Ò(¨Ó-×7Ñ7Ó9¸8È$ÕOà
�*‰*ÚÚÚðó €Cð �z‰zš<Ú'Ú'ð)ó *€Hô ”H×(Ò(¨Ó-×7Ñ7Ó9¸8È$ÕOð �(‰(�CŸ™ ›Ð#Ó
$€CØ�x‰x˜§6¡6¨!£9Ð-Ó.€HÜ”H×(Ò(¨Ó-×7Ñ7Ó9¸8È$×Or$   c                 ó–  € \         P                  P                  ^ 4      p\        P                  ! V 4      pW P
                  8X  d   RMRp\        \        P                  ! VP                  RR7      4      V 4      p\        P                  ! VP                  4       RR7      pV P                  VP                  WSR7      4      '       g   Q hR# )	r   rw   rá   ry   T)Úassume_validrx   N)rc   rG   )r8   rf   r}   r.   r/   rã   r2   r   r   r�   rÍ   rX   r€   r   )r1   ro   r-   r`   ÚrotÚrot_no_norms   &     r"   Útest_from_matrix_assume_validrü   ª  s“   € ä
�)‰)×
Ñ
 Ó
"€CÜ×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€Dä
œ×+Ò+¨C¯J©J¸G¨JÓ,DÓEÀrÓ
J€CÜ×&Ò& s§}¡}£ÀTÔJ€KØ�6‰6�#×"Ñ" ;Ð"Ó:×;Ò;Ð;Ò;r$   c                 ó¤  € V P                  ^4      p\        P                  ! V4      R,          P                  ^ 4      p\	        V4      '       dL   V P                  V P                  \        P                  ! V4      P                  4       4      4      '       g   Q hMC\        P                  ! \        RR7      ;_uu_ 4        \        P                  ! V4       RRR4       \        P                  ! V4      R,          P                  R4      p\	        V4      '       dM   V P                  V P                  \        P                  ! V4      P                  4       4      4      '       g   Q hR# \        P                  ! \        RR7      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     LÞ; i  + '       g   i     R# ; i)r{   zNon-positive determinantr©   N©r   r   r|   )rh   r.   rç   rè   r   r€   r²   r   rÍ   rX   r«   r¬   r­   rÞ   s   & r"   Ú)test_from_matrix_non_positive_determinantrÿ   ·  s+  € à
�&‰&�‹)€CÜ
�&Š&�‹+�dÕ
×
Ñ
 Ó
"€CÜ�S×ÒØ�v‰v�b—h‘hœx×3Ò3°CÓ8×BÑBÓDÓE×FÒFÐFÑFä�]Š]œ:Ð-G×HÖHÜ× Ò  Ô%÷ Iô �&Š&�‹+�dÕ
×
Ñ
 Ó
#€CÜ�S×ÒØ�v‰v�b—h‘hœx×3Ò3°CÓ8×BÑBÓDÓE×FÒFÐFÒFä�]Š]œ:Ð-G×HÖHÜ× Ò  Ô%÷ IÑH÷ I×Hú÷ I×HÐHús   Â>F+Æ
F>Æ+F;	Æ>G	c                  óþ  € \         P                  P                  ^{4      p \        P                  ! V R7      p\        P                  ! VP                  4       P                  4       4      pVP                  VRR7      '       g   Q h\        P                  ! ^V R7      p\        P                  ! VP                  4       P                  4       4      p\         P                  ! VP                  VRR7      4      '       g   Q hR# ©ru   rv   rw   rx   N)	r8   rf   r}   r   rÍ   rX   r~   r   r€   ©ro   r‚   r'   s      r"   Útest_from_matrix_array_liker  É  s»   € Ü
�)‰)×
Ñ
 Ó
$€Cä—’ SÔ)€JÜ×Ò˜Z×1Ñ1Ó3×:Ñ:Ó<Ó=€AØ×"Ñ" 1¨5Ð"×1Ò1Ð1Ð1ô —’ ¨Ô,€JÜ×Ò˜Z×1Ñ1Ó3×:Ñ:Ó<Ó=€AÜ�6Š6�*×)Ñ)¨!°%Ð)Ó8×9Ò9Ð9Ò9r$   c                 óº   € V P                  . RO. RO. RO.4      p\        P                  ! V4      pVP                  4       P                  \        V 4      8X  g   Q hR# )r   Nr   r   r   )r0   r   rÍ   r   r-   r   ©r1   r¹   r'   s   &  r"   Útest_from_matrix_int_dtyper  Ö  sG   € à
�*‰*’i¢ªIÐ6Ó
7€CÜ×Ò˜SÓ!€AØ�9‰9‹;×ÑÔ 0°Ó 4Ô4Ð4Ò4r$   Úfrom_rotvecc                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   ß  s   € ÷ @ñ @¬ñ @r$   c                 óT  € R pV P                  . RO4      pV P                  VRV^,
          ,          R,           4      pV P                  . RO4      pV P                  VRV^,
          ,          R,           4      p\        P                  ! V4      p\	        VP                  4       WBR7       R# )çH¯¼šò×z>rx   Nr   rT   ©r{   )g§”×Jè®Þ?r   r   gž<Ñ(ì?rU   )r0   rV   r   r  r   r   )r1   rN   r`   ÚrotvecrL   Úresults   &&    r"   Útest_from_nd_single_rotvecr  Ý  sƒ   € ð €DØ�Z‰Zš	Ó"€FØ�Z‰Z˜ ¨¨q­Õ 1°DÕ 8Ó9€FØ—J‘JÒ;Ó<€MØ—J‘J˜}¨d°d¸QµhÕ.?À$Õ.FÓG€MÜ×!Ò! &Ó)€FÜ�F—N‘NÓ$ m×?r$   c                 óÐ   € R pV P                  . RO. RO. RO.4      pV P                  . RO. RO. RO.4      p\        \        P                  ! V4      P	                  4       W1R7       R# )	r
  rx   N©r   r&   r&   ©r   r|   rÐ   ©r   r   r   )g.pó¦GÕ?çcUÎ(§Gå?r  gQœHÕ²?)gNZ]óOÝ?gNZ]óOÝ¿gNZ]óOÍ?g0×þiç?r5   )r0   r   r   r  r   )r1   r`   r  rL   s   &   r"   Útest_from_generic_rotvecr  é  sa   € à€DØ�Z‰ZÚÚÚðó €Fð —J‘JÚ4Ú5Úð 
ó €Mô
 ”H×(Ò(¨Ó0×8Ñ8Ó:¸M×Ur$   c                 óœ  € V P                  R \        P                  ! ^4      ,          R\        P                  ! ^4      ,          R \        P                  ! ^4      ,          .. RO. RO.4      p\        P                  ! V4      P                  4       p\        VR,          V P                  R4      R	,          4       \        VR
,          VR,          R,          4       \        VR,          V P                  R4      R	,          4       \        VR,          V P                  . RO4      4       \        VR,          V P                  . RO4      4       R# )gü©ñÒMb@?r”   rÐ   g@ù»wÔØî?Ngü©ñÒMb@¿)çš™™™™™É?g333333Ó?rÉ   r  ©r   r{   r   )r   ºNr{   Nr¾   ©r   r{   )r   r  )g>Ü}²J¹?g„.eÞøÂ?g>Ü}²JÉ?rÁ   r¢   )r0   r£   r¤   r   r  r   r   r
   )r1   r  r®   s   &  r"   Útest_from_rotvec_small_angler  ø  sí   € à�Z‰ZØ	”—	’	˜!“Õ	˜e¤d§i¢i°£lÕ2°D¼4¿9º9ÀQ»<Õ4GÐHÚÚð
ó €Fô ×Ò Ó'×/Ñ/Ó1€Dä�D˜•J §
¡
¨3£°Õ 3Ô4ä�D˜•K ¨¥°#Õ!5Ô6ä�D˜•J §
¡
¨9Ó 5°bÕ 9Ô:Ü�D˜•KØ�J‰Jò %ó &ô'ô �D˜•L "§*¡*ª^Ó"<Ö=r$   Ú	as_rotvecc                  óþ  € \         P                  P                  ^{4      p \        P                  ! V R7      p\        P                  ! VP                  4       P                  4       4      pVP                  VRR7      '       g   Q h\        P                  ! ^V R7      p\        P                  ! VP                  4       P                  4       4      p\         P                  ! VP                  VRR7      4      '       g   Q hR# r  )	r8   rf   r}   r   r  r  r~   r   r€   r  s      r"   Útest_from_rotvec_array_liker    s»   € ä
�)‰)×
Ñ
 Ó
$€Cä—’ SÔ)€JÜ×Ò˜Z×1Ñ1Ó3×:Ñ:Ó<Ó=€AØ×"Ñ" 1¨5Ð"×1Ò1Ð1Ð1ô —’ ¨Ô,€JÜ×Ò˜Z×1Ñ1Ó3×:Ñ:Ó<Ó=€AÜ�6Š6�*×)Ñ)¨!°%Ð)Ó8×9Ò9Ð9Ò9r$   c                 ó¬   € V P                  . RO4      p\        P                  ! V4      pVP                  4       P                  \        V 4      8X  g   Q hR# )r   Nr   )r0   r   r  r   r-   r   )r1   r  r'   s   &  r"   Útest_from_rotvec_int_dtyper    s@   € à�Z‰Zš	Ó"€FÜ×Ò˜VÓ$€AØ�9‰9‹;×ÑÔ 0°Ó 4Ô4Ð4Ò4r$   c                 ó<  € V P                  R.^,          4      p\        P                  ! VRR7      pVP                  4       pV P                  V^´,          V P                  ,          4      p\        P                  ! V4      pVP                  4       p\        W64       R# )r   T©ÚdegreesNgvÃ´û0æ?)r0   r   r  r   Úpir   )r1   Úrotvec1Úrot1Úquat1Úrotvec2Úrot2Úquat2s   &      r"   Útest_degrees_from_rotvecr*  %  su   € à�j‰j˜.Ð)¨AÕ-Ó.€GÜ×Ò °Ô6€DØ�L‰L‹N€Eð �j‰j˜ 3�¨¯©Õ.Ó/€GÜ×Ò Ó(€DØ�L‰L‹N€Eä�EÖ!r$   c                 óÖ   € \         P                  ! \        R R7      ;_uu_ 4        \        P                  ! V P                  ^^.4      4       RRR4       R#   + '       g   i     R# ; i)ú Expected `rot_vec` to have shaper©   N)r«   r¬   r­   r   r  r0   ©r1   s   &r"   Útest_malformed_1d_from_rotvecr.  3  s?   € ä	�Š”zÐ)K×	LÖ	LÜ×Ò˜RŸZ™Z¨¨A¨Ó/Ô0÷ 
M×	L×	LÒ	Lús   ¥(AÁA(	c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   ;  s   € ÷ -ñ -¬Cñ -r$   c                 ó   € RV^,
          ,          R,           p\         P                  ! \        RR7      ;_uu_ 4        \        P                  ! V P                  V4      4       RRR4       R#   + '       g   i     R# ; i)r   r,  r©   NrT   ©r&   )r«   r¬   r­   r   r  Úones©r1   rN   rl   s   && r"   Útest_malformed_nd_from_rotvecr4  9  sO   € ð �D˜1•HÕ Õ$€EÜ	�Š”zÐ)K×	LÖ	LÜ×Ò˜RŸW™W U›^Ô,÷ 
M×	L×	LÒ	Lúó   ¼&A,Á,A=	c                 óæ  € \         P                  ! V 4      pWP                  8X  d   R MRpV P                  . RO. R	O. R
O.4      pV\	        VRRR7      ,          p\
        P                  ! V4      P                  4       p\	        VRR7      p\        VR,          V P                  V^,          4      4       \        V P                  P                  WCR,          4      V P                  R4      VR7       R# )r\   r
  T)r!   Úkeepdimsr    rx   Nr|   ©r   r&   r|   rÐ   ©r   r|   r   ga2U0*©3?r5   )re   r{   )re   r  r¸   )r.   r/   rã   r0   r   r   r   r  r   Úcosrå   Úcrossr•   )r1   r-   r`   r®   r  Úangles   &     r"   Útest_as_generic_rotvecr=  A  sº   € ä×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€DØ�:‰:ÚÚÚðó €Dð
 	ŒN˜4 b°4Ô8Õ8€Dä×Ò Ó%×/Ñ/Ó1€FÜ˜6¨Ô+€Eä�D˜•J §¡ u¨q¥yÓ 1Ô2Ü�B—I‘I—O‘O F°­KÓ8¸"¿(¹(À6Ó:JÐQU×Vr$   c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   U  s   € ÷ 4ñ 4¬Sñ 4r$   c                 óŒ  € V P                  . RO4      pV P                  VRV^,
          ,          R,           4      pV P                  . RO4      pV P                  VRV^,
          ,          R,           4      p\        P                  ! V4      P	                  4       p\        VP                  VP                  4       \        WC4       R# )r   N©r   r&   éýÿÿÿr&   rT   rU   )gj*0	¼xâ?g$¼xò?g:2 (µû¿r  )r0   rV   r   r   r  r   rl   r   )r1   rN   r®   Úexpected_rotvecÚactual_rotvecs   &&   r"   Útest_as_rotvec_single_nd_inputrD  S  s”   € ð �:‰:’mÓ$€DØ�:‰:�d˜D D¨1¥HÕ-°Õ4Ó5€DØ—j‘jÒ!CÓD€OØ—j‘j °$¸$À½(Õ2CÀdÕ2JÓK€OÜ×&Ò& tÓ,×6Ñ6Ó8€Mä�×$Ñ$ o×&;Ñ&;Ô<Ü�MÖ3r$   c                 óN  € V P                  . RO. RO. RO.4      p\        P                  ! V4      pVP                  RR7      p\	        VR	R7      p\        W@P                  R4      R
,          4       \        V^ ,          V^,          4       \        V^,          V^,          4       R# )r   Tr!  r    g      ^@Nr   r   r   r|   r   )r0   r   rÍ   r  r   r   )r1   r¹   rú   r  r<  s   &    r"   Útest_as_rotvec_degreesrF  `  s   € ð �*‰*’i¢ªIÐ6Ó
7€CÜ
×
Ò
˜sÓ
#€CØ�]‰] 4ˆ]Ó(€FÜ˜6¨Ô+€EÜ�EŸ:™: eÓ,¨RÕ0Ô1Ü�F˜1•I˜v a�yÔ)Ü�F˜1•I˜v a�yÖ)r$   c                 óú   € V P                  . RO. RO. RO.4      p\        \        P                  ! V4      P	                  4       V4       \        \        P                  ! VRR7      P	                  RR7      V4       R# )r   Tr!  Nr  ©r   r|   r&   )ga2U0*©3¿gÇº¸�ð6?ga2U0*©?)r0   r   r   r  r  )r1   r  s   & r"   Útest_rotvec_calc_pipelinerI  l  si   € ð �Z‰ZÚÚÚð
ó €Fô
 ”H×(Ò(¨Ó0×:Ñ:Ó<¸fÔEÜ”H×(Ò(¨¸Ô>×HÑHÐQUÐHÓVØör$   Úfrom_mrpc                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   {  s   € ÷ Iñ I¬Cñ Ir$   c                 óÐ  € V P                  . RO4      pV P                  VRV^,
          ,          R,           4      pV P                  . RO4      pV P                  VRV^,
          ,          R,           4      p\        P                  ! V4      p\	        VP                  4       VRR7       \        VP                  \        \        V4      P                  ^ 4      4      4      '       g   Q hR# )	r   rw   rx   N)r   r   r”   rT   r  )rˆ   r   r   r   rU   )r0   rV   r   rJ  r   r   Ú
isinstanceÚ_quatÚtyper   Úempty)r1   rN   ÚmrprL   r  s   &&   r"   Útest_from_mrp_single_nd_inputrR  y  s«   € ð �*‰*’[Ó
!€CØ
�*‰*�S˜$ $¨¥(Õ+¨dÕ2Ó
3€CØ—J‘Jš~Ó.€MØ—J‘J˜}¨d°d¸QµhÕ.?À$Õ.FÓG€MÜ×Ò˜sÓ#€FÜ�F—N‘NÓ$ m¸%Õ@ä�f—l‘l¤D¬¸Ó)=×)CÑ)CÀAÓ)FÓ$G×HÒHÐHÒHr$   c                  óþ  € \         P                  P                  ^{4      p \        P                  ! V R7      p\        P                  ! VP                  4       P                  4       4      pVP                  VRR7      '       g   Q h\        P                  ! ^V R7      p\        P                  ! VP                  4       P                  4       4      p\         P                  ! VP                  VRR7      4      '       g   Q hR# r  )	r8   rf   r}   r   rJ  Úas_mrpr~   r   r€   r  s      r"   Útest_from_mrp_array_likerU  †  s»   € Ü
�)‰)×
Ñ
 Ó
$€Cä—’ SÔ)€JÜ×Ò˜*×+Ñ+Ó-×4Ñ4Ó6Ó7€AØ×"Ñ" 1¨5Ð"×1Ò1Ð1Ð1ô —’ ¨Ô,€JÜ×Ò˜*×+Ñ+Ó-×4Ñ4Ó6Ó7€AÜ�6Š6�*×)Ñ)¨!°%Ð)Ó8×9Ò9Ð9Ò9r$   c                 ó¬   € V P                  . RO4      p\        P                  ! V4      pVP                  4       P                  \        V 4      8X  g   Q hR# )r   Nr   )r0   r   rJ  r   r-   r   )r1   rQ  r'   s   &  r"   Útest_from_mrp_int_dtyperW  “  s@   € à
�*‰*’YÓ
€CÜ×Ò˜#Ó€AØ�9‰9‹;×ÑÔ 0°Ó 4Ô4Ð4Ò4r$   c                 óÊ   € V P                  . RO. RO. RO.4      pV P                  . RO. RO. RO.4      p\        \        P                  ! V4      P	                  4       V4       R# )r   Nr  r  r  )r  rÉ   rÉ   gš™™™™™é¿)g}�+;±ã?g}�+;±ã¿g}�+;±Ó?gß¨Ó‰�Ø¿r5   )r0   r   r   rJ  r   )r1   rQ  rL   s   &  r"   Útest_from_generic_mrprY  š  s\   € à
�*‰*ÚÚÚðó €Cð —J‘JÚÚ:Úð ó €Mô ”H×%Ò% cÓ*×2Ñ2Ó4°mÖDr$   c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   ©  s   € ÷ *ñ *¬ñ *r$   c                 ó   € RV^,
          ,          R,           p\         P                  ! \        RR7      ;_uu_ 4        \        P                  ! V P                  V4      4       RRR4       R#   + '       g   i     R# ; i)r   zExpected `mrp` to have shaper©   NrT   r1  )r«   r¬   r­   r   rJ  r2  r3  s   && r"   Útest_malformed_nd_from_mrpr\  §  sO   € ð �D˜1•HÕ Õ$€EÜ	�Š”zÐ)G×	HÖ	HÜ×Ò˜"Ÿ'™' %›.Ô)÷ 
I×	H×	HÒ	Húr5  rT  c                 ó   € V P                  . RO. RO. RO.4      pV\        V^R7      R,          ,          pV P                  . RO. RO. R	O.4      p\        \        P                  ! V4      P                  4       V4       R# )
r   r    Nr8  r9  r5   rd   )gÚÁQUUÕ?g“vWUUå?çÚÁQUUÕ¿)çužF”Õxâ?gužF”Õxâ¿r_  r  )r0   r   r   r   r   rT  )r1   r®   Úexpected_mrps   &  r"   Útest_as_generic_mrpra  ¯  sr   € à�:‰:ÚÚÚðó €Dð 	ŒN˜4 aÔ(¨Õ1Õ1€Dà—:‘:Ú-Ú-Úðó €Lô ”H×&Ò& tÓ,×3Ñ3Ó5°|ÖDr$   c           	      ó  € V P                  \        P                  ! V P                  ^,          ^,          4      ) R^ .4      p\	        \
        P                  ! RV P                  . RO4      RR7      P                  4       V4       R# )r&   rˆ   r“   Tr!  N)i  r   r   )r0   r£   Útanr#  r   r   r‘   rT  )r1   r`  s   & r"   Útest_past_180_degree_rotationrd  ¾  s`   € ð —:‘:¤§¢¨¯©°­°Q­Ó 7Ð7¸¸aÐ@ÓA€LÜÜ×Ò˜E 2§:¡:ªkÓ#:ÀDÔI×PÑPÓRØör$   c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   Ë  s   € ÷ .ñ .¬#ñ .r$   c                 óŒ  € V P                  . RO4      pV P                  VRV^,
          ,          R,           4      pV P                  . RO4      pV P                  VRV^,
          ,          R,           4      p\        P                  ! V4      P	                  4       p\        VP                  VP                  4       \        WC4       R# )r   Nr@  rT   rU   )g²Š�Ä?g²Š�Ô?g‹O—ÁÞ¿r  )r0   rV   r   r   rT  r   rl   r   )r1   rN   r®   r`  Ú
actual_mrps   &&   r"   Útest_as_mrp_single_nd_inputrh  É  s”   € ð �:‰:’mÓ$€DØ�:‰:�d˜D D¨1¥HÕ-°Õ4Ó5€DØ—:‘:ÒCÓD€LØ—:‘:˜l¨D°D¸1µHÕ,=ÀÕ,DÓE€LÜ×#Ò# DÓ)×0Ñ0Ó2€Jä�×!Ñ! <×#5Ñ#5Ô6Ü�JÖ-r$   c                 óÖ   € V P                  . RO. RO. RO. RO.4      pV P                  . RO. RO. RO. RO.4      p\        \        P                  ! V4      P	                  4       V4       R# )r   Nr  rH  )gzŸp—y‚Ú?r   r   )çš™™™™™¹?r  rj  )gKÚ}\UUÅ¿gKÚ}\UUÅ?r^  )r0   r   r   rJ  rT  )r1   rg  r`  s   &  r"   Útest_mrp_calc_pipelinerk  Ö  sb   € à—‘ÚÚÚÚð	ó €Jð
 —:‘:ÚÚ.ÚÚð	ó €Lô
 ”H×%Ò% jÓ1×8Ñ8Ó:¸LÖIr$   c                 óä   € \         P                  ! R V P                  ^Z4      RR7      P                  4       pV P                  . RO4      \        P
                  ! ^4      ,          p\        W4       R# )r   Tr!  N©rˆ   r   r   r   )r   r‘   r0   r   r£   r¤   r   )r1   r®   rL   s   &  r"   Útest_from_euler_single_rotationrn  å  sJ   € ä×Ò˜s B§J¡J¨r£N¸DÔA×IÑIÓK€DØ—J‘Jš~Ó.´·²¸1³Õ=€MÜ�DÖ(r$   c           	      ó¦  € \         P                  ! \        R R7      ;_uu_ 4        \        P                  ! RV P                  ^ ^Z.4      4       RRR4       \         P                  ! \        R R7      ;_uu_ 4        \        P                  ! RV P                  ^Z.4      4       RRR4       R#   + '       g   i     Lf; i  + '       g   i     R# ; i)z&Expected last dimension of `angles` tor©   ÚXNÚXYZ)r«   r¬   r­   r   r‘   r0   r-  s   &r"   Ú test_from_euler_input_validationrr  ì  sˆ   € ô 
�Š”zÐ)Q×	RÖ	RÜ×Ò˜C §¡¨Q°¨GÓ!4Ô5÷ 
Sô 
�Š”zÐ)Q×	RÖ	RÜ×Ò˜E 2§:¡:¨r¨dÓ#3Ô4÷ 
SÑ	R÷ 
S×	Rú÷ 
S×	RÐ	Rús   ¥)B,Á:(B?Â,B<	Â?C	c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   ø  s   € ÷ )ñ )¬#ñ )r$   c                 ó„  € V P                  V P                  . RO4      RV^,
          ,          R,           4      p\        P                  ! RVRR7      P	                  4       pV P                  . RO4      \
        P                  ! ^4      ,          pV P                  VRV^,
          ,          R	,           4      p\        W44       R# )
r   r“   Tr!  N)r   r   éZ   rT   r  rm  rU   )rV   r0   r   r‘   r   r£   r¤   r   )r1   rN   Úanglesr®   rL   s   &&   r"   Útest_from_euler_nd_rotationrw  ö  s‰   € ð �Z‰Z˜Ÿ
™
¢:Ó.°¸¸q½Õ0AÀDÕ0HÓI€FÜ×Ò˜u f°dÔ;×CÑCÓE€DØ—J‘Jš~Ó.´·²¸1³Õ=€MØ—J‘J˜}¨d°d¸QµhÕ.?À$Õ.FÓG€MÜ�DÖ(r$   c                 óô   € \         P                  ! R V P                  ^Z4      RR7      P                  4       p\         P                  ! RV P                  ^Z4      RR7      P                  4       p\	        W4       R# )r   Tr!  ÚZN©r   r‘   r0   rX   r   )r1   Ú	extrinsicÚ	intrinsics   &  r"   Ú(test_single_intrinsic_extrinsic_rotationr}     sT   € ä×#Ò# C¨¯©°B«ÀÔF×PÑPÓR€IÜ×#Ò# C¨¯©°B«ÀÔF×PÑPÓR€IÜ�IÖ)r$   c                 ób  € \         P                  P                  ^ 4      pV P                  VP	                  ^ ^´RR7      4      pV P                  VR	R7      p\        P                  ! RVRR7      P                  4       p\        P                  ! RVRR7      P                  4       p\        WE4       R# )
r   ©ÚlowÚhighrz   r    r“   Tr!  ÚZYXN©rÔ   r{   r|   )
r8   rf   rg   r0   ÚrandintÚflipr   r‘   r   r   )r1   rë   ÚaÚbr   r   s   &     r"   Útest_from_euler_rotation_orderrˆ    s‰   € ô �)‰)×
Ñ
 Ó
"€CØ
�
‰
�3—;‘; 1¨3°V�;Ó<Ó=€AØ
�‰�˜ˆÓ€AÜ×Ò˜E 1¨dÔ3×;Ñ;Ó=€AÜ×Ò˜E 1¨dÔ3×;Ñ;Ó=€AÜ�AÖr$   c                 óÈ   € R p\         P                  ! RV P                  ^Z^Z.4      RR7      P                  4       pV P                  . RO. RO. RO.4      p\	        W#VR7       R# )	rw   ÚzxTr!  rx   Nr·   ©r   r   r|   r   rz  )r1   r`   r¹   rº   s   &   r"   Ú-test_from_euler_elementary_extrinsic_rotationrŒ    sY   € à€Dä
×
Ò
˜d B§J¡J°°B¨xÓ$8À$Ô
G×
QÑ
QÓ
S€CØ—:‘:ÚÚÚðó €Lô
 �C¨D×1r$   c           	      óš  € R pV P                  . RO. RO. RO.4      p\        P                  ! RVRR7      P                  4       p\	        VR	,          V P                  . R
O. RO. RO.4      VR7       \	        VR,          V P                  . RO. RO. RO.4      VR7       \	        VR,          V P                  . RO. RO. RO.4      VR7       R# )r
  ÚZXYTr!  rx   N©é   é<   é-   ©r�  r‘  r�  ©r’  r�  r‘  r¾   )g#ß Ž˜Ó?ç      Ð¿gÎ™þ6Õdí?)g$+¿ÆHì?ç‘+Pæz¶Û?çPï˜pž Æ¿)gPï˜pž Ö¿ç‘+Pæz¶ë?gPï˜pž Ö?r±   )g�”+aá?r•  çÉ(s=Ûé?)r™  r–  g�&(�¸‘Ù¿)r•  r˜  r–  rÁ   )gøaÎ}ƒ@¨?gF�6Ž˜ã¿gå^�µ@é?)g0	¼8–å?gF�6Ž˜ã?gä˜Ñ4ÍàÛ?)ç      è¿rÐ   r–  ©r0   r   r‘   rX   r   )r1   r`   rv  r¹   s   &   r"   Ú&test_from_euler_intrinsic_rotation_312rœ    sÊ   € à€DØ�Z‰ZÚÚÚð
ó €Fô
 ×
Ò
˜e V°TÔ
:×
DÑ
DÓ
F€Cä�C˜•K §¡Ú*Ú*Ú*ð-ó "ð õ	ô �C˜•K §¡Ú*Ú*Ú*ð-ó "ð õ	ô �C˜•K §¡Ú*Ú)Ú*ð-ó "ð ÷	r$   c           	      óŠ  € V P                  . RO. RO. RO.4      p\        P                  ! RVRR7      P                  4       p\	        VR,          V P                  . R	O. R
O. RO.4      4       \	        VR,          V P                  . RO. RO. RO.4      4       \	        VR,          V P                  . RO. RO. RO.4      4       R# )r�  ÚZXZTr!  Nr�  r“  r”  r¾   )ç>ìdôÌàÛ?gŠ ­µ@é¿r–  )çél>–å?ç^¯|‚@¨¿rš  )çó±XŽ˜ã?r¢  rÐ   r±   ©g      ä?g­ ¼,ÜÈä¿r–  ©g­ ¼,ÜÈä?g      À?rš  ©r–  ç      è?rÐ   rÁ   )r—  g4§&Õdí¿çß'Üež Ö?)ç³cÆHì?çó±XŽ˜Ó¿gß'Üež Ö¿)r–  ç      Ð?r˜  r›  ©r1   rv  r¹   s   &  r"   Ú&test_from_euler_intrinsic_rotation_313r¬  <  s¶   € à�Z‰ZÚÚÚð
ó €Fô
 ×
Ò
˜e V°TÔ
:×
DÑ
DÓ
F€Cä�C˜•K §¡Ú,Ú,Ú*ð-ó "ô ô �C˜•K §¡Ú+Ú*Ú'ð-ó "ô ô �C˜•K §¡Ú-Ú.Ú*ð-ó "ö r$   c           	      óŠ  € V P                  . RO. RO. RO.4      p\        P                  ! RVRR7      P                  4       p\	        VR,          V P                  . R	O. R
O. RO.4      4       \	        VR,          V P                  . RO. R
O. RO.4      4       \	        VR,          V P                  . RO. RO. RO.4      4       R# )r�  ÚzxyTr!  Nr�  r“  r”  r¾   )ç4§&Õdí?gPï˜pž Æ?r§  )rª  r–  g‘+Pæz¶ë¿)r©  r¨  r§  r±   )gä
”¹žíî?çŒ\�2×³­¿rª  )r°  g­ ¼,ÜÈì?r–  rÁ   )r   r¡  r¦  )r¢  r¢  rô   )g>ìdôÌàÛ¿çŠ ­µ@é?r–  r›  r«  s   &  r"   Ú&test_from_euler_extrinsic_rotation_312r²  X  s¶   € à�Z‰ZÚÚÚð
ó €Fô
 ×
Ò
˜e V°TÔ
:×
DÑ
DÓ
F€Cä�C˜•K §¡Ú+Ú+Ú-ð-ó "ô ô �C˜•K §¡Ú+Ú+Ú+ð-ó "ô ô �C˜•K §¡Ú,Ú,Ú,ð-ó "ö r$   c           	      óŠ  € V P                  . RO. RO. RO.4      p\        P                  ! RVRR7      P                  4       p\	        VR,          V P                  . R	O. R
O. RO.4      4       \	        VR,          V P                  . RO. RO. RO.4      4       \	        VR,          V P                  . RO. RO. RO.4      4       R# )r�  ÚzxzTr!  Nr�  r“  r”  r¾   )rŸ  gél>–å¿r¢  )r±  r¡  gó±XŽ˜ã¿r¥  r±   r£  r¤  rÁ   )r—  g³cÆHì¿r–  )r¯  r©  r•  )r§  r§  r˜  r›  r«  s   &  r"   Ú&test_from_euler_extrinsic_rotation_313rµ  t  s¶   € à�Z‰ZÚÚÚð
ó €Fô
 ×
Ò
˜e V°TÔ
:×
DÑ
DÓ
F€Cä�C˜•K §¡Ú-Ú.Ú)ð-ó "ô ô �C˜•K §¡Ú,Ú+Ú)ð-ó "ô ô �C˜•K §¡Ú,Ú,Ú+ð-ó "ö r$   c                  ó  € \         P                  P                  ^{4      p Rp\        P                  ! V R7      p\        P                  ! WP                  V4      P                  4       4      pVP                  VRR7      '       g   Q h\        P                  ! ^V R7      p\        P                  ! WP                  V4      P                  4       4      p\         P                  ! VP                  VRR7      4      '       g   Q hR# )ru   r“   rv   rw   rx   N)	r8   rf   r}   r   r‘   Úas_eulerr~   r   r€   )ro   Úorderr‚   r'   s       r"   Útest_from_euler_array_liker¹  �  sÄ   € Ü
�)‰)×
Ñ
 Ó
$€CØ€Eä—’ SÔ)€JÜ×Ò˜E×#6Ñ#6°uÓ#=×#DÑ#DÓ#FÓG€AØ×"Ñ" 1¨5Ð"×1Ò1Ð1Ð1ô —’ ¨Ô,€JÜ×Ò˜E×#6Ñ#6°uÓ#=×#DÑ#DÓ#FÓG€AÜ�6Š6�*×)Ñ)¨!°%Ð)Ó8×9Ò9Ð9Ò9r$   c                  ó  € \         P                  P                  ^{4      p V P                  R^´R7      p\        P
                  ! RVRR7      p\        P
                  ! R\        V4      RR7      pVP                  VRR7      '       g   Q hR# )	ru   )r€  r�  r   Tr!  rw   rx   NéLÿÿÿ)r8   rf   r}   Úuniformr   r‘   Úfloatr   )ro   Údegr‚   r'   s       r"   Útest_from_euler_scalarr¿  ž  sp   € Ü
�)‰)×
Ñ
 Ó
$€CØ
�+‰+˜$ Sˆ+Ó
)€CÜ×$Ò$ S¨#°tÔ<€JÜ×Ò˜C¤ s£°TÔ:€AØ×"Ñ" 1¨5Ð"×1Ò1Ð1Ò1r$   r·  Ú	seq_tupler“   r|  c                 óÞ  a € V 3R  lp\         P                  P                  ^ 4      pRp\         P                  ! V^34      pVP	                  \         P
                  ) \         P
                  V3R7      VR	&   VP	                  \         P
                  ) ^,          \         P
                  ^,          V3R7      VR
&   VP	                  \         P
                  ) \         P
                  V3R7      VR&   S P                  V4      pRP                  V4      pV'       d   VP                  4       p\        P                  ! Wv4      pVP                  V4      p	\        Wi^ RR7       V! W–,
          RR4       R# )c                 ó  <€ SP                  V ^ R7      pSP                  V ^ R7      pSP                  W44      pSP                  SP	                  V4      V8  4      '       g   Q hSP                  WR8  4      '       g   Q hR# ©r   r    N©ÚmeanÚstdÚhypotr€   r�   ©ÚerrorÚmean_maxÚrms_maxrÅ  rÆ  Úrmsr1   s   &&&   €r"   Ú
test_statsÚ1test_as_euler_asymmetric_axes.<locals>.test_stats«  ón   ø€ Ø�w‰w�u 1ˆwÓ%ˆØ�f‰f�U ˆfÓ#ˆØ�h‰h�tÓ!ˆØ�v‰v�b—f‘f˜T“l XÑ-×.Ò.Ð.Ð.Ø�v‰v�c‘m×$Ò$Ð$Ò$r$   éè  r  Ú rw   ©r`   r_   r\   ç›+¡†›„=N©re   r   ©re   r   ©re   r&   ©r8   rf   rg   rP  r¼  r#  r0   ÚjoinÚupperr   r‘   r·  r   ©
r1   rÀ  r|  rÍ  rë   Únrv  ÚseqÚrotationÚangles_quats
   f&&       r"   Útest_as_euler_asymmetric_axesrß  ¦  s  ø€ õ
%ô �)‰)×
Ñ
 Ó
"€CØ€AÜ�XŠX�q˜!�fÓ€FØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€Fˆ4�LØ—;‘;¤B§E¡E 6¨A¥:´B·E±E¸AµIÀQÀD�;ÓI€Fˆ4�LØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€Fˆ4�LØ�Z‰Z˜Ó€Fà
�'‰'�)Ó
€Cßð �i‰i‹kˆÜ×"Ò" 3Ó/€HØ×#Ñ# CÓ(€KÜ�F¨a°eÕ<Ùˆ{Õ# U¨EÖ2r$   c                 óÔ  a € V 3R  lp\         P                  P                  ^ 4      pRp\         P                  ! V^34      pVP	                  \         P
                  ) \         P
                  V3R7      VR	&   VP	                  ^ \         P
                  V3R7      VR
&   VP	                  \         P
                  ) \         P
                  V3R7      VR&   S P                  V4      pRP                  V^ ,          V^,          V^ ,          .4      pV'       d   VP                  4       p\        P                  ! Wv4      pVP                  V4      p	\        Wi^ RR7       V! W–,
          RR4       R# )c                 ó  <€ SP                  V ^ R7      pSP                  V ^ R7      pSP                  W44      pSP                  SP	                  V4      V8  4      '       g   Q hSP                  WR8  4      '       g   Q hR# rÃ  rÄ  rÈ  s   &&&   €r"   rÍ  Ú0test_as_euler_symmetric_axes.<locals>.test_statsÊ  rÏ  r$   rÐ  r  rÑ  gõ›ÙUö>=rÒ  r]   rÓ  NrÔ  rÕ  rÖ  r×  rÚ  s
   f&&       r"   Útest_as_euler_symmetric_axesrã  Å  s  ø€ õ
%ô �)‰)×
Ñ
 Ó
"€CØ€AÜ�XŠX�q˜!�fÓ€FØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€Fˆ4�LØ—;‘; 1¬2¯5©5¸°t�;Ó<€Fˆ4�LØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€Fˆ4�LØ�Z‰Z˜Ó€Fð �'‰'�9˜Q•< ¨1¥¨y¸­|Ð<Ó
=€CßØ�i‰i‹kˆÜ×"Ò" 3Ó/€HØ×#Ñ# CÓ(€KÜ�F¨a°gÕ>Ùˆ{Õ# U¨EÖ2r$   c              #   ó@  "  € V '       d*   \        \        R VR7      ;_uu_ 4        Rx € RRR4       R# \        P                  ! 4       ;_uu_ 4        \        P                  ! R4       Rx € RRR4       R#   + '       g   i     R# ; i  + '       g   i     R# ; i5i)zGimbal lock)rª   r1   NrÉ  )r   ÚUserWarningÚwarningsÚcatch_warningsÚsimplefilter)Úshould_warnr1   s   &&r"   Úmaybe_warn_gimbal_lockrê  ã  sg   é € çô œ¨M¸b×AÖAÛ÷ BÑAô ×$Ò$×&Õ&Ü×!Ò! 'Ô*Û÷ 'Ñ&÷	 B×AÐAú÷ '×&Ð&üs3   ‚#B¥A6ª'BÁB
Á,
BÁ6B	Â	BÂ
B	Â	BÚsuppress_warningsc                 ó0  € \         P                  ! V 4      pW@P                  8X  d   R MRpV P                  . RO. R	O. R
O. RO.4      pRP	                  V4      pV'       d   VP                  4       p\        P                  ! WvRR7      pVP                  4       p	\        V'       * V 4      ;_uu_ 4        VP                  VRVR7      p
RRR4       \        P                  ! VX
RR7      P                  4       p\        W›VR7       R#   + '       g   i     LF; i)rw   rá   rÑ  Tr!  ©r"  rë  Nrx   )r’  ru  é#   )rî  é¦ÿÿÿé   )rî  ru  é   )rñ  rï  é   ©r.   r/   rã   r0   rØ  rÙ  r   r‘   rX   rê  r·  r   ©r1   rÀ  r|  rë  r-   r`   rv  rÜ  rÝ  Úmat_expectedÚangle_estimatesÚmat_estimateds   &&&&        r"   Ú(test_as_euler_degenerate_asymmetric_axesrø  ñ  sê   € ô ×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€Dð �Z‰ZÚÚÚÚð	ó €Fð �'‰'�)Ó
€Cßð �i‰i‹kˆÜ×"Ò" 3¸Ô=€HØ×%Ñ%Ó'€Lä	Ð$5Ô 5°r×	:Õ	:Ø"×+Ñ+Ø˜Ð1Bð ,ó 
ˆ÷ 
;ô ×'Ò'¨¨_ÀdÔK×UÑUÓW€Mä�L°d×;÷ 
;×	:ús   Â2DÄD	c                 ó`  € \         P                  ! V 4      pW@P                  8X  d   R MRpV P                  . RO. R	O. R
O. RO.4      pRP	                  V^ ,          V^,          V^ ,          .4      pV'       d   VP                  4       p\        P                  ! WvRR7      pVP                  4       p	\        V'       * V 4      ;_uu_ 4        VP                  VRVR7      p
RRR4       \        P                  ! VX
RR7      P                  4       p\        W›VR7       R#   + '       g   i     LF; i)rw   rá   rÑ  Tr!  rí  Nrx   )rò  r   r‘  )rî  r   éK   )r‘  é´   rî  )rò  r»  rñ  ró  rô  s   &&&&        r"   Ú'test_as_euler_degenerate_symmetric_axesrü    sý   € ô ×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€Dð �Z‰ZÚÚÚÚð	ó €Fð �'‰'�9˜Q•< ¨1¥¨y¸­|Ð<Ó
=€Cßð �i‰i‹kˆÜ×"Ò" 3¸Ô=€HØ×%Ñ%Ó'€Lä	Ð$5Ô 5°r×	:Õ	:Ø"×+Ñ+Ø˜Ð1Bð ,ó 
ˆ÷ 
;ô ×'Ò'¨¨_ÀdÔK×UÑUÓW€Mä�L°d×;÷ 
;×	:ús   Ã
DÄD-	c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   <  s   € ÷ 
9ñ 
9¬ñ 
9r$   c                 ód  € V P                  . RO. RO. R	O.4      pV P                  VR
V^,
          ,          R,           4      p\        P                  ! V4      P	                  RRR7      pV P                  . RO4      pV P                  VR
V^,
          ,          R,           4      p\        W4RR7       R# )rˆ   r“   Tr!  rw   rx   Nr·   r   r   rT   r¸   )r   r   g     €V@r  )r0   rV   r   rÍ   r·  r   )r1   rN   r¹   rv  Úexpected_angless   &&   r"   Útest_as_euler_nd_rotationr   :  s–   € ð �*‰*ÚÚÚðó €Cð
 �*‰*�S˜$ $¨¥(Õ+¨fÕ4Ó
5€CÜ×!Ò! #Ó&×/Ñ/°¸tÐ/ÓD€FØ—j‘j¢Ó.€OØ—j‘j °$¸$À½(Õ2CÀdÕ2JÓK€OÜ�F°%×8r$   c                 ó0  € \         P                  ! V 4      pWP                  8X  d   R MRp\        P                  P                  ^ 4      p^
p\        P                  ! WCR7      p\        WP4      pVP                  4       pVP                  4       P                  4       pWg,          pWv,          p	V P                  V^^34      p
\         P                  ! V
4      R,          P                  V P                  ^4      4      p
\        WŠVR7       \        WšVR7       R	pWP                  8X  d   R MRpV P                  VP!                  VR
,           R7      VR7      p\        P"                  ! V4      pVP                  4       pVP                  4       P                  4       pWg,          pWv,          p	V P                  VR,           4      p\         P                  ! V4      R,          P                  V P                  ^4      4      p\        WŽVR7       \        WžVR7       R# )rw   r
  )ÚnumrÜ   rx   rá   ry   r,   N©.r  r  )rc   r{   é   rU   r¸   )r.   r/   rã   r8   rf   rg   r   r2   rX   rŸ   rP  rç   rè   rh   r   r0   r�   r   )r1   r-   r`   rë   rÛ  ÚpÚp_matÚq_matÚresult1Úresult2rï   Úbatch_shaper®   r'   Úeye_nds   &              r"   Útest_invr  I  s�  € ä×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€DÜ
�)‰)×
Ñ
 Ó
"€CØ
€Aä�Š˜AÔ0€AÜ�qÓ€AØ�K‰K‹M€EØ�E‰E‹G×ÑÓ€Eà�m€GØ�m€Gà�H‰H�a˜˜A�YÓ€EÜ�FŠF�5‹M˜+Õ&×*Ñ*¨2¯6©6°!«9Ó5€Eä�G¨Õ.Ü�G¨Õ.ð €KØŸZ™ZÔ'‰5¨T€DØ�:‰:�c—j‘j k°DÕ&8�jÓ9Àˆ:ÓG€DÜ×Ò˜4Ó €AØ�K‰K‹M€EØ�E‰E‹G×ÑÓ€EØ�m€GØ�m€GØ�X‰X�k FÕ*Ó+€FÜ�VŠV�F‹^˜KÕ(×,Ñ,¨R¯V©V°A«YÓ7€FÜ�G¨$Õ/Ü�G¨$×/r$   c                 ó´  € \         P                  ! V 4      pWP                  8X  d   R MRp\        P                  P                  R4      p\        \        P                  ! VR7      V 4      pVP                  4       pVP                  4       pVP                  4       pV P                  Wg4      pV P                  Wv4      p	V P                  ^4      p
\        WŠVR7       \        WšVR7       \        \        P                  ! ^VR7      V 4      pVP                  4       pVP                  4       pVP                  4       pV P                  P                  WÞ4      pV P                  P                  Wí4      pV P                  R4      p\         P                  ! V4      R,          P!                  V P                  ^4      4      p\        VVVR7       \        VVVR7       R# )	rw   r
  ì	   #Þ;h2ã9¾s+,g0øHn rv   rx   )r  ro   NrØ   r  )r.   r/   rã   r8   rf   r}   r2   r   rŸ   rX   ré   rh   r   rå   rP  rç   rè   )r1   r-   r`   ro   r  rp   r  r  Úres1Úres2rh   r   r   Úx_matrixÚy_matrixr  r	  rï   s   &                 r"   Útest_inv_single_rotationr  m  sU  € ä×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€DÜ
�)‰)×
Ñ
Ð GÓ
H€CÜ”x—’¨3Ô/°Ó4€AØ	�‰‹€Aà�K‰K‹M€EØ�K‰K‹M€EØ�9‰9�UÓ"€DØ�9‰9�UÓ"€Dà
�&‰&�‹)€Cä�D DÕ)Ü�D DÕ)ä”x—’¨1°#Ô6¸Ó;€AØ	�‰‹€Aà�{‰{‹}€HØ�{‰{‹}€HØ�i‰i×Ñ˜xÓ2€GØ�i‰i×Ñ˜xÓ2€Gà�H‰H�YÓ€EÜ�FŠF�5‹M˜+Õ&×*Ñ*¨2¯6©6°!«9Ó5€Eä�G˜U¨Õ.Ü�G˜U¨×.r$   Ú	magnitudec                 óð   € ^
p\        \        P                  ! V4      V 4      pV P                  V4      p\	        VP                  4       V4       \	        VP                  4       P                  4       V4       R# )rc   N)r2   r   Úidentityr•   r   r  rŸ   )r1   rÛ  r'   rö   s   &   r"   Útest_identity_magnituder  Ž  sT   € à
€AÜ”x×(Ò(¨Ó+¨RÓ0€AØ�x‰x˜‹{€HÜ�A—K‘K“M 8Ô,Ü�A—E‘E“G×%Ñ%Ó'¨Ö2r$   c                 ó¼   € \        \        P                  ! 4       V 4      pVP                  4       ^ 8X  g   Q hVP	                  4       P                  4       ^ 8X  g   Q hR# ©r   N)r2   r   r  r  rŸ   r…   s   & r"   Útest_single_identity_magnituder  —  sH   € ä”x×(Ò(Ó*¨BÓ/€AØ�;‰;‹=˜AÔÐÐØ�5‰5‹7×ÑÓ !Ô#Ð#Ò#r$   c                 óÄ  € \         P                  ! V 4      pWP                  8X  d   R MRp^
p\        \        P
                  ! V^ R7      V 4      p\        \        P                  ! V4      V 4      pWE,          p\        VP                  4       VP                  4       4       WdP                  4       ,          p\        VP                  4       V P                  V4      VR7       R# ©rw   r
  rv   rx   N©r.   r/   rã   r2   r   rf   r  r   r   rŸ   r  r•   ©r1   r-   r`   rÛ  r  rp   r  s   &      r"   Útest_identity_invariancer  ž  sž   € ä×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€DØ
€AÜ”x—’ q¨aÔ0°"Ó5€AÜ”x×(Ò(¨Ó+¨RÓ0€AØ�U€FÜ�A—I‘I“K §¡Ó!1Ô2à—e‘e“gÕ€FÜ�F×$Ñ$Ó&¨¯©°«¸$×?r$   c                 óÂ  € \         P                  ! V 4      pWP                  8X  d   R MRp^
p\        \        P
                  ! V^ R7      V 4      p\        \        P                  ! 4       V 4      pWE,          p\        VP                  4       VP                  4       4       WdP                  4       ,          p\        VP                  4       V P                  V4      VR7       R# r  r  r  s   &      r"   Útest_single_identity_invariancer!  ¬  sœ   € ä×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€DØ
€AÜ”x—’ q¨aÔ0°"Ó5€AÜ”x×(Ò(Ó*¨BÓ/€AØ�U€FÜ�A—I‘I“K §¡Ó!1Ô2à—e‘e“gÕ€FÜ�F×$Ñ$Ó&¨¯©°«¸$×?r$   c                  óF  € \         P                  ! RR 7      p V P                  4       P                  R	8X  g   Q h\         P                  ! ^R 7      p V P                  4       P                  R
8X  g   Q h\         P                  ! RR 7      p V P                  4       P                  R8X  g   Q h\         P                  ! RR 7      p \	        V P                  4       P                  R^4      \        P                  ! \        P                  ! ^4      R,          R4      4       \        P                  ! \        RR7      ;_uu_ 4        \         P                  ! RR 7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \         P                  ! ^RR7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \         P                  ! ^^4       RRR4       R#   + '       g   i     L›; i  + '       g   i     Li; i  + '       g   i     R# ; i))rl   ú)`shape` must be an int or a tuple of intsr©   ç      @Nú#Only one of `num` or `shape` can be)r  rl   z&takes from 0 to 1 positional argumentsr   rU   ©rH   rG   ©r&   r{   ©r&   r{   rG   ©r&   r&   r{   r|   )rI   r   ©r&   r&   )r   r  r   rl   r
   rV   r8   ri   rh   r«   r¬   r­   Ú	TypeErrorr=   s    r"   Útest_identity_shaper,  º  sX  € Ü×Ò Ô#€AØ�9‰9‹;×Ñ Ô$Ð$Ð$Ü×Ò Ô"€AØ�9‰9‹;×Ñ Ô&Ð&Ð&Ü×Ò Ô'€AØ�9‰9‹;×Ñ 	Ô)Ð)Ð)ä×Ò 	Ô*€AÜ�A—I‘I“K×'Ñ'¨¨AÓ.´·²¼¿º¸q»	À"½À~Ó0VÔWä	�Š”zÐ)T×	UÖ	UÜ×Ò Õ$÷ 
Vä	�Š”zÐ)N×	OÖ	OÜ×Ò˜a vÕ.÷ 
Pä	�Š”yÐ(P×	QÖ	QÜ×Ò˜!˜QÔ÷ 
RÑ	Q÷	 
V×	Uúç	O×	Oúç	Q×	QÐ	Qús$   Ä>G)ÆG<ÇHÇ)G9	Ç<H	ÈH 	c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   Ï  s   € ÷ -ñ -œSñ -r$   c                 óÒ  € RV^,
          ,          R,           pV P                  V P                  ^4      VR,           4      p\        P                  ! V4      pVP	                  4       pV P                  V P                  V P                  V P                  ^ .4      pV P                  Wb4      p\        WV4       \        P                  ! V) 4      pVP	                  4       p\        WV4       R# )r   NrT   rU   )rV   rh   r   r   r  r0   r#  r   )r1   rN   Ú
quat_shaper®   r'   r  Úexpected_results   &&     r"   Útest_magnituder1  Í  s­   € ð ˜ �Õ" TÕ)€JØ�:‰:�b—f‘f˜Q“i ¨dÕ!2Ó3€DÜ×Ò˜4Ó €AØ�[‰[‹]€FØ—j‘j "§%¡%¨¯©°·±°qÐ!9Ó:€OØ—j‘j Ó=€OÜ�FÔ,ä×Ò˜D˜5Ó!€AØ�[‰[‹]€FÜ�FÖ,r$   c                 óD  € \         P                  ! V P                  ^4      4      pV^ ,          P                  4       p\	        W P                  V P                  4      R,          4       V^,          P                  4       p\	        W0P                  R4      R,          4       R# )rG   rˆ   Nr   )r   r   rh   r  r   r0   r#  )r1   r'   r  r	  s   &   r"   Útest_magnitude_single_rotationr3  Ý  si   € ä×Ò˜2Ÿ6™6 !›9Ó%€AØ��d�n‰nÓ€GÜ�GŸZ™Z¨¯©Ó.¨rÕ2Ô3à��d�n‰nÓ€GÜ�GŸZ™Z¨›_¨RÕ0Ö1r$   r   c                 ó¼  € \         P                  P                  R 4      p\        P                  ! ^
VR7      p\        P                  ! ^
VR7      pW#P	                  4       ,          P                  4       p\        W 4      p\        W04      pV P                  \         P                  ! V4      4      p\        VP                  W54      V P                  V4      V8  4       R# )r  rv   N)r8   rf   r}   r   rŸ   r  r2   r0   Úmedianr
   r   )r1   ro   r  rp   Úr_magr`   s   &     r"   Útest_approx_equalr7  ç  s›   € ô �)‰)×
Ñ
Ð GÓ
H€CÜ�Š˜ Ô$€AÜ�Š˜ Ô$€AØ—‘“�[×#Ñ#Ó%€EÜ�qÓ€AÜ�qÓ€Aà�:‰:”b—i’i Ó&Ó'€DÜ�A—N‘N 1Ó+¨b¯j©j¸Ó.?À$Ñ.FÖHr$   c                 ó  € \         P                  ! V P                  . R
O4      4      p\         P                  ! V P	                  ^4      4      pVP                  V^,          4      '       g   Q hVP                  V^ ,          4      '       d   Q h\        VP                  V^ ,          4      \        P                  4      '       g   \        V 4      '       d   Q hVP                  V^,          RR7      '       d   Q hVP                  V^,          RRR7      '       d   Q h\        P                  ! \        RR7      ;_uu_ 4        VP                  V^,          RR7      '       g   Q h R	R	R	4       R	#   + '       g   i     R	# ; i)r   ç»½×Ùß|Û=rx   rÓ   T)r`   r"  zatol must be setr©   r!  N)r   r   g•Ö&è.>)r   r  r0   r   rh   r   rM  r8   Úbool_r   r«   Úwarnsrå  ©r1   r  rp   s   &  r"   Ú!test_approx_equal_single_rotationr=  ö  s  € ô 	×Ò˜RŸZ™ZªÓ5Ó6€AÜ×Ò˜2Ÿ6™6 !›9Ó%€AØ�>‰>˜!˜A�$×ÒÐÐØ�~‰~˜a �d×#Ò#Ð#Ð#ä�a—n‘n Q q¥TÓ*¬B¯H©H×5Ò5¼XÀb¿\º\ÐIÐIð �~‰~˜a �d¨ˆ~×/Ò/Ð/Ð/Ø�~‰~˜a �d¨°tˆ~×<Ò<Ð<Ð<Ü	�Š”kÐ);×	<Ö	<Ø�~‰~˜a �d¨Dˆ~×1Ò1Ð1Ñ1÷ 
=×	<×	<Ò	<ús   Ä?#E-Å-E>	c                 ó  € Rp\         P                  P                  ^ 4      p\        P                  ! VP                  VR,           R7      4      p\        P                  ! VP                  VR,           R7      4      pW4P                  4       ,          P                  4       p\        W04      p\        W@4      pVP                  V8X  g   Q hV P                  \         P                  ! V4      4      p\        VP                  WF4      V P                  V4      V8  4       \        P                  ! VP                  VR,           R7      4      p\        P                  ! VP                  RR7      4      pW4P                  4       ,          P                  4       p\        W04      p\        W@4      pVP                  V8X  g   Q hV P                  \         P                  ! V4      4      p\        VP                  WF4      V P                  V4      V8  4       \        P                  ! VP                  VR,           R7      4      p\        P                  ! VP                  RR7      4      pW4P                  4       ,          P                  4       p\        W04      p\        W@4      pVP                  V8X  g   Q hV P                  \         P                  ! V4      4      p\        VP                  WF4      V P                  V4      V8  4       R# )r&   ry   N)r&   rc   r{   rU   )r   rc   r   rG   ©r   r{   rG   )r8   rf   r}   r   r   r�   rŸ   r  r2   rl   r0   r5  r
   r   )r1   r
  ro   r  rp   r6  r`   s   &      r"   Útest_approx_equal_batchedr@    s3  € ð
 €KÜ
�)‰)×
Ñ
 Ó
"€CÜ×Ò˜3Ÿ:™:¨;¸Õ+=˜:Ó>Ó?€AÜ×Ò˜3Ÿ:™:¨;¸Õ+=˜:Ó>Ó?€AØ—‘“�[×#Ñ#Ó%€EÜ�qÓ€AÜ�qÓ€AØ�;‰;˜+Ô%Ð%Ð%à�:‰:”b—i’i Ó&Ó'€DÜ�A—N‘N 1Ó+¨b¯j©j¸Ó.?À$Ñ.FÔHô 	×Ò˜3Ÿ:™:¨;¸Õ+=˜:Ó>Ó?€AÜ×Ò˜3Ÿ:™:¨=˜:Ó9Ó:€AØ—‘“�[×#Ñ#Ó%€EÜ�qÓ€AÜ�qÓ€AØ�;‰;˜+Ô%Ð%Ð%Ø�:‰:”b—i’i Ó&Ó'€DÜ�A—N‘N 1Ó+¨b¯j©j¸Ó.?À$Ñ.FÔHô 	×Ò˜3Ÿ:™:¨;¸Õ+=˜:Ó>Ó?€AÜ×Ò˜3Ÿ:™:¨9˜:Ó5Ó6€AØ—‘“�[×#Ñ#Ó%€EÜ�qÓ€AÜ�qÓ€AØ�;‰;˜+Ô%Ð%Ð%Ø�:‰:”b—i’i Ó&Ó'€DÜ�A—N‘N 1Ó+¨b¯j©j¸Ó.?À$Ñ.FÖHr$   c                 ót  € \         P                  ! V P                  R4      4      p\         P                  ! V P                  R4      4      p\        P                  ! \
        RR7      ;_uu_ 4        VP                  V4       RRR4       \         P                  ! V P                  R4      4      p\         P                  ! V P                  R4      4      p\        P                  ! \
        RR7      ;_uu_ 4        VP                  V4       RRR4       R#   + '       g   i     Lš; i  + '       g   i     R# ; i)r&   zbroadcastable shapesr©   Nr(  ©r{   r&   rG   ©r&   rG   ©r{   rG   )r   r   r2  r«   r¬   r­   r   r<  s   &  r"   Ú*test_approx_equal_batched_input_validationrE  -  sÈ   € ä×Ò˜2Ÿ7™7 9Ó-Ó.€AÜ×Ò˜2Ÿ7™7 9Ó-Ó.€AÜ	�Š”zÐ)?×	@Ö	@Ø	�‰�qÔ÷ 
Aô 	×Ò˜2Ÿ7™7 6›?Ó+€AÜ×Ò˜2Ÿ7™7 6›?Ó+€AÜ	�Š”zÐ)?×	@Ö	@Ø	�‰�qÔ÷ 
AÑ	@÷ 
A×	@ú÷
 
A×	@Ð	@ús   Á/DÃ7D&ÄD#	Ä&D7	rÅ  c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   >  s   € ÷ 	@ñ 	@œñ 	@r$   c                 ó,  € V P                  V P                  ^4      ) V P                  ^4      34      pV P                  VRV^,
          ,          R,           4      pV P                  ^ V P                  ^,          ^d4      pV P                  R4      R,          p\        V 4      V P                  J d   RMRpV F[  p\        P                  ! Wb,          4      P                  4       pVP                  R8X  g   Q h\        VP                  4       WER7       K]  	  R# )	r{   rˆ   rá   r9  rx   NrT   rƒ  r   )Úconcatrh   rV   Úlinspacer#  r0   r   rA   r   r  rÅ  rl   r   r  )r1   rN   ÚaxesÚthetasÚdesiredr`   ÚtÚr_means   &&      r"   Ú	test_meanrO  :  sÔ   € ð
 �9‰9�r—v‘v˜a“y�j "§&¡&¨£)Ð,Ó-€DØ�:‰:�d˜D D¨1¥HÕ-°Õ6Ó7€DØ�[‰[˜˜BŸE™E A�I sÓ+€FØ�j‰j˜‹o˜bÕ!€GÜ# BÓ'¨2¯:©:Ó5‰4¸5€DÛˆÜ×%Ò% a¥hÓ/×4Ñ4Ó6ˆØ�|‰|˜rÔ!Ð!Ð!Ü˜×(Ñ(Ó*¨G×?ó r$   c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   N  s   € ÷ ñ œSñ r$   c                 ó4  € V P                  V P                  V P                  ^4      ) V P                  ^4      34      R	V^,
          ,          R
,           4      pV P                  ^,          p\        P
                  ! W2,          4      pV P                  VP                  RR R4      pV^8X  d
   VR,          p\        V 4      V P                  J d   RMRp\        VP                  RR7      P                  4       WVR7       V P                  VP                  ^R R4      pV^8  d
   VR,          p\        VP                  RR7      P                  4       WVR7       VP                  RR7      p\        VP                  RR7      VP                  RR7      VR7       R# )r{   Nrˆ   rá   r9  r    rx   Tr‰   r  ©r   r   rÊ   r   r|   )r   r|   )ri   rH  rh   r#  r   r  Úfullrl   r   rA   r   rÅ  r  r   )r1   rN   rJ  Úthetar'   rL  r`   rN  s   &&      r"   Útest_mean_axisrU  J  sB  € ð
 �7‰7�2—9‘9˜rŸv™v a›y˜j¨"¯&©&°«)Ð4Ó5°t¸tÀa½xÕ7HÈ6Õ7QÓR€DØ�E‰E�A�I€EÜ×Ò˜U�\Ó*€Að �g‰g�d—j‘j  "�o sÓ+€GØˆq„yØ˜"•+ˆÜ# BÓ'¨2¯:©:Ó5‰4¸5€DÜ�A—F‘F �F“O×-Ñ-Ó/°ÕDð �g‰g�d—j‘j  2Ð&¨Ó,€GØˆa„xØ˜"•+ˆÜ�A—F‘F �FÓ(×2Ñ2Ó4°gÕIð �V‰V˜ˆV‹_€FÜ�F—N‘N¨T�NÓ2°A·I±IÈ°IÓ4MØ÷r$   c           	      ó@  € \         P                  ! V 4      V P                  8X  d   R MRp\        P                  P                  ^ 4      pV P                  VP                  R
R7      \         P                  ! V 4      R7      p\        P                  ! V4      pVP                  ^ R7      p\        VP                  ^,          4       F¨  p\        VP                  ^,          4       F…  p\        P                  ! VRWgR3,          4      P                  4       p\        WV,          V,          VP                  4       ,          P                  4       V P                  R4      R,          VR7       K‡  	  Kª  	  VP                  RR7      p	\        VP                  ^ ,          4       F|  p\        P                  ! W6R3,          4      P                  4       p\        W–,          VP                  4       ,          P                  4       V P                  R4      R,          VR7       K~  	  R	# )r9  rá   ry   r,   r    re   .rˆ   rx   N)rG   rH   rÔ   rG   r   ©r   r&   )r.   r/   rã   r8   rf   r}   r0   r�   r   r   rÅ  rk   rl   r   rŸ   r  )
r1   r`   ro   rp   r'   Úmean_0rq   ÚjÚ
mean_sliceÚmean_1_2s
   &         r"   Útest_mean_compare_axisr\  f  s  € ô ×%Ò% bÓ)¨R¯Z©ZÔ7‰5¸T€DÜ
�)‰)×
Ñ
 Ó
"€CØ
�
‰
�3—:‘: <�:Ó0¼×8IÒ8IÈ"Ó8Mˆ
ÓN€AÜ×Ò˜1Ó€Aà�V‰V˜ˆV‹^€FÜ�1—7‘7˜1•:ÖˆÜ�q—w‘w˜q•zÖ"ˆAÜ!×+Ò+¨A¨a°°s¨l­OÓ<×AÑAÓCˆJÜ˜V�Y q�\¨J¯N©NÓ,<Õ<×GÑGÓIØŸJ™J s›O¨BÕ/°d÷<ó #ñ ð
 �v‰v˜6ˆvÓ"€HÜ�1—7‘7˜1•:ÖˆÜ×'Ò'¨¨S¨&­	Ó2×7Ñ7Ó9ˆ
Ü˜� z§~¡~Ó'7Õ7×BÑBÓDØŸ
™
 3›¨Õ+°$÷	8ó r$   c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*     s   € ÷ Iñ I¤ñ Ir$   c                 ó´  € V P                  ^ V P                  ^,          ^d4      pV3V^,
          ,          pV P                  . RO. RO. RO.4      pV P                  ^^.4      pV P                  WCR,           4      pV P                  WSR	,           4      pV P                  R4      R
,          pV F§  p\        P
                  ! WtR,          ,          4      pVP                  VR7      p	\        P
                  ! Wt,          4      p
V
P                  4       pVP                  R
8X  g   Q h\        W¹P                  4       ,          P                  4       VRR7       K©  	  R# )r   rˆ   ©Úweightsrá   rx   N)rˆ   r   r   r   rR  rT   r   ).ºNr&   Nre   )rI  r#  r0   ri   r   r  rÅ  rl   r   rŸ   r  )r1   rN   rK  r
  rJ  r`  rö   rM  ÚrwÚmwr'   Úms   &&          r"   Útest_weighted_meanre  |  s  € ð
 �[‰[˜˜BŸE™E A�I sÓ+€Fð �'˜T A�XÕ&€KØ�:‰:’{¢IªyÐ9Ó:€DØ�j‰j˜!˜Q˜Ó €GØ�7‰7�4 vÕ-Ó.€DØ�g‰g�g¨TÕ1Ó2€Gà�z‰z˜#‹˜rÕ"€HÛˆÜ×!Ò! !¨:Õ&6Õ"6Ó7ˆØ�W‰W˜WˆWÓ%ˆä× Ò  ¥Ó*ˆØ�F‰F‹HˆØ�w‰w˜"Œ}Ðˆ}Ü˜ŸV™V›X�×0Ñ0Ó2°HÀ4×Hó r$   c                 ó®  € \         P                  ! V P                  ^4      4      p\        VP	                  4       4      '       dV   VP                  V P                  ^4      ) R7      pV P                  V P                  VP                  4      4      '       g   Q hMO\        P                  ! \        RR7      ;_uu_ 4        VP                  V P                  ^4      ) R7       RRR4       \         P                  ! V P                  R
4      4      p\        P                  ! \        RR7      ;_uu_ 4        VP                  V P                  R4      R7       RRR4       \         P                  ! V P                  R4      4      p\        P                  ! \        RR7      ;_uu_ 4        VP                  V P                  R4      R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        VP                  ^R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        VP                  RR7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        VP                  R	R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        VP                  RR7       RRR4       R#   + '       g   i     ELõ; i  + '       g   i     EL–; i  + '       g   i     EL7; i  + '       g   i     EL; i  + '       g   i     Là; i  + '       g   i     L´; i  + '       g   i     R# ; i)rG   r_  znon-negativer©   NzExpected `weights` tozaxis .* is out of boundsr    z+`axis` must be None, int, or tuple of ints.Ú0rD  r1  r(  r*  )r|   r&   iôÿÿÿ)r   r   rh   r   r   rÅ  r2  r€   r²   rN  r«   r¬   r­   )r1   r'   rd  s   &  r"   Útest_mean_input_validationrh  •  s  € ä×Ò˜2Ÿ6™6 !›9Ó%€AÜ�Q—Y‘Y“[×!Ò!Ø�F‰F˜BŸG™G A›J˜;ˆFÓ'ˆØ�v‰v�b—h‘h˜qŸw™wÓ'×(Ò(Ð(Ñ(ä�]Š]œ:¨^×<Ö<Ø�F‰F˜BŸG™G A›J˜;ˆFÔ'÷ =ô 	×Ò˜2Ÿ7™7 6›?Ó+€AÜ	�Š”zÐ)@×	AÖ	AØ	�‰�r—w‘w˜t“}ˆÔ%÷ 
Bä×Ò˜2Ÿ7™7 9Ó-Ó.€AÜ	�Š”zÐ)@×	AÖ	AØ	�‰�r—w‘w˜v“ˆÔ'÷ 
Bô 
�Š”zÐ)D×	EÖ	EØ	�‰�AˆŒ÷ 
Fä	�Š”zÐ)D×	EÖ	EØ	�‰�GˆÔ÷ 
Fä	�Š”zÐ)V×	WÖ	WØ	�‰�CˆÔ÷ 
Xä	�Š”zÐ)D×	EÖ	EØ	�‰�CˆÔ÷ 
FÑ	E÷% =×<Ð<ú÷
 
B×	AÐ	Aú÷ 
B×	AÐ	Aú÷ 
F×	EÐ	Eúç	E×	Eúç	W×	Wúç	E×	EÐ	EúsT   Â>#KÄ2"K!Æ%"K5Ç3L	È2LÉ1L0Ê0MËK	Ë!K2	Ë5L	Ì	L	ÌL-	Ì0M 	ÍM	Úreducec                 ó¨   € \         P                  ! V P                  . RO4      4      pVP                  RR7      p\	        V\         4      '       g   Q hR# )rˆ   F©Úreturn_indicesN©rˆ   rˆ   rˆ   r”   )r   r   r0   ri  rM  )r1   r'   r  s   &  r"   Útest_reduction_no_indicesrn  ²  s?   € ä×Ò˜2Ÿ:™:Ò&:Ó;Ó<€AØ�X‰X UˆXÓ+€FÜ�fœh×'Ò'Ð'Ò'r$   c                 óè   € \         P                  ! V P                  . RO4      4      pVP                  RR7      p\	        V4      \
        J g   Q h\        V4      ^8X  g   Q hVw  r4pVe   Q hVe   Q hR# )rˆ   Trk  Nrm  )r   r   r0   ri  rO  ÚtupleÚlen)r1   r'   r  ÚreducedÚ	left_bestÚ
right_bests   &     r"   Útest_reduction_none_indicesru  ¹  sr   € ä×Ò˜2Ÿ:™:Ò&:Ó;Ó<€AØ�X‰X TˆXÓ*€FÜ�‹<œ5Ó Ð Ð Üˆv‹;˜!ÔÐÐà%+Ñ"€G˜
ØÒÐÐØÒÐÒr$   c                 ó¬  € \         P                  ! V 4      pWP                  8X  d   R MRp\        P                  P                  R4      p\        P                  ! ^VR7      p\        P                  ! ^
VR7      p\        P                  ! ^VR7      p\        W@4      p\        WP4      p\        W`4      p	V	P                  WxRR7      w  r«p\        P                  ! \        V4      \        V4      \        V4      34      p\        V4       Fm  w  rï\        V4       FY  w  pp\        V4       FD  w  pp\        P                  ! VV,          V,          P                  4       ^,          4      WÞVV3&   KF  	  K[  	  Ko  	  \        P                  ! \        P                  ! V^^ 4      VP                   ^,          R	34      p\        P"                  ! \        P                  ! V\        V	4      R	34      ^R7      pV P%                  V\        V4      ,          4      pV P%                  V\        V4      ,          4      pV P'                  VV8H  4      '       g   Q hV P'                  VV8H  4      '       g   Q hVV,          V	,          VV,          ,          pV
P)                  4       V,          P+                  4       p\-        VV P                  \        V	4      4      VR7       R# )
rw   rá   r  rv   Trk  r    rx   Nr|   )r.   r/   rã   r8   rf   r}   r   r2   ri  r•   rq  Ú	enumerater�   r   rV   Úmoveaxisrl   Úargmaxr0   r€   rŸ   r  r   )r1   r-   r`   ro   Úl_npÚr_npÚp_npÚlr'   r  rr  rs  rt  Úscalarsrq   ÚlirY  ÚpjÚkÚrkÚmax_indÚleft_best_checkÚright_best_checkÚreduced_checkÚmags   &                        r"   Ú!test_reduction_scalar_calculationrˆ  Å  s   € ä×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€DÜ
�)‰)×
Ñ
Ð GÓ
H€CÜ�?Š?˜1 #Ô&€DÜ�?Š?˜2 3Ô'€DÜ�?Š?˜1 #Ô&€DÜ�tÓ €AÜ�tÓ €AÜ�tÓ €AØ%&§X¡X¨aÀ4 XÓ%HÑ"€G˜
ô �hŠhœ˜D›	¤3 t£9¬c°$«iÐ8Ó9€GÜ˜4–‰ˆÜ˜t–_‰EˆAˆrÜ" 4ž‘��2Ü#%§6¢6¨2°­7°R­<×*@Ñ*@Ó*BÀ1Õ*EÓ#F�˜1˜a˜Ó ó )ó %ñ !ô �jŠjœŸš W¨a°Ó3°g·m±mÀAÕ6FÈÐ5KÓL€Gä�iŠiœŸ
š
 7¬S°«V°R¨LÓ9ÀÔB€GØ—j‘j ¬C°«FÕ!2Ó3€OØ—z‘z '¬C°«FÕ"2Ó3ÐØ�6‰6�)˜Ñ.×/Ò/Ð/Ð/Ø�6‰6�*Ð 0Ñ0×1Ò1Ð1Ð1à�oÕ&¨Õ*¨QÐ/?Õ-@Õ@€MØ�;‰;‹=˜=Õ(×
3Ñ
3Ó
5€CÜ�C˜Ÿ™¤# a£&Ó)°×5r$   Úapplyc                 ó�  € \         P                  ! V 4      pV P                  . RO. RO. RO.4      p\        P                  ! V4      p\        P                  ! V P                  V^ R7      4      pV P                  . R	OVR7      pV P                  V^ R7      pV P                  . R
OVR7      pV P                  V^ R7      p\        VP                  V4      V4       \        VP                  V4      V4       \        VP                  V4      V4       \        VP                  V4      V4       V P                  . ROVR7      p	V P                  V	^ R7      p
\        VP                  VRR7      V	4       \        VP                  VRR7      V
4       \        VP                  VRR7      V
4       \        VP                  VRR7      V
4       R# )r   r    r,   T©ÚinverseN©r   r|   r   r   r   )r”   r&   r{   ©g       Àr   r{   ©g       @r|   r{   )r.   r/   r0   r   rÍ   Úexpand_dimsr   r‰  )r1   r-   r¹   Úr_1dÚr_2dÚv_1dÚv_2dÚv1d_rotatedÚv2d_rotatedÚv1d_inverseÚv2d_inverses   &          r"   Ú'test_apply_single_rotation_single_pointr™  å  sq  € ä×Ò˜bÓ!€EØ
�*‰*ÚÚÚðó €Cô
 ×Ò Ó$€DÜ×Ò §¡¨s¸ Ó ;Ó<€Dà�:‰:’k¨ˆ:Ó/€DØ�>‰>˜$ Qˆ>Ó'€DØ—*‘*š\°�*Ó7€KØ—.‘. °1�.Ó5€Kä�D—J‘J˜tÓ$ kÔ2Ü�D—J‘J˜tÓ$ kÔ2Ü�D—J‘J˜tÓ$ kÔ2Ü�D—J‘J˜tÓ$ kÔ2à—*‘*š\°�*Ó7€KØ—.‘. °1�.Ó5€Kä�D—J‘J˜t¨T�JÓ2°KÔ@Ü�D—J‘J˜t¨T�JÓ2°KÔ@Ü�D—J‘J˜t¨T�JÓ2°KÔ@Ü�D—J‘J˜t¨T�JÓ2°KÖ@r$   c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*     s   € ÷ :ñ :¼ñ :r$   c                 ó$  € \         P                  ! V 4      pV P                  . RO. R	O. R
O.4      p\        P                  ! V4      p\        P                  ! V P                  V^ R7      4      p\        P                  P                  ^ 4      pV3V^,
          ,          pV P                  VP                  VR,           R7      VR7      pV P                  VR,          ) VR,          VR,          .RR7      p	\        VP                  V4      V	4       \        VP                  V4      V	4       V P                  VR,          VR,          ) VR,          .RR7      p
\        VP                  VRR7      V
4       \        VP                  VRR7      V
4       R# )r   r    ry   r,   Tr‹  Nr|   r�  r   r   r'  ©.r   ©.r   ).r&   )r.   r/   r0   r   rÍ   r�  r8   rf   r}   r�   rõ   r   r‰  )r1   rN   r-   r¹   Úr1Úr2ro   r
  ÚvÚ	v_rotatedÚ	v_inverses   &&         r"   Ú*test_apply_single_rotation_multiple_pointsr£    sE  € ô ×Ò˜bÓ!€EØ
�*‰*ÚÚÚðó €Cô
 
×	Ò	˜cÓ	"€BÜ	×	Ò	˜bŸn™n¨S°q˜nÓ9Ó	:€Bä
�)‰)×
Ñ
 Ó
"€CØ�'˜T A�XÕ&€KØ
�
‰
�3—:‘: ;°Õ#7�:Ó8Àˆ
ÓF€AØ—‘˜1˜V�9˜* a¨¥i°°6µÐ;À"�ÓE€Iä�B—H‘H˜Q“K Ô+Ü�B—H‘H˜Q“K Ô+à—‘˜!˜F�) a¨¥i Z°°6µÐ;À"�ÓE€Iä�B—H‘H˜Q¨�HÓ-¨yÔ9Ü�B—H‘H˜Q¨�HÓ-¨yÖ9r$   c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*     s   € ÷ :ñ :¼ñ :r$   c                 óp  € \         P                  ! V 4      p\        P                  ! R4      p\        P                  ! . RO. RO. R	O.4      V^ &   \        P                  ! . RO. R
O. RO.4      V^&   V P                  W2R7      pV3V^,
          ,          pV P                  W4R,           4      p\        P                  ! V4      pV P                  . RO4      pV P                  V^ R7      pV P                  . RO. RO.4      pV P                  W„R,           4      p\        VP                  V4      V4       \        VP                  V4      V4       V P                  . RO. RO.4      p	V P                  W”R,           4      p	\        VP                  VRR7      V	4       \        VP                  VRR7      V	4       R# )r&   r,   r    Tr‹  N©r&   r{   r{   r�  r   r   r‹  r   ©r   r   r   ©r   r&   r{   rŽ  )r   rA  r&   rR  r�  )r   r{   rÊ   )r.   r/   r8   rP  r9   r0   ri   r   rÍ   r�  r   r‰  )
r1   rN   r-   r¹   r
  r'   Úv1Úv2r¡  r¢  s
   &&        r"   Ú*test_apply_multiple_rotations_single_pointr«    sg  € ô ×Ò˜bÓ!€EÜ
�(Š(�9Ó
€CÜ�XŠXÚÚÚðó €Cˆ�Fô
 �XŠXÚÚÚðó €Cˆ�Fð
 �*‰*�Sˆ*Ó
&€CØ�'˜T A�XÕ&€KØ
�'‰'�# YÕ.Ó
/€CÜ×Ò˜SÓ!€Aà	�‰’IÓ	€BØ	�‰˜ ˆÓ	#€Bà—
‘
šLª*Ð5Ó6€IØ—‘˜	°Õ#7Ó8€Iä�A—G‘G˜B“K Ô+Ü�A—G‘G˜B“K Ô+à—
‘
šLª*Ð5Ó6€IØ—‘˜	°Õ#7Ó8€Iä�A—G‘G˜B¨�GÓ-¨yÔ9Ü�A—G‘G˜B¨�GÓ-¨yÖ9r$   c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   C  s   € ÷ 9ñ 9¼Cñ 9r$   c                 óî  € \         P                  ! V 4      p\        P                  ! R4      p\        P                  ! . RO. RO. RO.4      V^ &   \        P                  ! . RO. R	O. R
O.4      V^&   V P                  W2R7      pV3V^,
          ,          pV P                  W4R,           4      p\        P                  ! V4      pV P                  . RO. RO.VR7      pV P                  . RO. RO.VR7      pV P                  WtR,           4      p\        VP                  V4      V4       V P                  . RO. RO.VR7      pV P                  W„R,           4      p\        VP                  VRR7      V4       R# )r&   r,   Tr‹  Nr¦  r�  r   r   r‹  r   r§  r¨  ©rG   rH   rÔ   rŽ  )rG   iúÿÿÿrH   rR  r�  )rG   rÔ   éûÿÿÿ)r.   r/   r8   rP  r9   r0   ri   r   rÍ   r   r‰  )	r1   rN   r-   r¹   r
  r'   r   r¡  r¢  s	   &&       r"   Ú-test_apply_multiple_rotations_multiple_pointsr°  A  s=  € ô ×Ò˜bÓ!€EÜ
�(Š(�9Ó
€CÜ�XŠXÚÚÚðó €Cˆ�Fô
 �XŠXÚÚÚðó €Cˆ�Fð
 �*‰*�Sˆ*Ó
&€CØ�'˜T A�XÕ&€KØ
�'‰'�# YÕ.Ó
/€CÜ×Ò˜SÓ!€Aà
�
‰
’IšyÐ)°ˆ
Ó7€AØ—
‘
šLª*Ð5¸U�
ÓC€IØ—‘˜	°Õ#7Ó8€IÜ�A—G‘G˜A“J 	Ô*à—
‘
šLª*Ð5¸U�
ÓC€IØ—‘˜	°Õ#7Ó8€IÜ�A—G‘G˜A t�GÓ,¨iÖ8r$   c                 ó  € \         P                  P                  ^ 4      p. ROp. ROp\        W24       FÒ  w  rEV P	                  VP                  VR,           R7      4      pV P	                  VP                  VR,           R7      4      p\        P                  ! V4      p\         P                  ! WE4      R,           p	VP                  V4      p
V
P                  V	8X  g   Q hVP                  VRR7      p
V
P                  V	8X  d   KÒ  Q h	  R# )	r   ry   Tr‹  N)r   rT   r1  rW  )rH   r   r&   )r   rT   r1  rW  )rG   r&   )r   rG   r&   )rH   rG   r&   )rÔ   rH   rG   r&   r  rU   )r8   rf   r}   r   r0   r�   r   r   Úbroadcast_shapesr‰  rl   )r1   ro   Úvector_shapesÚ
rot_shapesÚq_shapeÚv_shaper   rp   r'   rl   r   s   &          r"   Útest_apply_shapesr·  _  sÔ   € ä
�)‰)×
Ñ
 Ó
"€Câ7€MÚU€Jä# JÖ>ÑˆØ�J‰J�s—z‘z w°¥~�zÓ6Ó7ˆØ�J‰J�s—z‘z w°¥~�zÓ6Ó7ˆÜ×Ò˜qÓ!ˆÜ×#Ò# GÓ5¸Õ<ˆØ�G‰G�A‹JˆØ�w‰w˜%ÔÐÐØ�G‰G�A˜tˆGÓ$ˆØ�w‰w˜%ÖÐÐó ?r$   c                  ó¶  € \         P                  P                  ^{4      p \        P                  ! V R7      pV P	                  R^dRR7      pVP                  VP                  4       4      pVP                  V4      p\        W4RR7       V P	                  R^dRR7      pVP                  VP                  4       4      pVP                  V4      p\        W4RR7       R# )	ru   rv   ry   rw   rx   Niœÿÿÿr  r'  )r8   rf   r}   r   r¼  r‰  r~   r   )ro   r'   rM  r   Ú
v_expecteds        r"   Útest_apply_array_likerº  q  s¢   € Ü
�)‰)×
Ñ
 Ó
$€Cä�Š˜CÔ €AØ�‰�D˜# DˆÓ)€AØ	�‰�—‘“
Ó€AØ—‘˜“€JÜ�A¨Õ.à�‰�D˜# FˆÓ+€AØ	�‰�—‘“
Ó€AØ—‘˜“€JÜ�A¨×.r$   c                 óÔ  € \         P                  ! . RO4      p \        P                  ! . RO4      p\	        V P                  V4      WP                  4       P                  ,          4       \        P                  ! . RO. RO.\        R7      p\	        V P                  V4      W P                  4       P                  ,          4       \        P                  ! . RO. RO. RO.\        R7      p\	        V P                  V4      W0P                  4       P                  ,          4       V P                  4       V,          p\        P                  ! V P                  V4      V4      '       d   Q hR# )z]Test documented equivalence for single rotation:
`apply(vectors) == vectors @ as_matrix().T.`r,   Nr   )r”   rˆ   rˆ   r   r¨  r   )
r   r  r8   r9   r   r‰  rX   ÚTr½  Úallclose)r'   r   ÚarrÚarr33Úwrong_results        r"   Útest_apply_matrix_equivalencerÁ  €  sÝ   € ô 	×ÒšYÓ'€Aä
�Š’Ó!€AÜ�A—G‘G˜A“J §K¡K£M§O¡OÕ 3Ô4ä
�(Š(’IšyÐ)´Ô
7€CÜ�A—G‘G˜C“L #¯©«¯©Õ"7Ô8ä�HŠH’i¢ªIÐ6¼eÔD€EÜ�A—G‘G˜E“N E¯K©K«M¯O©OÕ$;Ô<Ø—;‘;“= 5Õ(€LÜ�{Š{˜1Ÿ7™7 5›>¨<×8Ò8Ð8Ð8Ñ8r$   c                 óê  € \         P                  ! V P                  ^4      4      p\        P                  ! \
        RR7      ;_uu_ 4        VP                  V P                  ^4      4       RRR4       \        P                  ! \
        RR7      ;_uu_ 4        VP                  V P                  R4      4       RRR4       \         P                  ! V P                  R4      4      p\        P                  ! \
        RR7      ;_uu_ 4        VP                  V P                  R4      4       RRR4       \         P                  ! V P                  R4      4      p\        P                  ! \
        RR7      ;_uu_ 4        VP                  V P                  R	4      4       RRR4       R#   + '       g   i     ELD; i  + '       g   i     EL; i  + '       g   i     L¬; i  + '       g   i     R# ; i)
rG   zExpected input of shaper©   NúCannot broadcastr*  rC  r¸   )r   r  r&   rG   r)  )r   r   r2  r«   r¬   r­   r‰  r…   s   & r"   Útest_apply_input_validationrÄ  ‘  s)  € ä×Ò˜2Ÿ7™7 1›:Ó&€AÜ	�Š”zÐ)B×	CÖ	CØ	�‰�—‘˜“
Ô÷ 
Dä	�Š”zÐ)B×	CÖ	CØ	�‰�—‘˜“Ô ÷ 
Dä×Ò˜2Ÿ7™7 6›?Ó+€AÜ	�Š”zÐ);×	<Ö	<Ø	�‰�—‘˜“Ô ÷ 
=ä×Ò˜2Ÿ7™7 <Ó0Ó1€AÜ	�Š”zÐ);×	<Ö	<Ø	�‰�—‘˜	Ó"Ô#÷ 
=Ñ	<÷ 
D×	CÐ	Cúç	C×	CÐ	Cú÷ 
=×	<ú÷ 
=×	<Ð	<ús0   Á
!F&Â!F:Ä	!GÅ;!G!Æ&F7	Æ:G	ÇG	Ç!G2	Ú__getitem__c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   ¤  s   € ÷ Yñ Yœ3ñ Yr$   c                 óJ  € \         P                  P                  ^ 4      pVP                  RV3V^,
          ,          ,           R,           R7      pV P	                  \
        P                  ! V4      P                  4       4      p\
        P                  ! V4      p\        V^ ,          P                  4       VR,          RR7       \        V^,          P                  4       VR	,          RR7       \        VRR
 P                  4       V P                  VR,          ^ R7      RR7       R# )r   ry   r\   rx   Nr    r1  rU   r¾   r±   r|   )r8   rf   r}   r�   r0   r   r   rX   rÍ   r   r�  )r1   rN   ro   r®   r¹   r'   s   &&    r"   Útest_getitemrÈ     sÒ   € ô
 �)‰)×
Ñ
 Ó
"€CØ�:‰:˜5 D 7¨d°Q­hÕ#7Õ7¸$Õ>ˆ:Ó?€DØ
�*‰*”X×'Ò'¨Ó-×7Ñ7Ó9Ó
:€CÜ×Ò˜SÓ!€Aä�A�a•D—N‘NÓ$ c¨&¥k¸Õ>Ü�A�a•D—N‘NÓ$ c¨&¥k¸Õ>Ü�A�c�r�F×$Ñ$Ó&¨¯©°s¸6µ{È¨Ó(KÐRW×Xr$   c                 óä   € \         P                  ! \        R R7      ;_uu_ 4        \        P                  ! V P                  . RO4      4      ^ ,           RRR4       R#   + '       g   i     R# ; i)únot subscriptabler©   Nr5   )r«   r¬   r+  r   r   r0   r-  s   &r"   Útest_getitem_singlerË  ¯  s?   € ä	�Š”yÐ(;×	<Ö	<Ü×Ò˜2Ÿ:™:¢lÓ3Ó4°QÖ7÷ 
=×	<×	<Ò	<ús   ¥/AÁA/	c                  ó:  € \         P                  ! . RO. RO. RO.. RO. RO. RO..4      p \        P                  ! V 4      p\	        V^ .,          P                  4       V ^ .,          RR7       \	        V^ ^.,          P                  4       V ^ ^.,          RR7       R# )	rˆ   r\   rx   Nr·   r   r   r‹  r   )r8   r9   r   rÍ   r   rX   )r¹   r'   s     r"   Útest_getitem_array_likerÍ  µ  sŒ   € ô �(Š(’\ÚÚð ò ÚÚð ð!ó "€Cô 	×Ò˜SÓ!€AÜ�A�q�c•F×$Ñ$Ó&¨¨Q¨C­°uÕ=Ü�A�q˜!�f•I×'Ñ'Ó)¨3°°1¨v­;¸U×Cr$   Ú__setitem__c                 ó*  € \         P                  ! V P                  . RO4      4      p\        P                  ! \
        RR7      ;_uu_ 4        \         P                  ! V P                  . RO4      4      V^ &   RRR4       R#   + '       g   i     R# ; i)r   rÊ  r©   Nr5   )r   r   r0   r«   r¬   r+  r…   s   & r"   Útest_setitem_singlerÐ  Ä  sY   € ä×Ò˜2Ÿ:™:¢lÓ3Ó4€AÜ	�Š”yÐ(;×	<Ö	<Ü×!Ò! "§*¡*ª\Ó":Ó;ˆˆ!‰÷ 
=×	<×	<Ò	<ús   Á+BÂB	c                 ól  € \         P                  P                  R 4      p\        \        P                  ! ^
VR7      V 4      p\        \        P                  ! ^VR7      V 4      pW2R&   \        VR,          P                  4       VP                  4       4       \        P                  ! V P                  VP                  RR7      4      4      p\        P                  ! V P                  VP                  RR7      4      4      pW2R&   \        VR,          P                  4       VP                  4       4       R# )r  rv   :r   rÔ   Nry   :r   r{   NN©r{   rH   rG   )r&   rH   rG   ©
r8   rf   r}   r2   r   r
   r   r   r0   r�   ©r1   ro   rž  rŸ  s   &   r"   Útest_setitem_slicerÕ  Ë  sÓ   € ä
�)‰)×
Ñ
Ð GÓ
H€CÜ	œŸš¨°Ô4°bÓ	9€BÜ	œŸš¨¨sÔ3°RÓ	8€BØ€s�GÜ�B�s•G—O‘OÓ% r§z¡z£|Ô4ô 
×	Ò	˜BŸJ™J s§z¡z°y zÓ'AÓBÓ	C€BÜ	×	Ò	˜BŸJ™J s§z¡z°y zÓ'AÓBÓ	C€BØ€s�GÜ�B�s•G—O‘OÓ% r§z¡z£|Ö4r$   c                 ój  € \         P                  P                  R 4      p\        \        P                  ! ^
VR7      V 4      p\        \        P                  ! VR7      V 4      pW2^&   \        V^,          P                  4       VP                  4       4       \        P                  ! V P                  VP                  RR7      4      4      p\        P                  ! V P                  VP                  RR7      4      4      pW2^&   \        V^,          P                  4       VP                  4       4       R# )r  rv   ry   NrÒ  r&  rÓ  rÔ  s   &   r"   Útest_setitem_integerr×  Ú  sÏ   € ä
�)‰)×
Ñ
Ð GÓ
H€CÜ	œŸš¨°Ô4°bÓ	9€BÜ	œŸš¨CÔ0°"Ó	5€BØ€q�EÜ�B�q•E—M‘M“O R§Z¡Z£\Ô2ô 
×	Ò	˜BŸJ™J s§z¡z°y zÓ'AÓBÓ	C€BÜ	×	Ò	˜BŸJ™J s§z¡z°v zÓ'>Ó?Ó	@€BØ€q�EÜ�B�q•E—M‘M“O R§Z¡Z£\Ö2r$   c                 óÖ   € \        \        P                  ! ^
^ R7      V 4      p\        P                  ! \
        RR7      ;_uu_ 4        ^V^ &   RRR4       R#   + '       g   i     R# ; i)rc   rv   zRotation objectr©   N)r2   r   rf   r«   r¬   r+  r…   s   & r"   Útest_setitem_wrong_typerÙ  é  sC   € ä”x—’ r¨qÔ1°2Ó6€AÜ	�Š”yÐ(9×	:Ö	:Øˆˆ!‰÷ 
;×	:×	:Ò	:ús   ÁAÁA(	c                 ób  € \         P                  ! R4      p\         P                  ! . RO. RO. RO.4      V^ &   \         P                  ! . RO. RO. RO.4      V^&   V P                  V4      p\        P
                  ! V4      p\        \        V4      ^4       \        \        VRR 4      ^4       R# )	r&   Nr¦  r|   r�  r   r   r‹  r   )r8   rP  r9   r0   r   rÍ   r   rq  r  s   &  r"   Útest_n_rotationsrÛ  ð  s“   € ä
�(Š(�9Ó
€CÜ�XŠXÚÚÚðó €Cˆ�Fô
 �XŠXÚÚÚðó €Cˆ�Fð
 �*‰*�S‹/€CÜ×Ò˜SÓ!€Aä”�Q“˜ÔÜ”�Q�s˜�V“˜aÖ r$   c                  óÐ  € \         P                  P                  ^ 4      p \        \        P                  ! V R7      P                  4       P                  R4       \        \        P                  ! RV R7      P                  4       P                  R4       \        \        P                  ! ^V R7      P                  4       P                  R4       \        \        P                  ! ^V R7      P                  4       P                  R4       \        \        P                  ! V RR7      P                  4       P                  R4       \        \        P                  ! V RR7      P                  4       P                  R4       \        \        P                  ! V RR7      P                  4       P                  R4       \         P                  P                  ^*4      \         P                  P                  ^*4      r!\        P                  ! ^VR7      p\        P                  ! VRR7      p\        VP                  4       VP                  4       P                  ^^4      RR7       \        P                  ! \        RR7      ;_uu_ 4        \        P                  ! ^V RR7       RRR4       \        P                  ! \        R	R7      ;_uu_ 4        \        P                  ! V R
R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        P                  ! ^V R4       RRR4       R#   + '       g   i     Lœ; i  + '       g   i     Lj; i  + '       g   i     R# ; i)r   rv   N)ro   rl   rw   rx   r%  r©   )r  ro   rl   r#  r$  z&takes from 0 to 2 positional argumentsrU   rÙ   r&  r   r  rD  r'  r(  r*  )r8   rf   r}   r   r   r   rl   r   rV   r«   r¬   r­   r+  )ro   Úrng1Úrng2Úr_numÚr_shapes        r"   Útest_random_rotationrá    s  € ä
�)‰)×
Ñ
 Ó
"€CÜ”—’ SÔ)×1Ñ1Ó3×9Ñ9¸4Ô@Ü”—’ ¨3Ô/×7Ñ7Ó9×?Ñ?ÀÔFÜ”—’ ¨Ô,×4Ñ4Ó6×<Ñ<¸fÔEÜ”—’ ¨Ô,×4Ñ4Ó6×<Ñ<¸fÔEä”—’ S°Ô3×;Ñ;Ó=×CÑCÀTÔJÜ”—’ S°Ô5×=Ñ=Ó?×EÑEÀvÔNÜ”—’ S°Ô7×?Ñ?ÓA×GÑGÈÔSä—‘×&Ñ& rÓ*¬B¯I©I×,AÑ,AÀ"Ó,Eˆ$Ü�OŠO˜A 4Ô(€EÜ�oŠo $¨fÔ5€GÜ�E—M‘M“O W§_¡_Ó%6×%>Ñ%>¸qÀ!Ó%DÈ5ÕQä	�Š”zÐ)N×	OÖ	OÜ�Š˜A #¨VÕ4÷ 
Pä	�Š”zÐ)T×	UÖ	UÜ�Š˜C sÕ+÷ 
Vä	�Š”yÐ(P×	QÖ	QÜ�Š˜˜3 Ô%÷ 
RÑ	Q÷	 
P×	Oúç	U×	Uúç	Q×	QÐ	Qús$   Ê L.ËMÌMÌ.L>	ÍM	ÍM%	Úalign_vectorsc                 ó€  € \         P                  ! V 4      pWP                  8X  d   R MRpV P                  . RO. RO.VR7      pV P                  VRR7      p\        P
                  ! W44      w  rV\        VP                  4       V P                  ^4      VR7       \        W`P                  R4      R,          RRR	7       R
# )rw   çñhãˆµøä>r,   T)Úcopyrx   rˆ   Frá   ©Úcheck_shaper`   Nr¨  r®  r   )	r.   r/   rã   r0   r   râ  r   rX   rh   )r1   r-   r`   r   r   r'   Úrssds   &      r"   Útest_align_vectors_no_rotationré    s�   € ä×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€DØ
�
‰
’IšyÐ)°ˆ
Ó7€AØ
�
‰
�1˜4ˆ
Ó €Aä×$Ò$ QÓ*�G€AÜ�A—K‘K“M 2§6¡6¨!£9°4Õ8Ü�DŸ*™* S›/¨"Õ-¸5Àt×Lr$   c                 ó
  € \         P                  ! V 4      pWP                  8X  d   R MRp\        P                  P                  R4      p\        \        P                  ! VR7      V 4      pV P                  VP                  R
R7      VR7      pVP                  V4      p\        P                  ! We4      w  rx\        VP                  4       VP                  4       4       \        W€P                  R4      R,          RVR7       R	# )r
  gü©ñÒMb`?l	   #Þt}":xþ×L rv   ry   r,   rˆ   Fræ  N©rH   r{   r   )r.   r/   rã   r8   rf   r}   r2   r   r0   r�   r‰  râ  r   r   )	r1   r-   r`   ro   Úcr‡  r†  Úestrè  s	   &        r"   Útest_align_vectors_no_noiserî  )  s·   € ä×Ò˜bÓ!€EØŸJ™JÔ&‰4¨D€DÜ
�)‰)×
Ñ
Ð FÓ
G€CÜ”x—’¨3Ô/°Ó4€AØ
�
‰
�3—:‘: 6�:Ó*°%ˆ
Ó8€AØ	�‰�‹
€Aä×&Ò& qÓ,�I€CÜ�A—I‘I“K §¡£Ô/Ü�DŸ*™* S›/¨"Õ-¸5Àt×Lr$   c                 óf  € \         P                  ! V 4      pWP                  8X  d   R MRpV P                  . RO. R	O.4      pV P                  . R
O. RO.4      p\        P
                  ! W44      w  rV\        W5P                  V4      RR7       \        W`P                  R4      R,          RVR7       R# )r
  gü©ñÒMbP?rá   rx   rˆ   Fræ  N)gð…q“ì?gÔH*×fÜ¿gþHlÒÈB³?)gM·Ós^Eã?g+ObçpÞ¿gÕn^w„ä¿)g¯=Ô2)p˜?g[�[VåKê¿gª?gwí7â?)g�Ëû²Ñ¿gãÜGêvî¿gpÏßßÀ¿r   )r.   r/   rã   r0   r   râ  r   r‰  )r1   r-   r`   r   r   rí  rè  s   &      r"   Ú$test_align_vectors_improper_rotationrð  7  s“   € ä×Ò˜bÓ!€EØŸJ™JÔ&‰4¨D€Dà
�
‰
Ò8Ú9ð;ó 	<€Aà
�
‰
Ò8Ú:ð<ó 	=€Aô ×&Ò& qÓ,�I€CÜ�A—y‘y “|¨$Õ/Ü�DŸ*™* S›/¨"Õ-¸5Àt×Lr$   c                 ó@  € V P                  R 4      R,          pV P                  . RO. RO. R	O.4      pRpV P                  . R
O. RO. RO.4      pV P                  . RO. RO. RO.4      p\        P                  ! WERR7      w  rgp\        WqVR7       \        W‚VR7       R# )gÔbÿQÂ?rá   T©Úreturn_sensitivityrx   Nr   )r  rˆ   rˆ   )rˆ   ç      ø?r”   )rˆ   r”   r”   r   ©r   r   r   r   )r   gš™™™™™ñ?r   )r   r�   r   )r0   r   râ  r   )	r1   Úrssd_expectedÚsens_expectedr`   r†  r‡  rú   rè  Úsenss	   &        r"   Ú#test_align_vectors_rssd_sensitivityrù  F  sŒ   € à—J‘JÐ0Ó1°"Õ5€MØ—J‘J¢Ú .Ú .ð 0ó 1€Mð €DØ
�
‰
’Išyª)Ð4Ó5€AØ
�
‰
’Iš{ªKÐ8Ó9€AÜ×,Ò,¨QÀdÔK�O€CˆtÜ�D¨dÕ3Ü�D¨d×3r$   c                 óZ  € ^
pV P                  \        P                  ! V^ R7      P                  . RO4      4      pV P                  \        P                  ! V^R7      P                  . RO4      4      p^p\        P                  ! W#V P                  V4      R4      w  rVp\        P                  ! W#W@P                  V4      ,          R4      w  r‰p
\        VP                  4       VP                  4       4       \        \        P                  ! V4      V,          V	RR7       \        Wz4       R# )rc   rv   Trá   rx   Nr   )
r0   r   rf   r‰  râ  r2  r   rX   r£   r¤   )r1   rÛ  r†  r‡  ÚscaleÚest1Úrssd1Úcov1Úest2Úrssd2Úcov2s   &          r"   Ú!test_align_vectors_scaled_weightsr  T  sÓ   € à
€AØ
�
‰
”8—?’? 1¨!Ô,×2Ñ2²9Ó=Ó>€AØ
�
‰
”8—?’? 1¨!Ô,×2Ñ2²9Ó=Ó>€AØ€Eä ×.Ò.¨q°R·W±W¸Q³ZÀÓFÑ€D�Ü ×.Ò.¨q°U¿W¹WÀQ»ZÕ5GÈÓNÑ€D�ä�D—N‘NÓ$ d§n¡nÓ&6Ô7Ü”D—I’I˜eÓ$ uÕ,¨e¸$Õ?Ü�DÖr$   c           	      ó(  € \         P                  ! V 4      p\        P                  P	                  R 4      p^dp\        \        P                  ! VR7      V 4      pV P                  VP                  V^3R7      VR7      pVP                  V4      p\        P                  ! ^4      pRV,          p\        P                  ! V P                  VP                  V^3VR7      VR7      4      p	V	P                  V4      p
\        P                  ! W¥RR7      w  r¼pWKP                  4       ,          P                  4       p\        V^ ,          V P                  R4      R,          VR	7       \        V^,          V P                  R4      R,          VR	7       \        V^,          V P                  R4      R,          VR	7       WÐP                  V4      ,          p\        VR,          V P                  R4      R,          VR	7       \        VR,          V P                  R4      R,          VR	7       \        VR,          V P                  R4      R,          VR	7       V P!                  W«P                  V4      ,
          ^,          4      R
,          p\        WÏRR7       R# )r  rv   ry   r,   rô  )rz   rû  Trò  rˆ   rx   rÐ   F)rç  Nr   rþ   rR  r*  )r.   r/   r8   rf   r}   r2   r   r0   r�   r‰  Údeg2radr  râ  rŸ   r  r   Úsum)r1   r-   ro   Ú	n_vectorsrú   Úvectorsr  ÚsigmaÚ	toleranceÚnoiseÚnoisy_resultrí  rè  ÚcovÚerror_vectorÚ
rssd_checks   &               r"   Útest_align_vectors_noiser  c  sì  € ô ×Ò˜bÓ!€EÜ
�)‰)×
Ñ
Ð GÓ
H€CØ€IÜ
œŸš¨SÔ1°2Ó
6€CØ�j‰j˜Ÿ™¨)°Q¨˜Ó8ÀˆjÓF€GØ�Y‰Y�wÓ€Fô �JŠJ�q‹M€EØ�e•€IÜ× Ò Ø
�
‰
�3—:‘: I¨q >¸�:Ó?Àuˆ
ÓMó€Eð —;‘;˜vÓ&€Lä×+Ò+¨LØ?CôE�N€Cˆsð Ÿ'™'›)•O×.Ñ.Ó0€LÜ�L •O R§Z¡Z°£_°RÕ%8¸yÕIÜ�L •O R§Z¡Z°£_°RÕ%8¸yÕIÜ�L •O R§Z¡Z°£_°RÕ%8¸yÕIð �:‰:�eÓÕ€CÜ�C˜•I˜rŸz™z¨#›¨rÕ2¸ÕCÜ�C˜•I˜rŸz™z¨#›¨rÕ2¸ÕCÜ�C˜•I˜rŸz™z¨#›¨rÕ2¸ÕCà—‘˜¯	©	°'Ó(:Õ:¸qÕ@ÓAÀSÕH€JÜ�D°%×8r$   c           	      óŠ  € \         P                  ! \        R R7      ;_uu_ 4        V P                  . RO4      V P                  . RO4      r!\        P
                  ! W4       RRR4       \         P                  ! \        RR7      ;_uu_ 4        V P                  . RO4      V P                  . RO4      r!\        P
                  ! W4       RRR4       \         P                  ! \        RR7      ;_uu_ 4        V P                  . RO. RO.4      V P                  . RO.4      r!\        P
                  ! W4       RRR4       \         P                  ! \        RR7      ;_uu_ 4        V P                  . RO.4      V P                  . RO.4      r!V P                  ^..4      p\        P
                  ! WV4       RRR4       \         P                  ! \        RR7      ;_uu_ 4        V P                  . RO. RO.4      V P                  . RO. RO.4      r!V P                  . RO4      p\        P
                  ! WV4       RRR4       V P                  . RO.4      V P                  . RO.4      r!V P                  R.4      p\        V4      '       dt   \        P
                  ! WV4      w  rEV P                  V P                  VP                  4       4      4      '       g   Q R4       hV P                  V4      '       g   Q R4       hMD\         P                  ! \        R	R7      ;_uu_ 4        \        P
                  ! WV4       RRR4       V P                  . RO. RO.4      V P                  . RO. RO.4      r!V P                  V P                  V P                  .4      p\        V4      '       dt   \        P
                  ! WV4      w  rEV P                  V P                  VP                  4       4      4      '       g   Q R4       hV P                  V4      '       g   Q R4       hMD\         P                  ! \        R
R7      ;_uu_ 4        \        P
                  ! WV4       RRR4       V P                  . RO.4      V P                  . RO.4      r!\        V4      '       ds   \        P
                  ! W4      w  rEV P                  V P                  VP                  4       4      4      '       g   Q R4       hV P                  V4      '       g   Q R4       hMC\         P                  ! \        RR7      ;_uu_ 4        \        P
                  ! W4       RRR4       V P                  . RO. RO.4      V P                  . RO. RO.4      r!V P                  V P                  ^.4      p\        V4      '       dK   \        P
                  ! WVRR7      w  rEpV P                  V P                  V4      4      '       g   Q R4       hMF\         P                  ! \        RR7      ;_uu_ 4        \        P
                  ! WVRR7       RRR4       V P                  . RO.4      V P                  . RO.4      r!\        V4      '       dJ   \        P
                  ! WRR7      w  rEpV P                  V P                  V4      4      '       g   Q R4       hME\         P                  ! \        RR7      ;_uu_ 4        \        P
                  ! WRR7       RRR4       V P                  . RO..4      V P                  . RO..4      r!\         P                  ! \        RR7      ;_uu_ 4        \        P
                  ! W4       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL½; i  + '       g   i     ELd; i  + '       g   i     ELú; i  + '       g   i     ELŠ; i  + '       g   i     EL�; i  + '       g   i     EL•; i  + '       g   i     EL¼; i  + '       g   i     ELå; i  + '       g   i     EL3; i  + '       g   i     R# ; i)z Expected input `a` to have shaper©   Nz Expected input `b` to have shapez/Expected inputs `a` and `b` to have same shapesz&Expected `weights` to be 1 dimensionalz+Expected `weights` to have number of valueszQuaternion should be nanzRSSD should be nanz)`weights` may not contain negative valuesz#Only one infinite weight is allowedz(Cannot align zero length primary vectorsTrò  z Sensitivity matrix should be nanz Cannot return sensitivity matrixz)Expected inputs `a` and `b` to have shaperÈ   r¨  r®  r|   r  )r«   r¬   r­   r0   r   râ  r   r€   r²   r   Úinf)r1   r†  r‡  r`  r'   rè  rø  s   &      r"   Ú test_align_vectors_invalid_inputr  Œ  s'  € ä	�Š”zÐ)K×	LÖ	LØ�z‰zš,Ó'¨¯©²IÓ)>ˆ1Ü×Ò˜qÔ$÷ 
Mô 
�Š”zÐ)K×	LÖ	LØ�z‰zš)Ó$ b§j¡j²Ó&>ˆ1Ü×Ò˜qÔ$÷ 
Mô 
�Š”zð *?÷ 
@ö 
@à�z‰zš9¢iÐ0Ó1°2·:±:ºy¸kÓ3Jˆ1Ü×Ò˜qÔ$÷
@ô
 
�Š”zØE÷
Gö 
Gà�z‰zš9˜+Ó&¨¯
©
²I°;Ó(?ˆ1Ø—*‘*˜q˜c˜UÓ#ˆÜ×Ò˜q WÔ-÷	
Gô 
�Š”zØJ÷
Lö 
Là�z‰zš9¢iÐ0Ó1°2·:±:ºyÊ)Ð>TÓ3Uˆ1Ø—*‘*šYÓ'ˆÜ×Ò˜q WÔ-÷	
Lð �:‰:’y�kÓ" B§J¡J²	¨{Ó$;€qØ�j‰j˜"˜Ó€GÜ�W×ÒÜ×(Ò(¨¨wÓ7‰ˆØ�v‰v�b—h‘h˜qŸy™y›{Ó+×,Ò,ÐHÐ.HÓHÐ,Ø�x‰x˜�~Š~Ð3Ð3Ó3‰~ä�]Š]œ:Ø!L÷Nö Nä×"Ò" 1¨Ô1÷Nð �:‰:’y¢)Ð,Ó-¨r¯z©zº9ÂiÐ:PÓ/Q€qØ�j‰j˜"Ÿ&™& "§&¡&Ð)Ó*€GÜ�W×ÒÜ×(Ò(¨¨wÓ7‰ˆØ�v‰v�b—h‘h˜qŸy™y›{Ó+×,Ò,ÐHÐ.HÓHÐ,Ø�x‰x˜�~Š~Ð3Ð3Ó3‰~ä�]Š]œ:Ø!F÷Hö Hä×"Ò" 1¨Ô1÷Hð �:‰:’y�kÓ" B§J¡J²	¨{Ó$;€qÜ�Q×ÒÜ×(Ò(¨Ó.‰ˆØ�v‰v�b—h‘h˜qŸy™y›{Ó+×,Ò,ÐHÐ.HÓHÐ,Ø�x‰x˜�~Š~Ð3Ð3Ó3‰~ä�]Š]œ:Ø!K÷Mö Mä×"Ò" 1Ô(÷Mð �:‰:’y¢)Ð,Ó-¨r¯z©zº9ÂiÐ:PÓ/Q€qØ�j‰j˜"Ÿ&™& !˜Ó%€GÜ�Q×ÒÜ ×.Ò.¨q°WÐQUÔV‰ˆ�Ø�v‰v�b—h‘h˜t“n×%Ò%ÐIÐ'IÓIÑ%ä�]Š]œ:Ø!C÷Eö Eä×"Ò" 1¨ÀTÕJ÷Eð �:‰:’y�kÓ" B§J¡J²	¨{Ó$;€qÜ�Q×ÒÜ ×.Ò.¨qÈÔM‰ˆ�Ø�v‰v�b—h‘h˜t“n×%Ò%ÐIÐ'IÓIÑ%ä�]Š]œ:Ø@÷Bö Bä ×.Ò.¨qÈÕM÷Bð
 �:‰:š	�{�mÓ$ b§j¡j²9°+°Ó&?€qÜ	�Š”zØH÷
Jö 
Jä×Ò˜qÔ$÷
Jñ 
J÷] 
M×	LÐ	Lú÷ 
M×	LÐ	Lú÷
@÷ 
@ð 
@ú÷

G÷ 
Gð 
Gú÷
L÷ 
Lð 
Lú÷N÷ Nð Nú÷H÷ Hð Hú÷M÷ Mð Mú÷E÷ Eð Eú÷B÷ Bð Bú÷
J÷ 
Jð 
Jús†   ¥<])Â<]=Ã5A^Å"A^%Ç A^9Ì!_Ð=_!Ô+_5Ø`	Û`Ý`1Ý)]:	Ý=^	Þ^"	Þ%^6	Þ9_
	ß_	ß!_2	ß5`	à	`	à`.	à1a	c                 ó6  € \         P                  ! V 4      pWP                  8X  d   R MRpV P                  . R	O. R
O.4      pV P                  . RO. RO.4      pV P                  . RO. R	O. RO.4      p\        P
                  ! WCV P                  V P                  ^.4      R7      w  rg\        VP                  4       WRR7       \        VP                  V4      WBR7       \        WpP                  R4      R,          VR7       V P                  . R	O. RO.4      pRp\        P
                  ! WCV P                  V P                  ^.4      R7      w  rg\        VP                  4       WRR7       \        VP                  V4      R,          VR,          VR7       \         P                  ! WxW R7      '       g   Q hV P                  . RO. RO.4      p	\        VP                  V4      W’R7       V P                  . RO. RO.4      pV P                  . RO. RO.4      pRp\        P
                  ! WCV P                  V P                  ^.4      R7      w  rg\        VP                  V4      R,          VR,          VR7       \         P                  ! WxW R7      '       g   Q hR# )rw   rá   rˆ   r_  rx   r”   )r`   r1   gÿ4ÍÖiöô?Nr   rò   ©rˆ   r   r   rõ  r¿   r   r   )r   r&   r   r¾   ©r   r   r&   r¨  )rÊ   r{   r|   )r�   r{   r&   rH  )r.   r/   rã   r0   r   râ  r  r   rX   r‰  Úisclose)
r1   r-   r`   r‡  r†  Ú
m_expectedÚRrè  rö  Ú
a_expecteds
   &         r"   Ú"test_align_vectors_align_constrainr  á  só  € ô ×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€DØ
�
‰
’IšyÐ)Ó*€AØ
�
‰
’K¢Ð+Ó,€AØ—‘š[Ú&Ú&ð(ó )€Jô ×$Ò$ Q°2·:±:¸r¿v¹vÀq¸kÓ3JÔK�G€AÜ�A—K‘K“M :Õ9Ü�A—G‘G˜A“J Õ-Ü�DŸ*™* S›/¨"Õ-°DÕ9ð 	�
‰
’IšyÐ)Ó*€AØ€MÜ×$Ò$ Q°2·:±:¸r¿v¹vÀq¸kÓ3JÔK�G€AÜ�A—K‘K“M :Õ9Ü�A—G‘G˜A“J˜vÕ&¨¨&­	¸Õ=Ü�;Š;�t°×=Ó=Ð=Ð=Ø—‘š[ª)Ð4Ó5€JÜ�A—G‘G˜A“J 
Õ6ð 	�
‰
’Iš{Ð+Ó,€AØ
�
‰
’L¢*Ð-Ó.€AØ&€MÜ×$Ò$ Q°2·:±:¸r¿v¹vÀq¸kÓ3JÔK�G€AÜ�A—G‘G˜A“J˜vÕ&¨¨&­	¸Õ=Ü�;Š;�t°×=Ó=Ð=Ò=r$   c           
      ó   € \         P                  ! V 4      pWP                  8X  d   \        P                  ! R 4       ^dp. p\        ^4       F?  pVP                  \        P                  ! V^
V,           R7      P                  4       4       KA  	  \        V4       EF2  pV P                  \        P                  ! ^V^ ,          V,          ^ ,          ,          ^V^,          V,          ^ ,          ,          .4      VR7      pV P                  \        P                  ! ^V^,          V,          ^ ,          ,          ^V^,          V,          ^ ,          ,          .4      VR7      p\        P                  ! WVR^.R7      w  rx\        P                  ! WVV P                  ^.R7      w  r˜\        VP                  4       V	P                  4       RR7       EK5  	  \        V4       EFm  pV P                  \        P                  ! ^V^ ,          V,          ^ ,          ,          ^V^,          V,          ^ ,          ,          ^V^,          V,          ^ ,          ,          .4      VR7      pV P                  \        P                  ! ^V^,          V,          ^ ,          ,          ^V^,          V,          ^ ,          ,          ^V^,          V,          ^ ,          ,          .4      VR7      p\        P                  ! WV. ROR7      w  rx\        P                  ! WVV P                  ^^.R7      w  r˜\        VP                  4       V	P                  4       RR7       EKp  	  R# )	z9Align vectors near inf is numerically unstable in float32rv   r,   ç    _ Br_  ç-Cëâ6?rx   N)r  r&   r   )r.   r/   rA   r«   Úskiprk   Úappendr   rf   rX   r0   r8   r9   râ  r  r   )
r1   r-   rÛ  Úmatsrq   r†  r‡  r  Ú_ÚR2s
   &         r"   Útest_align_vectors_near_infr#    s[  € ô
 ×Ò˜bÓ!€EØ—
‘
ÔÜ�ŠÐOÔPØ€AØ€DÜ�1ŽXˆØ�‰”H—O’O A¨2°­6Ô2×<Ñ<Ó>Ö?ñ ô �1�Xˆà�J‰J”r—x’x  T¨!¥W¨Q¥Z°¥]Õ!2°A¸¸Q½À½
À1½Õ4EÐ FÓGÈuˆJÓUˆØ�J‰J”r—x’x  T¨!¥W¨Q¥Z°¥]Õ!2°A¸¸Q½À½
À1½Õ4EÐ FÓGÈuˆJÓUˆä×%Ò% a°T¸1°IÔ>‰ˆÜ×&Ò& q°b·f±f¸a°[ÔA‰ˆÜ˜Ÿ™› r§|¡|£~¸D×AÐAñ ô �1�Xˆà�J‰J”r—x’x  4¨¥7¨1¥:¨a¥=¥°!°D¸µG¸AµJ¸qµMµ/À1ÀTÈ!ÅWÈQÅZÐPQÅ]Å?Ð SÓTØ"ð ó $ˆà�J‰J”r—x’x  4¨¥7¨1¥:¨a¥=¥°!°D¸µG¸AµJ¸qµMµ/À1ÀTÈ!ÅWÈQÅZÐPQÅ]Å?Ð SÓTØ"ð ó $ˆô ×%Ò% a²LÔA‰ˆÜ×&Ò& q°b·f±f¸aÀ°^ÔD‰ˆÜ˜Ÿ™› r§|¡|£~¸D×AÐAó r$   c                 ó´  € R pV P                  . RO. RO.4      pV P                  . RO. RO.4      pV P                  . RO. RO. RO.4      p\        P                  ! W#V P                  ^.R7      w  rV\	        VP                  4       WAR7       \        P                  ! VR	,          VR	,          4      w  rV\	        VP                  4       WAR7       \	        VP                  VR	,          4      VR	,          VR7       V P                  . R
O. R
O.4      pV P                  . RO. RO. RO.4      p\        P                  ! W#V P                  ^.R7      w  rV\	        VP                  4       WAR7       \        P                  ! VR	,          VR	,          4      w  rV\	        VP                  4       WAR7       \	        VP                  VR	,          4      VR	,          VR7       R# )rw   r_  rx   N©r”   r   r   r   r  rÀ   r   r¾   r   )r0   r   râ  r  r   rX   r‰  )r1   r`   r†  r‡  r  r  r!  s   &      r"   Útest_align_vectors_parallelr&  *  sd  € à€DØ
�
‰
’K¢Ð+Ó,€AØ
�
‰
’K¢Ð+Ó,€AØ—‘š[Ú'Ú&ð(ó )€Jô ×!Ò! !°·±¸°Ô<�D€AÜ�A—K‘K“M :Õ9Ü×!Ò! ! F¥)¨Q¨v­YÓ7�D€AÜ�A—K‘K“M :Õ9Ü�A—G‘G˜A˜f�IÓ&¨¨&­	¸Õ=à
�
‰
’IšyÐ)Ó*€AØ—‘š[Ú&Ú&ð(ó )€Jô ×!Ò! !°·±¸°Ô<�D€AÜ�A—K‘K“M :Õ9Ü×!Ò! ! F¥)¨Q¨v­YÓ7�D€AÜ�A—K‘K“M :Õ9Ü�A—G‘G˜A˜f�IÓ&¨¨&­	¸×=r$   c           	      ó`  € \         P                  ! V 4      pWP                  8X  d   R MRp\        P                  ! . R
O. RO.. RO. RO.. RO. RO..4      p\        P                  ! V Uu. uF  qD^ ,          ) V^,          .NK  	  up4      p\        W54       Fµ  w  rFV P                  WAR7      V P                  WaR7      rd\        P                  ! WFV P                  ^.R7      w  rx\        VP                  4       V P                  V P                  4      R,          VR7       \        VP                  VR,          4      VR,          VR7       K·  	  \        P                  ! ^d^ R7      p	\        P                  ! V	P!                  4       R,          4      p
. RO. RO.p. RO. RO.p. pV
 FG  pVP#                  \        P                  ! VP                  V^ ,          4      V^,          .4      4       KI  	  \%        V P                  ^ 4      4      R8X  d   RpV F�  pV P                  V4      V P                  V4      rd\        P                  ! WFV P                  ^.R7      w  rx\        P                  ! WFR^.R7      w  rÈ\        VP'                  4       VP'                  4       VR7       K’  	  R	# u upi )rw   r
  r,   r_  rx   rv   r  Úcudar  Nr%  r   r   r   r   r¾   rÀ   )r.   r/   rã   r8   r9   Úzipr0   r   râ  r  r   r  r#  r‰  rf   r  r  r  r   rX   )r1   r-   r`   Ú
as_to_testr†  Ú
bs_to_testr‡  r  r!  ÚRsÚdRsÚdRr"  s   &            r"   Útest_align_vectors_antiparallelr/  C  s  € ô
 ×Ò˜bÓ!€EàŸZ™ZÔ'‰5¨T€Dä—’šKªÐ3Ú%¢yÐ1Ú%¢yÐ1ð3ó 4€Jô —’±*Ó=±*¨Q˜q�T˜E 1 Q¥4›=±*Ñ=Ó>€JÜ�JÖ+‰ˆØ�z‰z˜!ˆzÓ)¨2¯:©:°a¨:Ó+Eˆ1Ü×%Ò% a°R·V±V¸Q°KÔ@‰ˆÜ˜Ÿ™› r§z¡z°"·%±%Ó'8¸Õ'<À4ÕHÜ˜Ÿ™  &¥	Ó*¨A¨f­I¸D×Añ	 ,ô 
�Š˜ !Ô	$€BÜ
×
Ò
˜rŸ|™|›~¨dÕ2Ó
3€CÚ	’YÐ€AÚ	’YÐ€AØ€JÛˆØ×Ñœ"Ÿ(š( B§H¡H¨Q¨q­T£N°A°aµDÐ#9Ó:Ö;ñ ô �b—j‘j “mÓ$¨Ô.ØˆãˆØ�z‰z˜!‹}˜bŸj™j¨›mˆ1Ü×%Ò% a°R·V±V¸Q°KÔ@‰ˆÜ×&Ò& q°d¸A°YÔ?‰ˆÜ˜Ÿ™› r§|¡|£~¸D×Aó	 ùò5 >s   Á*J+c                 ó0  € \         P                  ! V 4      pWP                  8X  d   R MRp\        P                  ! ^d^ R7      P                  4       p\        P                  ! ^d^R7      P                  4       p\        W44       F�  w  rVV P                  V^ ,          VR7      pV P                  V^ ,          VR7      p\        P                  ! Wx4      w  rš\        V	P                  V4      WrR7       \        W P                  R4      R,          VR7       K’  	  R# )rw   rä  rv   r,   rx   rˆ   Nr   )r.   r/   rã   r   rf   rX   r)  r0   râ  r   r‰  )r1   r-   r`   Úmats_aÚmats_bÚmat_aÚmat_br†  r‡  r  rè  s   &          r"   Útest_align_vectors_primary_onlyr5  q  sÎ   € ä×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€DÜ�_Š_˜S aÔ(×2Ñ2Ó4€FÜ�_Š_˜S aÔ(×2Ñ2Ó4€Fä˜FÖ+‰ˆà�J‰J�u˜Q•x uˆJÓ-ˆØ�J‰J�u˜Q•x uˆJÓ-ˆô ×(Ò(¨Ó.‰ˆÜ˜Ÿ™ ›
 AÕ1Ü˜Ÿj™j¨›o¨bÕ1¸×=ó ,r$   c                  ó¸  € \         P                  P                  ^{4      p \        P                  ! V R7      pV P	                  RR7      pVP                  V4      p\        P                  ! W24      w  rE\        P                  ! VP                  4       VP                  4       4      w  rg\        VP                  4       VP                  4       4       \        Wu4       R# )ru   rv   ry   Nrë  )
r8   rf   r}   r   r�   r‰  râ  r~   r   r   )ro   rì  r‡  r†  Úest_expectedrö  rí  rè  s           r"   Útest_align_vectors_array_liker8  ƒ  s•   € Ü
�)‰)×
Ñ
 Ó
$€CÜ�Š˜CÔ €AØ�
‰
˜ˆ
Ó€AØ	�‰�‹
€Aä"*×"8Ò"8¸Ó">Ñ€LÜ×&Ò& q§x¡x£z°1·8±8³:Ó>�I€CÜ�L×(Ñ(Ó*¨C¯K©K«MÔ:Ü�DÖ(r$   c                 óÐ  € \         P                  ! V 4      p\        P                  P	                  ^{4      p\        \        P                  ! VR7      V 4      pV P                  VP                  RR7      VR7      pV P                  VP                  V4      V P                  R7      p\        P                  ! WT4      w  rg\        VP                  4       VP                  4       4       R# )ru   rv   ry   r,   Nrë  )r.   r/   r8   rf   r}   r2   r   r0   r�   r‰  rA   râ  r   r   )r1   r-   ro   rì  r‡  r†  rí  r!  s   &       r"   Útest_align_vectors_mixed_dtypesr:  �  sž   € ä×Ò˜bÓ!€EÜ
�)‰)×
Ñ
 Ó
$€CÜ”x—’¨3Ô/°Ó4€AØ
�
‰
�3—:‘: 6�:Ó*°%ˆ
Ó8€AØ
�
‰
�1—7‘7˜1“: R§Z¡Zˆ
Ó0€Aä×#Ò# AÓ)�F€CÜ�C—K‘K“M 1§9¡9£;Ö/r$   Ú__repr__c                 óÖ   € V P                  . RO4      p\        \        P                  ! V4      4      p\	        V 4      '       d   RpW#8X  g   Q hR# VP                  R4      '       g   Q hR# )r   zRotation.from_matrix(array([[1., 0., 0.],
                            [0., 1., 0.],
                            [0., 0., 1.]]))úRotation.from_matrix(Nr5   )r0   Úreprr   r   r   Ú
startswith)r1   rp   Úactualrö   s   &   r"   Útest_repr_single_rotationrA  ›  s[   € à
�
‰
’<Ó €AÜ”(×$Ò$ QÓ'Ó(€FÜ�‡|‚|ð/ˆð Ô!Ð!Ò!à× Ñ Ð!8×9Ò9Ð9Ò9r$   c                 ó,  € V P                  . RO. RO.4      \        P                  ! ^4      ,          p\        P                  ! V4      : p\        V 4      '       d    RpR R lpV! V4      V! V4      8X  g   Q hR# VP                  R4      '       g   Q hR# )rˆ   a  Rotation.from_matrix(array([[[ 0.,  0.,  1.],
                             [ 0.,  1.,  0.],
                             [-1.,  0.,  0.]],

                            [[ 0., -1.,  0.],
                             [ 1.,  0.,  0.],
                             [ 0.,  0.,  1.]]]))c                ó0   € V ^8„  d   QhR\         R\         /# )r&   ÚsÚreturn)Ústr)r)   s   "r"   r*   Ú1test_repr_rotation_sequence.<locals>.__annotate__µ  s   € ÷ 	>ñ 	>œð 	>¤ñ 	>r$   c                 óp   € R P                  \        \        P                  V P	                  4       4      4      # )Ú
)rØ  ÚmaprF  ÚlstripÚ
splitlines)rD  s   &r"   ÚstrippedÚ-test_repr_rotation_sequence.<locals>.strippedµ  s"   € à—9‘9œS¤§¡¨Q¯\©\«^Ó<Ó=Ð=r$   r=  N)rˆ   r   r   r   r¶   )r0   r£   r¤   r   r   r   r?  )r1   rp   r@  rö   rM  s   &    r"   Útest_repr_rotation_sequencerO  ©  s|   € Ø
�
‰
’N¢LÐ1Ó2´T·Y²Y¸q³\ÕA€AÜ×"Ò" 1Ó%Ñ(€FÜ�‡|‚|ð4ˆõ	>ñ ˜Ó¡8¨HÓ#5Ô5Ð5Ò5à× Ñ Ð!8×9Ò9Ð9Ò9r$   Ú__init__Ú__call__c                 óR  € \         P                  P                  ^ 4      p\        P                  ! V P                  VP                  RR7      4      4      pVP                  4       p. ROp\        WB4      p\        VP                  \        V P                  ^ 4      4      4      '       g   Q h. ROpV! V4      pVP                  4       pVR,          ^ 8  R,          p	V P                  W˜) V4      pVR,          ^ 8  R,          p	V P                  W“) V4      p\        VR,          VR,          4       \        VR	,          VR
,          4       \        VR,          VR,          4       \        VR,          VR	,          4       \        VR,          VR,          4       V P                  VR,          VR,          ,          4      p
V P                  VR,          VR
,          ,          4      p\        W«4       V P                  VR	,          VR,          ,          4      pV P                  VR,          VR,          ,          4      p\        WÍ4       V P                  VR
,          VR	,          ,          4      p\        V^V
^,          ,          ^,
          4       \        \!        V4      \!        V4      4       R# )r   ry   Nr&  )r   r   r&   r{   rG   )r   rÐ   rª  r   rô  r&   g      @r{   g      
@gÍÌÌÌÌÌ@rG   )re   r|   rd   r¾   rÂ   r±   )rH   .rÁ   )r  .)rc   .)rG   .)r8   rf   rg   r   r   r0   r¼  r   r   rM  ÚtimesrO  Úwherer   r  r   rq  )r1   rë   Úkey_rotsÚ	key_quatsÚ	key_timesÚinterpolatorrS  Úinterp_rotsÚinterp_quatsÚmaskÚ
cos_theta1Ú
cos_theta2Ú
cos_theta4Ú
cos_theta5Ú
cos_theta3s   &              r"   Ú
test_slerpra  ¾  s   € ä
�)‰)×
Ñ
 Ó
"€Cä×!Ò! "§*¡*¨S¯[©[¸f¨[Ó-EÓ"FÓG€HØ× Ñ Ó"€Iâ€IÜ˜Ó-€LÜ�l×(Ñ(¬$¨r¯z©z¸!«}Ó*=×>Ò>Ð>Ð>â=€EÙ˜uÓ%€KØ×&Ñ&Ó(€Lð ˜Õ !Ñ# WÕ-€DØ—8‘8˜D -°Ó>€Là�eÕ˜qÑ  'Õ*€DØ—‘˜˜z¨9Ó5€Iô �L Õ(¨)°FÕ*;Ô<Ü�L Õ(¨)°FÕ*;Ô<Ü�L Õ(¨)°FÕ*;Ô<Ü�L Õ(¨)°FÕ*;Ô<Ü�L Õ)¨9°VÕ+<Ô=ð —‘˜ VÕ,¨|¸FÕ/CÕCÓD€JØ—‘˜ VÕ,¨|¸FÕ/CÕCÓD€JÜ�JÔ+à—‘˜ VÕ,¨|¸FÕ/CÕCÓD€JØ—‘˜ VÕ,¨|¸FÕ/CÕCÓD€JÜ�JÔ+ð —‘˜ VÕ,¨|¸FÕ/CÕCÓD€JÜ�J  Z°¥]Õ 3°aÕ 7Ô8ô ”�[Ó!¤3 u£:Ö.r$   c                 óò   € \         P                  ! \        R R7      ;_uu_ 4        V P                  . RO. RO.4      pV P                  ^ ^.4      p\	        W!4       RRR4       R#   + '       g   i     R# ; i)zmust be a `Rotation` instancer©   NrÈ   r5   )r«   r¬   r+  r0   r   )r1   r'   rM  s   &  r"   Útest_slerp_rot_is_rotationrc  î  sU   € ä	�Š”yÐ(G×	HÖ	HØ�J‰Jš	Ú!ð#ó $ˆà�J‰J˜˜1�vÓˆÜˆaŒ÷	 
I×	H×	HÒ	Hús   ¥6A%Á%A6	z*must be a sequence of at least 2 rotationsc                 óú   € \         P                  ! V P                  . RO.4      4      p\        P                  ! \
        \        R7      ;_uu_ 4        \        ^.V4       RRR4       R#   + '       g   i     R# ; i)r”   r©   N)r”   r&   r{   rG   )r   r   r0   r«   r¬   r­   ÚSLERP_EXCEPTION_MESSAGEr   r…   s   & r"   Útest_slerp_single_rotrf  ú  sK   € ä×Ò˜2Ÿ:™:¢~Ð&6Ó7Ó8€AÜ	�Š”zÔ)@×	AÖ	AÜˆqˆc�1Œ÷ 
B×	A×	AÒ	Aús   ÁA)Á)A:	c                 ó8  € \         P                  ! 4       p\         P                  ! V P                  VP	                  4       4      4      p\
        P                  ! \        \        R 7      ;_uu_ 4        \        . V4       RRR4       R#   + '       g   i     R# ; i)r©   N©
r   rf   r   r0   r   r«   r¬   r­   re  r   r…   s   & r"   Útest_slerp_rot_len0ri  	  sX   € ä�ŠÓ€AÜ×Ò˜2Ÿ:™: a§i¡i£kÓ2Ó3€AÜ	�Š”zÔ)@×	AÖ	AÜˆb�!Œ÷ 
B×	A×	AÒ	Aús   Á1BÂB	c                 ó<  € \         P                  ! ^4      p\         P                  ! V P                  VP	                  4       4      4      p\
        P                  ! \        \        R7      ;_uu_ 4        \        ^.V4       RRR4       R#   + '       g   i     R# ; i)r   r©   Nrh  r…   s   & r"   Útest_slerp_rot_len1rk  		  s\   € ä�Š˜Ó€AÜ×Ò˜2Ÿ:™: a§i¡i£kÓ2Ó3€AÜ	�Š”zÔ)@×	AÖ	AÜˆqˆc�1Œ÷ 
B×	A×	AÒ	Aús   Á2B
Â
B	c                 óî   € \         P                  ! V P                  R4      4      p\        P                  ! \
        RR7      ;_uu_ 4        \        ^^.V4       RRR4       R#   + '       g   i     R# ; i)r&   z"Rotations with more than 1 leadingr©   N©r&   r&   rG   )r   r   r2  r«   r¬   r­   r   r…   s   & r"   Útest_slerp_tensor_rotrn  	  sK   € ä×Ò˜2Ÿ7™7 9Ó-Ó.€AÜ	�Š”zÐ)M×	NÖ	NÜˆq�!ˆf�aÔ÷ 
O×	N×	NÒ	Nús   Á
A#Á#A4	c           
      óp  € \         P                  ! \        R R7      ;_uu_ 4        \        P                  P                  ^ 4      p\        P                  ! V P                  VP                  RR7      4      4      pV P                  ^.^..4      p\        W24       RRR4       R#   + '       g   i     R# ; i)z.times to be specified in a 1 dimensional arrayr©   ry   NrC  )r«   r¬   r­   r8   rf   rg   r   r   r0   r¼  r   ©r1   rë   r'   rM  s   &   r"   Útest_slerp_time_dim_mismatchrq  	  sŽ   € ä	�Š”zØM÷
Oö 
Oä�i‰i×#Ñ# AÓ&ˆÜ×Ò˜rŸz™z¨#¯+©+¸6¨+Ó*BÓCÓDˆØ�J‰J˜˜Ø˜ðó ˆäˆaŒ÷
O÷ 
O÷ 
Oò 
Oús   ¥A5B$Â$B5	c           
      óh  € \         P                  ! \        R R7      ;_uu_ 4        \        P                  P                  ^ 4      p\        P                  ! V P                  VP                  RR7      4      4      pV P                  ^4      p\        W24       RRR4       R#   + '       g   i     R# ; i)z7number of rotations to be equal to number of timestampsr©   ry   Nr&  )r«   r¬   r­   r8   rf   rg   r   r   r0   r¼  Úaranger   rp  s   &   r"   Ú!test_slerp_num_rotations_mismatchrt  #	  s‚   € ä	�Š”zð *@÷ 
Aö 
Aä�i‰i×#Ñ# AÓ&ˆÜ×Ò˜rŸz™z¨#¯+©+¸6¨+Ó*BÓCÓDˆØ�I‰I�a‹LˆÜˆaŒ÷
A÷ 
A÷ 
Aò 
Aús   ¥A1B Â B1	c                 óò  € \         P                  P                  ^ 4      pV P                  VP	                  RR7      4      p\
        P                  ! V4      p. ROp\        V4      '       d@   \        WC4      pV P                  V P                  VP                  4      4      '       g   Q hR# \        P                  ! \        RR7      ;_uu_ 4        \        WC4       RRR4       R#   + '       g   i     R# ; i)r   ry   ústrictly increasing orderr©   Nr&  )r   r   r&   r&   rG   ©r8   rf   rg   r0   r¼  r   r   r   r   r€   r²   rS  r«   r¬   r­   ©r1   rë   rp   r'   rM  rD  s   &     r"   Útest_slerp_equal_timesry  -	  ó£   € ä
�)‰)×
Ñ
 Ó
"€CØ
�
‰
�3—;‘; F�;Ó+Ó,€AÜ×Ò˜1Ó€AÚ€AÜ�Q×ÒÜ�!‹KˆØ�v‰v�b—h‘h˜qŸw™wÓ'×(Ò(Ð(Ò(ä�]Š]œ:Ð-H×IÖIÜ�!ŒK÷ J×I×IÒIúó   ÃC%Ã%C6	c                 óò  € \         P                  P                  ^ 4      pV P                  VP	                  RR7      4      p\
        P                  ! V4      p. ROp\        V4      '       d@   \        WC4      pV P                  V P                  VP                  4      4      '       g   Q hR# \        P                  ! \        RR7      ;_uu_ 4        \        WC4       RRR4       R#   + '       g   i     R# ; i)r   ry   rv  r©   Nr&  )r   r   r{   r&   rG   rw  rx  s   &     r"   Útest_slerp_decreasing_timesr}  ;	  rz  r{  c                 ó¢  € \         P                  P                  ^ 4      p\        P                  ! V P                  VP                  RR7      4      4      pV P                  ^4      p\        W24      p\        P                  ! \        RR7      ;_uu_ 4        V P                  R.R..4      pV! V4       RRR4       R#   + '       g   i     R# ; i)r   ry   z&`times` must be at most 1-dimensional.r©   g      @gÍÌÌÌÌÌ@Nr&  )r8   rf   rg   r   r   r0   r¼  rs  r   r«   r¬   r­   )r1   rë   r'   rM  rD  Úinterp_timess   &     r"   Ú!test_slerp_call_time_dim_mismatchr€  I	  s¤   € ä
�)‰)×
Ñ
 Ó
"€CÜ×Ò˜2Ÿ:™: c§k¡k°v kÓ&>Ó?Ó@€AØ
�	‰	�!‹€AÜˆa‹€Aä	�Š”zØE÷
Gö 
Gà—z‘z C 5Ø$' 5ð#*ó +ˆá	ˆ,Œ÷	
G÷ 
G÷ 
Gò 
Gús   ÂB=Â=C	c                 ó:  € \         P                  P                  ^ 4      p\        P                  ! V P                  VP                  RR7      4      4      pV P                  ^4      ^,           p\        W24      pV P                  . RO4      pV P                  . RO4      p\        V4      '       Ed[   V! V4      P                  4       pV P                  WPP                  V4      8¬  WPP                  V4      8*  4      pV P                  V P                  Wx( R3,          4      4      '       g   Q hV P                  V P                  WxR3,          4      ( 4      '       g   Q hV! V4      P                  4       pV P                  W`P                  V4      8¬  W`P                  V4      8*  4      pV P                  V P                  Wx( R3,          4      4      '       g   Q hV P                  V P                  WxR3,          4      ( 4      '       g   Q hR# \         P"                  ! \$        RR7      ;_uu_ 4        V! V4       RRR4       \         P"                  ! \$        RR7      ;_uu_ 4        V! V4       RRR4       R#   + '       g   i     LG; i  + '       g   i     R# ; i)	r   ry   .ztimes must be within the ranger©   Nr&  r  )r   r&   rÔ   )r8   rf   rg   r   r   r0   r¼  rs  r   r   r   Úlogical_andÚminÚmaxr€   r²   r«   r¬   r­   )	r1   rë   r'   rM  rD  Ú	times_lowÚ
times_highrp   Úin_ranges	   &        r"   Ú!test_slerp_call_time_out_of_rangerˆ  W	  sà  € ä
�)‰)×
Ñ
 Ó
"€CÜ×Ò˜2Ÿ:™: c§k¡k°v kÓ&>Ó?Ó@€AØ
�	‰	�!‹�qÕ€AÜˆa‹€Aà—
‘
š9Ó%€IØ—‘šIÓ&€JÜ�Y×ÓÙˆi‹L× Ñ Ó"ˆØ—>‘> )¯v©v°a«yÑ"8¸)ÇvÁvÈaÃyÑ:PÓQˆØ�v‰v�b—h‘h˜q ¨C Õ0Ó1×2Ò2Ð2Ð2Ø�v‰v�r—x‘x ¨C -Õ 0Ó1Ð1×2Ò2Ð2Ð2Ùˆj‹M×!Ñ!Ó#ˆØ—>‘> *·±°q³	Ñ"9¸:ÏÉÐPQËÑ;RÓSˆØ�v‰v�b—h‘h˜q ¨C Õ0Ó1×2Ò2Ð2Ð2Ø�v‰v�r—x‘x ¨C -Õ 0Ó1Ð1×2Ò2Ð2Ò2ä�]Š]œ:Ð-M×NÖNÙˆiŒL÷ Oä�]Š]œ:Ð-M×NÖNÙˆjŒM÷ OÑN÷ O×NúçN×NÐNús   È.	I6É#	J	É6J	Ê	J	c                 ó¾  € \         P                  ! V 4      pWP                  8X  d   R MRp\        P                  ! RV P                  ^ .^P..4      RR7      p\        ^ ^.V4      pV! R4      p\        P                  ! RV P                  ^4      RR7      pWVP                  4       ,          p\        VP                  4       V P                  R4      R	,          VR7       R# )
r]   r
  rp  Tr!  rª  rˆ   rx   Nr   )
r.   r/   rã   r   r‘   r0   r   rŸ   r   r  )r1   r-   r`   r'   rD  Úr_interpolatedÚr_interpolated_expectedÚdeltas   &       r"   Útest_slerp_call_scalar_timer�  p	  s°   € ô
 ×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€DÜ×Ò˜C §¡¨a¨S°2°$¨KÓ!8À$ÔG€AÜˆq�!ˆf�aÓ€Aá�t“W€NÜ&×1Ò1°#°r·z±zÀ"³~ÈtÔTÐà×8Ñ8Ó:Õ:€Eä�E—O‘OÓ% r§z¡z°#£°rÕ':À×Fr$   c                 óÐ  € \         P                  ! V P                  . RO4      4      p\         P                  ! V P                  . RO4      4      pW,          p\        VP	                  4       V P                  . RO4      4       \
        P                  ! \        RR7      ;_uu_ 4        V^,           RRR4       VP                  ^4      \        J g   Q hR#   + '       g   i     L-; i)r   zunsupported operand typer©   Nr5   r¢   )
r   r   r0   r   r   r«   r¬   r+  r    ÚNotImplemented)r1   rž  rŸ  r¥   s   &   r"   Útest_multiplicationr�  ‚	  s—   € ä	×	Ò	˜BŸJ™J¢|Ó4Ó	5€BÜ	×	Ò	˜BŸJ™J¢|Ó4Ó	5€BØ	�€BÜ�B—J‘J“L "§*¡*ª^Ó"<Ô=ô 
�Š”yÐ(B×	CÖ	CØ
ˆQŽ÷ 
Dð �:‰:�a‹=œNÓ*Ð*Ò*÷	 
D×	Cús   Â&
CÃC%	c                 óÜ  € \         P                  P                  ^ 4      p\        P                  ! V P                  VP                  RR7      4      4      p\        P                  ! V P                  VP                  RR7      4      4      pW#,          pVP                  4       P                  R8X  g   Q h\        P                  ! V P                  VP                  RR7      4      4      p\        P                  ! V P                  VP                  RR7      4      4      pW#,          pVP                  4       P                  R8X  g   Q h\        P                  ! V P                  VP                  RR7      4      4      p\        P                  ! V P                  VP                  RR7      4      4      pW#,          pVP                  4       P                  R8X  g   Q h\        P                  ! V P                  VP                  R	R7      4      4      p\        P                  ! V P                  VP                  R
R7      4      4      pW#,          pVP                  4       P                  R
8X  g   Q hR# )r   ry   Nr(  r?  )r&   r   rG   )r{   r   rG   rG   )r&   rG   rG   )r{   r&   rG   rG   rC  rm  )	r8   rf   r}   r   r   r0   r�   r   rl   )r1   ro   rž  rŸ  r¥   s   &    r"   Útest_multiplication_ndr’  ‘	  sÂ  € ô �)‰)×
Ñ
 Ó
"€CÜ	×	Ò	˜BŸJ™J s§z¡z°y zÓ'AÓBÓ	C€BÜ	×	Ò	˜BŸJ™J s§z¡z°y zÓ'AÓBÓ	C€BØ	�€BØ�:‰:‹<×Ñ Ô*Ð*Ð*ô 
×	Ò	˜BŸJ™J s§z¡z°y zÓ'AÓBÓ	C€BÜ	×	Ò	˜BŸJ™J s§z¡z°y zÓ'AÓBÓ	C€BØ	�€BØ�:‰:‹<×Ñ Ô*Ð*Ð*ô 
×	Ò	˜BŸJ™J s§z¡z°| zÓ'DÓEÓ	F€BÜ	×	Ò	˜BŸJ™J s§z¡z°y zÓ'AÓBÓ	C€BØ	�€BØ�:‰:‹<×Ñ Ô-Ð-Ð-ô 
×	Ò	˜BŸJ™J s§z¡z°v zÓ'>Ó?Ó	@€BÜ	×	Ò	˜BŸJ™J s§z¡z°y zÓ'AÓBÓ	C€BØ	�€BØ�:‰:‹<×Ñ Ô*Ð*Ò*r$   c                 óª  € \         P                  P                  ^ 4      p\        P                  ! V P                  VP                  RR7      4      4      p\        P                  ! V P                  VP                  RR7      4      4      p\        P                  ! \        RR7      ;_uu_ 4        W#,           RRR4       R#   + '       g   i     R# ; i)r   ry   rÃ  r©   NrC  )r   rG   rG   )
r8   rf   r}   r   r   r0   r�   r«   r¬   r­   rÔ  s   &   r"   Útest_multiplication_errorsr”  ®	  s„   € ä
�)‰)×
Ñ
 Ó
"€CÜ	×	Ò	˜BŸJ™J s§z¡z°v zÓ'>Ó?Ó	@€BÜ	×	Ò	˜BŸJ™J s§z¡z°y zÓ'AÓBÓ	C€BÜ	�Š”zÐ);×	<Ö	<Ø
Ž÷ 
=×	<×	<Ò	<ús   Â.	CÃC	c                 ó<  € \        \        P                  ! ^2^ R7      V 4      p\        \        P                  ! R^R7      V 4      pV P                  \	        V4      4      pV F7  pW$,          V,          p\        \        VP                  4       ^R7      V4       K9  	  R# )é2   rv   rÐ  r    N)r2   r   rf   r2  rq  r   r   r   )r1   ÚqsÚrsrö   r'   s   &    r"   Útest_multiplication_stabilityr™  ·	  sn   € ä	œŸš¨°Ô2°BÓ	7€BÜ	œŸš¨°!Ô4°bÓ	9€BØ�w‰w”s˜2“wÓ€HÛˆØ�V�b�[ˆÜœ r§z¡z£|¸!Ô<¸hÖGó r$   Ú__pow__c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   Æ	  s   € ÷ :9ñ :9”sñ :9r$   c                 óò  € \         P                  ! V 4      pW P                  8X  d   R MRp\        P                  P                  ^ 4      pV3V^,
          ,          pVP                  VR,           R7      p\        P                  ! V P                  V4      4      pVP                  4       pR EF?  p	Wy,          p
V P                  . RO4      p\        V
P                  \        V4      4      '       g   Q h\        P                  ! V P                  WµR	,           4      4      p\        \!        V	4      4       F  pV	^ 8”  d   WÇ,          pK  WÈ,          pK  	  W¬P                  4       ,          P#                  4       pV P%                  Wã8  4      '       g   Q h\        P                  ! V P                  WµR	,           4      4      pWÉ,          P'                  4       P(                  VR,           8X  d   EK@  Q h	  R
 F_  p	Wy,          p
\        P*                  ! W—P-                  4       ,          4      p\/        V
P'                  4       VP'                  4       VR7       Ka  	  . ROp	V	 FŠ  pW,          pWpP                  V.4      ,          p\/        VP'                  4       VP'                  4       4       WpP                  V4      ,          p\/        VP'                  4       VP'                  4       4       KŒ  	  V P1                  VR,           4      p\         P2                  ! V4      R,          P5                  R4      p\        P*                  ! V4      p^p	Wy,          p
\        P*                  ! W—P-                  4       ,          4      p\/        V
P'                  4       VP'                  4       VR7       WpP                  V	.4      ,          p
\        P*                  ! W—P-                  4       ,          4      p\/        V
P'                  4       VP'                  4       VR7       WpP                  V	4      ,          p
\        P*                  ! W—P-                  4       ,          4      p\/        V
P'                  4       VP'                  4       VR7       R# )rÓ  rá   ry   rx   rw   NrU   )r¯  rÊ   r|   r   r   r&   rH   r¢   rT   )ç      ø¿rô   ç       €rˆ   rÐ   rô  )r¯  rÊ   r�  r|   rô   rž  r   rˆ   rÐ   r”   rô  r&   r  r�  )r.   r/   rã   r8   rf   r}   r�   r   r   r0   rŸ   rM  rN  rO  ri   rk   r�   r  r€   r   rl   r  r  r   r•   rç   rè   )r1   rN   r-   r`   ro   r
  r®   r  Úp_invrÛ  rp   Ú
q_identityr'   r!  ÚangÚexponentÚr_arrayr  s   &&                r"   Útest_powr¤  Á	  s&  € ô ×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€DÜ
�)‰)×
Ñ
 Ó
"€CØ�'˜T A�XÕ&€KØ�:‰:˜;¨Õ-ˆ:Ó.€DÜ×Ò˜2Ÿ:™: dÓ+Ó,€AØ�E‰E‹G€Eä%ˆà�FˆØ—Z‘Z¢Ó.ˆ
ä˜!Ÿ'™'¤4¨
Ó#3×4Ò4Ð4Ð4Ü×Ò˜rŸw™w zÀÕ3EÓFÓGˆÜ”s˜1“v–ˆAØ�1ŒuØ•E’à•I’ñ	 ð
 —5‘5“7�{×%Ñ%Ó'ˆØ�v‰v�c‘j×!Ò!Ð!Ð!ô ×Ò˜rŸw™w zÀÕ3EÓFÓGˆØ•�~‰~Ó×%Ñ%¨°tÕ);×;Ð;Ð;ñ# &ó( /ˆØ�FˆÜ× Ò  §[¡[£]Õ!2Ó3ˆÜ˜Ÿ	™	› Q§Y¡Y£[°t×<ñ /ò 	A€AÛˆØ�MˆØ—z‘z 8 *Ó-Õ-ˆÜ˜Ÿ	™	› W§_¡_Ó%6Ô7Ø—z‘z (Ó+Õ+ˆÜ˜Ÿ	™	› W§_¡_Ó%6Ö7ñ ð �X‰X�k DÕ(Ó)€FÜ�VŠV�F‹^˜FÕ#×'Ñ'¨Ó.€FÜ×Ò˜VÓ$€AØ	€AØ	�€AÜ×Ò˜Q§¡£Õ.Ó/€AÜ�A—I‘I“K §¡£°4Õ8ð 	
�Z‰Z˜˜‹_Õ€AÜ×Ò˜Q§¡£Õ.Ó/€AÜ�A—I‘I“K §¡£°4Õ8Ø	�Z‰Z˜‹]Õ€AÜ×Ò˜Q§¡£Õ.Ó/€AÜ�A—I‘I“K §¡£°4×8r$   c                 óL  € \        \        P                  ! ^ R7      V 4      p\        P                  ! \
        RR7      ;_uu_ 4        \        V^^4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        WP                  ^^.4      ,           RRR4       \        P                  ! \        RR7      ;_uu_ 4        WP                  ^.^..4      ,           RRR4       R#   + '       g   i     L ; i  + '       g   i     Lm; i  + '       g   i     R# ; i)r   rv   zmodulus not supportedr©   NzArray exponent must be a scalar)	r2   r   rf   r«   r¬   ÚNotImplementedErrorÚpowr­   r0   )r1   r  s   & r"   Útest_pow_errorsr¨  
  s³   € ä”x—’¨1Ô-¨rÓ2€AÜ	�ŠÔ*Ð2I×	JÖ	JÜˆAˆq�!Œ÷ 
Kä	�Š”zÐ)J×	KÖ	KØ	�Z‰Z˜˜A˜ÓÖ÷ 
Lä	�Š”zÐ)J×	KÖ	KØ	�Z‰Z˜!˜˜q˜c˜
Ó#Ö#÷ 
LÑ	K÷	 
K×	Júç	K×	Kúç	K×	KÐ	Kús$   ÁC,Â C?ÃDÃ,C<	Ã?D	ÄD#	c                  ó¬  € \         P                  ! ^ R7      p \         P                  ! ^^R7      p\        P                  ! V 4      p\	        VP
                  R4       \        P                  ! V4      p\	        VP
                  R4       \        V^ ,          P                  4       V^ ,          P                  4       4       \        V^,          P                  4       V^,          P                  4       4       \        P                  ! V .4      p\	        VP
                  R4       \	        V^ ,          V 4       \        P                  ! V.4      p\	        VP
                  R4       \        VR,          P                  4       V^ ,          P                  4       4       \        VR	,          P                  4       V^,          P                  4       4       \        P                  ! W.\        R7      p\	        VP
                  R4       \	        V^ ,          V 4       \	        V^,          V4       \        P                  ! WV.4      p\	        VP
                  R
4       R# )r   rv   r,   Nr   r1  rT   rW  rþ   )r   r   )r{   r&   )	r   rf   r8   r9   r   rl   r   rX   Úobject)ÚsingleÚmultipler9   s      r"   Ú test_rotation_within_numpy_arrayr­  
  s�  € ä�_Š_ Ô#€FÜ�Š˜q aÔ(€Hä�HŠH�VÓ€EÜ�—‘˜bÔ!ä�HŠH�XÓ€EÜ�—‘˜dÔ#Ü�E˜!•H×&Ñ&Ó(¨(°1­+×*?Ñ*?Ó*AÔBÜ�E˜!•H×&Ñ&Ó(¨(°1­+×*?Ñ*?Ó*AÔBä�HŠH�f�XÓ€EÜ�—‘˜dÔ#Ü��q•˜6Ô"ä�HŠH�h�ZÓ €EÜ�—‘˜fÔ%Ü�E˜$•K×)Ñ)Ó+¨X°a­[×-BÑ-BÓ-DÔEÜ�E˜$•K×)Ñ)Ó+¨X°a­[×-BÑ-BÓ-DÔEä�HŠH�fÐ'¬vÔ6€EÜ�—‘˜dÔ#Ü��q•˜6Ô"Ü��q•˜8Ô$ä�HŠH�h¨(Ð3Ó4€EÜ�—‘˜fÖ%r$   Úarray_api_strictz"array API doesn't support pickling)Úreasonc                 ó¨  € \         P                  ! V P                  ^ ^ \        P                  ! \
        P                  ^,          4      \        P                  ! \
        P                  ^,          4      .4      4      p\        P                  ! V4      p\        P                  ! V4      p\        VP                  4       VP                  4       RR7       R# ©r   r\   rx   N)r   r   r0   r£   Úsinr8   r#  r:  ÚpickleÚdumpsÚloadsr   rX   )r1   r'   ÚpklÚ	unpickleds   &   r"   Útest_picklingr¸  -
  s~   € ô 	×Ò˜2Ÿ:™: q¨!¬T¯XªX´b·e±e¸AµgÓ->ÄÇÂÌÏÉÈqÍÓ@QÐ&RÓSÓT€AÜ
�,Š,�q‹/€CÜ—’˜SÓ!€IÜ�A—K‘K“M 9×#6Ñ#6Ó#8¸u×Er$   z"array API doesn't support deepcopyc                 ó|  € \         P                  ! V P                  ^ ^ \        P                  ! \
        P                  ^,          4      \        P                  ! \
        P                  ^,          4      .4      4      p\        P                  ! V4      p\        VP                  4       VP                  4       RR7       R# r±  )r   r   r0   r£   r²  r8   r#  r:  rå  Údeepcopyr   rX   )r1   r'   rž  s   &  r"   Útest_deepcopyr»  7
  sn   € ô 	×Ò˜2Ÿ:™: q¨!¬T¯XªX´b·e±e¸AµgÓ->ÄÇÂÌÏÉÈqÍÓ@QÐ&RÓSÓT€AÜ	�Š�qÓ	€BÜ�A—K‘K“M 2§<¡<£>¸×>r$   c                  ó  € \         P                  ! . R	O4      p V P                  R4      pV P                  R4      pVP                  R,          RJ g   Q hVP                  R,          RJ g   Q h\        ;QJ d&    R VP
                   4       F  '       d   K   RM	  RM! R VP
                   4       4      '       g   Q h\        ;QJ d&    R VP
                   4       F  '       d   K   RM	  RM! R VP
                   4       4      '       g   Q hR# )
r   r“   rq  ÚC_CONTIGUOUSTc              3   ó*   "  € T F	  q^ 8¬  x € K  	  R# 5ir  r   ©Ú.0rq   s   & r"   Ú	<genexpr>Ú+test_as_euler_contiguous.<locals>.<genexpr>G
  ó   é € Ð*™z˜!�AŽv›zùó   ‚Fc              3   ó*   "  € T F	  q^ 8¬  x € K  	  R# 5ir  r   r¿  s   & r"   rÁ  rÂ  H
  rÃ  rÄ  Nr5   )r   r   r·  Úflagsr€   Ústrides)r'   Úe1Úe2s      r"   Útest_as_euler_contiguousrÊ  @
  sº   € ä×Òš<Ó(€AØ	
�‰�EÓ	€BØ	
�‰�EÓ	€BØ�8‰8�NÕ# tÓ+Ð+Ð+Ø�8‰8�NÕ# tÓ+Ð+Ð+ß‹3Ñ*˜rŸzšzÓ*�3�3Š3Ñ*˜rŸzšzÓ*×*Ò*Ð*Ð*ß‹3Ñ*˜rŸzšzÓ*�3�3Š3Ñ*˜rŸzšzÓ*×*Ò*Ð*Ò*r$   Úconcatenatec                 óœ  € \        \        P                  ! ^
^ R7      V 4      p. ROp^ .\        \        P
                  ! V4      4      ,           p\        W24       UUu. uF  w  rEWWE,            NK  	  ppp\        P                  ! V4      p\        VP                  4       VP                  4       4       \        P                  ! V4      p\        VP                  4       VP                  4       4       WJg   Q h\        P                  P                  ^ 4      pV P                  VP                  RR7      4      p	\        P                  ! V	4      p\        P                  ! V	R,          4      p
\        P                  ! V	R,          4      p\        P                  ! W«.4      p\        VP                  4       VP                  4       4       R# u uppi )rc   rv   ry   N)r   r&   r{   r   r{   ©rH   r&   rG   )r  .):r{   NN.)r2   r   rf   Úlistr8   Úcumsumr)  rË  r
   r   r}   r0   r�   r   )r1   rÝ  ÚsizesÚstartsrq   rÛ  Úsplitr  ro   r®   rž  rŸ  s   &           r"   Útest_concatenaterÓ  K
  sX  € äœhŸošo¨b°aÔ8¸"Ó=€HÚ€EØˆS”4œŸ	š	 %Ó(Ó)Õ)€FÜ+.¨vÔ+=Ô>Ñ+=¡4 1ˆX˜�ÓÑ+=€EÑ>Ü×!Ò! %Ó(€FÜ�H×$Ñ$Ó&¨¯©Ó(8Ô9ô ×!Ò! (Ó+€FÜ�H×$Ñ$Ó&¨¯©Ó(8Ô9ð Ó!Ð!Ð!ô �)‰)×
Ñ
 Ó
"€CØ�:‰:�c—j‘j i�jÓ0Ó1€DÜ×!Ò! $Ó'€HÜ	×	Ò	˜D �MÓ	*€BÜ	×	Ò	˜D �MÓ	*€BÜ×!Ò! 2 (Ó+€FÜ�H×$Ñ$Ó&¨¯©Ó(8Ö9ùó% ?s   ÁGc                 ó0  € \         P                  ! \        R R7      ;_uu_ 4        \        V P	                  \        P
                  ! 4       P                  4       4      4      p\        P                  ! V^R.4       RRR4       R#   + '       g   i     R# ; i)zRotation objects onlyr©   N)r«   r¬   r+  r   r0   r  r   rË  )r1   rú   s   & r"   Útest_concatenate_wrong_typerÕ  e
  s]   € ä	�Š”yÐ(?×	@Ö	@Ü�r—z‘z¤(×"3Ò"3Ó"5×"=Ñ"=Ó"?Ó@ÓAˆÜ×Ò˜c 1 d˜^Ô,÷ 
A×	@×	@Ò	@ús   ¥ABÂB	c                 ó\  € \         P                  ! V P                  R4      4      p\         P                  ! V P                  R4      4      p\        P                  ! \
        \        \        34      ;_uu_ 4        \         P                  ! W.4       RRR4       R#   + '       g   i     R# ; i)rH   NrÍ  rÙ   )	r   r   r2  r«   r¬   r­   ÚRuntimeErrorr+  rË  )r1   rž  rŸ  s   &  r"   Útest_concatenate_wrong_shaperØ  l
  sh   € ä	×	Ò	˜BŸG™G IÓ.Ó	/€BÜ	×	Ò	˜BŸG™G F›OÓ	,€Bä	�Šœ
¤L´)Ð<×	=Õ	=Ü×Ò˜b˜XÔ&÷ 
>×	=×	=Ò	=ús   Á8BÂB+	c                 ó@  € \        V P                  . RO.4      4      p\        V P                  . RO. RO.4      4      p\        V P                  . RO4      4      p\        V4      ^8X  g   Q h\        V4      ^8X  g   Q h\        P                  ! \
        RR7      ;_uu_ 4        \        V4       RRR4       \         P                  ! V P                  R4      4      p\        V4      ^8X  g   Q hV'       g   Q hV'       g   Q hV'       g   Q hR#   + '       g   i     Lg; i)r   zSingle rotation has no len().r©   Nr5   rB  )r   r0   rq  r«   r¬   r+  r   r2  )r1   Úrotation_multi_oneÚrotation_multiÚrotation_singleÚrotation_batcheds   &    r"   Útest_len_and_boolrÞ  v
  sß   € ä! "§*¡*ªl¨^Ó"<Ó=ÐÜ˜bŸj™jª,ºÐ)EÓFÓG€NÜ˜rŸz™zª,Ó7Ó8€OäÐ!Ó" aÔ'Ð'Ð'Üˆ~Ó !Ô#Ð#Ð#Ü	�Š”yÐ(G×	HÖ	HÜˆOÔ÷ 
Iô  ×)Ò)¨"¯'©'°)Ó*<Ó=ÐÜÐÓ  AÔ%Ð%Ð%÷ ÐÐßÐˆ>ßÐŠ?÷ 
I×	Hús   Â"DÄD	Úfrom_davenportc                 óî   € V P                  . RO4      p\        P                  ! VR^ZRR7      P                  4       pV P                  . RO4      \        P
                  ! ^4      ,          p\        W#4       R# )r   r{  Tr!  Nr   rm  )r0   r   rß  r   r£   r¤   r   )r1   r!   r®   rL   s   &   r"   Ú#test_from_davenport_single_rotationrá  Š
  sV   € à�:‰:’iÓ €DÜ×"Ò" 4¨°bØ+/ô1ß18±³ð 	à—J‘Jš~Ó.´·²¸1³Õ=€MÜ�DÖ(r$   c                 ó2  € V P                  . RO4      pV P                  . RO4      p\        P                  ! WP                  ,          ^,          4      p\        P                  ! VRV P                  ^,          4      p\        VP                  RR7      VP                  RR7      4       V P                  VR4      p\        P                  ! WP                  ,          ^,          4      p\        P                  ! VRV P                  ^,          .4      p\        VP                  RR7      VP                  RR7      4       V P                  W.^ R7      p\        P                  ! WPP                  V P                  ^,          .V P                  ^,          ..4      ,          4      pV^ ,          V^,          ,          pV P                  W!.^ R7      p\        P                  ! VRV P                  ^,          V P                  ^,          .4      p\        VP                  RR7      VP                  RR7      4       V P                  W.^ R7      p\        P                  ! WPP                  V P                  ^,          .V P                  ^,          ..4      ,          4      pV P                  VR4      p\        P                  ! VRV P                  ^,          .V P                  ^,          ..4      p\        VP                  RR7      VP                  RR7      4       R# )	rˆ   ÚeTr‰   r    Nr¿   r  r  )	r0   r   r  r#  rß  r   r   rV   rõ   )r1   ÚezÚeyrú   Úrot_davrJ  Úaxes_davs   &      r"   Ú#test_from_davenport_one_or_two_axesrè  “
  sA  € à	�‰’KÓ	 €BØ	�‰’KÓ	 €Bô ×
Ò
˜r§E¡E�z¨!�|Ó
,€CÜ×%Ò% b¨#¨r¯u©u°Q­wÓ7€GÜ�C—K‘K¨$�KÓ/°·±È4°Ó1PÔQð �:‰:�b˜&Ó!€DÜ
×
Ò
˜r§E¡E�z¨!�|Ó
,€CÜ×%Ò% d¨C°"·%±%¸µ'°Ó;€GÜ�C—K‘K¨$�KÓ/°·±È4°Ó1PÔQð �8‰8�R�H 1ˆ8Ó%€DÜ
×
Ò
˜t§j¡j°2·5±5¸µ7°)¸b¿e¹eÀA½g¸YÐ1GÓ&HÕHÓ
I€CØ
ˆa�&�3�q•6�/€CØ�x‰x˜˜ qˆxÓ)€HÜ×%Ò% h°°b·e±e¸Aµg¸r¿u¹uÀQ½wÐ5GÓH€GÜ�C—K‘K¨$�KÓ/°·±È4°Ó1PÔQð �8‰8�R�H 1ˆ8Ó%€DÜ
×
Ò
˜t§j¡j°2·5±5¸µ7°)¸b¿e¹eÀA½g¸YÐ1GÓ&HÕHÓ
I€CØ�z‰z˜"˜fÓ%€HÜ×%Ò% h°°r·u±u¸Qµw°iÀ"Ç%Á%ÈÅ'ÀÐ5KÓL€GÜ�C—K‘K¨$�KÓ/°·±È4°Ó1PÖQr$   c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   ¶
  s   € ÷ 5ñ 5¬ñ 5r$   c                 óò  € \         P                  P                  ^ 4      pV3V^,
          ,          p\        P                  ! V P                  VP                  RR7      4      4      pVP                  4       pV P                  VP                  VR,           R7      4      p\        P                  ! VR,          RV4      pVP                  4       P                  VR,           8X  g   Q hV P                  VP                  VR,           R7      4      p\        P                  ! VR,          RV4      pVP                  4       P                  VR,           8X  g   Q hV P                  VP                  VR,           R7      4      p\        P                  ! VR	,          RV4      pVP                  4       P                  VR,           8X  g   Q h\        P                  ! V P                  VP                  VR,           R7      4      4      pVP                  4       pV P                  VP                  VR
,           R7      4      p\        P                  ! VRV4      pVP                  4       P                  VR,           8X  g   Q hR# )r   ry   rã  NrU   rT   r¾   )r   N.r1  )ra  .r  ©r8   rf   r}   r   r   r0   r�   rX   rß  r   rl   )r1   rN   ro   r
  r'   rJ  rv  rú   s   &&      r"   Útest_from_davenport_shapesrì  ´
  sÞ  € ô �)‰)×
Ñ
 Ó
"€CØ�'˜T A�XÕ&€Kä×Ò˜2Ÿ:™: c§j¡j°d jÓ&;Ó<Ó=€AØ�;‰;‹=€Dà�Z‰Z˜Ÿ
™
¨°dÕ(:˜
Ó;Ó<€FÜ
×
!Ò
! $ v¥,°°VÓ
<€CØ�;‰;‹=×Ñ +°Õ"4Ô4Ð4Ð4à�Z‰Z˜Ÿ
™
¨°dÕ(:˜
Ó;Ó<€FÜ
×
!Ò
! $ |Õ"4°c¸6Ó
B€CØ�;‰;‹=×Ñ +°Õ"4Ô4Ð4Ð4à�Z‰Z˜Ÿ
™
¨°dÕ(:˜
Ó;Ó<€FÜ
×
!Ò
! $ w¥-°°fÓ
=€CØ�;‰;‹=×Ñ +°Õ"4Ô4Ð4Ð4ô 	×Ò˜2Ÿ:™: c§j¡j°kÀDÕ6H jÓ&IÓJÓK€AØ�;‰;‹=€DØ�Z‰Z˜Ÿ
™
¨°dÕ(:˜
Ó;Ó<€FÜ
×
!Ò
! $¨¨VÓ
4€CØ�;‰;‹=×Ñ +°Õ"4Ô4Ð4Ò4r$   c                 ó‚  € \         P                  P                  ^ 4      p\        P                  ! V P                  VP                  RR7      4      4      pVP                  4       pV P                  VP                  RR7      4      p\        P                  ! VRV4      pVP                  4       P                  R8X  g   Q hR# )r   ry   rã  N©rG   é	   r   rG   )r   rG   r{   )rG   rï  rG   rG   rë  )r1   ro   r'   rJ  rv  rú   s   &     r"   Útest_from_davenport_broadcastrð  Ô
  sŒ   € ä
�)‰)×
Ñ
 Ó
"€Cä×Ò˜2Ÿ:™: c§j¡j°l jÓ&CÓDÓE€AØ�;‰;‹=€DØ�Z‰Z˜Ÿ
™
¨	˜
Ó2Ó3€FÜ
×
!Ò
! $¨¨VÓ
4€Cà�;‰;‹=×Ñ ,Ô.Ð.Ò.r$   c           	      ó°  € . ROp. R	Op. R
OpV P                  W.4      p\        V4      '       dR   \        P                  ! VR^ ^ .4      P	                  4       pV P                  V P                  V4      4      '       g   Q hMG\        P                  ! \        RR7      ;_uu_ 4        \        P                  ! VR^ ^ .4       RRR4       V P                  WV.4      p\        V4      '       dR   \        P                  ! VR. RO4      P	                  4       pV P                  V P                  V4      4      '       g   Q hMG\        P                  ! \        RR7      ;_uu_ 4        \        P                  ! VR. RO4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        P                  ! V P                  V.4      R^ .4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        P                  ! V P                  WV.4      R. RO4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        P                  ! V P                  V4      R^ ^.4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        P                  ! V P                  WV.4      R^ ^.4       RRR4       R#   + '       g   i     EL+; i  + '       g   i     ELƒ; i  + '       g   i     ELA; i  + '       g   i     Lü; i  + '       g   i     L¹; i  + '       g   i     R# ; i)r   rã  zmust be orthogonalr©   Nzorder should ber“   zExpected `angles`r   r   rõ  r  )r   r   r&   r{   )
r0   r   r   rß  r   r€   r²   r«   r¬   r­   )r1   rä  rå  ÚezyrJ  rp   s   &     r"   Ú!test_from_davenport_invalid_inputró  à
  s3  € â	€BÚ	€BÚ
€Cà�:‰:�r�iÓ €DÜ�T×ÒÜ×#Ò# D¨#°°1¨vÓ6×>Ñ>Ó@ˆØ�v‰v�b—h‘h˜q“k×"Ò"Ð"Ñ"ä�]Š]œ:Ð-A×BÖBÜ×#Ò# D¨#°°1¨vÔ6÷ Cà�:‰:�r˜s�mÓ$€DÜ�T×ÒÜ×#Ò# D¨#ªyÓ9×AÑAÓCˆØ�v‰v�b—h‘h˜q“k×"Ò"Ð"Ñ"ä�]Š]œ:Ð-A×BÖBÜ×#Ò# D¨#ªyÔ9÷ Cä	�Š”zÐ):×	;Ö	;Ü×Ò §
¡
¨B¨4Ó 0°%¸!¸Ô=÷ 
<ä	�Š”zÐ)<×	=Ö	=Ü×Ò §
¡
¨B°B¨<Ó 8¸#º|ÔL÷ 
>ä	�Š”zÐ)<×	=Ö	=Ü×Ò §
¡
¨2£°°a¸°VÔ<÷ 
>ä	�Š”zÐ)<×	=Ö	=Ü×Ò §
¡
¨B°B¨<Ó 8¸#ÀÀ1¸vÔF÷ 
>Ñ	=÷ C×BÐBú÷ C×BÐBúç	;×	;Ð	;úç	=×	=úç	=×	=úç	=×	=Ð	=úsH   Â%K"Å!K6Æ(*L
Ç>,LÉ*L1Ê,,MË"K3	Ë6L	Ì
L	ÌL.	Ì1M	ÍM	c                  ó¶  € \         P                  P                  ^{4      p \         P                  ! . RO4      p\         P                  ! . RO4      p\         P                  ! . RO4      p\        P                  ! V R7      pVP                  WV.R4      p\        P                  ! WV.RVP                  4       4      pVP                  VRR7      '       g   Q h\        P                  ! ^V R7      pVP                  WV.R4      p\        P                  ! WV.RVP                  4       4      p\         P                  ! VP                  VRR7      4      '       g   Q hR# )	ru   rv   rã  rw   rx   Nr   r   r   )
r8   rf   r}   r9   r   Úas_davenportrß  r~   r   r€   )ro   rÈ  rÉ  Úe3r‚   rv  r'   s          r"   Útest_from_davenport_array_liker÷  þ
  s	  € Ü
�)‰)×
Ñ
 Ó
$€Cä	�Š’)Ó	€BÜ	�Š’)Ó	€BÜ	�Š’)Ó	€BÜ—’ SÔ)€JØ×$Ñ$ b¨b \°3Ó7€FÜ×Ò ¨ ¨c°6·=±=³?ÓC€AØ×"Ñ" 1¨5Ð"×1Ò1Ð1Ð1ô —’ ¨Ô,€JØ×$Ñ$ b¨b \°3Ó7€FÜ×Ò ¨ ¨c°6·=±=³?ÓC€AÜ�6Š6�*×)Ñ)¨!°%Ð)Ó8×9Ò9Ð9Ò9r$   rõ  c                 ó  € \         P                  ! V 4      p\        P                  P	                  ^ 4      p^dp\        P
                  ! V^34      pVP                  \        P                  ) \        P                  V3R7      VR&   VP                  ^ \        P                  V3R7      pVP                  \        P                  ) \        P                  V3R7      VR&   VP                  ^ \        P                  RR7      pV P                  . R	O4      pV P                  . R
O4      pV FÕ  p	V P                  \        P                  ! W˜,          4      P                  V4      4      p
V P                  WxV
.^ R7      pWY,
          VR&   R Fr  pVR8X  d   TMV P                  V^ R7      p\        P                  ! WÜV P                  WAR7      4      pVP                  WÜ4      p\!        WðP                  WAR7      4       Kt  	  K×  	  R# )r   r  r    r|  r,   NrÔ  rÖ  )rð  r%  r  rÕ  ©r{  r|  )r.   r/   r8   rf   rg   rP  r¼  r#  r0   r   r  r‰  rõ   r…  rß  rõ  r   )r1   r-   rë   rÛ  rv  Úangles_middleÚlambdasrÈ  rÉ  Úlambrö  Úax_lambr¸  Úaxrú   Ú
angles_davs   &               r"   Útest_as_davenportr     sŠ  € ä×Ò˜bÓ!€EÜ
�)‰)×
Ñ
 Ó
"€CØ€AÜ�XŠX�q˜!�fÓ€FØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€Fˆ4�LØ—K‘K A¬B¯E©E¸¸�KÓ=€MØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€Fˆ4�LØ�k‰k˜a¤b§e¡e°%ˆkÓ8€Gà	�‰’KÓ	 €BØ	�‰’KÓ	 €BãˆØ�Z‰Zœ×,Ò,¨T­WÓ5×;Ñ;¸BÓ?Ó@ˆØ—(‘(˜B B˜<¨a�(Ó0ˆØ$Õ+ˆˆt‰Û/ˆEØ! [Ô0‘°b·g±g¸gÈA°gÓ6NˆBÜ×)Ò)¨"°R·Z±ZÀ°ZÓ5TÓUˆCØ×)Ñ)¨"Ó4ˆJÜ˜J¯
©
°6¨
Ó(GÖHó	 0ó	 r$   c                 ón  € \         P                  P                  ^ 4      p\        P                  ! V P                  VP                  RR7      4      4      pVP                  4       pV P                  VP                  \         P                  ) \         P                  RR7      4      p\        P                  ! V4      R,          P                  VR,          ^,          4      pR	 FP  pVR8X  d   V P                  VR
R7      p\        P                  ! W5V4      pVP                  W54      p\!        Wt4       KR  	  R# )r   ry   r  r|  r    Nrî  )rG   rï  r   r{   rœ  rù  rÊ   )r8   rf   r}   r   r   r0   r�   rX   r¼  r#  r.   rç   rè   r…  rß  rõ  r   )r1   ro   r'   rJ  rv  r¸  rú   rÿ  s   &       r"   Útest_as_davenport_ndr  )  sà   € ä
�)‰)×
Ñ
 Ó
"€CÜ×Ò˜2Ÿ:™: c§j¡j°l jÓ&CÓDÓE€AØ�;‰;‹=€DØ�Z‰Z˜Ÿ™¬¯©¨´R·U±UÀ˜ÓNÓO€FÜ�VŠV�F‹^˜FÕ#×'Ñ'¨¨v­¸Õ(:Ó;€Fã+ˆØ�KÔØ—7‘7˜4 b�7Ó)ˆDÜ×%Ò% d°6Ó:ˆØ×%Ñ% dÓ2ˆ
Ü˜
Ö+ó ,r$   c                 ó*  € \         P                  ! V 4      pW P                  8X  d   R MRp\        P                  P                  ^ 4      p^p\        P                  ! V^34      pVP                  \        P                  ) \        P                  V3R7      VR	&   \        V4       Uu. uF#  qtP                  ^ \        P                  .4      NK%  	  ppVP                  \        P                  ) \        P                  V3R7      VR
&   VP                  ^ \        P                  RR7      p	V P                  . RO4      p
V P                  . RO4      pV	 EF&  pV P                  \        P                  ! WË,          4      P                  V
4      4      pV P                  W«V.^ R7      pWŒ,
          VR&   R FÂ  pVR8X  d   TMV P!                  V^ R7      p\        P"                  ! VWðP                  WbR7      4      p\%        V'       * V 4      ;_uu_ 4        VP'                  VVVR7      pRRR4       VP)                  4       p\        P"                  ! VVX4      pVP)                  4       p\+        VVVR7       KÄ  	  EK)  	  R# u upi   + '       g   i     Lf; i)rw   rá   r  r    r|  r,   )rë  Nrx   rÔ  rÖ  )rH   r%  r  rÕ  rù  )r.   r/   rã   r8   rf   rg   rP  r¼  r#  rk   Úchoicer0   r   r  r‰  rõ   r…  rß  rê  rõ  rX   r   )r1   rë  r-   r`   rë   rÛ  rv  rq   rú  rû  rÈ  rÉ  rü  rö  rý  r¸  rþ  rú   rÿ  rõ  Úrot_estimatedr÷  s   &&                    r"   Útest_as_davenport_degenerater  9  s	  € ô
 ×Ò˜bÓ!€EØŸZ™ZÔ'‰5¨T€Dô �)‰)×
Ñ
 Ó
"€CØ	€AÜ�XŠX�q˜!�fÓ€Fð —;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€Fˆ4�LÜ5:¸1´XÓ>±X°—Z‘Z ¤B§E¡E 
Ö+±X€MÐ>Ø—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€Fˆ4�LØ�k‰k˜a¤b§e¡e°$ˆkÓ7€Gà	�‰’KÓ	 €BØ	�‰’KÓ	 €BäˆØ�Z‰Zœ×,Ò,¨T­WÓ5×;Ñ;¸BÓ?Ó@ˆØ—(‘(˜B B˜<¨a�(Ó0ˆØ$Õ+ˆˆt‰Û/ˆEØ! [Ô0‘°b·g±g¸gÈA°gÓ6NˆBÜ×)Ò)¨"¨e·Z±ZÀ°ZÓ5TÓUˆCÜ'Ð,=Ô(=¸r×BÕBØ ×-Ñ-ØØØ&7ð .ó �
÷ Cð Ÿ=™=›?ˆLÜ$×3Ò3°B¸¸zÓJˆMØ)×3Ñ3Ó5ˆMÜ˜L¨-¸d×Cô 0ó	 ùò ?÷ C×Bús   Â&)I=ÈJ	ÊJc           
      óö  € \         P                  ! V 4      p\        P                  P	                  ^ 4      p^dp\        P
                  ! V^34      pWP                  8X  d   RMRpVP                  \        P                  ) \        P                  V3R7      VR&   VP                  ^ \        P                  V3R7      VR&   VP                  \        P                  ) \        P                  V3R7      VR&   V P                  WAR7      pR FÜ  p\        R4       FÊ  pRP                  V^ ,          V^,          V^ ,          .4      pT P                  V U	u. uF  p	\        V	4      NK  	  up	VR7      p
VR8X  d   VP                  4       p\        P                  ! W„4      p\        P                   ! W¦V4      p\#        VP%                  RR	7      VP%                  RR	7      VR
7       KÌ  	  KÞ  	  \         P&                  ! V4      R,          P)                  \        P                  ^,          4      pR FÀ  p\        R4       F®  pRP                  V4      pT P                  V U	u. uF  p	\        V	4      NK  	  up	VR7      p
VR8X  d   VP                  4       p\        P                  ! W„4      p\        P                   ! W¦V4      p\#        VP%                  4       VP%                  4       VR
7       K°  	  KÂ  	  R# u up	i u up	i )r   rw   rä  r  r,   r|  r“   rÑ  Tr‰   ra   NrÔ  rÕ  rÖ  rù  )r.   r/   r8   rf   rg   rP  rã   r¼  r#  r0   r   rØ  r#   rÙ  r   r‘   rß  r   r   rç   Úsubtract)r1   r-   rë   rÛ  rv  r_   r¸  rÀ  rÜ  rq   rþ  ÚeulÚdavs   &            r"   Ú&test_compare_from_davenport_from_eulerr  b  sH  € ä×Ò˜bÓ!€EÜ
�)‰)×
Ñ
 Ó
"€CØ€AÜ�XŠX�q˜!�fÓ€Fð ŸZ™ZÔ'‰5¨T€DØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€Fˆ4�LØ—;‘; 1¬2¯5©5¸°t�;Ó<€Fˆ4�LØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€Fˆ4�LØ�Z‰Z˜ˆZÓ,€FÛ+ˆÜ% eÖ,ˆIØ—'‘'˜9 Q�<¨°1­°yÀµ|ÐDÓEˆCØ—‘±3Ó7±3¨aœY qž\±3Ñ7¸u�ÓEˆBØ˜Ô#Ø—i‘i“k�Ü×%Ò% cÓ2ˆCÜ×)Ò)¨"°VÓ<ˆCÜ˜CŸK™K°$˜KÓ7¸¿¹Èt¸Ó9TØ!%÷'ó -ñ ,ô �VŠV�F‹^˜DÕ!×*Ñ*¬2¯5©5°1­9Ó5€FÛ+ˆÜ% eÖ,ˆIØ—'‘'˜)Ó$ˆCØ—‘±3Ó7±3¨aœY qž\±3Ñ7¸u�ÓEˆBØ˜Ô#Ø—i‘i“k�Ü×%Ò% cÓ2ˆCÜ×)Ò)¨"°VÓ<ˆCÜ˜CŸK™K›M¨3¯;©;«=¸t×Dó -ó ,ùò 8ùò 8s   ÅK1ÉK6c                 ó4  € \         P                  P                  ^ 4      p^dp\         P                  ! V^34      pVP	                  \         P
                  ) \         P
                  V3R7      VR&   VP	                  ^ \         P
                  V3R7      VR	&   VP	                  \         P
                  ) \         P
                  V3R7      VR
&   R FÓ  p\        R4       FÁ  pRP                  V^ ,          V^,          V^ ,          .4      pV Uu. uF  p\        V4      NK  	  ppVR8X  d   VP                  4       p\        P                  ! W`P                  V4      4      p	V	P                  V4      p
V	P                  V P                  V4      V4      p\        W«RR7       KÃ  	  KÕ  	  VR	;;,          \         P
                  ^,          ,          uu&   R F»  p\        R4       F©  pRP                  V4      pV Uu. uF  p\        V4      NK  	  ppVR8X  d   VP                  4       p\        P                  ! W`P                  V4      4      p	V	P                  V4      p
V	P                  V P                  V4      V4      p\        W«RR7       K«  	  K½  	  R# u upi u upi )r   r  r|  r“   rÑ  rw   ra   NrÔ  rÕ  rÖ  rù  )r8   rf   rg   rP  r¼  r#  r   rØ  r#   rÙ  r   r‘   r0   r·  rõ  r   )r1   rë   rÛ  rv  r¸  rÀ  rÜ  rq   rþ  rú   r	  r
  s   &           r"   Ú"test_compare_as_davenport_as_eulerr  ‡  s  € ô �)‰)×
Ñ
 Ó
"€CØ€AÜ�XŠX�q˜!�fÓ€Fð —;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€Fˆ4�LØ—;‘; 1¬2¯5©5¸°t�;Ó<€Fˆ4�LØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€Fˆ4�LÛ+ˆÜ% eÖ,ˆIØ—'‘'˜9 Q�<¨°1­°yÀµ|ÐDÓEˆCÙ(+Ó,© 1”)˜A–,©ˆBÐ,Ø˜Ô#Ø—i‘i“k�Ü×%Ò% c¯:©:°fÓ+=Ó>ˆCØ—,‘,˜sÓ#ˆCØ×"Ñ" 2§:¡:¨b£>°5Ó9ˆCÜ˜C¨5×1ó -ñ ,ð ˆ4‡L”B—E‘E˜A•IÕƒLÛ+ˆÜ% eÖ,ˆIØ—'‘'˜)Ó$ˆCÙ(+Ó,© 1”)˜A–,©ˆBÐ,Ø˜Ô#Ø—i‘i“k�Ü×%Ò% c¯:©:°fÓ+=Ó>ˆCØ—,‘,˜sÓ#ˆCØ×"Ñ" 2§:¡:¨b£>°5Ó9ˆCÜ˜C¨5×1ó -ó ,ùò -ùò -s   Ä
JÇ5Jc                 óÂ  € \         P                  ! ^ R7      p\        V4      ^ 8X  g   Q h\         P                  ! ^ R7      p\        V4      ^ 8X  g   Q h\         P                  ! ^R7      . ,          p\        V4      ^ 8X  g   Q h\         P                  ! V P                  R4      4      p\        V4      ^ 8X  g   Q h\         P                  ! V P                  R4      4      p\        V4      ^ 8X  g   Q h\         P                  ! RV P                  R4      4      p\        V4      ^ 8X  g   Q h\         P                  ! V P                  R4      4      p\        V4      ^ 8X  g   Q h\         P                  ! V P                  ^4      RV P                  R4      4      p\        V4      ^ 8X  g   Q h\         P                  ! V P                  R4      4      p	\        V	4      ^ 8X  g   Q hR# )r   )r  r“   r{  N©r   rG   ©r   r{   r{   r  )r   rf   rq  r  r   r•   rÍ   r‘   r  rß  rh   rJ  )
r1   r'   Úr_ideÚr_getÚr_quatÚr_matrixÚr_eulerÚr_vecÚr_davÚr_mrps
   &         r"   Útest_zero_rotation_constructionr  ¬  so  € ô
 	�Š˜AÔ€AÜˆq‹6�QŒ;Ðˆ;ä×Ò !Ô$€EÜˆu‹:˜Œ?Ðˆ?ä�OŠO Ô" 2Õ&€EÜˆu‹:˜Œ?Ðˆ?ä×Ò §¡¨Ó 0Ó1€FÜˆv‹;˜!ÔÐÐä×#Ò# B§H¡H¨YÓ$7Ó8€HÜˆx‹=˜AÔÐÐä×!Ò! %¨¯©°&Ó)9Ó:€GÜˆw‹<˜1ÔÐÐä× Ò  §¡¨&Ó!1Ó2€EÜˆu‹:˜Œ?Ðˆ?ä×#Ò# B§F¡F¨1£I¨{¸B¿H¹HÀVÓ<LÓM€EÜˆu‹:˜Œ?Ðˆ?ä×Ò˜bŸh™h vÓ.Ó/€EÜˆu‹:˜Œ?ÐŠ?r$   c                 ó   € \         P                  ! V P                  R4      4      pVP                  4       P                  R8X  g   Q hVP                  4       P                  R8X  g   Q hVP                  R4      P                  R8X  g   Q hVP                  4       P                  R8X  g   Q hVP                  4       P                  R8X  g   Q hVP                  V P                  ^4      R4      P                  R8X  g   Q hR# )r   r“   r{  Nr  r  r  )r   r   r•   r   rl   rX   r·  r  rT  rõ  rh   r…   s   & r"   Ú!test_zero_rotation_representationr  Í  sÉ   € ô
 	×Ò˜2Ÿ8™8 FÓ+Ó,€AØ�9‰9‹;×Ñ Ô&Ð&Ð&Ø�;‰;‹=×Ñ )Ô+Ð+Ð+Ø�:‰:�eÓ×"Ñ" fÔ,Ð,Ð,Ø�;‰;‹=×Ñ &Ô(Ð(Ð(Ø�8‰8‹:×Ñ˜vÔ%Ð%Ð%Ø�>‰>˜"Ÿ&™& ›) [Ó1×7Ñ7¸6ÔAÐAÒAr$   c                 óî  € \         P                  ! V P                  R4      4      pV P                  . RO4      pVP	                  V4      pVP
                  R8X  g   Q hV P                  R4      pVP	                  V4      pVP
                  R8X  g   Q hV P                  R4      p\        P                  ! \        RR7      ;_uu_ 4        VP	                  V4       RRR4       R#   + '       g   i     R# ; i)r   rÃ  r©   Nr  r¨  r  r'  )
r   r   r•   r0   r‰  rl   r2  r«   r¬   r­   )r1   r'   r   r¡  Úv0Úv0_rotrª  s   &      r"   Ú!test_zero_rotation_array_rotationr  Û  s¹   € ä×Ò˜2Ÿ8™8 FÓ+Ó,€Aà
�
‰
’9Ó€AØ—‘˜“
€IØ�?‰?˜fÔ$Ð$Ð$à	�‰�&Ó	€BØ�W‰W�R‹[€FØ�<‰<˜6Ô!Ð!Ð!à	�‰�‹€BÜ	�ŠÜÐ,÷
.ö 
.à	�‰�Œ÷
.÷ 
.÷ 
.ò 
.ús   ÃC#Ã#C4	c                 óæ  € \         P                  ! V P                  R4      4      p\         P                  ! V P                  . RO4      4      pW,          p\	        V4      ^ 8X  g   Q hW!,          p\	        V4      ^ 8X  g   Q h\         P                  ! V P                  R4      4      pW,          p\	        V4      ^ 8X  g   Q h\        \         P                  ! ^4      V 4      p\        P                  ! \        RR7      ;_uu_ 4        WW,           RRR4       \        P                  ! \        RR7      ;_uu_ 4        Wu,           RRR4       R#   + '       g   i     LG; i  + '       g   i     R# ; i)r   rÃ  r©   Nr  r¢   )
r   r   r•   r0   rq  r2   rf   r«   r¬   r­   )r1   r'   Úr_singleÚr_mult_leftÚr_mult_rightÚr0Úr_multrŸ  s   &       r"   Ú!test_zero_rotation_multiplicationr&  í  s  € ä×Ò˜2Ÿ8™8 FÓ+Ó,€Aä×!Ò! "§*¡*ª^Ó"<Ó=€HØ•,€KÜˆ{Ó˜qÔ Ð Ð à•<€LÜˆ|Ó Ô!Ð!Ð!ä	×	Ò	˜BŸH™H VÓ,Ó	-€BØ�V€FÜˆv‹;˜!ÔÐÐä	œŸš¨Ó*¨BÓ	/€BÜ	�Š”zÐ);×	<Ö	<Ø
Ž÷ 
=ô 
�Š”zÐ);×	<Ö	<Ø
Ž÷ 
=Ñ	<÷ 
=×	<ú÷ 
=×	<Ð	<ús   Ä	EÄ9	EÅE	ÅE0	c                 ól  € \         P                  ! V P                  R4      4      p\         P                  ! W.4      p\	        V4      ^ 8X  g   Q h\         P                  ! V P                  . RO4      4      pVP                  W1.4      p\	        V4      ^8X  g   Q h\        \         P                  ! ^4      V 4      pVP                  WA.4      p\	        V4      ^8X  g   Q h\        \         P                  ! ^4      V 4      pVP                  W.4      pVP                  W.4      p\	        V4      ^8X  g   Q hR# )r   Nr  r¢   )r   r   r•   rË  rq  r0   r2   rf   ©r1   r'   r$  rž  r¥   Úr4s   &     r"   Ú!test_zero_rotation_concatentationr*    sð   € ä×Ò˜2Ÿ8™8 FÓ+Ó,€Aä	×	Ò	˜q˜fÓ	%€BÜˆr‹7�aŒ<Ðˆ<ä	×	Ò	˜BŸJ™J¢~Ó6Ó	7€BØ	
�‰˜�wÓ	€BÜˆr‹7�aŒ<Ðˆ<ä	œŸš¨Ó*¨BÓ	/€BØ	
�‰˜�wÓ	€BÜˆr‹7�aŒ<Ðˆ<ä	œŸš¨Ó*¨BÓ	/€BØ	
�‰˜�wÓ	€BØ	
�‰˜�wÓ	€BÜˆr‹7�aŒ<ÐŠ<r$   c                 ó–   € \         P                  ! V P                  R4      4      pR F  pW,          p\        V4      ^ 8X  d   K  Q h	  R# )r   Nr  )r�  r|   r   r   rô  )r   r   r•   rq  )r1   r'   ÚppÚpow0s   &   r"   Útest_zero_rotation_powerr.    s<   € ä×Ò˜2Ÿ8™8 FÓ+Ó,€AÛ#ˆØ�uˆÜ�4‹y˜AŽ~Ðˆ~ó $r$   c                 ó”   € \         P                  ! V P                  R4      4      pVP                  4       p\	        V4      ^ 8X  g   Q hR# )r   Nr  )r   r   r•   rŸ   rq  )r1   r'   Úr_invs   &  r"   Útest_zero_rotation_inverser1  !  s6   € ä×Ò˜2Ÿ8™8 FÓ+Ó,€AØ�E‰E‹G€EÜˆu‹:˜Œ?ÐŠ?r$   c                 ó–   € \         P                  ! V P                  R4      4      pVP                  4       pVP                  R8X  g   Q hR# )r   Nr  ©r   )r   r   r•   r  rl   )r1   r'   r  s   &  r"   Útest_zero_rotation_magnituder4  (  s8   € ä×Ò˜2Ÿ8™8 FÓ+Ó,€AØ—‘“€IØ�?‰?˜dÔ"Ð"Ò"r$   c                 óò   € \         P                  ! V P                  R4      4      p\        P                  ! \
        RR7      ;_uu_ 4        VP                  4        RRR4       R#   + '       g   i     R# ; i)r   z+Mean of an empty rotation set is undefined.r©   Nr  )r   r   r•   r«   r¬   r­   rÅ  r…   s   & r"   Útest_zero_rotation_meanr6  /  sF   € ä×Ò˜2Ÿ8™8 FÓ+Ó,€AÜ	�Š”zÐ)V×	WÖ	WØ	�‰Œ÷ 
X×	W×	WÒ	Wús   Á
A%Á%A6	c                 ó|  € \         P                  ! V P                  R4      4      p\         P                  ! V P                  R4      4      pVP                  V4      P                  R8X  g   Q h\         P                  ! V P                  . RO4      4      pVP                  V4      P                  R8X  g   Q h\        \         P                  ! 4       V 4      pVP                  V4      P                  R8X  g   Q hRp\        \         P                  ! ^4      V 4      p\        P                  ! \        VR7      ;_uu_ 4        VP                  V4       RRR4       \        P                  ! \        VR7      ;_uu_ 4        VP                  V4       RRR4       R#   + '       g   i     LP; i  + '       g   i     R# ; i)r   z/Expected broadcastable shapes in both rotationsr©   Nr  r3  r¢   )r   r   r•   r   rl   r0   r2   rf   r«   r¬   r­   )r1   r'   r$  rž  rŸ  Ú
approx_msgr¥   s   &      r"   Útest_zero_rotation_approx_equalr9  6  s/  € ä×Ò˜2Ÿ8™8 FÓ+Ó,€AÜ	×	Ò	˜BŸH™H VÓ,Ó	-€BØ�>‰>˜"Ó×#Ñ# tÔ+Ð+Ð+Ü	×	Ò	˜BŸJ™J¢~Ó6Ó	7€BØ�>‰>˜"Ó×#Ñ# tÔ+Ð+Ð+Ü	œŸšÓ)¨2Ó	.€BØ�?‰?˜1Ó×#Ñ# tÔ+Ð+Ð+àB€JÜ	œŸš¨Ó*¨BÓ	/€BÜ	�Š”z¨×	4Ö	4Ø	�‰�rÔ÷ 
5ô 
�Š”z¨×	4Ö	4Ø
�‰˜Ô÷ 
5Ñ	4÷ 
5×	4ú÷ 
5×	4Ð	4ús   Ä=FÅ;F*ÆF'	Æ*F;	z	jax.numpyz.JAX out-of-bounds indexing deviates from numpyc                 ó  € \         P                  ! V P                  R4      4      pWP                  . V P                  R7      ,          p\        V4      ^ 8X  g   Q hVR,          p\        V4      ^ 8X  g   Q h\        P                  ! \        4      ;_uu_ 4        WP                  ^ .4      ,           RRR4       \        P                  ! \        4      ;_uu_ 4        WP                  R.4      ,           RRR4       \        P                  ! \        4      ;_uu_ 4        \         P                  ! V P                  . RO4      4      V^ &   RRR4       R#   + '       g   i     Lª; i  + '       g   i     Lz; i  + '       g   i     R# ; i)r   r,   :Nr   NNTr  r5   )	r   r   r•   r0   Úboolrq  r«   r¬   Ú
IndexError)r1   r'   r  Úr_slices   &   r"   Útest_zero_rotation_get_setr>  I  s   € ô 	×Ò˜2Ÿ8™8 FÓ+Ó,€Aà�j‰j˜ 2§7¡7ˆjÓ+Õ,€EÜˆu‹:˜Œ?Ðˆ?à��e€GÜˆw‹<˜1ÔÐÐä	�Š”z×	"Õ	"Ø	�*‰*�a�S‹/Ö÷ 
#ô 
�Š”z×	"Õ	"Ø	�*‰*�d�VÓ
Ö÷ 
#ô 
�Š”z×	"Õ	"Ü×!Ò! "§*¡*ª\Ó":Ó;ˆˆ!‰÷ 
#Ñ	"÷ 
#×	"ú÷ 
#×	"ú÷ 
#×	"Ð	"ús$   ÂEÃE&Ä+E9ÅE#	Å&E6	Å9F
	c                 óÚ  € \        \        P                  ! ^4      V 4      pWP                  . RO4      ,          p\	        V4      ^ 8X  g   Q hWP                  . RO4      ,          p\	        V4      ^8X  g   Q hWP                  . RO4      ,          p\	        V4      ^8X  g   Q h\        P
                  ! V P                  R4      4      pWP                  . RO4      ,          p\	        V4      ^8X  g   Q hVP                  4       P                  R8X  g   Q h\        P                  ! \        4      ;_uu_ 4        WP                  RR.4      ,           RRR4       R#   + '       g   i     R# ; i)	r{   TN)FFF)FTF)TTTrB  )TFF)r   r&   rG   )r2   r   rf   r0   rq  r   r2  r   rl   r«   r¬   r<  r(  s   &     r"   Útest_boolean_indexesr@  ^  s  € ä”x—’ qÓ)¨2Ó.€Aà	
�:‰:Ò+Ó,Õ	-€BÜˆr‹7�aŒ<Ðˆ<à	
�:‰:Ò*Ó+Õ	,€BÜˆr‹7�aŒ<Ðˆ<à	
�:‰:Ò(Ó)Õ	*€BÜˆr‹7�aŒ<Ðˆ<ô 	×Ò˜2Ÿ7™7 9Ó-Ó.€AØ	
�:‰:Ò*Ó+Õ	,€BÜˆr‹7�aŒ<Ðˆ<Ø�:‰:‹<×Ñ Ô*Ð*Ð*ä	�Š”z×	"Õ	"Ø	�*‰*�d˜D�\Ó
"Ö#÷ 
#×	"×	"Ò	"ús   Ä5EÅE*	Ú__iter__c                 ó0  € \        \        P                  ! ^4      V 4      p\        V4       Ff  w  r#\	        V\        4      '       g   Q h\        VP                  4       W,          P                  4       4       V\        V4      8”  g   K]  \        R4      h	  R# )r{   z&Iteration exceeded length of rotationsN)	r2   r   rf   rw  rM  r
   r   rq  r×  )r1   r'   rq   Úr_is   &   r"   Útest_rotation_iterrD  u  si   € ä”x—’ qÓ)¨2Ó.€AÜ˜A–,‰ˆÜ˜#œx×(Ò(Ð(Ð(Ü˜Ÿ™› q¥t§|¡|£~Ô6ØŒs�1‹vŽ:ÜÐGÓHÐHó	 r$   c                ó$   € V ^8„  d   QhR\         /# rP   rQ   )r)   s   "r"   r*   r*   €  s   € ÷ @ñ @¤#ñ @r$   c                 óþ   € \        \        ^^V,           4      RV^,
           4      pV P                  VR,           4      p\        P                  ! V4      pVP
                  V8X  g   Q RVP
                   RV 24       hR# )r&   NzGot z, expected rU   )rp  rk   r2  r   r   rl   )r1   rN   rl   r®   r'   s   &&   r"   Útest_rotation_shaperG    sl   € ä”%˜˜1˜t�8Ó$ Y d¨Q¥hÐ/Ó0€EØ�7‰7�5˜4•<Ó €DÜ×Ò˜4Ó €AØ�7‰7�eÔÐ?˜t A§G¡G 9¨K¸°wÐ?Ó?Òr$   c                  ó„   € \         P                  ! . RO4      p RV P                  n        \        P
                  ! V 4       R# )r   FN)r   r   r   r”   )r8   r9   rÆ  Ú	writeabler   r   )rp   s    r"   Útest_non_writeablerJ  ‡  s*   € Ü
�Š’Ó €AØ€A‡G�GÔÜ×Ò�qÖr$   c                  óª   € \         P                  ! . RO.4      p RV P                  n        \        P
                  ! RR 4      pVP                  V 4       R# )rˆ   Fr   N)rˆ   rˆ   rˆ   )r8   r9   rÆ  rI  r   r‘   r‰  )Úpointsrú   s     r"   Útest_gh_24751rM  �  s=   € Ü�XŠX’Ð'Ó(€FØ"€F‡L�LÔÜ
×
Ò
˜c 3Ó
'€CØ‡I�IˆfÖr$   c                  ó¼   € \         P                  ! . RO4      \         P                  ,          ^,          p RV P                  n        \
        P                  ! V 4       R# )r   FNr   )r8   r9   r#  rÆ  rI  r   r  )r  s    r"   Útest_rotvec_non_writeablerO  ”  s8   € Ü�XŠX’iÓ ¤2§5¡5Õ(¨1Õ,€FØ"€F‡L�LÔÜ×Ò˜Ö r$   )FT)ãr£   r«   Únumpyr8   Únumpy.testingr   Úscipy.spatial.transformr   r   Ú$scipy.spatial.transform._rotation_cyÚspatialÚ	transformÚ_rotation_cyr;   Ú$scipy.spatial.transform._rotation_xpÚ_rotation_xpr<   Úscipy.statsr   Ú	itertoolsr   r   Ú
contextlibr	   ræ  Úscipy._lib._array_apir
   r   r   r   r   r   r   r   r   r   r   Úscipy._external.array_api_extraÚ	_externalÚarray_api_extrar.   r³  rå  Ú
pytestmarkr#   r2   r6   r>   rB   rM   ÚmarkÚparametrizerÎ  rk   rW   rs   rƒ   r†   r�   r–   r›   rž   r¦   r¯   r³   r»   rÆ   rÌ   rÑ   rÚ   rß   rð   r÷   rü   rÿ   r  r  r  r  r  r  r  r*  r.  r4  r=  rD  rF  rI  rR  rU  rW  rY  r\  ra  rd  rh  rk  rn  rr  rw  r}  rˆ  rŒ  rœ  r¬  r²  rµ  r¹  r¿  rß  rã  rê  rø  rü  r   r  r  r  r  r  r!  r,  r1  r3  r7  r=  r@  rE  rO  rU  r\  re  rh  rn  ru  rˆ  r™  r£  r«  r°  r·  rº  rÁ  rÄ  rÈ  rË  rÍ  rÐ  rÕ  r×  rÙ  rÛ  rá  ré  rî  rð  rù  r  r  r  r  r#  r&  r/  r5  r8  r:  rA  rO  ra  rc  re  rf  ri  rk  rn  rq  rt  ry  r}  r€  rˆ  r�  r�  r’  r”  r™  r¤  r¨  r­  Úskip_xp_backendsr¸  r»  rÊ  rÓ  rÕ  rØ  rÞ  rá  rè  rì  rð  ró  r÷  r   r  r  r  r  r  r  r  r&  r*  r.  r1  r4  r6  r9  r>  r@  rD  rG  rJ  rM  rO  r   r$   r"   Ú<module>rd     s}  ðÛ ã ã Ý &ß 3ß =Ó =ß 9Ó 9Ý +ß +Ý %Û ÷÷ ÷ ñ ÷ .Ð -ã Û ñ " 8¨YÐ"7¸(ÀKÐ9PÓQ€
òõDò
ò$òAò0ð ‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô0ó 4ð0ñ �H˜kÐ*Ó+ñDó ,ðDò.:ò(5ò
Fñ. �H˜lÐ+Ó,ñOó -ðOò@0ò
>ñ �H˜eÐ$ x°Ð&;Ó<ñ=ó =ð=ð> ‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô!ó 4ð!ò
"ñ �H˜kÐ*Ó+Ø‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô
3ó 4ó ,ð
3ñ �H˜kÐ*Ó+ñ,ó ,ð,ñ6 �H˜kÐ*Ó+ñ,ó ,ð,ñ> �H˜mÐ,Ó-Ø‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô	Hó 4ó .ð	Hñ �H˜mÐ,Ó-ñó .ðñ �H˜mÐ,¨x¸Ð.EÓFñ@ó Gð@ñ
 �H˜mÐ,¨x¸Ð.EÓFñ3ó Gð3ñ$ �H˜mÐ,¨x¸Ð.EÓFñPó GðPñ2 �H˜mÐ,¨x¸Ð.EÓFñ<ó Gð<ñ �H˜mÐ,¨x¸Ð.EÓFñ&ó Gð&ò"
:ñ �H˜mÐ,Ó-ñ5ó .ð5ñ �H˜mÐ,Ó-Ø‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô@ó 4ó .ð@ñ �H˜mÐ,Ó-ñVó .ðVñ �H˜mÐ,Ó-ñ>ó .ð>ñ. �H˜mÐ,¨x¸Ð.EÓFñ
:ó Gð
:ñ �H˜mÐ,Ó-ñ5ó .ð5ñ �H˜mÐ,Ó-ñ
"ó .ð
"ñ �H˜mÐ,Ó-ñ1ó .ð1ñ
 �H˜mÐ,Ó-Ø‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô-ó 4ó .ð-ñ �H˜kÐ*Ó+ñWó ,ðWñ" �H˜kÐ*Ó+Ø‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô4ó 4ó ,ð4ñ �H˜mÐ,¨x¸Ð.EÓFñ*ó Gð*ñ �H˜mÐ,¨x¸Ð.EÓFñ	ó Gð	ñ �H˜jÐ)Ó*Ø‡�×Ñ˜¡ q¨!£Ó-ôIó .ó +ðIò
:ñ �H˜jÐ)Ó*ñ5ó +ð5ñ �H˜jÐ)Ó*ñ	Eó +ð	Eñ �H˜jÐ)Ó*Ø‡�×Ñ˜¡ q¨!£Ó-ô*ó .ó +ð*ñ �H˜hÐ'Ó(ñEó )ðEñ �H˜lÐ+¨h¸Ð-AÓBñó Cðñ �H˜hÐ'Ó(Ø‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô.ó 4ó )ð.ñ �H˜jÐ)¨H°hÐ+?Ó@ñJó AðJñ �H˜lÐ+Ó,ñ)ó -ð)ñ �H˜lÐ+Ó,ñ5ó -ð5ñ �H˜lÐ+Ó,Ø‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô)ó 4ó -ð)ñ �H˜lÐ+¨h¸Ð-DÓEñ*ó Fð*ñ �H˜lÐ+Ó,ñó -ðñ �H˜lÐ+¨h¸Ð-DÓEñ	2ó Fð	2ñ �H˜lÐ+¨h¸Ð-DÓEñó Fðñ8 �H˜lÐ+¨h¸Ð-DÓEñó Fðñ6 �H˜lÐ+¨h¸Ð-DÓEñó Fðñ6 �H˜lÐ+¨h¸Ð-DÓEñó Fðò6:ò2ñ �H˜lÐ+¨h¸
Ð-CÓDØ‡�×Ñ˜¡d©<¸Ó+>Ó&?Ó@Ø‡�×Ñ˜ mÓ4ñ3ó 5ó Aó Eð3ñ8 �H˜lÐ+¨h¸
Ð-CÓDØ‡�×Ñ˜¡d©<¸Ó+>Ó&?Ó@Ø‡�×Ñ˜ mÓ4ñ3ó 5ó Aó Eð3ð6 ñ
ó ð
ñ Øˆ|Ð˜x¨Ð5¸À*Ð7Móð ‡�×Ñ˜¡d©<¸Ó+>Ó&?Ó@Ø‡�×Ñ˜ mÓ4Ø‡�×ÑÐ,¨mÓ<ñ<ó =ó 5ó Aóð<ñ< Øˆ|Ð˜x¨Ð5¸À*Ð7Móð ‡�×Ñ˜¡d©<¸Ó+>Ó&?Ó@Ø‡�×Ñ˜ mÓ4Ø‡�×ÑÐ,¨mÓ<ñ<ó =ó 5ó Aóð<ñ> �H˜lÐ+¨h¸
Ð-CÓDØ‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô
9ó 4ó Eð
9ñ �H˜kÐ*¨X°uÐ,=Ó>ñ 0ó ?ð 0ñF �H˜eÐ$ x°Ð&=Ó>ñ/ó ?ð/ñ@ �H˜kÐ*¨X°uÐ,=Ó>ñ3ó ?ð3ñ �H˜kÐ*¨X°uÐ,=Ó>ñ$ó ?ð$ñ �H˜eÐ$ x°Ð&=Ó>ñ
@ó ?ð
@ñ �H˜eÐ$ x°Ð&=Ó>ñ
@ó ?ð
@ò ñ& �H˜kÐ*Ó+Ø‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô-ó 4ó ,ð-ñ �H˜kÐ*Ó+ñ2ó ,ð2ñ ØˆuÐ˜ +Ð.°¸>Ð0Jóñ	Ióð	Iñ �H˜mÐ,¨x¸Ð.HÓIñ2ó Jð2ñ  ØˆuÐ˜ +Ð.°¸>Ð0Jóñ Ióð IñF �H˜nÐ-Ó.ñ	ó /ð	ñ Øˆ}Ð ¨&Ð1°H¸kÐ3Jóð ‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô	@ó 4óð	@ñ Øˆ}Ð ¨&Ð1°H¸kÐ3Jóð ‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ôó 4óðñ0 �H˜fÐ%¨°+Ð'>Ó?ñ8ó @ð8ñ* �H˜mÐ,¨x¸Ð.@À8ÈUÐBSØ˜kÐ*ó,à‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ôIó 4ó,ðIñ, �H˜fÐ%Ó&ñó 'ðñ8 �H˜hÐ'Ó(ñ(ó )ð(ñ �H˜hÐ'Ó(ñó )ðñ �H˜hÐ'¨(°EÐ):¸XÀ{Ð<SÓTñ6ó Uð6ñ> �H˜mÐ,¨x¸Ð.AÓBñAó CðAñ: �H˜mÐ,¨x¸Ð.AÓBØ‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô:ó 4ó Cð:ñ0 �H˜mÐ,¨x¸Ð.AÓBØ‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô:ó 4ó Cð:ñD �H˜mÐ,¨x¸Ð.AÓBØ‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô9ó 4ó Cð9ñ8 �H˜gÐ&Ó'ñ ó (ð ò"/ò9ñ" �H˜gÐ&Ó'ñ$ó (ð$ñ Øˆ}Ð ¨+Ð6¸À=Ð8Qóð ‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ôYó 4óðYñ �H˜mÐ,Ó-ñ8ó .ð8ñ
 Øˆ}Ð ¨-Ð8¸8À[Ð:Qóñ	Dóð	Dñ �H˜mÐ,Ó-ñ<ó .ð<ñ �H˜mÐ,Ó-ñ5ó .ð5ñ �H˜mÐ,Ó-ñ3ó .ð3ñ �H˜mÐ,Ó-ñó .ðñ �H˜mÐ,Ó-ñ!ó .ð!ò&&ñ2 �H˜oÐ.°¸;Ð0GÓHñMó IðMñ �H˜gÐ&¨°?Ð(CÓDñ
Mó Eð
Mñ �H˜oÐ.°¸7Ð0CÓDñMó EðMñ �H˜oÐ.Ó/ñ
4ó 0ð
4ñ �H˜oÐ.°¸;Ð0GÓHñ ó Ið ñ ØˆwÐ˜( MÐ2°X¸Ð4Oóñ#9óð#9ñL �H˜oÐ.Ó/ñQ%ó 0ðQ%ñh ØˆÐ (¨KÐ!8¸8ÀWÐ:Móñ!>óð!>ñH �H˜oÐ.°¸;Ð0GÓHñBó IðBñB �H˜oÐ.°¸;Ð0GÓHñ>ó Ið>ñ0 ØˆÐ (¨KÐ!8¸8ÀWÐ:MØˆ}Ð ¨+Ð6¸À;Ð8Oóñ'Bó	ð'BñT �H˜oÐ.°¸7Ð0CÓDñ>ó Eð>ò"	)ñ �H˜gÐ&¨°?Ð(CÓDñ0ó Eð0ñ �H˜jÐ)Ó*ñ
:ó +ð
:ò:ñ* �E˜:Ð&¨°
Ð(;Ó<ñ,/ó =ð,/ñ^ �E˜:Ð&Ó'ñó (ðð GÐ ñ �E˜:Ð&Ó'ñó (ðñ �E˜:Ð&Ó'ñó (ðñ �E˜:Ð&Ó'ñó (ðñ �E˜:Ð&Ó'ñó (ðñ �E˜:Ð&Ó'ñó (ðñ �E˜:Ð&Ó'ñó (ðñ �E˜:Ð&Ó'ñ
ó (ð
ñ �E˜:Ð&Ó'ñ
ó (ð
ñ �E˜:Ð&¨°
Ð(;Ó<ñ
ó =ð
ñ �E˜:Ð&¨°
Ð(;Ó<ñó =ðñ0 Ø
ˆJÐ˜% Ð,¨x¸Ð.FØˆuÐ˜ +Ð.óñGó	ðGñ �H˜iÐ(Ó)ñ+ó *ð+ñ �H˜iÐ(Ó)ñ+ó *ð+ñ8 �H˜iÐ(Ó)ñó *ðñ �H˜iÐ(Ó)ñHó *ðHñ ØˆuÐ˜ )Ð,¨x¸Ð.?Øˆ{Ð˜h¨Ð6¸À;Ð8Oóð ‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô:9ó 4ó	ð
:9ñz �H˜iÐ(Ó)ñ$ó *ð$ò&ñ> �H˜kÐ*Ó+Ø‡�×ÒÐ0Ø%Ið ó KñFóKó ,ðFñ �H˜kÐ*Ó+Ø‡�×ÒÐ0Ø%Ið ó Kñ?óKó ,ð?ò+ñ �H˜mÐ,Ó-ñ:ó .ð:ñ2 �H˜mÐ,Ó-ñ-ó .ð-ñ �H˜mÐ,Ó-ñ'ó .ð'ñ Óñó ðñ& �HÐ.Ð/Ó0ñ)ó 1ð)ñ �H˜mÐ,¨xÐ9IÐ.JÓKñRó LðRñ@ �HÐ.Ð/Ó0Ø‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô5ó 4ó 1ð5ñ< �HÐ.Ð/Ó0ñ/ó 1ð/ñ �HÐ.Ð/Ó0ñGó 1ðGò::ñ$ �HÐ.Ð/°(¸NÐ1KÓLñIó MðIñ0 �HÐ.Ð/°(¸NÐ1KÓLñ,ó Mð,ñ ØÐÐ  8¨^Ð"<¸xÈÐ>Uóð ‡�×ÑÐ,¨mÓ<ñ"Dó =óð"DñJ �H˜lÐ+¨hÐ8HÐ-IÓJñ!Eó Kð!EñH Øˆ|Ð˜x¨Ð4°xÀÐ6Póñ2óð2ñD Øˆ}Ð ¨,Ð7¸(ÀMÐ9RØÐÐ  8¨ZÐ"8óñó	ðñ: Øˆ{Ð˜h¨
Ð3°hÀÐ5LØˆxÐ˜8 ^Ð4óñBó	ðBñ �H˜gÐ&Ó'ñó (ðñ" �H˜iÐ(Ó)ñó *ðñ, �H˜mÐ,Ó-ñó .ðñ( �H˜iÐ(Ó)ñó *ðñ �H˜eÐ$Ó%ñó &ðñ �H˜kÐ*Ó+ñ#ó ,ð#ñ �H˜fÐ%Ó&ñó 'ðñ �H˜nÐ-Ó.ñó /ðð$ ‡�×Ò˜kØ%Uð ó Wñ<óWð<ñ& �H˜mÐ,Ó-ñ$ó .ð$ñ, �H˜jÐ)Ó*ñIó +ðIð ‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ô@ó 4ð@òòô!r$   