Ë
    1Ò^j‡Ì ã            
       óR"  — d dl Z d dlZd dlZd dlmZ d dlmZmZ d dl	m
c mc mZ d dlm
c mc mZ d dlmZ d dlmZmZ d dlmZ d dlZd dlmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&c m'Z( d dl)Z)d dl*Z* e#edfed	f«      Z+d
„ Z,defd„Z-d„ Z.d„ Z/d„ Z0d„ Z1ejd                  jg                  d e4 e5dd«      «      «      de6fd„«       Z7 e"edf«      d„ «       Z8d„ Z9d„ Z:d„ Z; e"edf«      d„ «       Z<d„ Z=d„ Z> e"edfedf«      d „ «       Z?ejd                  jg                  d e4 e5dd«      «      «      de6fd!„«       Z@d"„ ZA e"edf«      ejd                  jg                  d e4 e5dd«      «      «      de6fd#„«       «       ZB e"edf«      d$„ «       ZC e"edf«      d%„ «       ZD e"ed&f«      ejd                  jg                  d e4 e5dd«      «      «      de6fd'„«       «       ZE e"ed&f«      d(„ «       ZF e"ed&fedf«      d)„ «       ZG e"ed&fedf«      d*„ «       ZH e"ed&fedf«      d+„ «       ZI e"ed&fedf«      d,„ «       ZJ e"ed&fedf«      d-„ «       ZKd.„ ZL e"ed&f«      d/„ «       ZM e"ed0f«      ejd                  jg                  d e4 e5dd«      «      «      de6fd1„«       «       ZN e"ed0f«      d2„ «       ZO e"ed0f«      d3„ «       ZP e"ed0fed4f«      d5„ «       ZQ e"ed0f«      d6„ «       ZR e"ed0f«      d7„ «       ZS e"ed0f«      d8„ «       ZT e"ed0f«      ejd                  jg                  d e4 e5dd«      «      «      de6fd9„«       «       ZU e"ed4f«      d:„ «       ZV e"ed4f«      ejd                  jg                  d e4 e5dd;«      «      «      de6fd<„«       «       ZW e"ed&fed4f«      d=„ «       ZX e"ed0fed4f«      d>„ «       ZY e"ed?f«      ejd                  jg                  d e5dd;«      «      de6fd@„«       «       ZZdA„ Z[ e"ed?f«      dB„ «       Z\ e"ed?f«      dC„ «       Z] e"ed?f«      ejd                  jg                  d e5dd;«      «      de6fdD„«       «       Z^ e"edEf«      dF„ «       Z_ e"edfedEf«      dG„ «       Z` e"edEf«      ejd                  jg                  d e4 e5dd;«      «      «      de6fdH„«       «       Za e"ed?fedEf«      dI„ «       Zb e"edf«      dJ„ «       Zc e"edf«      dK„ «       Zd e"edf«      ejd                  jg                  d e4 e5dd;«      «      «      de6fdL„«       «       Ze e"edfedf«      dM„ «       Zf e"edf«      dN„ «       Zg e"edfedf«      dO„ «       Zh e"edfedf«      dP„ «       Zi e"edfedf«      dQ„ «       Zj e"edfedf«      dR„ «       Zk e"edfedf«      dS„ «       ZldT„ ZmdU„ Zn e"edfedVf«      ejd                  jg                  dW e4 edX«      «      «      ejd                  jg                  dYdZ«      d[„ «       «       «       Zo e"edfedVf«      ejd                  jg                  dW e4 edX«      «      «      ejd                  jg                  dYdZ«      d\„ «       «       «       Zped]„ «       Zq e"edfedfedVf«      ejd                  jg                  dW e4 edX«      «      «      ejd                  jg                  dYdZ«      ejd                  jg                  d^dZ«      d_„ «       «       «       «       Zr e"edfedfedVf«      ejd                  jg                  dW e4 edX«      «      «      ejd                  jg                  dYdZ«      ejd                  jg                  d^dZ«      d`„ «       «       «       «       Zs e"edfedVf«      ejd                  jg                  d e4 e5dd;«      «      «      de6fda„«       «       Zt e"edfedf«      db„ «       Zu e"edfedf«      dc„ «       Zv e"eddfedf«      de„ «       Zw e"eddfedf«      df„ «       Zx e"edfeddf«      dg„ «       Zy e"edfeddf«      dh„ «       Zzdi„ Z{ e"eddf«      ejd                  jg                  d e4 e5dd;«      «      «      de6fdj„«       «       Z| e"eddf«      dk„ «       Z} e"edfeddfedlf«      dm„ «       Z~ e"ed0fedlf«      dn„ «       Z e"edfeddfedlf«      do„ «       Z€ e"edlf«      dp„ «       Z� e"ed0fedqfeddf«      ejd                  jg                  d e4 e5dd;«      «      «      de6fdr„«       «       Z‚ e"ed0fedqfeddf«      ejd                  jg                  d e4 e5dds«      «      «      de6fdt„«       «       Zƒ e"edqfeddf«      du„ «       Z„ e"ed0fedqfedfeddf«      ejd                  jg                  d e4 e5dd;«      «      «      de6fdv„«       «       Z… e"edqf«      dw„ «       Z† e"edxf«      dy„ «       Z‡ e"edxf«      dz„ «       Zˆ e"edxfedfeddf«      d{„ «       Z‰ e"ed&fed|f«      d}„ «       ZŠ e"ed&fed|f«      ejd                  jg                  d e4 e5dd;«      «      «      de6fd~„«       «       Z‹ e"ed&fed|f«      ejd                  jg                  d e4 e5dds«      «      «      de6fd„«       «       ZŒ e"ed&fed|f«      ejd                  jg                  d e4 e5dds«      «      «      de6fd€„«       «       Z� e"ed|f«      d�„ «       ZŽd‚„ Z�dƒ„ Z� e"ed|f«      d„„ «       Z‘ e"ed&fedfed…f«      ejd                  jg                  d e4 e5dd;«      «      «      de6fd†„«       «       Z’ e"ed…f«      d‡„ «       Z“ e"ed&fed…fedf«      dˆ„ «       Z” e"ed‰f«      dŠ„ «       Z• e"ed‰f«      d‹„ «       Z– e"ed‰f«      dŒ„ «       Z— e"ed‰f«      d�„ «       Z˜ e"ed&f«      dŽ„ «       Z™d�„ Zš e"ed�fedf«      d‘„ «       Z› e"ed|fed�f«      d’„ «       Zœ e"ed�fed|f«      d“„ «       Z� e"ed�f«      d”„ «       Zž e"ed�fedf«      d•„ «       ZŸ e"ed|fed0fed�f«      d–„ «       Z  e"ed�f«      d—„ «       Z¡ e"ed�fedfed|f«      d˜„ «       Z¢ e"ed�fedf«      d™„ «       Z£ e"ed�fedf«      dš„ «       Z¤ e"ed�feddfed|fed0fed4fedf«      d›„ «       Z¥ e"ed�fed|f«      dœ„ «       Z¦d�„ Z§ e"ed|fed�f«      dž„ «       Z¨ e"edŸf«      d „ «       Z©d¡„ Zª e"ed¢fed£f«      d¤„ «       Z« e"ed¢f«      d¥„ «       Z¬d¦Z­ e"ed¢f«      d§„ «       Z® e"ed¢f«      d¨„ «       Z¯ e"ed¢f«      d©„ «       Z° e"ed¢f«      dª„ «       Z± e"ed¢f«      d«„ «       Z² e"ed¢f«      d¬„ «       Z³ e"ed¢f«      d­„ «       Z´ e"ed¢f«      d®„ «       Zµ e"ed¢fed£f«      d¯„ «       Z¶ e"ed¢fed£f«      d°„ «       Z· e"ed¢fed£fedfedfeddf«      d±„ «       Z¸ e"edf«      d²„ «       Z¹ e"edf«      d³„ «       Zº e"edf«      d´„ «       Z» e"edf«      dµ„ «       Z¼ e"edfed¶fedfeddfed0fed4f«      ejd                  jg                  d e4 e5dd;«      «      «      de6fd·„«       «       Z½ e"ed¶f«      d¸„ «       Z¾d¹„ Z¿ e"edf«      ejd                  �j�                  dºd»¬¼«      d½„ «       «       ZÁ e"edf«      ejd                  �j�                  dºd¾¬¼«      d¿„ «       «       ZÂdÀ„ ZÃ e"edÁf«      dÂ„ «       ZÄ e"edÁf«      dÃ„ «       ZÅ e"edÁf«      dÄ„ «       ZÆ e"«       dÅ„ «       ZÇ e"edÆf«      dÇ„ «       ZÈ e"ed0fedÆf«      dÈ„ «       ZÉ e"edÆf«      ejd                  jg                  d e4 e5dd;«      «      «      de6fdÉ„«       «       ZÊ e"edÆf«      dÊ„ «       ZË e"edÆf«      dË„ «       ZÌdÌ„ ZÍ e"edÆfedÍf«      dÎ„ «       ZÎ e"edÆfedÍf«      dÏ„ «       ZÏ e"edÆfedÍfedf«      ejd                  jg                  d^dZ«      dÐ„ «       «       ZÐ e"edfedÆf«      dÑ„ «       ZÑ e"edfedVfedÍf«      dÒ„ «       ZÒ e"ed&fedfed0fedÆfed?f«      dÓ„ «       ZÓ e"edfedVfed4fedEfedÍf«      dÔ„ «       ZÔ e"ed|f«      dÕ„ «       ZÕ e"edf«      dÖ„ «       ZÖ e"edÁf«      d×„ «       Z× e"ed¶f«      dØ„ «       ZØ e"edf«      dÙ„ «       ZÙ e"eddf«      dÚ„ «       ZÚ e"edqf«      dÛ„ «       ZÛ e"edlf«      dÜ„ «       ZÜejd                  �j�                  dÝdÞ¬¼«      dß„ «       ZÝ e"ed…f«      dà„ «       ZÞ e"edáf«      dâ„ «       Zßejd                  jg                  d e4 e5dds«      «      «      de6fdã„«       Zàdä„ Zádå„ Zâdæ„ Zãy)çé    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                 ó:   — | dk(  rg d¢S | dk(  rg d¢S | dk(  rg d¢S y )NÚx©é   r   r   Úy©r   r   r   Úz©r   r   r   © ©Úaxiss    úv/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/scipy/spatial/transform/tests/test_rotation.pyÚ	basis_vecr#   %   s.   € Øˆs‚{ÚÐØ	�ŠÚÐØ	�ŠÚÐð 
ó    Úrc                 ó”   — t        j                  |«      }t        j                  |j	                  | j                  «       |¬«      «      S )N©Údtype)ÚxpxÚdefault_dtyper   r   Úasarrayr   )r%   Úxpr(   s      r"   Úrotation_to_xpr-   .   s6   € Ü×Ñ˜bÓ!€EÜ×Ñ˜bŸj™j¨¯©«¸E˜jÓBÓCÐCr$   c                  óR   — t        d«       t        g d¢«       t        g d¢gg«       y ©N©r   r   r   r   )r   r   r$   r"   Útest_init_non_arrayr1   3   s   € Üˆ\ÔÜŠ\ÔÜŠ|ˆnÐÕr$   c                  ó~  — t        j                  t        j                  g d¢«      «      } | j                  t
        u sJ ‚t        j                  t        j                  g d¢g«      «      } | j                  t
        u sJ ‚t        j                  t        j                  g d¢gg«      «      } | j                  t        u sJ ‚y r/   )r   r   ÚnpÚarrayÚ_backendÚcython_backendÚ
xp_backend©r%   s    r"   Útest_cython_backend_selectionr9   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                  óx   — t        j                  t        j                  g d¢t        j                  ¬«      «       y )N©r   r   r   r   r'   )r   r   r3   r4   Úfloat32r   r$   r"   Útest_numpy_float32_inputsr=   B   s   € Ü×Ñ”r—x‘x¢´B·J±JÔ?Õ@r$   c                 óÀ   — | j                  g d¢g d¢g«      }t        j                  |«      }|| j                  dgdgg«      z  }t        |j	                  «       |«       y )N©ç      @é   r   r   )é   é   r   r   ç      @g      *@©r+   r   r   r   r   ©r,   r   r%   Úexpected_quats       r"   Útest_generic_quat_matrixrH   F   sP   € Ø
�
‰
’N¢MÐ2Ó3€AÜ×Ñ˜1Ó€AØ˜Ÿ
™
 S E¨D¨6 ?Ó3Ñ3€MÜ�A—I‘I“K Õ/r$   Úndimr   é   c                 óÈ   — | j                  g d¢«      }| j                  |d|dz
  z  dz   «      }t        j                  |«      }|dz  }t	        |j                  «       |«       y )Nr?   ©r   r   ©rA   rB   )r+   Úreshaper   r   r   r   )r,   rI   r   r%   rG   s        r"   Útest_from_single_nd_quaternionrO   M   sW   € à
�
‰
’>Ó"€AØ
�
‰
�1�d˜d Q™hÑ'¨$Ñ.Ó/€AÜ×Ñ˜1Ó€AØ˜‘E€MÜ�A—I‘I“K Õ/r$   Ú	as_matrixc                 óž  — t         j                  j                  d«      }t        j                  | j                  g d¢«      d¬«      }t        |j                  «       | j                  d«      dd¬«       | j                  | j                  g d¢«      d	«      }t        j                  |d¬«      }t        |j                  «       | j                  | j                  d«      d
«      dd¬«       | j                  |j                  dd«      «      }|t        |d¬«      d d …d f   z  }t        |j                  d   «      D ]L  }||df   }t        j                  |d¬«      }t        | j                  |j                  «       d«      |d¬«       ŒN t        j                  |d¬«      }t        | j                  |j                  «       dd¬«      |d¬«       y )Nr   r;   T©Úscalar_firsté   çVçž¯Ò<ç¼‰Ø—²Òœ<©ÚrtolÚatol©é
   r   )r[   r   r   éd   rA   r   r    .©rX   )r3   ÚrandomÚRandomStater   r   r+   r   rP   ÚeyeÚtileÚrandnr   ÚrangeÚshapeÚrollr   ©r,   Úrngr%   ÚqÚiÚqis         r"   Útest_from_quat_scalar_firstrk   V   sf  € ä
�)‰)×
Ñ
 Ó
"€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ØŒ˜ Ô	"¢1 d 7Ñ	+Ñ+€AÜ�1—7‘7˜1‘:Óò AˆØˆq�#ˆv‰YˆÜ×Ñ˜r°Ô5ˆÜ˜Ÿ™ §	¡	£¨QÓ/°¸%Ö@ðAô
 	×Ñ˜1¨4Ô0€AÜ�B—G‘G˜AŸI™I›K¨°�GÓ3°Q¸UÖCr$   c                  óÈ  — t         j                  j                  d«      } t        j                  | ¬«      }t        j                  |j                  «       j                  «       «      }|j                  |d¬«      sJ ‚t        j                  d| ¬«      }t        j                  |j                  «       j                  «       «      }t        j                  |j                  |d¬«      «      sJ ‚| j                  d¬«      }|t        |d¬	«      d
   z  }t        j                  |«      }t        j                  |«      }t        j                  |j                  |d¬«      «      sJ ‚y )Né{   ©rg   çê-�™—q=©rY   rT   )rT   rA   rB   rA   ©Úsizeéÿÿÿÿr    ).N)r3   r^   Údefault_rngr   r   r   ÚtolistÚapprox_equalÚallÚnormalr   )rg   Ú
r_expectedr%   rh   s       r"   Útest_from_quat_array_likerz   n   s  € Ü
�)‰)×
Ñ
 Ó
$€Cä—‘ SÔ)€JÜ×Ñ˜:×-Ñ-Ó/×6Ñ6Ó8Ó9€AØ×"Ñ" 1¨5Ð"Ô1Ð1Ð1ô —‘ ¨Ô,€JÜ×Ñ˜:×-Ñ-Ó/×6Ñ6Ó8Ó9€AÜ�6‰6�*×)Ñ)¨!°%Ð)Ó8Ô9Ð9Ð9ð 	�
‰
˜ˆ
Ó%€AØŒ˜ Ô	# IÑ	.Ñ.€AÜ×#Ñ# AÓ&€JÜ×Ñ˜1Ó€AÜ�6‰6�*×)Ñ)¨!°%Ð)Ó8Ô9Ð9Ñ9r$   c                 ó    — t        j                  | j                  g d¢«      «      }|j                  «       j                  t        | «      k(  sJ ‚y )Nr;   )r   r   r+   r   r(   r   ©r,   r%   s     r"   Útest_from_quat_int_dtyper}   ‚   s;   € Ü×Ñ˜2Ÿ:™:¢lÓ3Ó4€AØ�9‰9‹;×ÑÔ 0°Ó 4Ò4Ð4Ñ4r$   c                 ó\  — | j                  g d¢«      }t        t        j                  |«      j	                  d¬«      | «       | j                  g d¢«      }t        t        j                  |«      j	                  d¬«      | «       | j                  g d¢«      }t        t        j                  |«      j	                  d¬«      | «       | j                  g d¢«      }t        t        j                  |«      j	                  d¬«      | «       | j                  g d¢«      }|t        |«      z  }t        t        j                  |«      j	                  d¬«      |«       | j                  g d¢«      }|t        |«      z  }t        t        j                  |«      j	                  d¬«      |«       y )	N©ç        r   r   rs   T©Ú	canonical©ç      ð¿r   r   r   )r€   rs   r   r   )r€   r   rs   r   )r€   çš™™™™™¹¿r   çÍÌÌÌÌÌì?)r€   r€   r…   r†   )r+   r   r   r   r   r   )r,   rh   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           	      ó~  — t         j                  j                  d«      }t        j                  d| j                  d«      «      }t        |j                  d¬«      | j                  g d¢«      dd¬	«       t        j                  d| j                  d
«      «      }t        |j                  d¬«      | j                  | j                  g d¢«      d«      dd¬	«       | j                  |j                  dd«      «      }|t        |d¬«      d d …d f   z  }t        |j                  d   «      D ]‹  }||df   }t        j                  |«      }t        |j                  d¬«      | j                  |d«      d¬«       t        |j                  dd¬«      | j                  |j                  d¬«      d«      d¬«       Œ� t        j                  |«      }t        |j                  d¬«      | j                  |dd¬«      d¬«       t        |j                  dd¬«      | j                  |j                  d¬«      dd¬«      d¬«       y )Nr   ÚxyzrT   TrR   )ç      ð?r   r   r   rU   rV   rW   )r[   rT   rZ   r\   rA   r   r    .r]   )r‚   rS   r�   )r3   r^   r_   r   rˆ   Úzerosr   r   r+   ra   rb   r   rc   rd   r   re   rf   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ØŒ˜ Ô	"¢1 d 7Ñ	+Ñ+€AÜ�1—7‘7˜1‘:Óò $ˆØˆq�#ˆ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           	      óè   — | j                  g d¢g d¢g d¢g d¢g d¢g d¢g«      }t        j                  |«      }|| j                  dgdgd	gd
gd	gd
gg«      z  }t        |j	                  «       |«       y )N)r@   r   r   rA   ©rB   r   rC   r   r0   )rs   rs   rs   r   ©r   r   r   rs   ©rs   rs   rs   rs   rD   é   r   é   rE   rF   s       r"   Útest_from_square_quat_matrixr”   ¿   su   € à
�
‰
ÚÚÚÚÚÚð
ó 	€Aô 	×Ñ˜1Ó€AØ˜Ÿ
™
 S E¨B¨4°!°°q°c¸A¸3ÀÀÐ#DÓEÑE€MÜ�A—I‘I“K Õ/r$   c                 óò   — | j                  g d¢g d¢g d¢g d¢g d¢g«      }t        j                  |«      }| j                  |«      t	        |d¬«      d d …d f   z  }t        |j                  d¬	«      |«       y )
Nrƒ   )r   rs   r   r   )r   r   rs   r   r�   r‘   r   r    Tr�   )r+   r   r   Úabsr   r   r   rF   s       r"   Ú*test_quat_double_to_canonical_single_coverr—   Î   sm   € Ø
�
‰
ÚÚÚÚÚð
ó 	€Aô 	×Ñ˜1Ó€AØ—F‘F˜1“I¤¨q°qÔ 9º!¸T¸'Ñ BÑB€MÜ�A—I‘I¨�IÓ-¨}Õ=r$   ÚinvÚ__mul__c                 óh  — | j                  g d¢«      }t        j                  |«      }t        ||j	                  d¬«      «       | j                  g d¢«      t        j                  d«      z  }t        j                  |«      }||z  |z  }t        |j	                  d¬«      t        j                  d«      z  | j                  g d¢«      «       t        |j                  «       j	                  d¬«      t        j                  d«      z  | j                  g d¢«      «       t        |j	                  d¬«      t        j                  d«      z  | j                  g d¢«      «       t        |j                  «       j	                  d¬«      t        j                  d«      z  | j                  g d¢«      «       t        ||j                  «       z  j	                  d¬«      | j                  g d	¢«      d
¬«       t        ||j                  «       z  j	                  d¬«      | j                  g d	¢«      d
¬«       t        ||z  j	                  d¬«      | j                  g d¢«      d
¬«       t        |j                  «       |j                  «       z  j	                  d¬«      | j                  g d¢«      d
¬«       y )Nr   Fr�   )r‹   r   r   r   r“   )r„   r   r   r   )r‹   r   r   rs   )r„   r   r   rs   ©r€   r   r   r   g¼‰Ø—²Ò¬<rp   )	r+   r   r   r
   r   ÚmathÚsqrtr   r˜   )r,   rh   r%   Úr3s       r"   Útest_quat_double_coverrŸ   Û   s÷  € ð
 	�
‰
’?Ó#€AÜ×Ñ˜1Ó€AÜ�A�q—y‘y¨5�yÓ1Ô2à
�
‰
’>Ó"¤4§9¡9¨Q£<Ñ/€AÜ×Ñ˜1Ó€AØ	
ˆ1‰ˆ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�q—u‘u“w‘Y×'Ñ'°%Ð'Ó8Ø—J‘Jš~Ó.°Uõ<ä�R˜Ÿ™›‘[×)Ñ)°EÐ)Ó:Ø—J‘Jš~Ó.°Uõ<ä�Q�r‘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                 óÀ   — | j                  g d|z  ¢d‘­«      }t        j                  t        d¬«      5  t	        j
                  |«       d d d «       y # 1 sw Y   y xY w)NrL   rB   zExpected `quat` to have shape©Úmatch)rŒ   ÚpytestÚraisesÚ
ValueErrorr   r   )r,   rI   Úquats      r"   Útest_from_quat_wrong_shaper§   û   sQ   € à�8‰8Ð'�t˜d‘{Ð' QÑ'Ó(€DÜ	�‰”zÐ)HÔ	Iñ !Ü×Ñ˜4Ô ÷!÷ !ñ !ús   µAÁAc                 ób  — | j                  g d¢g d¢g d¢g«      }t        |«      rG| j                  | j                  t	        j
                  |«      j                  «       d   «      «      sJ ‚y t        j                  t        «      5  t	        j
                  |«       d d d «       y # 1 sw Y   y xY w)N)rT   rA   r   r   )r   r   r   r   r�   ©r   .)
r+   r   rw   Úisnanr   r   r   r£   r¤   r¥   )r,   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ä�]‰]œ:Ó&ñ 	"Ü×Ñ˜qÔ!÷	"÷ 	"ñ 	"ús   ÂB%Â%B.c                 ó,  — | j                  g d¢«      }| j                  |d|dz
  z  dz   «      }t        j                  |«      j	                  «       }| j                  g d¢g d¢g d¢g«      }| j                  |d|dz
  z  dz   «      }t        ||d	¬
«       y )N©r   r   r   r   rL   r   rM   ©r€   rs   r   r   r   ©rT   rT   rV   rp   )r+   rN   r   r   rP   r   )r,   rI   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                 óÔ  — | j                  g d¢g d¢g d¢g d¢g«      }t        j                  |«      j                  «       }t	        |j
                  d«       | j                  g d¢g d¢g d¢g«      }t        |d	   |d
¬«       | j                  g d¢g d¢g d¢g«      }t        |d   |d
¬«       t        |d   | j                  d«      «       t        |d   | j                  d«      «       y )Nr­   ©r   r   r   r   r0   r�   )rA   rT   rT   r®   r   r   ©r   .rV   rp   ©r€   r   r   r   ©rs   r   r   r©   ©r“   .rT   ©rT   .)r+   r   r   rP   r   rd   r   r`   )r,   Ú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                 ó®  — | j                  g d¢g d¢g d¢g«      }t        j                  |«      j                  «       }t	        |j
                  d«       | j                  g d¢g d¢g d¢g«      }t        |d   |d	¬
«       | j                  g d¢g d¢g d¢g«      }t        |d   |d	¬
«       | j                  g d¢g d¢g d¢g«      dz  }t        |d   |«       y )Nr­   r´   ©r   r“   rT   rA   )rT   rT   rT   r®   r   r   rµ   rV   rp   r¶   r   r·   r©   )çš™™™™™Ù?éþÿÿÿgš™™™™™@)gffffff@r   rÀ   )rs   r“   r“   rT   r¸   )r+   r   r   rP   r   rd   r   )r,   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                 ó$  — | j                  g d¢g d¢g d¢g«      }| j                  |d|dz
  z  dz   «      }| j                  g d¢«      }| j                  |d|dz
  z  dz   «      }t        t        j                  |«      j                  «       |«       y )	Nr   r   r   rL   r   r¯   )ç      à?rÆ   rÆ   rÆ   rM   )r+   rN   r   r   rÄ   r   )r,   rI   r°   rG   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                 óŠ  — d}| j                  g d¢«      t        j                  d«      z  }| j                  g d¢g d¢g d¢g«      }t        t	        j
                  |«      j                  «       ||¬«       t        t	        j
                  | j                  |d«      «      j                  «       | j                  |d	«      |¬«       y )
Nç:Œ0âŽyE>)r‹   r   rJ   r   é'   )çÓ3~Ë·ì¿gâ6¿iÐ¿çnzÃoùÖ?)rÌ   rË   çâ6¿iÐ?)rÍ   rÌ   gÓ3~Ë·ì?rp   ©r   rT   rT   ©r   rA   )r+   rœ   r�   r   r   rÄ   r   rN   )r,   rY   rG   r°   s       r"   Útest_from_matrix_calculationrÐ   h  sš   € à€DØ—J‘Jš~Ó.´·±¸2³Ñ>€MØ
�*‰*Ú/Ú.Ú-ðó €Cô
 ”H×(Ñ(¨Ó-×5Ñ5Ó7¸ÈTÕRÜ”H×(Ñ(¨¯©°C¸Ó)CÓD×LÑLÓNØ—J‘J˜}¨fÓ5Øör$   c                 ó¬   — | j                  t        j                  ddd¬«      «      }t        t	        j
                  |«      j                  «       |«       y )NrT   r[   r   )rr   Úrandom_state)r+   r   Úrvsr   r   rÄ   rP   ©r,   r°   s     r"   Ú test_matrix_calculation_pipelinerÕ   w  s>   € à
�*‰*Ô(×,Ñ,¨Q°RÀaÔHÓ
I€CÜ”H×(Ñ(¨Ó-×7Ñ7Ó9¸3Õ?r$   c                 ó   — t        j                  | «      }|| j                  k(  rdnd}t        j                  j                  d«      }| j                  |j                  d«      |¬«      }| j                  j                  |«      }t        |j                  d   «      D ]:  }||   dk  sŒt        j                  |«      |df   j                  ||df    «      }Œ< t        j                  |«      j!                  «       }| j#                  || j%                  |«      «      }| j'                  d«      | j)                  d«      z   }	t+        ||	|¬«       y )	Nro   ç�íµ ÷Æ°>r   )r\   rT   rT   r'   .rT   rp   )r)   r*   Úfloat64r3   r^   r_   r+   Úrandom_sampleÚlinalgÚdetrc   rd   ÚatÚsetr   rÄ   rP   ÚmatmulÚmatrix_transposerŒ   r`   r   )
r,   r(   rY   Úrndr°   Údetsri   Ú	ortho_matÚmult_resultÚeye3ds
             r"   Útest_from_matrix_ortho_outputrå   }  s  € ä×Ñ˜bÓ!€EØ˜RŸZ™ZÒ'‰5¨T€DÜ
�)‰)×
Ñ
 Ó
"€CØ
�*‰*�S×&Ñ& {Ó3¸5ˆ*Ó
A€CØ�9‰9�=‰=˜Ó€DÜ�4—:‘:˜a‘=Ó!ò 8ˆà�‰7�Q‹;Ü—&‘&˜“+˜a ˜fÑ%×)Ñ)¨3¨q°#¨v©;¨,Ó7‰Cð8ô ×$Ñ$ SÓ)×3Ñ3Ó5€Ià—)‘)˜I r×':Ñ':¸9Ó'EÓF€Kà�H‰H�[Ó! B§F¡F¨1£IÑ-€EÜ�K ¨TÖ2r$   c                 óv  — | j                  g d¢g d¢g d¢g«      }| j                  g d¢g d¢g d¢g«      }t        t        j                  |«      j	                  «       |d¬«       | j                  g d	¢g d
¢g d¢g«      }| j                  g d¢g d¢g d¢g«      }t        t        j                  |«      j	                  «       |d¬«       | j                  || j                  d«      g«      }| j                  || j                  d«      g«      }t        t        j                  |«      j	                  «       |d¬«       y )N©r   r   r   r   r   )ç½5_%Ÿì?gÔx'ŸÜ?r€   )gÔx'ŸÜ¿rè   r€   )r€   r€   r‹   r×   rp   )r   ç      à¿r   )rÆ   r   r   )r   r   rÆ   r®   r   rT   )r+   r   r   rÄ   rP   Ústackr`   )r,   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˜ 2§6¡6¨!£9Ð-Ó.€HÜ”H×(Ñ(¨Ó-×7Ñ7Ó9¸8È$ÖOr$   c                 ó‚  — t         j                  j                  d«      }t        j                  | «      }|| j
                  k(  rdnd}t        t        j                  |j                  d¬«      «      | «      }t        j                  |j                  «       d¬«      }| j                  |j                  ||¬«      «      sJ ‚y )	Nr   ro   r×   )r[   rA   rq   T)Úassume_validrp   )r3   r^   rt   r)   r*   rØ   r-   r   r   rx   rÄ   rP   rw   rv   )r,   rg   r(   rY   ÚrotÚrot_no_norms         r"   Útest_from_matrix_assume_validrñ   ª  s”   € ä
�)‰)×
Ñ
 Ó
"€CÜ×Ñ˜bÓ!€EØ˜RŸZ™ZÒ'‰5¨T€Dä
œ×+Ñ+¨C¯J©J¸G¨JÓ,DÓEÀrÓ
J€CÜ×&Ñ& s§}¡}£ÀTÔJ€KØ�6‰6�#×"Ñ" ;°TÐ"Ó:Ô;Ð;Ñ;r$   c                 ó  — | j                  d«      }t        j                  |«      d   j                  d«      }t	        |«      rC| j                  | j                  t        j                  |«      j                  «       «      «      s;J ‚t        j                  t        d¬«      5  t        j                  |«       d d d «       t        j                  |«      d   j                  d«      }t	        |«      rD| j                  | j                  t        j                  |«      j                  «       «      «      sJ ‚y t        j                  t        d¬«      5  t        j                  |«       d d d «       y # 1 sw Y   Œ¹xY w# 1 sw Y   y xY w)NrT   ©r   r   r   zNon-positive determinantr¡   rs   )r`   r)   rÜ   rÝ   r   rw   rª   r   rÄ   rP   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ä�]‰]œ:Ð-GÔHñ 	&Ü× Ñ  Ô%÷	&ô �&‰&�‹+�dÑ
×
Ñ
 Ó
#€CÜ�SÔØ�v‰v�b—h‘hœx×3Ñ3°CÓ8×BÑBÓDÓEÔFÐFÑFä�]‰]œ:Ð-GÔHñ 	&Ü× Ñ  Ô%÷	&ð 	&÷	&ð 	&ú÷	&ð 	&ús   Â"E0ÅE<Å0E9Å<Fc                  óÚ  — t         j                  j                  d«      } t        j                  | ¬«      }t        j                  |j                  «       j                  «       «      }|j                  |d¬«      sJ ‚t        j                  d| ¬«      }t        j                  |j                  «       j                  «       «      }t        j                  |j                  |d¬«      «      sJ ‚y ©Nrm   rn   ro   rp   rT   )	r3   r^   rt   r   rÄ   rP   ru   rv   rw   ©rg   ry   r%   s      r"   Útest_from_matrix_array_likerø   É  sµ   € Ü
�)‰)×
Ñ
 Ó
$€Cä—‘ SÔ)€JÜ×Ñ˜Z×1Ñ1Ó3×:Ñ:Ó<Ó=€AØ×"Ñ" 1¨5Ð"Ô1Ð1Ð1ô —‘ ¨Ô,€JÜ×Ñ˜Z×1Ñ1Ó3×:Ñ:Ó<Ó=€AÜ�6‰6�*×)Ñ)¨!°%Ð)Ó8Ô9Ð9Ñ9r$   c                 ó²   — | j                  g d¢g d¢g d¢g«      }t        j                  |«      }|j                  «       j                  t        | «      k(  sJ ‚y )Nr   r   r   )r+   r   rÄ   r   r(   r   ©r,   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                 ó"  — d}| j                  g d¢«      }| j                  |d|dz
  z  dz   «      }| j                  g d¢«      }| j                  |d|dz
  z  dz   «      }t        j                  |«      }t	        |j                  «       ||¬«       y )	NçH¯¼šò×z>r   rL   r   ©rT   )g§”×Jè®Þ?r   r   gž<Ñ(ì?rM   rp   )r+   rN   r   rü   r   r   )r,   rI   rY   ÚrotvecrG   Ú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                 óÎ   — d}| j                  g d¢g d¢g d¢g«      }| j                  g d¢g d¢g d¢g«      }t        t        j                  |«      j	                  «       ||¬«       y )	Nrþ   ©r   r“   r“   ©r   rs   rÆ   ©r   r   r   )g.pó¦GÕ?çcUÎ(§Gå?r  gQœHÕ²?)gNZ]óOÝ?gNZ]óOÝ¿gNZ]óOÍ?g0×þiç?r0   rp   )r+   r   r   rü   r   )r,   rY   r   rG   s       r"   Útest_from_generic_rotvecr  é  sd   € à€DØ�Z‰ZÚÚÚðó €Fð —J‘JÚ4Ú5Úð 
ó €Mô
 ”H×(Ñ(¨Ó0×8Ñ8Ó:¸MÐPTÖUr$   c                 óB  — | j                  dt        j                  d«      z  dt        j                  d«      z  dt        j                  d«      z  gg d¢g d¢g«      }t        j                  |«      j                  «       }t        |d   | j                  d«      d   «       t        |d	d d…f   |d
   dz  «       t        |d   | j                  d«      d   «       t        |dd d…f   | j                  g d¢«      «       t        |d   | j                  g d¢«      «       y )Ngü©ñÒMb@?rT   gü©ñÒMb@¿)çš™™™™™É?g333333Ó?rÀ   r  ©r   rT   r‹   r   r   rµ   rÆ   ©r   rT   g@ù»wÔØî?r   )g>Ü}²J¹?g„.eÞøÂ?g>Ü}²JÉ?r¸   r›   )r+   rœ   r�   r   rü   r   r   r
   )r,   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˜˜B˜Q˜B˜‘K ¨¡°#Ñ!5Ô6ä�D˜‘J §
¡
¨9Ó 5°bÑ 9Ô:Ü�D˜˜B˜Q˜B˜‘KØ�J‰Jò %ó &ô'ô �D˜‘L "§*¡*ª^Ó"<Õ=r$   Ú	as_rotvecc                  óÚ  — t         j                  j                  d«      } t        j                  | ¬«      }t        j                  |j                  «       j                  «       «      }|j                  |d¬«      sJ ‚t        j                  d| ¬«      }t        j                  |j                  «       j                  «       «      }t        j                  |j                  |d¬«      «      sJ ‚y rö   )	r3   r^   rt   r   rü   r  ru   rv   rw   r÷   s      r"   Útest_from_rotvec_array_liker    sµ   € ä
�)‰)×
Ñ
 Ó
$€Cä—‘ SÔ)€JÜ×Ñ˜Z×1Ñ1Ó3×:Ñ:Ó<Ó=€AØ×"Ñ" 1¨5Ð"Ô1Ð1Ð1ô —‘ ¨Ô,€JÜ×Ñ˜Z×1Ñ1Ó3×:Ñ:Ó<Ó=€AÜ�6‰6�*×)Ñ)¨!°%Ð)Ó8Ô9Ð9Ñ9r$   c                 ó¤   — | j                  g d¢«      }t        j                  |«      }|j                  «       j                  t        | «      k(  sJ ‚y )Nr   )r+   r   rü   r   r(   r   )r,   r   r%   s      r"   Útest_from_rotvec_int_dtyper    s@   € à�Z‰Zš	Ó"€FÜ×Ñ˜VÓ$€AØ�9‰9‹;×ÑÔ 0°Ó 4Ò4Ð4Ñ4r$   c                 ó   — | j                  dgdz  «      }t        j                  |d¬«      }|j                  «       }| j                  |dz  | j                  z  «      }t        j                  |«      }|j                  «       }t        ||«       y )NgvÃ´û0æ?rT   T©Údegreesé´   )r+   r   rü   r   Úpir   )r,   Úrotvec1Úrot1Úquat1Úrotvec2Úrot2Úquat2s          r"   Útest_degrees_from_rotvecr  %  sw   € à�j‰j˜.Ð)¨AÑ-Ó.€GÜ×Ñ °Ô6€DØ�L‰L‹N€Eð �j‰j˜ 3™¨¯©Ñ.Ó/€GÜ×Ñ Ó(€DØ�L‰L‹N€Eä�E˜5Õ!r$   c                 ó°   — t        j                  t        d¬«      5  t        j                  | j                  ddg«      «       d d d «       y # 1 sw Y   y xY w)Nú Expected `rot_vec` to have shaper¡   r   r“   )r£   r¤   r¥   r   rü   r+   ©r,   s    r"   Útest_malformed_1d_from_rotvecr"  3  sA   € ä	�‰”zÐ)KÔ	Lñ 1Ü×Ñ˜RŸZ™Z¨¨A¨Ó/Ô0÷1÷ 1ñ 1ús   œ'AÁAc                 óÂ   — d|dz
  z  dz   }t        j                  t        d¬«      5  t        j                  | j                  |«      «       d d d «       y # 1 sw Y   y xY w)NrL   r   ©r“   r   r¡   )r£   r¤   r¥   r   rü   Úones©r,   rI   rd   s      r"   Útest_malformed_nd_from_rotvecr'  9  sQ   € ð �D˜1‘HÑ Ñ$€EÜ	�‰”zÐ)KÔ	Lñ -Ü×Ñ˜RŸW™W U›^Ô,÷-÷ -ñ -úó   §%AÁAc           	      óÔ  — t        j                  | «      }|| j                  k(  rdnd}| j                  g d¢g d¢g d¢g«      }|t	        |dd¬«      z  }t        j                  |«      j                  «       }t	        |d¬	«      }t        |d d …d
f   | j                  |dz  «      «       t        | j                  j                  ||d d …d d
…f   «      | j                  d«      |¬«       y )NrU   rþ   ©r   r“   rs   rÆ   ©r   rs   r   ga2U0*©3?r0   rs   T)r!   Úkeepdimsr    rT   r“   r¯   rp   )r)   r*   rØ   r+   r   r   r   r  r   ÚcosrÚ   ÚcrossrŒ   )r,   r(   rY   r¦   r   Úangles         r"   Útest_as_generic_rotvecr0  A  sÊ   € ä×Ñ˜bÓ!€EØ˜RŸZ™ZÒ'‰5¨T€DØ�:‰:ÚÚÚðó €Dð
 	ŒN˜4 b°4Ô8Ñ8€Dä×Ñ Ó%×/Ñ/Ó1€FÜ˜6¨Ô+€Eä�Dš˜A˜‘J §¡ u¨q¡yÓ 1Ô2Ü�B—I‘I—O‘O F¨D²°B°Q°B°©KÓ8¸"¿(¹(À6Ó:JÐQUÖVr$   rA   c                 óZ  — | j                  g d¢«      }| j                  |d|dz
  z  dz   «      }| j                  g d¢«      }| j                  |d|dz
  z  dz   «      }t        j                  |«      j	                  «       }t        |j                  |j                  «       t        ||«       y )N©r   r“   éýÿÿÿr“   rL   r   rM   )gj*0	¼xâ?g$¼xò?g:2 (µû¿rÿ   )r+   rN   r   r   r  r   rd   r   )r,   rI   r¦   Úexpected_rotvecÚactual_rotvecs        r"   Útest_as_rotvec_single_nd_inputr6  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                 ó$  — | j                  g d¢g d¢g d¢g«      }t        j                  |«      }|j                  d¬«      }t	        |d¬«      }t        || j                  d«      d	   «       t        |d
   |d   «       t        |d   |d   «       y )Nr   r   r   Tr  rs   r    g      ^@r   r   r   r“   )r+   r   rÄ   r  r   r   )r,   r°   rï   r   r/  s        r"   Útest_as_rotvec_degreesr8  `  s�   € ð �*‰*’i¢ªIÐ6Ó
7€CÜ
×
Ñ
˜sÓ
#€CØ�]‰] 4ˆ]Ó(€FÜ˜6¨Ô+€EÜ�E˜2Ÿ:™: eÓ,¨RÑ0Ô1Ü�F˜1‘I˜v a™yÔ)Ü�F˜1‘I˜v a™yÕ)r$   c                 óô   — | j                  g d¢g d¢g d¢g«      }t        t        j                  |«      j	                  «       |«       t        t        j                  |d¬«      j	                  d¬«      |«       y )Nr  ©r   rs   r“   )ga2U0*©3¿gÇº¸�ð6?ga2U0*©?Tr  )r+   r   r   rü   r  )r,   r   s     r"   Útest_rotvec_calc_pipeliner;  l  si   € ð �Z‰ZÚÚÚð
ó €Fô
 ”H×(Ñ(¨Ó0×:Ñ:Ó<¸fÔEÜ”H×(Ñ(¨¸Ô>×HÑHÐQUÐHÓVØõr$   Úfrom_mrpc                 ó�  — | j                  g d¢«      }| j                  |d|dz
  z  dz   «      }| j                  g d¢«      }| j                  |d|dz
  z  dz   «      }t        j                  |«      }t	        |j                  «       |d¬«       t        |j                  t        t        |«      j                  d	«      «      «      sJ ‚y )
N)r   r   r‹   rL   r   rÿ   )r€   r   r   r   rM   ro   rp   r   )r+   rN   r   r<  r   r   Ú
isinstanceÚ_quatÚtyper   Úempty)r,   rI   ÚmrprG   r  s        r"   Útest_from_mrp_single_nd_inputrC  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ÑHr$   c                  óÚ  — t         j                  j                  d«      } t        j                  | ¬«      }t        j                  |j                  «       j                  «       «      }|j                  |d¬«      sJ ‚t        j                  d| ¬«      }t        j                  |j                  «       j                  «       «      }t        j                  |j                  |d¬«      «      sJ ‚y rö   )	r3   r^   rt   r   r<  Úas_mrpru   rv   rw   r÷   s      r"   Útest_from_mrp_array_likerF  †  sµ   € Ü
�)‰)×
Ñ
 Ó
$€Cä—‘ SÔ)€JÜ×Ñ˜*×+Ñ+Ó-×4Ñ4Ó6Ó7€AØ×"Ñ" 1¨5Ð"Ô1Ð1Ð1ô —‘ ¨Ô,€JÜ×Ñ˜*×+Ñ+Ó-×4Ñ4Ó6Ó7€AÜ�6‰6�*×)Ñ)¨!°%Ð)Ó8Ô9Ð9Ñ9r$   c                 ó¤   — | j                  g d¢«      }t        j                  |«      }|j                  «       j                  t        | «      k(  sJ ‚y )Nr   )r+   r   r<  r   r(   r   )r,   rB  r%   s      r"   Útest_from_mrp_int_dtyperH  “  s@   € à
�*‰*’YÓ
€CÜ×Ñ˜#Ó€AØ�9‰9‹;×ÑÔ 0°Ó 4Ò4Ð4Ñ4r$   c                 óÆ   — | j                  g d¢g d¢g d¢g«      }| j                  g d¢g d¢g d¢g«      }t        t        j                  |«      j	                  «       |«       y )Nr  r  r  )r
  rÀ   rÀ   gš™™™™™é¿)g}�+;±ã?g}�+;±ã¿g}�+;±Ó?gß¨Ó‰�Ø¿r0   )r+   r   r   r<  r   )r,   rB  rG   s      r"   Útest_from_generic_mrprJ  š  s\   € à
�*‰*ÚÚÚðó €Cð —J‘JÚÚ:Úð ó €Mô ”H×%Ñ% cÓ*×2Ñ2Ó4°mÕDr$   c                 óÂ   — d|dz
  z  dz   }t        j                  t        d¬«      5  t        j                  | j                  |«      «       d d d «       y # 1 sw Y   y xY w)NrL   r   r$  zExpected `mrp` to have shaper¡   )r£   r¤   r¥   r   r<  r%  r&  s      r"   Útest_malformed_nd_from_mrprL  §  sQ   € ð �D˜1‘HÑ Ñ$€EÜ	�‰”zÐ)GÔ	Hñ *Ü×Ñ˜"Ÿ'™' %›.Ô)÷*÷ *ñ *úr(  rE  c                 óô   — | j                  g d¢g d¢g d¢g«      }|t        |d¬«      d d …d f   z  }| j                  g d¢g d¢g d¢g«      }t        t        j                  |«      j                  «       |«       y )	Nr*  r+  r0   r   r    )gÚÁQUUÕ?g“vWUUå?çÚÁQUUÕ¿)çužF”Õxâ?gužF”Õxâ¿rO  r  )r+   r   r   r   r   rE  )r,   r¦   Úexpected_mrps      r"   Útest_as_generic_mrprQ  ¯  sv   € à�:‰:ÚÚÚðó €Dð 	ŒN˜4 aÔ(ª¨D¨Ñ1Ñ1€Dà—:‘:Ú-Ú-Úðó €Lô ”H×&Ñ& tÓ,×3Ñ3Ó5°|ÕDr$   c           	      óö   — | j                  t        j                  | j                  dz  dz  «       ddg«      }t	        t        j                  d| j                  g d¢«      d¬«      j                  «       |«       y )	Nr“   rA   r€   r   rŠ   )i  r   r   Tr  )r+   rœ   Útanr  r   r   rˆ   rE  )r,   rP  s     r"   Útest_past_180_degree_rotationrT  ¾  s`   € ð —:‘:¤§¡¨¯©°©°Q©Ó 7Ð7¸¸aÐ@ÓA€LÜÜ×Ñ˜E 2§:¡:ªkÓ#:ÀDÔI×PÑPÓRØõr$   c                 óZ  — | j                  g d¢«      }| j                  |d|dz
  z  dz   «      }| j                  g d¢«      }| j                  |d|dz
  z  dz   «      }t        j                  |«      j	                  «       }t        |j                  |j                  «       t        ||«       y )Nr2  rL   r   rM   )g²Š�Ä?g²Š�Ô?g‹O—ÁÞ¿rÿ   )r+   rN   r   r   rE  r   rd   r   )r,   rI   r¦   rP  Ú
actual_mrps        r"   Útest_as_mrp_single_nd_inputrW  É  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                 óÒ   — | j                  g d¢g d¢g d¢g d¢g«      }| j                  g d¢g d¢g d¢g d¢g«      }t        t        j                  |«      j	                  «       |«       y )Nr  r:  )gzŸp—y‚Ú?r   r   )çš™™™™™¹?r
  rY  )gKÚ}\UUÅ¿gKÚ}\UUÅ?rN  )r+   r   r   r<  rE  )r,   rV  rP  s      r"   Útest_mrp_calc_pipelinerZ  Ö  sb   € à—‘ÚÚÚÚð	ó €Jð
 —:‘:ÚÚ.ÚÚð	ó €Lô
 ”H×%Ñ% jÓ1×8Ñ8Ó:¸LÕIr$   c                 óØ   — t        j                  d| j                  d«      d¬«      j                  «       }| j                  g d¢«      t	        j
                  d«      z  }t        ||«       y )Nr   éZ   Tr  ©r€   r   r   r   r“   )r   rˆ   r+   r   rœ   r�   r   )r,   r¦   rG   s      r"   Útest_from_euler_single_rotationr^  å  sL   € ä×Ñ˜s B§J¡J¨r£N¸DÔA×IÑIÓK€DØ—J‘Jš~Ó.´·±¸1³Ñ=€MÜ�D˜-Õ(r$   c                 ó^  — t        j                  t        d¬«      5  t        j                  d| j                  ddg«      «       d d d «       t        j                  t        d¬«      5  t        j                  d| j                  dg«      «       d d d «       y # 1 sw Y   ŒTxY w# 1 sw Y   y xY w)Nz&Expected last dimension of `angles` tor¡   ÚXr   r\  ÚXYZ)r£   r¤   r¥   r   rˆ   r+   r!  s    r"   Ú test_from_euler_input_validationrb  ì  s‹   € ô 
�‰”zÐ)QÔ	Rñ 6Ü×Ñ˜C §¡¨Q°¨GÓ!4Ô5÷6ô 
�‰”zÐ)QÔ	Rñ 5Ü×Ñ˜E 2§:¡:¨r¨dÓ#3Ô4÷5ð 5÷6ð 6ú÷5ð 5ús   œ(BÁ''B#ÂB Â#B,c                 óH  — | j                  | j                  g d¢«      d|dz
  z  dz   «      }t        j                  d|d¬«      j	                  «       }| j                  g d¢«      t        j                  d	«      z  }| j                  |d|dz
  z  d
z   «      }t        ||«       y )N)r   r   r\  rL   r   rÿ   rŠ   Tr  r]  r“   rM   )rN   r+   r   rˆ   r   rœ   r�   r   )r,   rI   Úanglesr¦   rG   s        r"   Útest_from_euler_nd_rotationre  ö  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                 óð   — t        j                  d| j                  d«      d¬«      j                  «       }t        j                  d| j                  d«      d¬«      j                  «       }t	        ||«       y )Nr   r\  Tr  ÚZ©r   rˆ   r+   rP   r   )r,   Ú	extrinsicÚ	intrinsics      r"   Ú(test_single_intrinsic_extrinsic_rotationrk     sV   € ä×#Ñ# C¨¯©°B«ÀÔF×PÑPÓR€IÜ×#Ñ# C¨¯©°B«ÀÔF×PÑPÓR€IÜ�I˜yÕ)r$   c                 ó^  — t         j                  j                  d«      }| j                  |j	                  ddd¬«      «      }| j                  |d¬«      }t        j                  d|d¬	«      j                  «       }t        j                  d
|d¬	«      j                  «       }t        ||«       y )Nr   r  ©rJ   rT   ©ÚlowÚhighrr   rs   r    rŠ   Tr  ÚZYX)
r3   r^   r_   r+   ÚrandintÚflipr   rˆ   r   r   )r,   rà   ÚaÚbr   r   s         r"   Útest_from_euler_rotation_orderrv    s‹   € ô �)‰)×
Ñ
 Ó
"€CØ
�
‰
�3—;‘; 1¨3°V�;Ó<Ó=€AØ
�‰�˜ˆÓ€AÜ×Ñ˜E 1¨dÔ3×;Ñ;Ó=€AÜ×Ñ˜E 1¨dÔ3×;Ñ;Ó=€AÜ�A�qÕr$   c                 óÆ   — d}t        j                  d| j                  ddg«      d¬«      j                  «       }| j                  g d¢g d¢g d¢g«      }t	        |||¬	«       y )
Nro   Úzxr\  Tr  r®   ©r   r   rs   r   rp   rh  )r,   rY   r°   r±   s       r"   Ú-test_from_euler_elementary_extrinsic_rotationrz    s[   € à€Dä
×
Ñ
˜d B§J¡J°°B¨xÓ$8À$Ô
G×
QÑ
QÓ
S€CØ—:‘:ÚÚÚðó €Lô
 �C˜¨DÖ1r$   c           	      ó~  — d}| j                  g d¢g d¢g d¢g«      }t        j                  d|d¬«      j                  «       }t	        |d   | j                  g d	¢g d
¢g d¢g«      |¬«       t	        |d   | j                  g d¢g d¢g d¢g«      |¬«       t	        |d   | j                  g d¢g d¢g d¢g«      |¬«       y )Nrþ   ©é   é<   é-   ©r}  r~  r}  ©r  r}  r~  ÚZXYTr  rµ   )g#ß Ž˜Ó?ç      Ð¿gÎ™þ6Õdí?)g$+¿ÆHì?ç‘+Pæz¶Û?çPï˜pž Æ¿)gPï˜pž Ö¿ç‘+Pæz¶ë?gPï˜pž Ö?rp   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„  ©r+   r   rˆ   rP   r   )r,   rY   rd  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           	      ón  — | j                  g d¢g d¢g d¢g«      }t        j                  d|d¬«      j                  «       }t	        |d   | j                  g d¢g d	¢g d
¢g«      «       t	        |d   | j                  g d¢g d¢g d¢g«      «       t	        |d   | j                  g d¢g d¢g d¢g«      «       y )Nr|  r€  r�  ÚZXZTr  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‰  ©r,   rd  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           	      ón  — | j                  g d¢g d¢g d¢g«      }t        j                  d|d¬«      j                  «       }t	        |d   | j                  g d¢g d	¢g d
¢g«      «       t	        |d   | j                  g d¢g d	¢g d¢g«      «       t	        |d   | j                  g d¢g d¢g d¢g«      «       y )Nr|  r€  r�  ÚzxyTr  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           	      ón  — | j                  g d¢g d¢g d¢g«      }t        j                  d|d¬«      j                  «       }t	        |d   | j                  g d¢g d	¢g d
¢g«      «       t	        |d   | j                  g d¢g d¢g d
¢g«      «       t	        |d   | j                  g d¢g d¢g d¢g«      «       y )Nr|  r€  r�  ÚzxzTr  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                  óæ  — t         j                  j                  d«      } d}t        j                  | ¬«      }t        j                  ||j                  |«      j                  «       «      }|j                  |d¬«      sJ ‚t        j                  d| ¬«      }t        j                  ||j                  |«      j                  «       «      }t        j                  |j                  |d¬«      «      sJ ‚y )Nrm   rŠ   rn   ro   rp   rT   )	r3   r^   rt   r   rˆ   Úas_eulerru   rv   rw   )rg   Úorderry   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ô —‘ ¨Ô,€JÜ×Ñ˜E :×#6Ñ#6°uÓ#=×#DÑ#DÓ#FÓG€AÜ�6‰6�*×)Ñ)¨!°%Ð)Ó8Ô9Ð9Ñ9r$   c                  ó  — t         j                  j                  d«      } | j                  dd¬«      }t	        j
                  d|d¬«      }t	        j
                  dt        |«      d¬«      }|j                  |d¬	«      sJ ‚y )
Nrm   éLÿÿÿr  )ro  rp  r   Tr  ro   rp   )r3   r^   rt   Úuniformr   rˆ   Úfloatrv   )rg   Údegry   r%   s       r"   Útest_from_euler_scalarr­  ž  sm   € Ü
�)‰)×
Ñ
 Ó
$€CØ
�+‰+˜$ Sˆ+Ó
)€CÜ×$Ñ$ S¨#°tÔ<€JÜ×Ñ˜C¤ s£°TÔ:€AØ×"Ñ" 1¨5Ð"Ô1Ð1Ñ1r$   r¥  Ú	seq_tuplerŠ   rj  )FTc                 óÐ  ‡ — ˆ fd„}t         j                  j                  d«      }d}t        j                  |df«      }|j	                  t         j
                   t         j
                  |f¬«      |d d …df<   |j	                  t         j
                   dz  t         j
                  dz  |f¬«      |d d …df<   |j	                  t         j
                   t         j
                  |f¬«      |d d …df<   ‰ j                  |«      }dj                  |«      }|r|j                  «       }t        j                  ||«      }|j                  |«      }	t        ||	dd	¬
«        ||	|z
  dd«       y )Nc                 óì   •— ‰j                  | d¬«      }‰j                  | d¬«      }‰j                  ||«      }‰j                  ‰j	                  |«      |k  «      sJ ‚‰j                  ||k  «      sJ ‚y ©Nr   r    ©ÚmeanÚstdÚhypotrw   r–   ©ÚerrorÚmean_maxÚrms_maxr³  r´  Úrmsr,   s         €r"   Ú
test_statsz1test_as_euler_asymmetric_axes.<locals>.test_stats«  ól   ø€ Ø�w‰w�u 1ˆwÓ%ˆØ�f‰f�U ˆfÓ#ˆØ�h‰h�t˜SÓ!ˆØ�v‰v�b—f‘f˜T“l XÑ-Ô.Ð.Ð.Ø�v‰v�c˜G‘mÔ$Ð$Ñ$r$   r   éè  rT   rn  r“   r   Ú ro   ©rY   rX   rU   ç›+¡†›„=©r3   r^   r_   rA  rª  r  r+   ÚjoinÚupperr   rˆ   r¥  r   ©
r,   r®  rj  r»  rà   Únrd  ÚseqÚrotationÚangles_quats
   `         r"   Útest_as_euler_asymmetric_axesrÉ  ¦  s"  ø€ ô
%ô �)‰)×
Ñ
 Ó
"€CØ€AÜ�X‰X�q˜!�fÓ€FØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€FŠ1ˆaˆ4�LØ—;‘;¤B§E¡E 6¨A¡:´B·E±E¸A±IÀQÀD�;ÓI€FŠ1ˆaˆ4�LØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€FŠ1ˆaˆ4�LØ�Z‰Z˜Ó€Fà
�'‰'�)Ó
€CÙð �i‰i‹kˆÜ×"Ñ" 3¨Ó/€HØ×#Ñ# CÓ(€KÜ�F˜K¨a°eÕ<Ùˆ{˜VÑ# U¨EÕ2r$   c                 ó¾  ‡ — ˆ fd„}t         j                  j                  d«      }d}t        j                  |df«      }|j	                  t         j
                   t         j
                  |f¬«      |d d …df<   |j	                  dt         j
                  |f¬«      |d d …df<   |j	                  t         j
                   t         j
                  |f¬«      |d d …df<   ‰ j                  |«      }dj                  |d   |d   |d   g«      }|r|j                  «       }t        j                  ||«      }|j                  |«      }	t        ||	dd	¬
«        ||	|z
  dd«       y )Nc                 óì   •— ‰j                  | d¬«      }‰j                  | d¬«      }‰j                  ||«      }‰j                  ‰j	                  |«      |k  «      sJ ‚‰j                  ||k  «      sJ ‚y r±  r²  r¶  s         €r"   r»  z0test_as_euler_symmetric_axes.<locals>.test_statsÊ  r¼  r$   r   r½  rT   rn  r   r“   r¾  gõ›ÙUö>=r¿  rV   rÀ  rÁ  rÄ  s
   `         r"   Útest_as_euler_symmetric_axesrÌ  Å  s'  ø€ ô
%ô �)‰)×
Ñ
 Ó
"€CØ€AÜ�X‰X�q˜!�fÓ€FØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€FŠ1ˆaˆ4�LØ—;‘; 1¬2¯5©5¸°t�;Ó<€FŠ1ˆaˆ4�LØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€FŠ1ˆaˆ4�LØ�Z‰Z˜Ó€Fð �'‰'�9˜Q‘< ¨1¡¨y¸©|Ð<Ó
=€CÙØ�i‰i‹kˆÜ×"Ñ" 3¨Ó/€HØ×#Ñ# CÓ(€KÜ�F˜K¨a°gÕ>Ùˆ{˜VÑ# U¨EÕ2r$   c              #   óì   K  — | r t        t        d|¬«      5  d –— d d d «       y t        j                  «       5  t        j                  d«       d –— d d d «       y # 1 sw Y   y xY w# 1 sw Y   y xY w­w)NzGimbal lock)r¢   r,   r·  )r   ÚUserWarningÚwarningsÚcatch_warningsÚsimplefilter)Úshould_warnr,   s     r"   Úmaybe_warn_gimbal_lockrÓ  ã  sl   è ø€ áô œ¨M¸bÔAñ 	Û÷	ð 	ô ×$Ñ$Ó&ñ 	Ü×!Ñ! 'Ô*Û÷	ð 	÷		ð 	ú÷	ð 	üs2   ‚A4—AœA4¹A(Á	A4ÁA%Á!A4Á(A1Á-A4Úsuppress_warningsc                 óø  — t        j                  | «      }|| j                  k(  rdnd}| j                  g d¢g d¢g d¢g d¢g«      }dj	                  |«      }|r|j                  «       }t        j                  ||d¬	«      }|j                  «       }	t        | | «      5  |j                  |d|¬
«      }
d d d «       t        j                  |
d¬	«      j                  «       }t        |	||¬«       y # 1 sw Y   Œ>xY w)Nro   r×   )r  r\  é#   )rÖ  é¦ÿÿÿé   )rÖ  r\  é   )rÙ  r×  é   r¾  Tr  ©r  rÔ  rp   ©r)   r*   rØ   r+   rÂ  rÃ  r   rˆ   rP   rÓ  r¥  r   ©r,   r®  rj  rÔ  r(   rY   rd  rÆ  rÇ  Úmat_expectedÚangle_estimatesÚmat_estimateds               r"   Ú(test_as_euler_degenerate_asymmetric_axesrá  ñ  sô   € ô ×Ñ˜bÓ!€EØ˜RŸ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   ÂC0Ã0C9c                 ó  — t        j                  | «      }|| j                  k(  rdnd}| j                  g d¢g d¢g d¢g d¢g«      }dj	                  |d   |d	   |d   g«      }|r|j                  «       }t        j                  ||d
¬«      }|j                  «       }	t        | | «      5  |j                  |d
|¬«      }
d d d «       t        j                  |
d
¬«      j                  «       }t        |	||¬«       y # 1 sw Y   Œ>xY w)Nro   r×   )rÚ  r   r~  )rÖ  r   éK   )r~  r  rÖ  )rÚ  r©  rÙ  r¾  r   r   Tr  rÛ  rp   rÜ  rÝ  s               r"   Ú'test_as_euler_degenerate_symmetric_axesrä    s  € ô ×Ñ˜bÓ!€EØ˜RŸ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   Â*C<Ã<Dc                 ó2  — | j                  g d¢g d¢g d¢g«      }| j                  |d|dz
  z  dz   «      }t        j                  |«      j	                  dd¬	«      }| j                  g d
¢«      }| j                  |d|dz
  z  dz   «      }t        ||d¬«       y )Nr®   r   r   rL   r   r¯   rŠ   Tr  )r   r   g     €V@rÿ   ro   rp   )r+   rN   r   rÄ   r¥  r   )r,   rI   r°   rd  Ú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˜O°%Ö8r$   c                 ó  — t        j                  | «      }|| j                  k(  rdnd}t        j                  j                  d«      }d}t        j                  ||¬«      }t        || «      }|j                  «       }|j                  «       j                  «       }||z  }||z  }	| j                  |ddf«      }
t        j                  |
«      dd d…d d…f   j                  | j                  d«      «      }
t        ||
|¬«       t        |	|
|¬«       d	}|| j                  k(  rdnd
}| j                  |j!                  |dz   ¬«      |¬«      }t        j"                  |«      }|j                  «       }|j                  «       j                  «       }||z  }||z  }	| j                  |dz   «      }t        j                  |«      dd d…d d…f   j                  | j                  d«      «      }t        |||¬«       t        |	||¬«       y )Nro   rþ   r   r[   )ÚnumrÒ   rT   .rp   )r[   rT   é   r×   rM   rq   r'   r¯   )r)   r*   rØ   r3   r^   r_   r   r-   rP   r˜   rA  rÜ   rÝ   r`   r   r+   rx   r   )r,   r(   rY   rà   rÅ  ÚpÚp_matÚq_matÚresult1Úresult2rä   Úbatch_shaper¦   r%   Úeye_nds                  r"   Útest_invrò  I  sÃ  € ä×Ñ˜bÓ!€EØ˜RŸZ™ZÒ'‰5¨T€DÜ
�)‰)×
Ñ
 Ó
"€CØ
€Aä�‰˜A¨CÔ0€AÜ�q˜"Ó€AØ�K‰K‹M€EØ�E‰E‹G×ÑÓ€Eà�e‰m€GØ�e‰m€Gà�H‰H�a˜˜A�YÓ€EÜ�F‰F�5‹M˜#˜r ˜r 2 A 2˜+Ñ&×*Ñ*¨2¯6©6°!«9Ó5€Eä�G˜U¨Õ.Ü�G˜U¨Õ.ð €KØ˜RŸ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Ø�e‰m€GØ�e‰m€GØ�X‰X�k FÑ*Ó+€FÜ�V‰V�F‹^˜C  !  R a R˜KÑ(×,Ñ,¨R¯V©V°A«YÓ7€FÜ�G˜V¨$Õ/Ü�G˜V¨$Ö/r$   c                 óº  — t        j                  | «      }|| j                  k(  rdnd}t        j                  j                  d«      }t        t        j                  |¬«      | «      }|j                  «       }|j                  «       }|j                  «       }| j                  ||«      }| j                  ||«      }	| j                  d«      }
t        ||
|¬«       t        |	|
|¬«       t        t        j                  d|¬«      | «      }|j                  «       }|j                  «       }|j                  «       }| j                  j                  ||«      }| j                  j                  ||«      }| j                  d	«      }t        j                  |«      d
d d…d d…f   j!                  | j                  d«      «      }t        |||¬«       t        |||¬«       y )Nro   rþ   ì	   #Þ;h2ã9¾s+,g0øHn rn   rT   rp   r   )ré  rg   rÎ   .)r)   r*   rØ   r3   r^   rt   r-   r   r˜   rP   rÞ   r`   r   rÚ   rA  rÜ   rÝ   )r,   r(   rY   rg   rë  rh   rì  rí  Úres1Úres2r`   r   r   Úx_matrixÚy_matrixrî  rï  rä   s                     r"   Útest_inv_single_rotationrù  m  sq  € ä×Ñ˜bÓ!€EØ˜RŸZ™ZÒ'‰5¨T€DÜ
�)‰)×
Ñ
Ð GÓ
H€CÜ”x—‘¨3Ô/°Ó4€AØ	�‰‹€Aà�K‰K‹M€EØ�K‰K‹M€EØ�9‰9�U˜EÓ"€DØ�9‰9�U˜EÓ"€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˜#˜r ˜r 2 A 2˜+Ñ&×*Ñ*¨2¯6©6°!«9Ó5€Eä�G˜U¨Õ.Ü�G˜U¨Ö.r$   Ú	magnitudec                 óì   — d}t        t        j                  |«      | «      }| j                  |«      }t	        |j                  «       |«       t	        |j                  «       j                  «       |«       y )Nr[   )r-   r   ÚidentityrŒ   r   rú  r˜   )r,   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                 ó°   — t        t        j                  «       | «      }|j                  «       dk(  sJ ‚|j	                  «       j                  «       dk(  sJ ‚y )Nr   )r-   r   rü  rú  r˜   r|   s     r"   Útest_single_identity_magnituderÿ  —  sH   € ä”x×(Ñ(Ó*¨BÓ/€AØ�;‰;‹=˜AÒÐÐØ�5‰5‹7×ÑÓ !Ò#Ð#Ñ#r$   c                 ó®  — t        j                  | «      }|| j                  k(  rdnd}d}t        t	        j
                  |d¬«      | «      }t        t	        j                  |«      | «      }||z  }t        |j                  «       |j                  «       «       ||j                  «       z  }t        |j                  «       | j                  |«      |¬«       y ©Nro   rþ   r[   r   rn   rp   ©r)   r*   rØ   r-   r   r^   rü  r   r   r˜   rú  rŒ   ©r,   r(   rY   rÅ  rë  rh   r  s          r"   Útest_identity_invariancer  ž  s¤   € ä×Ñ˜bÓ!€EØ˜RŸZ™ZÒ'‰5¨T€DØ
€AÜ”x—‘ q¨aÔ0°"Ó5€AÜ”x×(Ñ(¨Ó+¨RÓ0€AØ�‰U€FÜ�A—I‘I“K §¡Ó!1Ô2à�a—e‘e“gÑ€FÜ�F×$Ñ$Ó&¨¯©°«¸$Ö?r$   c                 ó¬  — t        j                  | «      }|| j                  k(  rdnd}d}t        t	        j
                  |d¬«      | «      }t        t	        j                  «       | «      }||z  }t        |j                  «       |j                  «       «       ||j                  «       z  }t        |j                  «       | j                  |«      |¬«       y r  r  r  s          r"   Útest_single_identity_invariancer  ¬  s¢   € ä×Ñ˜bÓ!€EØ˜RŸZ™ZÒ'‰5¨T€DØ
€AÜ”x—‘ q¨aÔ0°"Ó5€AÜ”x×(Ñ(Ó*¨BÓ/€AØ�‰U€FÜ�A—I‘I“K §¡Ó!1Ô2à�a—e‘e“gÑ€FÜ�F×$Ñ$Ó&¨¯©°«¸$Ö?r$   c                  ó¼  — t        j                  d¬«      } | j                  «       j                  dk(  sJ ‚t        j                  d¬«      } | j                  «       j                  dk(  sJ ‚t        j                  d¬«      } | j                  «       j                  dk(  sJ ‚t        j                  d¬«      } t	        | j                  «       j                  d	d
«      t        j                  t        j                  d
«      d	   d«      «       t        j                  t        d¬«      5  t        j                  d¬«       d d d «       t        j                  t        d¬«      5  t        j                  dd¬«       d d d «       t        j                  t        d¬«      5  t        j                  dd«       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   ŒPxY w# 1 sw Y   y xY w)Nr   )rd   rM   rB   ©rB   rA   ©r“   rT   ©r“   rT   rA   ©r“   r“   rT   rs   rA   )rC   r   ú)`shape` must be an int or a tuple of intsr¡   ç      @ú#Only one of `num` or `shape` can berT   ©r“   r“   )ré  rd   z&takes from 0 to 1 positional arguments)r   rü  r   rd   r
   rN   r3   ra   r`   r£   r¤   r¥   Ú	TypeErrorr8   s    r"   Útest_identity_shaper  º  sc  € Ü×Ñ Ô#€AØ�9‰9‹;×Ñ Ò$Ð$Ð$Ü×Ñ Ô"€AØ�9‰9‹;×Ñ Ò&Ð&Ð&Ü×Ñ Ô'€AØ�9‰9‹;×Ñ 	Ò)Ð)Ð)ä×Ñ 	Ô*€AÜ�A—I‘I“K×'Ñ'¨¨AÓ.´·±¼¿¹¸q»	À"¹À~Ó0VÔWä	�‰”zÐ)TÔ	Uñ %Ü×Ñ Õ$÷%ä	�‰”zÐ)NÔ	Oñ /Ü×Ñ˜a vÕ.÷/ä	�‰”yÐ(PÔ	Qñ  Ü×Ñ˜!˜QÔ÷ ð  ÷	%ð %ú÷/ð /ú÷ ð  ús$   Ä%F:ÅGÆGÆ:GÇGÇGc                 ó²  — d|dz
  z  dz   }| j                  | j                  d«      |dz   «      }t        j                  |«      }|j	                  «       }| j                  | j                  | j                  | j                  dg«      }| j                  ||«      }t        ||«       t        j                  | «      }|j	                  «       }t        ||«       y )NrL   r   rM   rA   r   )rN   r`   r   r   rú  r+   r  r   )r,   rI   Ú
quat_shaper¦   r%   r  Úexpected_results          r"   Útest_magnituder  Í  s³   € ð ˜ ™Ñ" TÑ)€JØ�:‰:�b—f‘f˜Q“i ¨dÑ!2Ó3€DÜ×Ñ˜4Ó €AØ�[‰[‹]€FØ—j‘j "§%¡%¨¯©°·±°qÐ!9Ó:€OØ—j‘j °*Ó=€OÜ�F˜OÔ,ä×Ñ˜D˜5Ó!€AØ�[‰[‹]€FÜ�F˜OÕ,r$   c                 ó$  — t        j                  | j                  d«      «      }|d   j                  «       }t	        || j                  | j                  «      d   «       |d   j                  «       }t	        || j                  d«      d   «       y )NrA   r   r   rT   r€   )r   r   r`   rú  r   r+   r  )r,   r%   rî  rï  s       r"   Útest_magnitude_single_rotationr  Ý  sm   € ä×Ñ˜2Ÿ6™6 !›9Ó%€AØ�‰d�n‰nÓ€GÜ�G˜RŸZ™Z¨¯©Ó.¨rÑ2Ô3à�‰d�n‰nÓ€GÜ�G˜RŸZ™Z¨›_¨RÑ0Õ1r$   rv   c                 ó´  — t         j                  j                  d«      }t        j                  d|¬«      }t        j                  d|¬«      }||j	                  «       z  j                  «       }t        || «      }t        || «      }| j                  t        j                  |«      «      }t        |j                  ||«      | j                  |«      |k  «       y )Nrô  r[   rn   )r3   r^   rt   r   r˜   rú  r-   r+   Úmedianr
   rv   )r,   rg   rë  rh   Úr_magrY   s         r"   Útest_approx_equalr  ç  s£   € ô �)‰)×
Ñ
Ð GÓ
H€CÜ�‰˜ Ô$€AÜ�‰˜ Ô$€AØ�—‘“‰[×#Ñ#Ó%€EÜ�q˜"Ó€AÜ�q˜"Ó€Aà�:‰:”b—i‘i Ó&Ó'€DÜ�A—N‘N 1 dÓ+¨b¯j©j¸Ó.?À$Ñ.FÕHr$   c                 óV  — t        j                  | j                  g d¢«      «      }t        j                  | j	                  d«      «      }|j                  |d   «      sJ ‚|j                  |d   «      rJ ‚t        |j                  |d   «      t        j                  «      st        | «      rJ ‚|j                  |d   d¬«      rJ ‚|j                  |d   dd¬	«      rJ ‚t        j                  t        d
¬«      5  |j                  |d   d¬«      sJ ‚	 d d d «       y # 1 sw Y   y xY w)N)r   r   g•Ö&è.>rA   rT   r   ç»½×Ùß|Û=rp   rÉ   T)rY   r  zatol must be setr¡   r  )r   rü   r+   r   r`   rv   r>  r3   Úbool_r   r£   ÚwarnsrÎ  ©r,   rë  rh   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¼XÀb¼\ÐIÐIð �~‰~˜a ™d¨ˆ~Ô/Ð/Ð/Ø�~‰~˜a ™d¨°tˆ~Ô<Ð<Ð<Ü	�‰”kÐ);Ô	<ñ 2Ø�~‰~˜a ™d¨Dˆ~Ô1Ð1Ñ1÷2÷ 2ñ 2ús   Ã<DÄD(c                 óÂ  — d}t         j                  j                  d«      }t        j                  |j                  |dz   ¬«      «      }t        j                  |j                  |dz   ¬«      «      }||j                  «       z  j                  «       }t        || «      }t        || «      }|j                  |k(  sJ ‚| j                  t        j                  |«      «      }t        |j                  ||«      | j                  |«      |k  «       t        j                  |j                  |dz   ¬«      «      }t        j                  |j                  d¬«      «      }||j                  «       z  j                  «       }t        || «      }t        || «      }|j                  |k(  sJ ‚| j                  t        j                  |«      «      }t        |j                  ||«      | j                  |«      |k  «       t        j                  |j                  |dz   ¬«      «      }t        j                  |j                  d¬«      «      }||j                  «       z  j                  «       }t        || «      }t        || «      }|j                  |k(  sJ ‚| j                  t        j                  |«      «      }t        |j                  ||«      | j                  |«      |k  «       y )N)r“   r[   rT   r   rM   rq   )r   r[   r   rA   ©r   rT   rA   )r3   r^   rt   r   r   rx   r˜   rú  r-   rd   r+   r  r
   rv   )r,   rð  rg   rë  rh   r  rY   s          r"   Útest_approx_equal_batchedr$    sK  € ð
 €KÜ
�)‰)×
Ñ
 Ó
"€CÜ×Ñ˜3Ÿ:™:¨;¸Ñ+=˜:Ó>Ó?€AÜ×Ñ˜3Ÿ:™:¨;¸Ñ+=˜:Ó>Ó?€AØ�—‘“‰[×#Ñ#Ó%€EÜ�q˜"Ó€AÜ�q˜"Ó€AØ�;‰;˜+Ò%Ð%Ð%à�:‰:”b—i‘i Ó&Ó'€DÜ�A—N‘N 1 dÓ+¨b¯j©j¸Ó.?À$Ñ.FÔHô 	×Ñ˜3Ÿ:™:¨;¸Ñ+=˜:Ó>Ó?€AÜ×Ñ˜3Ÿ:™:¨=˜:Ó9Ó:€AØ�—‘“‰[×#Ñ#Ó%€EÜ�q˜"Ó€AÜ�q˜"Ó€AØ�;‰;˜+Ò%Ð%Ð%Ø�:‰:”b—i‘i Ó&Ó'€DÜ�A—N‘N 1 dÓ+¨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 dÓ+¨b¯j©j¸Ó.?À$Ñ.FÕHr$   c                 ó(  — t        j                  | j                  d«      «      }t        j                  | j                  d«      «      }t        j                  t
        d¬«      5  |j                  |«       d d d «       t        j                  | j                  d«      «      }t        j                  | j                  d«      «      }t        j                  t
        d¬«      5  |j                  |«       d d d «       y # 1 sw Y   Œ‡xY w# 1 sw Y   y xY w)Nr
  ©rT   r“   rA   zbroadcastable shapesr¡   ©r“   rA   ©rT   rA   )r   r   r%  r£   r¤   r¥   rv   r   s      r"   Ú*test_approx_equal_batched_input_validationr)  -  sË   € ä×Ñ˜2Ÿ7™7 9Ó-Ó.€AÜ×Ñ˜2Ÿ7™7 9Ó-Ó.€AÜ	�‰”zÐ)?Ô	@ñ Ø	�‰�qÔ÷ô 	×Ñ˜2Ÿ7™7 6›?Ó+€AÜ×Ñ˜2Ÿ7™7 6›?Ó+€AÜ	�‰”zÐ)?Ô	@ñ Ø	�‰�qÔ÷ð ÷ð ú÷
ð ús   Á$C<Ã!DÃ<DÄDr³  c                 óð  — | j                  | j                  d«       | j                  d«      f«      }| j                  |d|dz
  z  dz   «      }| j                  d| j                  dz  d«      }| j                  d«      d	   }t        | «      | j                  u rd
nd}|D ]U  }t        j                  ||z  «      j                  «       }|j                  d	k(  sJ ‚t        |j                  «       ||¬«       ŒW y )NrT   rL   r   rm  r   r“   r\   r€   r   r×   r  rp   )Úconcatr`   rN   Úlinspacer  r+   r   r<   r   rü   r³  rd   r   rú  )r,   rI   ÚaxesÚthetasÚdesiredrY   ÚtÚr_means           r"   Ú	test_meanr2  :  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$   rB   c                 óò  — | j                  | j                  | j                  d«       | j                  d«      f«      d|dz
  z  dz   «      }| j                  dz  }t	        j
                  ||z  «      }| j                  |j                  d d d«      }|dk(  r|d   }t        | «      | j                  u rd	nd
}t        |j                  d¬«      j                  «       ||¬«       | j                  |j                  dd d«      }|dk  r|d   }t        |j                  d¬«      j                  «       ||¬«       |j                  d¬«      }t        |j                  d¬«      |j                  d¬«      |¬«       y )NrT   rÿ   r   ©r   r   rA   rÁ   r€   r   r×   r  rs   r    rp   )r   rs   Tr�   )ra   r+  r`   r  r   rü   Úfullrd   r   r<   r   r³  rú  r   )r,   rI   r-  Úthetar%   r/  rY   r1  s           r"   Útest_mean_axisr7  J  sH  € ð
 �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 T™\Ó*€Að �g‰g�d—j‘j  "�o sÓ+€GØˆq‚yØ˜"‘+ˆÜ# BÓ'¨2¯:©:Ñ5‰4¸5€DÜ�A—F‘F �F“O×-Ñ-Ó/°¸tÕDð �g‰g�d—j‘j  2Ð&¨Ó,€GØˆa‚xØ˜"‘+ˆÜ�A—F‘F �FÓ(×2Ñ2Ó4°gÀDÕIð �V‰V˜ˆV‹_€FÜ�F—N‘N¨T�NÓ2°A·I±IÈ°IÓ4MØör$   c           	      óÐ  — t        j                  | «      | j                  k(  rdnd}t        j                  j                  d«      }| j                  |j                  d¬«      t        j                  | «      ¬«      }t        j                  |«      }|j                  d¬«      }t        |j                  d   «      D ]�  }t        |j                  d	   «      D ]s  }t        j                  |d d …||d
f   «      j                  «       }t        ||   |   |j                  «       z  j                  «       | j                  d«      d   |¬«       Œu Œ’ |j                  d¬«      }	t        |j                  d   «      D ]l  }t        j                  ||d
f   «      j                  «       }t        |	|   |j                  «       z  j                  «       | j                  d«      d   |¬«       Œn y )Nr  r×   r   )rA   rB   rJ   rA   rq   r'   r    r   r“   .r€   r   rp   ©r   r“   )r)   r*   rØ   r3   r^   rt   r+   rx   r   r   r³  rc   rd   r   r˜   rú  )
r,   rY   rg   rh   r%   Úmean_0ri   Ú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°°A°s¨l©OÓ<×AÑAÓCˆJÜ˜V A™Y q™\¨J¯N©NÓ,<Ñ<×GÑGÓIØŸJ™J s›O¨BÑ/°dö<ñ	<ð<ð
 �v‰v˜6ˆvÓ"€HÜ�1—7‘7˜1‘:Óò 8ˆÜ×'Ñ'¨¨!¨S¨&©	Ó2×7Ñ7Ó9ˆ
Ü˜ !™ z§~¡~Ó'7Ñ7×BÑBÓDØŸ
™
 3›¨Ñ+°$ö	8ñ8r$   c           	      ón  — | j                  d| j                  dz  d«      }|f|dz
  z  }| j                  g d¢g d¢g d¢g«      }| j                  ddg«      }| j                  ||dz   «      }| j                  ||dz   «      }| j                  d	«      d
   }|D ]œ  }t	        j
                  ||dd d…d d …f   z  «      }|j                  |¬«      }	t	        j
                  ||z  «      }
|
j                  «       }|j                  d
k(  sJ ‚t        ||	j                  «       z  j                  «       |d¬«       Œž y )Nr   r“   r\   r   )r€   r   r   r   r4  rL   r€   r   .©Úweightsr×   rp   )r,  r  r+   ra   r   rü   r³  rd   r   r˜   rú  )r,   rI   r.  rð  r-  rA  rë   r0  Ú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Øò IˆÜ×!Ñ! ! d¨3°°°²A¨:Ñ&6Ñ"6Ó7ˆØ�W‰W˜WˆWÓ%ˆä× Ñ   T¡Ó*ˆØ�F‰F‹HˆØ�w‰w˜"Š}Ðˆ}Ü˜˜RŸV™V›X™×0Ñ0Ó2°HÀ4ÖHñIr$   c                 ó¦  — t        j                  | j                  d«      «      }t        |j	                  «       «      rN|j                  | j                  d«       ¬«      }| j                  | j                  |j                  «      «      sHJ ‚t        j                  t        d¬«      5  |j                  | j                  d«       ¬«       d d d «       t        j                  | j                  d«      «      }t        j                  t        d¬«      5  |j                  | j                  d«      ¬«       d d d «       t        j                  | j                  d«      «      }t        j                  t        d¬«      5  |j                  | j                  d	«      ¬«       d d d «       t        j                  t        d
¬«      5  |j                  d¬«       d d d «       t        j                  t        d
¬«      5  |j                  d¬«       d d d «       t        j                  t        d¬«      5  |j                  d¬«       d d d «       t        j                  t        d
¬«      5  |j                  d¬«       d d d «       y # 1 sw Y   �ŒµxY w# 1 sw Y   �ŒYxY w# 1 sw Y   ŒüxY w# 1 sw Y   ŒÒxY w# 1 sw Y   Œ¨xY w# 1 sw Y   Œ~xY w# 1 sw Y   y xY w)NrA   r@  znon-negativer¡   r(  zExpected `weights` tor$  r
  r  zaxis .* is out of boundsrT   r    )rs   r“   z+`axis` must be None, int, or tuple of ints.Ú0iôÿÿÿ)r   r   r`   r   r   r³  r%  rw   rª   r?  r£   r¤   r¥   )r,   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ñ &Ø	�‰�r—w‘w˜t“}ˆÔ%÷&ä×Ñ˜2Ÿ7™7 9Ó-Ó.€AÜ	�‰”zÐ)@Ô	Añ (Ø	�‰�r—w‘w˜v“ˆÔ'÷(ô 
�‰”zÐ)DÔ	Eñ Ø	�‰�AˆŒ÷ä	�‰”zÐ)DÔ	Eñ Ø	�‰�GˆÔ÷ä	�‰”zÐ)VÔ	Wñ Ø	�‰�CˆÔ÷ä	�‰”zÐ)DÔ	Eñ Ø	�‰�CˆÔ÷ð ÷%	(ñ 	(ú÷
&ñ &ú÷(ð (ú÷ð ú÷ð ú÷ð ú÷ð úsT   Â'#I=Ä"J
Å:"JÆ?J#Ç5J/È+J;É!KÉ=JÊ
JÊJ Ê#J,Ê/J8Ê;KËKÚreducec                 ó˜   — t        j                  | j                  g d¢«      «      }|j                  d¬«      }t	        |t         «      sJ ‚y )N©r€   r€   r€   r‹   F©Úreturn_indices)r   r   r+   rI  r>  )r,   r%   r  s      r"   Útest_reduction_no_indicesrN  ²  s<   € ä×Ñ˜2Ÿ:™:Ò&:Ó;Ó<€AØ�X‰X UˆXÓ+€FÜ�fœhÔ'Ð'Ñ'r$   c                 óÖ   — t        j                  | j                  g d¢«      «      }|j                  d¬«      }t	        |«      t
        u sJ ‚t        |«      dk(  sJ ‚|\  }}}|�J ‚|�J ‚y )NrK  TrL  rT   )r   r   r+   rI  r@  ÚtupleÚlen)r,   r%   r  ÚreducedÚ	left_bestÚ
right_bests         r"   Útest_reduction_none_indicesrU  ¹  st   € ä×Ñ˜2Ÿ:™:Ò&:Ó;Ó<€AØ�X‰X TˆXÓ*€FÜ�‹<œ5Ñ Ð Ð Üˆv‹;˜!ÒÐÐà%+Ñ"€GˆY˜
ØÐÐÐØÐÐÑr$   c                 ó&  — t        j                  | «      }|| j                  k(  rdnd}t        j                  j                  d«      }t        j                  d|¬«      }t        j                  d|¬«      }t        j                  d|¬«      }t        || «      }t        || «      }t        || «      }	|	j                  ||d¬	«      \  }
}}t        j                  t        |«      t        |«      t        |«      f«      }t        |«      D ]]  \  }}t        |«      D ]J  \  }}t        |«      D ]7  \  }}t        j                  ||z  |z  j                  «       d
   «      ||||f<   Œ9 ŒL Œ_ t        j                  t        j                  |dd«      |j                   d   df«      }t        j"                  t        j                  |t        |	«      df«      d¬«      }| j%                  |t        |«      z  «      }| j%                  |t        |«      z  «      }| j'                  ||k(  «      sJ ‚| j'                  ||k(  «      sJ ‚||   |	z  ||   z  }|
j)                  «       |z  j+                  «       }t-        || j                  t        |	«      «      |¬«       y )Nro   r×   rô  rB   rn   r[   rê  TrL  rT   r   r   rs   r    rp   )r)   r*   rØ   r3   r^   rt   r   r-   rI  rŒ   rQ  Ú	enumerater–   r   rN   Úmoveaxisrd   Úargmaxr+   rw   r˜   rú  r   )r,   r(   rY   rg   Úl_npÚr_npÚp_npÚlr%   rë  rR  rS  rT  Úscalarsri   Úlir;  ÚpjÚkÚrkÚmax_indÚleft_best_checkÚright_best_checkÚreduced_checkÚmags                            r"   Ú!test_reduction_scalar_calculationrh  Å  s?  € ä×Ñ˜bÓ!€EØ˜RŸZ™ZÒ'‰5¨T€DÜ
�)‰)×
Ñ
Ð GÓ
H€CÜ�?‰?˜1 #Ô&€DÜ�?‰?˜2 3Ô'€DÜ�?‰?˜1 #Ô&€DÜ�t˜RÓ €AÜ�t˜RÓ €AÜ�t˜RÓ €AØ%&§X¡X¨a°À4 XÓ%HÑ"€GˆY˜
ô �h‰hœ˜D›	¤3 t£9¬c°$«iÐ8Ó9€GÜ˜4“ò G‰ˆˆ2Ü˜t“_ò 	G‰EˆAˆrÜ" 4›ò G‘��2Ü#%§6¡6¨2°©7°R©<×*@Ñ*@Ó*BÀ1Ñ*EÓ#F�˜˜1˜a˜Ò ñGñ	GðGô �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à�oÑ&¨Ñ*¨QÐ/?Ñ-@Ñ@€MØ�;‰;‹=˜=Ñ(×
3Ñ
3Ó
5€CÜ�C˜Ÿ™¤# a£&Ó)°Ö5r$   Úapplyc                 óˆ  — t        j                  | «      }| j                  g d¢g d¢g d¢g«      }t        j                  |«      }t        j                  | j                  |d¬«      «      }| j                  g d¢|¬«      }| j                  |d¬«      }| j                  g d¢|¬«      }| j                  |d¬«      }t        |j                  |«      |«       t        |j                  |«      |«       t        |j                  |«      |«       t        |j                  |«      |«       | j                  g d	¢|¬«      }	| j                  |	d¬«      }
t        |j                  |d
¬«      |	«       t        |j                  |d
¬«      |
«       t        |j                  |d
¬«      |
«       t        |j                  |d
¬«      |
«       y )N©r   rs   r   r   r   r   r    )r‹   r“   rT   r'   ©g       Àr   rT   ©g       @rs   rT   T©Úinverse)r)   r*   r+   r   rÄ   Úexpand_dimsr   ri  )r,   r(   r°   Úr_1dÚr_2dÚv_1dÚv_2dÚv1d_rotatedÚv2d_rotatedÚv1d_inverseÚv2d_inverses              r"   Ú'test_apply_single_rotation_single_pointry  å  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                 óÔ  — t        j                  | «      }| j                  g d¢g d¢g d¢g«      }t        j                  |«      }t        j                  | j                  |d¬«      «      }t        j                  j                  d«      }|f|dz
  z  }| j                  |j                  |dz   ¬«      |¬	«      }| j                  |d
    |d   |d   gd¬«      }	t        |j                  |«      |	«       t        |j                  |«      |	«       | j                  |d
   |d    |d   gd¬«      }
t        |j                  |d¬«      |
«       t        |j                  |d¬«      |
«       y )Nrk  r   r   r   r    r   r	  rq   r'   ©.r   ©.r   ).r“   rs   Trn  )r)   r*   r+   r   rÄ   rp  r3   r^   rt   rx   rê   r   ri  )r,   rI   r(   r°   Úr1Úr2rg   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                 óD  — t        j                  | «      }t        j                  d«      }t        j                  g d¢g d¢g d¢g«      |d<   t        j                  g d¢g d¢g d¢g«      |d<   | j                  ||¬	«      }|f|dz
  z  }| j                  ||d
z   «      }t        j                  |«      }| j                  g d¢«      }| j                  |d¬«      }| j                  g d¢g d¢g«      }| j                  ||dz   «      }t        |j                  |«      |«       t        |j                  |«      |«       | j                  g d¢g d¢g«      }	| j                  |	|dz   «      }	t        |j                  |d¬«      |	«       t        |j                  |d¬«      |	«       y )N©r“   rT   rT   rk  r   r   r   ry  r   r   r'   ©r   r   r   ©r   r“   rT   r    rl  )r   r3  r“   r4  rm  )r   rT   rÁ   Trn  )r)   r*   r3   rA  r4   r+   ra   r   rÄ   rp  r   ri  )
r,   rI   r(   r°   rð  r%   Úv1Úv2r€  r�  s
             r"   Ú*test_apply_multiple_rotations_single_pointr‰    so  € ô ×Ñ˜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                 óÂ  — t        j                  | «      }t        j                  d«      }t        j                  g d¢g d¢g d¢g«      |d<   t        j                  g d¢g d¢g d¢g«      |d<   | j                  ||¬	«      }|f|dz
  z  }| j                  ||d
z   «      }t        j                  |«      }| j                  g d¢g d¢g|¬	«      }| j                  g d¢g d¢g|¬	«      }| j                  ||dz   «      }t        |j                  |«      |«       | j                  g d¢g d¢g|¬	«      }| j                  ||dz   «      }t        |j                  |d¬«      |«       y )Nr„  rk  r   r   r   ry  r   r   r'   r…  r†  ©rA   rB   rJ   rl  )rA   iúÿÿÿrB   r4  rm  )rA   rJ   éûÿÿÿTrn  )r)   r*   r3   rA  r4   r+   ra   r   rÄ   r   ri  )	r,   rI   r(   r°   rð  r%   r  r€  r�  s	            r"   Ú-test_apply_multiple_rotations_multiple_pointsr�  A  sE  € ô ×Ñ˜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                 óò  — t         j                  j                  d«      }g d¢}g d¢}t        ||«      D ]Á  \  }}| j	                  |j                  |dz   ¬«      «      }| j	                  |j                  |dz   ¬«      «      }t        j                  |«      }t        j                  ||«      dz   }	|j                  |«      }
|
j                  |	k(  sJ ‚|j                  |d¬«      }
|
j                  |	k(  rŒÁJ ‚ y )	Nr   )r   rL   r$  r9  )rB   r   r“   )r   rL   r$  r9  )rA   r“   )r   rA   r“   )rB   rA   r“   )rJ   rB   rA   r“   rÿ   rq   rM   Trn  )r3   r^   rt   r   r+   rx   r   r   Úbroadcast_shapesri  rd   )r,   rg   Úvector_shapesÚ
rot_shapesÚq_shapeÚv_shaper  rh   r%   rd   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¨WÓ5¸Ñ<ˆØ�G‰G�A‹JˆØ�w‰w˜%ÒÐÐØ�G‰G�A˜tˆGÓ$ˆØ�w‰w˜%ÓÐÐñ r$   c                  ó¶  — t         j                  j                  d«      } t        j                  | ¬«      }| j	                  ddd¬«      }|j                  |j                  «       «      }|j                  |«      }t        ||d¬«       | j	                  ddd	¬«      }|j                  |j                  «       «      }|j                  |«      }t        ||d¬«       y )
Nrm   rn   iœÿÿÿr\   rÿ   rq   ro   rp   r	  )r3   r^   rt   r   rª  ri  ru   r   )rg   r%   r0  r  Ú
v_expecteds        r"   Útest_apply_array_liker—  q  s¦   € Ü
�)‰)×
Ñ
 Ó
$€Cä�‰˜CÔ €AØ�‰�D˜# DˆÓ)€AØ	�‰�—‘“
Ó€AØ—‘˜“€JÜ�A�z¨Õ.à�‰�D˜# FˆÓ+€AØ	�‰�—‘“
Ó€AØ—‘˜“€JÜ�A�z¨Ö.r$   c                  ó¢  — t        j                  g d¢«      } t        j                  g d¢«      }t	        | j                  |«      || j                  «       j                  z  «       t        j                  g d¢g d¢gt        ¬«      }t	        | j                  |«      || j                  «       j                  z  «       t        j                  g d¢g d¢g d¢gt        ¬«      }t	        | j                  |«      || j                  «       j                  z  «       | j                  «       |z  }t        j                  | j                  |«      |«      rJ ‚y)zaTest documented equivalence for single rotation:
    `apply(vectors) == vectors @ as_matrix().T.`r   )r‹   r€   r€   r   r†  r'   r   N)
r   rü   r3   r4   r   ri  rP   ÚTr«  Úallclose)r%   r  ÚarrÚarr33Úwrong_results        r"   Útest_apply_matrix_equivalencerž  €  sà   € ô 	×ÑšYÓ'€Aä
�‰’Ó!€AÜ�A—G‘G˜A“J  A§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¨A¯K©K«M¯O©OÑ$;Ô<Ø—;‘;“= 5Ñ(€LÜ�{‰{˜1Ÿ7™7 5›>¨<Ô8Ð8Ð8Ð8r$   c                 ó^  — t        j                  | j                  d«      «      }t        j                  t
        d¬«      5  |j                  | j                  d«      «       d d d «       t        j                  t
        d¬«      5  |j                  | j                  d«      «       d d d «       t        j                  | j                  d«      «      }t        j                  t
        d¬«      5  |j                  | j                  d«      «       d d d «       t        j                  | j                  d	«      «      }t        j                  t
        d¬«      5  |j                  | j                  d
«      «       d d d «       y # 1 sw Y   �ŒxY w# 1 sw Y   ŒçxY w# 1 sw Y   Œ‹xY w# 1 sw Y   y xY w)NrA   zExpected input of shaper¡   r“   r  r'  úCannot broadcastr¯   )r   rê  r“   rA   r  )r   r   r%  r£   r¤   r¥   ri  r|   s     r"   Útest_apply_input_validationr¡  ‘  s1  € ä×Ñ˜2Ÿ7™7 1›:Ó&€AÜ	�‰”zÐ)BÔ	Cñ Ø	�‰�—‘˜“
Ô÷ä	�‰”zÐ)BÔ	Cñ !Ø	�‰�—‘˜“Ô ÷!ä×Ñ˜2Ÿ7™7 6›?Ó+€AÜ	�‰”zÐ);Ô	<ñ !Ø	�‰�—‘˜“Ô ÷!ä×Ñ˜2Ÿ7™7 <Ó0Ó1€AÜ	�‰”zÐ);Ô	<ñ $Ø	�‰�—‘˜	Ó"Ô#÷$ð $÷ñ ú÷!ð !ú÷!ð !ú÷$ð $ús0   Á !E>Â!FÃ,!FÅ!F#Å>FÆFÆF Æ#F,Ú__getitem__c                 óü  — t         j                  j                  d«      }|j                  d|f|dz
  z  z   dz   ¬«      }| j	                  t        j                  |«      j                  «       «      }t        j                  |«      }t        |d   j                  «       |d   d¬«       t        |d   j                  «       |d	   d¬«       t        |d d
 j                  «       | j                  |d   d¬«      d¬«       y )Nr   r$  r   rM   rq   rµ   rU   rp   r©   rs   r    )r3   r^   rt   rx   r+   r   r   rP   rÄ   r   rp  )r,   rI   rg   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                 ó¶   — t        j                  t        d¬«      5  t        j                  | j                  g d¢«      «      d    d d d «       y # 1 sw Y   y xY w)Núnot subscriptabler¡   r0   r   )r£   r¤   r  r   r   r+   r!  s    r"   Útest_getitem_singler§  ¯  sB   € ä	�‰”yÐ(;Ô	<ñ 8Ü×Ñ˜2Ÿ:™:¢lÓ3Ó4°QÒ7÷8÷ 8ñ 8ús   œ*AÁAc                  ó  — t        j                  g d¢g d¢g d¢gg d¢g d¢g d¢gg«      } t        j                  | «      }t	        |dg   j                  «       | dg   d¬«       t	        |dd	g   j                  «       | dd	g   d¬«       y )
Nr®   r   r   ry  r   r   rU   rp   r   )r3   r4   r   rÄ   r   rP   )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                 ó  — t        j                  | j                  g d¢«      «      }t        j                  t
        d¬«      5  t        j                  | j                  g d¢«      «      |d<   d d d «       y # 1 sw Y   y xY w)Nr0   r¦  r¡   r   )r   r   r+   r£   r¤   r  r|   s     r"   Útest_setitem_singler¬  Ä  s\   € ä×Ñ˜2Ÿ:™:¢lÓ3Ó4€AÜ	�‰”yÐ(;Ô	<ñ <Ü×!Ñ! "§*¡*ª\Ó":Ó;ˆˆ!‰÷<÷ <ñ <ús   Á*A5Á5A>c                 óV  — t         j                  j                  d«      }t        t	        j                  d|¬«      | «      }t        t	        j                  d|¬«      | «      }||dd t        |dd j                  «       |j                  «       «       t	        j                  | j                  |j                  d¬«      «      «      }t	        j                  | j                  |j                  d	¬«      «      «      }||dd
 t        |dd
 j                  «       |j                  «       «       y )Nrô  r[   rn   rB   r   rJ   ©rT   rB   rA   rq   )r“   rB   rA   rT   ©
r3   r^   rt   r-   r   r
   r   r   r+   rx   ©r,   rg   r}  r~  s       r"   Útest_setitem_slicer±  Ë  sß   € ä
�)‰)×
Ñ
Ð GÓ
H€CÜ	œŸ™¨°Ô4°bÓ	9€BÜ	œŸ™¨¨sÔ3°RÓ	8€BØ€B€qˆ€GÜ�B�q˜�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Ø€B€qˆ€GÜ�B�q˜�G—O‘OÓ% r§z¡z£|Õ4r$   c                 óT  — t         j                  j                  d«      }t        t	        j                  d|¬«      | «      }t        t	        j                  |¬«      | «      }||d<   t        |d   j                  «       |j                  «       «       t	        j                  | j                  |j                  d¬«      «      «      }t	        j                  | j                  |j                  d¬«      «      «      }||d<   t        |d   j                  «       |j                  «       «       y )Nrô  r[   rn   r   r®  rq   r  r¯  r°  s       r"   Útest_setitem_integerr³  Ú  sÓ   € ä
�)‰)×
Ñ
Ð GÓ
H€CÜ	œŸ™¨°Ô4°bÓ	9€BÜ	œŸ™¨CÔ0°"Ó	5€BØ€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Ø€B€q�EÜ�B�q‘E—M‘M“O R§Z¡Z£\Õ2r$   c                 ó°   — t        t        j                  dd¬«      | «      }t        j                  t
        d¬«      5  d|d<   d d d «       y # 1 sw Y   y xY w)Nr[   r   rn   zRotation objectr¡   r   )r-   r   r^   r£   r¤   r  r|   s     r"   Útest_setitem_wrong_typerµ  é  sF   € ä”x—‘ r¨qÔ1°2Ó6€AÜ	�‰”yÐ(9Ô	:ñ Øˆˆ!‰÷÷ ñ ús   ½AÁAc                 óX  — t        j                  d«      }t        j                  g d¢g d¢g d¢g«      |d<   t        j                  g d¢g d¢g d¢g«      |d<   | j                  |«      }t	        j
                  |«      }t        t        |«      d	«       t        t        |d d
 «      d«       y )Nr„  rk  r   r   r   ry  r   r   r“   rs   )r3   rA  r4   r+   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                  óV  — t         j                  j                  d«      } t        t	        j                  | ¬«      j                  «       j                  d«       t        t	        j                  d | ¬«      j                  «       j                  d«       t        t	        j                  d| ¬«      j                  «       j                  d«       t        t	        j                  d| ¬«      j                  «       j                  d«       t        t	        j                  | d¬	«      j                  «       j                  d«       t        t	        j                  | d
¬	«      j                  «       j                  d«       t        t	        j                  | d¬	«      j                  «       j                  d«       t         j                  j                  d«      t         j                  j                  d«      }}t	        j                  d|¬«      }t	        j                  |d¬	«      }t        |j                  «       |j                  «       j                  dd«      d¬«       t        j                  t        d¬«      5  t	        j                  d| d¬«       d d d «       t        j                  t        d¬«      5  t	        j                  | d¬	«       d d d «       t        j                  t        d¬«      5  t	        j                  d| d «       d d d «       y # 1 sw Y   Œ€xY w# 1 sw Y   ŒQxY w# 1 sw Y   y xY w)Nr   rn   rM   r   rÏ   rB   r  r   )rg   rd   rÿ   r(  r	  r
  é*   rJ   rA   ro   rp   r  r¡   rT   r  )ré  rg   rd   r  r  z&takes from 0 to 2 positional arguments)r3   r^   rt   r   r   r   rd   r   rN   r£   r¤   r¥   r  )rg   Ú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ˆ$€DÜ�O‰O˜A 4Ô(€EÜ�o‰o $¨fÔ5€GÜ�E—M‘M“O W§_¡_Ó%6×%>Ñ%>¸qÀ!Ó%DÈ5ÕQä	�‰”zÐ)NÔ	Oñ 5Ü�‰˜A #¨VÕ4÷5ä	�‰”zÐ)TÔ	Uñ ,Ü�‰˜C sÕ+÷,ä	�‰”yÐ(PÔ	Qñ &Ü�‰˜˜3 Ô%÷&ð &÷	5ð 5ú÷,ð ,ú÷&ð &ús$   É/LÊ+LË&LÌLÌLÌL(Úalign_vectorsc                 óv  — t        j                  | «      }|| j                  k(  rdnd}| j                  g d¢g d¢g|¬«      }| j                  |d¬«      }t	        j
                  ||«      \  }}t        |j                  «       | j                  d«      |¬	«       t        || j                  d
«      d   dd¬«       y )Nro   çñhãˆµøä>r†  r‹  r'   T)ÚcopyrT   rp   r€   r   Fr×   ©Úcheck_shaperY   )	r)   r*   rØ   r+   r   r¿  r   rP   r`   )r,   r(   rY   r   r   r%   Úrssds          r"   Útest_align_vectors_no_rotationrÆ    s˜   € ä×Ñ˜bÓ!€EØ˜RŸZ™ZÒ'‰5¨T€DØ
�
‰
’IšyÐ)°ˆ
Ó7€AØ
�
‰
�1˜4ˆ
Ó €Aä×$Ñ$ Q¨Ó*�G€A€tÜ�A—K‘K“M 2§6¡6¨!£9°4Õ8Ü�D˜"Ÿ*™* S›/¨"Ñ-¸5ÀtÖLr$   c                 óþ  — t        j                  | «      }|| j                  k(  rdnd}t        j                  j                  d«      }t        t        j                  |¬«      | «      }| j                  |j                  d¬«      |¬«      }|j                  |«      }t        j                  ||«      \  }}t        |j                  «       |j                  «       «       t        || j                  d«      d	   d
|¬«       y )Nrþ   gü©ñÒMb`?l	   #Þt}":xþ×L rn   ©rB   rT   rq   r'   r€   r   FrÃ  )r)   r*   rØ   r3   r^   rt   r-   r   r+   rx   ri  r¿  r   r   )	r,   r(   rY   rg   Úcru  rt  ÚestrÅ  s	            r"   Útest_align_vectors_no_noiserË  )  s¿   € ä×Ñ˜bÓ!€EØ˜BŸ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                 ó^  — t        j                  | «      }|| j                  k(  rdnd}| j                  g d¢g d¢g«      }| j                  g d¢g d¢g«      }t	        j
                  ||«      \  }}t        ||j                  |«      d¬«       t        || j                  d	«      d
   d|¬«       y )Nrþ   gü©ñÒMbP?)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×   rp   r€   r   FrÃ  )r)   r*   rØ   r+   r   r¿  r   ri  )r,   r(   rY   r   r   rÊ  rÅ  s          r"   Ú$test_align_vectors_improper_rotationrÍ  7  s�   € ä×Ñ˜bÓ!€EØ˜BŸJ™JÒ&‰4¨D€Dà
�
‰
Ò8Ú9ð;ó 	<€Aà
�
‰
Ò8Ú:ð<ó 	=€Aô ×&Ñ& q¨!Ó,�I€CˆÜ�A�s—y‘y “|¨$Õ/Ü�D˜"Ÿ*™* S›/¨"Ñ-¸5ÀtÖLr$   c                 ó<  — | j                  d«      d   }| j                  g d¢g d¢g d¢g«      }d}| j                  g d¢g d¢g d¢g«      }| j                  g d	¢g d
¢g d¢g«      }t        j                  ||d¬«      \  }}}t        |||¬«       t        |||¬«       y )NgÔbÿQÂ?r   )r
  r€   r€   )r€   ç      ø?r‹   )r€   r‹   r‹   r×   r   ©r   r   r   r   )r   gš™™™™™ñ?r   )r   r†   r   T©Úreturn_sensitivityrp   )r+   r   r¿  r   )	r,   Úrssd_expectedÚsens_expectedrY   rt  ru  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                 óJ  — d}| j                  t        j                  |d¬«      j                  g d¢«      «      }| j                  t        j                  |d¬«      j                  g d¢«      «      }d}t        j                  ||| j                  |«      d«      \  }}}t        j                  |||| j                  |«      z  d«      \  }}	}
t        |j                  «       |j                  «       «       t        t        j                  |«      |z  |	d¬	«       t        ||
«       y )
Nr[   r   rn   r   r   r“   Tr×   rp   )
r+   r   r^   ri  r¿  r%  r   rP   rœ   r�   )r,   rÅ  rt  ru  Ú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¸R¿W¹WÀQ»ZÑ5GÈÓNÑ€Dˆ%�ä�D—N‘NÓ$ d§n¡nÓ&6Ô7Ü”D—I‘I˜eÓ$ uÑ,¨e¸$Õ?Ü�D˜$Õr$   c                 ó˜  — t        j                  | «      }t        j                  j	                  d«      }d}t        t        j                  |¬«      | «      }| j                  |j                  |df¬«      |¬«      }|j                  |«      }t        j                  d«      }d|z  }t        j                  | j                  |j                  |df|¬	«      |¬«      «      }	|	j                  |«      }
t        j                  |
|d
¬«      \  }}}||j                  «       z  j                  «       }t        |d   | j                  d«      d   |¬«       t        |d   | j                  d«      d   |¬«       t        |d   | j                  d«      d   |¬«       || j                  |«      z  }t        |d   | j                  d«      d   |¬«       t        |d   | j                  d«      d   |¬«       t        |d   | j                  d«      d   |¬«       | j!                  |
|j                  |«      z
  dz  «      dz  }t        ||d¬«       y )Nrô  r\   rn   rT   rq   r'   r   rÏ  )rr   rØ  TrÑ  r   r€   r   rp   r“   ró   r4  r  rÆ   F)rÄ  )r)   r*   r3   r^   rt   r-   r   r+   rx   ri  Údeg2radrü   r¿  r˜   r  r   Úsum)r,   r(   rg   Ú	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ð ˆ2�:‰:�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                 óž  — t        j                  t        d¬«      5  | j                  g d¢«      | j                  g d¢«      }}t	        j
                  ||«       d d d «       t        j                  t        d¬«      5  | j                  g d¢«      | j                  g d¢«      }}t	        j
                  ||«       d d d «       t        j                  t        d¬«      5  | j                  g d¢g d¢g«      | j                  g d¢g«      }}t	        j
                  ||«       d d d «       t        j                  t        d¬«      5  | j                  g d¢g«      | j                  g d¢g«      }}| j                  d	gg«      }t	        j
                  |||«       d d d «       t        j                  t        d
¬«      5  | j                  g d¢g d¢g«      | j                  g d¢g d¢g«      }}| j                  g d¢«      }t	        j
                  |||«       d d d «       | j                  g d¢g«      | j                  g d¢g«      }}| j                  dg«      }t        |«      rgt	        j
                  |||«      \  }}| j                  | j                  |j                  «       «      «      sJ d«       ‚| j                  |«      sBJ d«       ‚t        j                  t        d¬«      5  t	        j
                  |||«       d d d «       | j                  g d¢g d¢g«      | j                  g d¢g d¢g«      }}| j                  | j                  | j                  g«      }t        |«      rgt	        j
                  |||«      \  }}| j                  | j                  |j                  «       «      «      sJ d«       ‚| j                  |«      sBJ d«       ‚t        j                  t        d¬«      5  t	        j
                  |||«       d d d «       | j                  g d¢g«      | j                  g d¢g«      }}t        |«      rft	        j
                  ||«      \  }}| j                  | j                  |j                  «       «      «      sJ d«       ‚| j                  |«      sAJ d«       ‚t        j                  t        d¬«      5  t	        j
                  ||«       d d d «       | j                  g d¢g d¢g«      | j                  g d¢g d¢g«      }}| j                  | j                  d	g«      }t        |«      rDt	        j
                  |||d¬«      \  }}}| j                  | j                  |«      «      sDJ d«       ‚t        j                  t        d¬«      5  t	        j
                  |||d¬«       d d d «       | j                  g d¢g«      | j                  g d¢g«      }}t        |«      rCt	        j
                  ||d¬«      \  }}}| j                  | j                  |«      «      sCJ d«       ‚t        j                  t        d¬«      5  t	        j
                  ||d¬«       d d d «       | j                  g d¢gg«      | j                  g d¢gg«      }}t        j                  t        d¬«      5  t	        j
                  ||«       d d d «       y # 1 sw Y   �ŒkxY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒÀxY w# 1 sw Y   �ŒWxY w# 1 sw Y   �ŒèxY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒSxY w# 1 sw Y   �Œ‰xY w# 1 sw Y   ŒãxY w# 1 sw Y   y xY w)Nz Expected input `a` to have shaper¡   r¿   r†  z Expected input `b` to have shapez/Expected inputs `a` and `b` to have same shapesr‹  z&Expected `weights` to be 1 dimensionalr   z+Expected `weights` to have number of valuesrs   zQuaternion should be nanzRSSD should be nanz)`weights` may not contain negative valuesz#Only one infinite weight is allowedr  z(Cannot align zero length primary vectorsTrÑ  z Sensitivity matrix should be nanz Cannot return sensitivity matrixz)Expected inputs `a` and `b` to have shape)r£   r¤   r¥   r+   r   r¿  r   rw   rª   r   Úinf)r,   rt  ru  rA  r%   rÅ  rÕ  s          r"   Ú test_align_vectors_invalid_inputrï  Œ  sî  € ä	�‰”zÐ)KÔ	Lñ %Ø�z‰zš,Ó'¨¯©²IÓ)>ˆ1ˆÜ×Ñ˜q !Ô$÷%ô 
�‰”zÐ)KÔ	Lñ %Ø�z‰zš)Ó$ b§j¡j²Ó&>ˆ1ˆÜ×Ñ˜q !Ô$÷%ô 
�‰”zð *?ô 
@ñ %à�z‰zš9¢iÐ0Ó1°2·:±:ºy¸kÓ3Jˆ1ˆÜ×Ñ˜q !Ô$÷%ô
 
�‰”zØEô
Gñ .à�z‰zš9˜+Ó&¨¯
©
²I°;Ó(?ˆ1ˆØ—*‘*˜q˜c˜UÓ#ˆÜ×Ñ˜q ! WÔ-÷	.ô 
�‰”zØJô
Lñ .à�z‰zš9¢iÐ0Ó1°2·:±:ºyÊ)Ð>TÓ3Uˆ1ˆØ—*‘*šYÓ'ˆÜ×Ñ˜q ! WÔ-÷	.ð �:‰:’y�kÓ" B§J¡J²	¨{Ó$;€q€AØ�j‰j˜"˜Ó€GÜ�WÔÜ×(Ñ(¨¨A¨wÓ7‰ˆˆ4Ø�v‰v�b—h‘h˜qŸy™y›{Ó+Ô,ÐHÐ.HÓHÐ,Ø�x‰x˜Œ~Ð3Ð3Ó3ˆ~ä�]‰]œ:Ø!LôNñ 	2ä×"Ñ" 1 a¨Ô1÷	2ð �:‰:’y¢)Ð,Ó-¨r¯z©zº9ÂiÐ:PÓ/Q€q€AØ�j‰j˜"Ÿ&™& "§&¡&Ð)Ó*€GÜ�WÔÜ×(Ñ(¨¨A¨wÓ7‰ˆˆ4Ø�v‰v�b—h‘h˜qŸy™y›{Ó+Ô,ÐHÐ.HÓHÐ,Ø�x‰x˜Œ~Ð3Ð3Ó3ˆ~ä�]‰]œ:Ø!FôHñ 	2ä×"Ñ" 1 a¨Ô1÷	2ð �:‰:’y�kÓ" B§J¡J²	¨{Ó$;€q€AÜ�QÔÜ×(Ñ(¨¨AÓ.‰ˆˆ4Ø�v‰v�b—h‘h˜qŸy™y›{Ó+Ô,ÐHÐ.HÓHÐ,Ø�x‰x˜Œ~Ð3Ð3Ó3ˆ~ä�]‰]œ:Ø!KôMñ 	)ä×"Ñ" 1 aÔ(÷	)ð �:‰:’y¢)Ð,Ó-¨r¯z©zº9ÂiÐ:PÓ/Q€q€AØ�j‰j˜"Ÿ&™& !˜Ó%€GÜ�QÔÜ ×.Ñ.¨q°!°WÐQUÔV‰ˆˆ4�Ø�v‰v�b—h‘h˜t“nÔ%ÐIÐ'IÓIÐ%ä�]‰]œ:Ø!CôEñ 	Kä×"Ñ" 1 a¨ÀTÕJ÷	Kð �:‰:’y�kÓ" B§J¡J²	¨{Ó$;€q€AÜ�QÔÜ ×.Ñ.¨q°!ÈÔM‰ˆˆ4�Ø�v‰v�b—h‘h˜t“nÔ%ÐIÐ'IÓIÐ%ä�]‰]œ:Ø@ôBñ 	Nä ×.Ñ.¨q°!ÈÕM÷	Nð
 �:‰:š	�{�mÓ$ b§j¡j²9°+°Ó&?€q€AÜ	�‰”zØHô
Jñ %ä×Ñ˜q !Ô$÷%ð %÷]%ñ %ú÷%ñ %ú÷%ñ %ú÷
.ñ .ú÷.ñ .ú÷	2ñ 	2ú÷	2ñ 	2ú÷	)ñ 	)ú÷	Kñ 	Kú÷	Nð 	Nú÷%ð %ús†   œ=[Á<=[ÃA[ÅA[)Æ7A[6Ë\Ï!\Ò5\Ö	\*Ø<\7Ú"]Û[Û[Û[&Û)[3Û6\ Ü\Ü\Ü\'Ü*\4Ü7] Ý]c                 ó  — t        j                  | «      }|| j                  k(  rdnd}| j                  g d¢g d¢g«      }| j                  g d¢g d¢g«      }| j                  g d¢g d¢g d¢g«      }t	        j
                  ||| j                  | j                  d	g«      ¬
«      \  }}t        |j                  «       ||¬«       t        |j                  |«      ||¬«       t        || j                  d«      d   |¬«       | j                  g d¢g d¢g«      }d}t	        j
                  ||| j                  | j                  d	g«      ¬
«      \  }}t        |j                  «       ||¬«       t        |j                  |«      d   |d   |¬«       t        j                  |||| ¬«      sJ ‚| j                  g d¢g d¢g«      }	t        |j                  |«      |	|¬«       | j                  g d¢g d¢g«      }| j                  g d¢g d¢g«      }d}t	        j
                  ||| j                  | j                  d	g«      ¬
«      \  }}t        |j                  |«      d   |d   |¬«       t        j                  |||| ¬«      sJ ‚y )Nro   r×   r   rç   ©r€   r   r   rÐ  r¶   r   r   r@  rp   r€   r   )r   r“   r   r‹   rµ   )rY   r,   ©r   r   r“   r†  )rÁ   rT   rs   )r„   rT   r“   r:  gÿ4ÍÖiöô?)r)   r*   rØ   r+   r   r¿  rî  r   rP   ri  Úisclose)
r,   r(   rY   ru  rt  Ú
m_expectedÚRrÅ  rÓ  Ú
a_expecteds
             r"   Ú"test_align_vectors_align_constrainr÷  á  s  € ô ×Ñ˜bÓ!€EØ˜RŸZ™ZÒ'‰5¨T€DØ
�
‰
’IšyÐ)Ó*€AØ
�
‰
’K¢Ð+Ó,€AØ—‘š[Ú&Ú&ð(ó )€Jô ×$Ñ$ Q¨°2·:±:¸r¿v¹vÀq¸kÓ3JÔK�G€A€tÜ�A—K‘K“M :°DÕ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€tÜ�A—K‘K“M :°DÕ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€tÜ�A—G‘G˜A“J˜vÑ&¨¨&©	¸Õ=Ü�;‰;�t˜]°¸"Õ=Ð=Ñ=r$   c           
      ó>  — t        j                  | «      }|| j                  k(  rt        j                  d«       d}g }t        d«      D ]9  }|j                  t        j                  |d|z   ¬«      j                  «       «       Œ; t        |«      D ]ð  }| j                  t        j                  d|d   |   d   z  d|d   |   d   z  g«      |¬	«      }| j                  t        j                  d
|d   |   d   z  d|d
   |   d   z  g«      |¬	«      }t        j                  ||ddg¬«      \  }}t        j                  ||| j                  dg¬«      \  }	}t        |j                  «       |	j                  «       d¬«       Œò t        |«      D �]  }| j                  t        j                  d|d   |   d   z  d|d   |   d   z  d
|d   |   d   z  g«      |¬	«      }| j                  t        j                  d|d
   |   d   z  d|d   |   d   z  d|d   |   d   z  g«      |¬	«      }t        j                  ||g d¢¬«      \  }}t        j                  ||| j                  ddg¬«      \  }	}t        |j                  «       |	j                  «       d¬«       �Œ y )Nz9Align vectors near inf is numerically unstable in float32r\   rJ   r[   rn   r   r   r“   r'   rT   rA   ç    _ Br@  ç-Cëâ6?rp   rB   )rù  r“   r   )r)   r*   r<   r£   Úskiprc   Úappendr   r^   rP   r+   r3   r4   r¿  rî  r   )
r,   r(   rÅ  Úmatsri   rt  ru  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ò Bˆà�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Ô>‰ˆˆ1Ü×&Ñ& q¨!°b·f±f¸a°[ÔA‰ˆˆAÜ˜Ÿ™› r§|¡|£~¸DÖAðBô �1‹Xó 	Bˆà�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‰ˆˆ1Ü×&Ñ& q¨!°b·f±f¸aÀ°^ÔD‰ˆˆAÜ˜Ÿ™› r§|¡|£~¸D×Añ	Br$   c                 ó~  — d}| j                  g d¢g d¢g«      }| j                  g d¢g d¢g«      }| j                  g d¢g d¢g d¢g«      }t        j                  ||| j                  dg¬«      \  }}t	        |j                  «       ||¬	«       t        j                  |d
   |d
   «      \  }}t	        |j                  «       ||¬	«       t	        |j                  |d
   «      |d
   |¬	«       | j                  g d¢g d¢g«      }| j                  g d¢g d¢g d¢g«      }t        j                  ||| j                  dg¬«      \  }}t	        |j                  «       ||¬	«       t        j                  |d
   |d
   «      \  }}t	        |j                  «       ||¬	«       t	        |j                  |d
   «      |d
   |¬	«       y )Nro   ©r‹   r   r   r   rñ  r·   r   r   r@  rp   rµ   r   )r+   r   r¿  rî  r   rP   ri  )r,   rY   rt  ru  rô  rõ  rþ  s          r"   Útest_align_vectors_parallelr  *  sx  € à€DØ
�
‰
’K¢Ð+Ó,€AØ
�
‰
’K¢Ð+Ó,€AØ—‘š[Ú'Ú&ð(ó )€Jô ×!Ñ! ! Q°·±¸°Ô<�D€A€qÜ�A—K‘K“M :°DÕ9Ü×!Ñ! ! F¡)¨Q¨v©YÓ7�D€A€qÜ�A—K‘K“M :°DÕ9Ü�A—G‘G˜A˜f™IÓ&¨¨&©	¸Õ=à
�
‰
’IšyÐ)Ó*€AØ—‘š[Ú&Ú&ð(ó )€Jô ×!Ñ! ! Q°·±¸°Ô<�D€A€qÜ�A—K‘K“M :°DÕ9Ü×!Ñ! ! F¡)¨Q¨v©YÓ7�D€A€qÜ�A—K‘K“M :°DÕ9Ü�A—G‘G˜A˜f™IÓ&¨¨&©	¸Ö=r$   c           	      ó  — t        j                  | «      }|| j                  k(  rdnd}t        j                  g d¢g d¢gg d¢g d¢gg d¢g d¢gg«      }t        j                  |D �cg c]  }|d    |d   g‘Œ c}«      }t        ||«      D ]­  \  }}| j                  ||¬	«      | j                  ||¬	«      }}t        j                  ||| j                  dg¬
«      \  }}t        |j                  «       | j                  | j                  «      d   |¬«       t        |j                  |d   «      |d   |¬«       Œ¯ t        j                  dd¬«      }	t        j                  |	j!                  «       dz  «      }
g d¢g d¢g}g d¢g d¢g}g }|
D ]=  }|j#                  t        j                  |j                  |d   «      |d   g«      «       Œ? t%        | j                  d«      «      dk(  rd}|D ]’  }| j                  |«      | j                  |«      }}t        j                  ||| j                  dg¬
«      \  }}t        j                  ||ddg¬
«      \  }}t        |j'                  «       |j'                  «       |¬«       Œ” y c c}w )Nro   rþ   r  r   r   r   r   r   r'   r@  r   rp   rµ   r\   rn   rú  r·   Úcudarù  )r)   r*   rØ   r3   r4   Úzipr+   r   r¿  rî  r   rú  r  ri  r^   rü   r  rü  r   rP   )r,   r(   rY   Ú
as_to_testrt  Ú
bs_to_testru  rõ  rþ  ÚRsÚdRsÚdRrÿ  s                r"   Útest_align_vectors_antiparallelr  C  s9  € ô
 ×Ñ˜bÓ!€Eà˜RŸZ™ZÒ'‰5¨T€Dä—‘šKªÐ3Ú%¢yÐ1Ú%¢yÐ1ð3ó 4€Jô —‘°*Ö=¨Q˜Q˜q™T˜E 1 Q¡4š=Ò=Ó>€JÜ�J 
Ó+ò B‰ˆˆ1Ø�z‰z˜! 5ˆzÓ)¨2¯:©:°a¸u¨:Ó+Eˆ1ˆÜ×%Ñ% a¨°R·V±V¸Q°KÔ@‰ˆˆ1Ü˜Ÿ™› r§z¡z°"·%±%Ó'8¸Ñ'<À4ÕHÜ˜Ÿ™  &¡	Ó*¨A¨f©I¸DÖAð	Bô 
�‰˜ !Ô	$€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Ó$¨Ò.Øˆàò BˆØ�z‰z˜!‹}˜bŸj™j¨›mˆ1ˆÜ×%Ñ% a¨°R·V±V¸Q°KÔ@‰ˆˆ1Ü×&Ñ& q¨!°d¸A°YÔ?‰ˆˆAÜ˜Ÿ™› r§|¡|£~¸DÖAñ	Bùò5 >s   Á&Jc                 ó  — t        j                  | «      }|| j                  k(  rdnd}t        j                  dd¬«      j                  «       }t        j                  dd¬«      j                  «       }t        ||«      D ]‡  \  }}| j                  |d   |¬«      }| j                  |d   |¬«      }t        j                  ||«      \  }	}
t        |	j                  |«      ||¬«       t        |
| j                  d	«      d
   |¬«       Œ‰ y )Nro   rÁ  r\   r   rn   r   r'   rp   r€   r   )r)   r*   rØ   r   r^   rP   r  r+   r¿  r   ri  )r,   r(   rY   Úmats_aÚmats_bÚmat_aÚmat_brt  ru  rõ  rÅ  s              r"   Útest_align_vectors_primary_onlyr  q  sá   € ä×Ñ˜bÓ!€EØ˜RŸZ™ZÒ'‰5¨T€DÜ�_‰_˜S aÔ(×2Ñ2Ó4€FÜ�_‰_˜S aÔ(×2Ñ2Ó4€Fä˜F FÓ+ò >‰ˆˆuà�J‰J�u˜Q‘x uˆJÓ-ˆØ�J‰J�u˜Q‘x uˆJÓ-ˆô ×(Ñ(¨¨AÓ.‰ˆˆ4Ü˜Ÿ™ ›
 A¨DÕ1Ü˜˜bŸj™j¨›o¨bÑ1¸Ö=ñ>r$   c                  ó¸  — t         j                  j                  d«      } t        j                  | ¬«      }| j	                  d¬«      }|j                  |«      }t        j                  ||«      \  }}t        j                  |j                  «       |j                  «       «      \  }}t        |j                  «       |j                  «       «       t        ||«       y )Nrm   rn   rÈ  rq   )
r3   r^   rt   r   rx   ri  r¿  ru   r   r   )rg   rÉ  ru  rt  Úest_expectedrÓ  rÊ  rÅ  s           r"   Útest_align_vectors_array_liker  ƒ  s�   € Ü
�)‰)×
Ñ
 Ó
$€CÜ�‰˜CÔ €AØ�
‰
˜ˆ
Ó€AØ	�‰�‹
€Aä"*×"8Ñ"8¸¸AÓ">Ñ€L�-Ü×&Ñ& q§x¡x£z°1·8±8³:Ó>�I€CˆÜ�L×(Ñ(Ó*¨C¯K©K«MÔ:Ü�D˜-Õ(r$   c                 óÌ  — t        j                  | «      }t        j                  j	                  d«      }t        t        j                  |¬«      | «      }| j                  |j                  d¬«      |¬«      }| j                  |j                  |«      | j                  ¬«      }t        j                  ||«      \  }}t        |j                  «       |j                  «       «       y )Nrm   rn   rÈ  rq   r'   )r)   r*   r3   r^   rt   r-   r   r+   rx   ri  r<   r¿  r   r   )r,   r(   rg   rÉ  ru  rt  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 qÓ)�F€CˆÜ�C—K‘K“M 1§9¡9£;Õ/r$   Ú__repr__c                 ó¶   — | j                  g d¢«      }t        t        j                  |«      «      }t	        | «      r
d}||k(  sJ ‚y |j                  d«      sJ ‚y )Nr0   zRotation.from_matrix(array([[1., 0., 0.],
                            [0., 1., 0.],
                            [0., 0., 1.]]))úRotation.from_matrix()r+   Úreprr   r   r   Ú
startswith)r,   rh   Úactualrë   s       r"   Útest_repr_single_rotationr  ›  sX   € à
�
‰
’<Ó €AÜ”(×$Ñ$ QÓ'Ó(€FÜ�„|ð/ˆð ˜Ò!Ð!Ñ!à× Ñ Ð!8Ô9Ð9Ñ9r$   c                 ó  — | j                  g d¢g d¢g«      t        j                  d«      z  }t        j                  |«      ›}t        | «      r&d}dt        dt        fd„} ||«       ||«      k(  sJ ‚y |j                  d«      sJ ‚y )	N)r€   r   r   r   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.]]]))ÚsÚreturnc                 óp   — dj                  t        t        j                  | j	                  «       «      «      S )Nú
)rÂ  ÚmapÚstrÚlstripÚ
splitlines)r   s    r"   Ústrippedz-test_repr_rotation_sequence.<locals>.strippedµ  s"   € à—9‘9œS¤§¡¨Q¯\©\«^Ó<Ó=Ð=r$   r  )r+   rœ   r�   r   r   r   r%  r  )r,   rh   r  rë   r(  s        r"   Útest_repr_rotation_sequencer)  ©  s…   € Ø
�
‰
’N¢LÐ1Ó2´T·Y±Y¸q³\ÑA€AÜ×"Ñ" 1Ó%Ð(€FÜ�„|ð4ˆð	>œð 	>¤ó 	>ñ ˜Ó¡8¨HÓ#5Ò5Ð5Ñ5à× Ñ Ð!8Ô9Ð9Ñ9r$   Ú__init__Ú__call__c                 ól  — t         j                  j                  d«      }t        j                  | j                  |j                  d¬«      «      «      }|j                  «       }g d¢}t        ||«      }t        |j                  t        | j                  d«      «      «      sJ ‚g d¢} ||«      }|j                  «       }|d d …df   dk  d d …d f   }	| j                  |	| |«      }|d d …df   dk  d d …d f   }	| j                  |	| |«      }t        |d   |d   «       t        |d   |d	   «       t        |d
   |d   «       t        |d   |d   «       t        |d   |d   «       | j                  |d   |d   z  «      }
| j                  |d   |d	   z  «      }t        |
|«       | j                  |d   |d   z  «      }| j                  |d   |d
   z  «      }t        ||«       | j                  |d	   |d   z  «      }t        |d|
dz  z  dz
  «       t        t!        |«      t!        |«      «       y )Nr   r  rq   )r   r   r“   rT   rA   )r   rÆ   r˜  r   rÏ  r“   g      @rT   g      
@gÍÌÌÌÌÌ@rA   rs   rµ   r¹   r©   )rB   .r¸   )rê  .)r[   .)rA   .r“   r   )r3   r^   r_   r   r   r+   rª  r   r   r>  Útimesr@  Úwherer   râ  r   rQ  )r,   rà   Úkey_rotsÚ	key_quatsÚ	key_timesÚinterpolatorr-  Úinterp_rotsÚinterp_quatsÚmaskÚ
cos_theta1Ú
cos_theta2Ú
cos_theta4Ú
cos_theta5Ú
cos_theta3s                  r"   Ú
test_slerpr;  ¾  s7  € ä
�)‰)×
Ñ
 Ó
"€Cä×!Ñ! "§*¡*¨S¯[©[¸f¨[Ó-EÓ"FÓG€HØ× Ñ Ó"€Iâ€IÜ˜ HÓ-€LÜ�l×(Ñ(¬$¨r¯z©z¸!«}Ó*=Ô>Ð>Ð>â=€EÙ˜uÓ%€KØ×&Ñ&Ó(€Lð š˜B˜Ñ !Ñ#¢Q¨ WÑ-€DØ—8‘8˜D < -°Ó>€Là’a˜�eÑ˜qÑ ¢! T 'Ñ*€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                 óÐ   — t        j                  t        d¬«      5  | j                  g d¢g d¢g«      }| j                  ddg«      }t	        ||«       d d d «       y # 1 sw Y   y xY w)Nzmust be a `Rotation` instancer¡   r¿   r0   r   r   )r£   r¤   r  r+   r   )r,   r%   r0  s      r"   Útest_slerp_rot_is_rotationr=  î  sY   € ä	�‰”yÐ(GÔ	Hñ Ø�J‰Jš	Ú!ð#ó $ˆà�J‰J˜˜1�vÓˆÜˆa�Œ÷	÷ ñ ús   œ7AÁA%z*must be a sequence of at least 2 rotationsc                 óÔ   — t        j                  | j                  g d¢g«      «      }t        j                  t
        t        ¬«      5  t        dg|«       d d d «       y # 1 sw Y   y xY w)N)r‹   r“   rT   rA   r¡   r   )r   r   r+   r£   r¤   r¥   ÚSLERP_EXCEPTION_MESSAGEr   r|   s     r"   Útest_slerp_single_rotr@  ú  sM   € ä×Ñ˜2Ÿ:™:¢~Ð&6Ó7Ó8€AÜ	�‰”zÔ)@Ô	Añ Üˆqˆc�1Œ÷÷ ñ ús   ÁAÁA'c                 ó  — t        j                  «       }t        j                  | j                  |j	                  «       «      «      }t        j                  t        t        ¬«      5  t        g |«       d d d «       y # 1 sw Y   y xY w)Nr¡   ©
r   r^   r   r+   r   r£   r¤   r¥   r?  r   r|   s     r"   Útest_slerp_rot_len0rC  	  sZ   € ä�‰Ó€AÜ×Ñ˜2Ÿ:™: a§i¡i£kÓ2Ó3€AÜ	�‰”zÔ)@Ô	Añ Üˆb�!Œ÷÷ ñ ús   Á&A<Á<Bc                 ó  — t        j                  d«      }t        j                  | j                  |j	                  «       «      «      }t        j                  t        t        ¬«      5  t        dg|«       d d d «       y # 1 sw Y   y xY w)Nr   r¡   rB  r|   s     r"   Útest_slerp_rot_len1rE  		  s^   € ä�‰˜Ó€AÜ×Ñ˜2Ÿ:™: a§i¡i£kÓ2Ó3€AÜ	�‰”zÔ)@Ô	Añ Üˆqˆc�1Œ÷÷ ñ ús   Á'A>Á>Bc                 óÈ   — t        j                  | j                  d«      «      }t        j                  t
        d¬«      5  t        ddg|«       d d d «       y # 1 sw Y   y xY w)N©r“   r“   rA   z"Rotations with more than 1 leadingr¡   r   r“   )r   r   r%  r£   r¤   r¥   r   r|   s     r"   Útest_slerp_tensor_rotrH  	  sM   € ä×Ñ˜2Ÿ7™7 9Ó-Ó.€AÜ	�‰”zÐ)MÔ	Nñ Üˆq�!ˆf�aÔ÷÷ ñ ús   Á AÁA!c                 óL  — t        j                  t        d¬«      5  t        j                  j                  d«      }t        j                  | j                  |j                  d¬«      «      «      }| j                  dgdgg«      }t        ||«       d d d «       y # 1 sw Y   y xY w)Nz.times to be specified in a 1 dimensional arrayr¡   r   r'  rq   r   r“   )r£   r¤   r¥   r3   r^   r_   r   r   r+   rª  r   ©r,   rà   r%   r0  s       r"   Útest_slerp_time_dim_mismatchrK  	  s†   € ä	�‰”zØMô
Oñ ä�i‰i×#Ñ# AÓ&ˆÜ×Ñ˜rŸz™z¨#¯+©+¸6¨+Ó*BÓCÓDˆØ�J‰J˜˜Ø˜ðó ˆäˆa�Œ÷÷ ñ ús   œA5BÂB#c                 óD  — t        j                  t        d¬«      5  t        j                  j                  d«      }t        j                  | j                  |j                  d¬«      «      «      }| j                  d«      }t        ||«       d d d «       y # 1 sw Y   y xY w)Nz7number of rotations to be equal to number of timestampsr¡   r   r  rq   rê  )r£   r¤   r¥   r3   r^   r_   r   r   r+   rª  Úaranger   rJ  s       r"   Ú!test_slerp_num_rotations_mismatchrN  #	  sz   € ä	�‰”zð *@ô 
Añ ä�i‰i×#Ñ# AÓ&ˆÜ×Ñ˜rŸz™z¨#¯+©+¸6¨+Ó*BÓCÓDˆØ�I‰I�a‹LˆÜˆa�Œ÷÷ ñ ús   œA1BÂBc                 ó¶  — t         j                  j                  d«      }| j                  |j	                  d¬«      «      }t        j                  |«      }g d¢}t        |«      r9t        ||«      }| j                  | j                  |j                  «      «      sJ ‚y t        j                  t        d¬«      5  t        ||«       d d d «       y # 1 sw Y   y xY w)Nr   r  rq   )r   r   r“   r“   rA   ústrictly increasing orderr¡   ©r3   r^   r_   r+   rª  r   r   r   r   rw   rª   r-  r£   r¤   r¥   ©r,   rà   rh   r%   r0  r   s         r"   Útest_slerp_equal_timesrS  -	  ó£   € ä
�)‰)×
Ñ
 Ó
"€CØ
�
‰
�3—;‘; F�;Ó+Ó,€AÜ×Ñ˜1Ó€AÚ€AÜ�QÔÜ�!�Q‹KˆØ�v‰v�b—h‘h˜qŸw™wÓ'Ô(Ð(Ñ(ä�]‰]œ:Ð-HÔIñ 	Ü�!�QŒK÷	÷ 	ñ 	úó   Â9CÃCc                 ó¶  — t         j                  j                  d«      }| j                  |j	                  d¬«      «      }t        j                  |«      }g d¢}t        |«      r9t        ||«      }| j                  | j                  |j                  «      «      sJ ‚y t        j                  t        d¬«      5  t        ||«       d d d «       y # 1 sw Y   y xY w)Nr   r  rq   )r   r   rT   r“   rA   rP  r¡   rQ  rR  s         r"   Útest_slerp_decreasing_timesrW  ;	  rT  rU  c                 ó~  — t         j                  j                  d«      }t        j                  | j                  |j                  d¬«      «      «      }| j                  d«      }t        ||«      }t        j                  t        d¬«      5  | j                  dgdgg«      } ||«       d d d «       y # 1 sw Y   y xY w)	Nr   r  rq   rB   z&`times` must be at most 1-dimensional.r¡   g      @gÍÌÌÌÌÌ@)r3   r^   r_   r   r   r+   rª  rM  r   r£   r¤   r¥   )r,   rà   r%   r0  r   Úinterp_timess         r"   Ú!test_slerp_call_time_dim_mismatchrZ  I	  sœ   € ä
�)‰)×
Ñ
 Ó
"€CÜ×Ñ˜2Ÿ:™: c§k¡k°v kÓ&>Ó?Ó@€AØ
�	‰	�!‹€AÜˆa�‹€Aä	�‰”zØEô
Gñ à—z‘z C 5Ø$' 5ð#*ó +ˆá	ˆ,Œ÷	÷ ñ ús   ÂB3Â3B<c                 ó   — t         j                  j                  d«      }t        j                  | j                  |j                  d¬«      «      «      }| j                  d«      dz   }t        ||«      }| j                  g d¢«      }| j                  g d¢«      }t        |«      �r9 ||«      j                  «       }| j                  || j                  |«      k\  || j                  |«      k  «      }| j                  | j                  || df   «      «      sJ ‚| j                  | j                  ||df   «       «      sJ ‚ ||«      j                  «       }| j                  || j                  |«      k\  || j                  |«      k  «      }| j                  | j                  || df   «      «      sJ ‚| j                  | j                  ||df   «       «      sJ ‚y t!        j"                  t$        d	¬
«      5   ||«       d d d «       t!        j"                  t$        d	¬
«      5   ||«       d d d «       y # 1 sw Y   Œ6xY w# 1 sw Y   y xY w)Nr   r  rq   rB   r   rò  )r   r“   rJ   .ztimes must be within the ranger¡   )r3   r^   r_   r   r   r+   rª  rM  r   r   r   Úlogical_andÚminÚmaxrw   rª   r£   r¤   r¥   )	r,   rà   r%   r0  r   Ú	times_lowÚ
times_highrh   Úin_ranges	            r"   Ú!test_slerp_call_time_out_of_rangerb  W	  sé  € ä
�)‰)×
Ñ
 Ó
"€CÜ×Ñ˜2Ÿ:™: c§k¡k°v kÓ&>Ó?Ó@€AØ
�	‰	�!‹�qÑ€AÜˆa�‹€Aà—
‘
š9Ó%€IØ—‘šIÓ&€JÜ�YÕÙˆi‹L× Ñ Ó"ˆØ—>‘> )¨r¯v©v°a«yÑ"8¸)ÀrÇvÁvÈaÃyÑ:PÓQˆØ�v‰v�b—h‘h˜q ( ¨C Ñ0Ó1Ô2Ð2Ð2Ø�v‰v�r—x‘x  (¨C -Ñ 0Ó1Ð1Ô2Ð2Ð2Ùˆj‹M×!Ñ!Ó#ˆØ—>‘> *°·±°q³	Ñ"9¸:ÈÏÉÐPQËÑ;RÓSˆØ�v‰v�b—h‘h˜q ( ¨C Ñ0Ó1Ô2Ð2Ð2Ø�v‰v�r—x‘x  (¨C -Ñ 0Ó1Ð1Ô2Ð2Ñ2ä�]‰]œ:Ð-MÔNñ 	ÙˆiŒL÷	ä�]‰]œ:Ð-MÔNñ 	ÙˆjŒM÷	ð 	÷	ð 	ú÷	ð 	ús   Ç:	H8È&	IÈ8IÉIc                 ó¦  — t        j                  | «      }|| j                  k(  rdnd}t        j                  d| j                  dgdgg«      d¬«      }t        ddg|«      } |d	«      }t        j                  d| j                  d
«      d¬«      }||j                  «       z  }t        |j                  «       | j                  d«      d   |¬«       y )NrV   rþ   r`  r   éP   Tr  r   r˜  rØ  r€   r   rp   )
r)   r*   rØ   r   rˆ   r+   r   r˜   r   rú  )r,   r(   rY   r%   r   Úr_interpolatedÚr_interpolated_expectedÚdeltas           r"   Útest_slerp_call_scalar_timerh  p	  sµ   € ô
 ×Ñ˜bÓ!€EØ˜RŸ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ÐàÐ4×8Ñ8Ó:Ñ:€Eä�E—O‘OÓ% r§z¡z°#£°rÑ':ÀÖFr$   c                 ó˜  — t        j                  | j                  g d¢«      «      }t        j                  | j                  g d¢«      «      }||z  }t        |j	                  «       | j                  g d¢«      «       t        j                  t        d¬«      5  |dz   d d d «       |j                  d«      t        u sJ ‚y # 1 sw Y   Œ#xY w)Nr0   r›   zunsupported operand typer¡   r“   r   )
r   r   r+   r   r   r£   r¤   r  r™   ÚNotImplemented)r,   r}  r~  rž   s       r"   Útest_multiplicationrk  ‚	  s›   € ä	×	Ñ	˜BŸJ™J¢|Ó4Ó	5€BÜ	×	Ñ	˜BŸJ™J¢|Ó4Ó	5€BØ	ˆb‰€BÜ�B—J‘J“L "§*¡*ª^Ó"<Ô=ô 
�‰”yÐ(BÔ	Cñ Ø
ˆQŠ÷ð �:‰:�a‹=œNÑ*Ð*Ñ*÷	ð ús   ÂC Ã C	c                 ó¢  — t         j                  j                  d«      }t        j                  | j                  |j                  d¬«      «      «      }t        j                  | j                  |j                  d¬«      «      «      }||z  }|j                  «       j                  dk(  sJ ‚t        j                  | j                  |j                  d¬«      «      «      }t        j                  | j                  |j                  d¬«      «      «      }||z  }|j                  «       j                  dk(  sJ ‚t        j                  | j                  |j                  d¬«      «      «      }t        j                  | j                  |j                  d¬«      «      «      }||z  }|j                  «       j                  dk(  sJ ‚t        j                  | j                  |j                  d	¬«      «      «      }t        j                  | j                  |j                  d
¬«      «      «      }||z  }|j                  «       j                  d
k(  sJ ‚y )Nr   r
  rq   r#  )r“   r   rA   )rT   r   rA   rA   )r“   rA   rA   )rT   r“   rA   rA   r'  rG  )	r3   r^   rt   r   r   r+   rx   r   rd   )r,   rg   r}  r~  rž   s        r"   Útest_multiplication_ndrm  ‘	  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Ø�:‰:‹<×Ñ Ò*Ð*Ð*ô 
×	Ñ	˜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Ø�:‰:‹<×Ñ Ò*Ð*Ð*ô 
×	Ñ	˜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Ø�:‰:‹<×Ñ Ò-Ð-Ð-ô 
×	Ñ	˜BŸJ™J s§z¡z°v zÓ'>Ó?Ó	@€BÜ	×	Ñ	˜BŸJ™J s§z¡z°y zÓ'AÓBÓ	C€BØ	ˆb‰€BØ�:‰:‹<×Ñ Ò*Ð*Ñ*r$   c                 ó|  — t         j                  j                  d«      }t        j                  | j                  |j                  d¬«      «      «      }t        j                  | j                  |j                  d¬«      «      «      }t        j                  t        d¬«      5  ||z   d d d «       y # 1 sw Y   y xY w)Nr   r'  rq   )r   rA   rA   r   r¡   )
r3   r^   rt   r   r   r+   rx   r£   r¤   r¥   r°  s       r"   Útest_multiplication_errorsro  ®	  s‰   € ä
�)‰)×
Ñ
 Ó
"€CÜ	×	Ñ	˜BŸJ™J s§z¡z°v zÓ'>Ó?Ó	@€BÜ	×	Ñ	˜BŸJ™J s§z¡z°y zÓ'AÓBÓ	C€BÜ	�‰”zÐ);Ô	<ñ Ø
ˆRŠ÷÷ ñ ús   Â#B2Â2B;c                 ó$  — t        t        j                  dd¬«      | «      }t        t        j                  dd¬«      | «      }| j                  t	        |«      «      }|D ]/  }||z  |z  }t        t        |j                  «       d¬«      |«       Œ1 y )Né2   r   rn   r½  r   r    )r-   r   r^   r%  rQ  r   r   r   )r,   ÚqsÚrsrë   r%   s        r"   Útest_multiplication_stabilityrt  ·	  sw   € ä	œŸ™¨°Ô2°BÓ	7€BÜ	œŸ™¨°!Ô4°bÓ	9€BØ�w‰w”s˜2“wÓ€HØò HˆØ�!‰V�b‰[ˆÜœ r§z¡z£|¸!Ô<¸hÕGñHr$   Ú__pow__c                 ó  — t        j                  | «      }|| j                  k(  rdnd}t        j                  j                  d«      }|f|dz
  z  }|j                  |dz   ¬«      }t        j                  | j                  |«      «      }|j                  «       }dD �]  }	||	z  }
| j                  g d¢«      }t        |
j                  t        |«      «      sJ ‚t        j                  | j                  ||d	z   «      «      }t        t!        |	«      «      D ]  }|	dkD  r||z  }Œ||z  }Œ |
|j                  «       z  j#                  «       }| j%                  ||k  «      sJ ‚t        j                  | j                  ||d	z   «      «      }||	z  j'                  «       j(                  |dz   k(  r�ŒJ ‚ d
D ]W  }	||	z  }
t        j*                  |	|j-                  «       z  «      }t/        |
j'                  «       |j'                  «       |¬«       ŒY g d¢}	|	D ]€  }||z  }|| j                  |g«      z  }t/        |j'                  «       |j'                  «       «       || j                  |«      z  }t/        |j'                  «       |j'                  «       «       Œ‚ | j1                  |dz   «      }t        j2                  |«      d   j5                  d«      }t        j*                  |«      }d}	||	z  }
t        j*                  |	|j-                  «       z  «      }t/        |
j'                  «       |j'                  «       |¬«       || j                  |	g«      z  }
t        j*                  |	|j-                  «       z  «      }t/        |
j'                  «       |j'                  «       |¬«       || j                  |	«      z  }
t        j*                  |	|j-                  «       z  «      }t/        |
j'                  «       |j'                  «       |¬«       y )NrÀ  r×   r   r   rM   rq   )rŒ  rÁ   rs   r   r   r“   rB   r›   rL   )ç      ø¿ré   ç       €r€   rÆ   rÏ  rp   )rŒ  rÁ   rw  rs   ré   rx  r   r€   rÆ   r‹   rÏ  r“   rÿ   r|  ro   rT   )r)   r*   rØ   r3   r^   rt   rx   r   r   r+   r˜   r>  r?  r@  ra   rc   r–   rú  rw   r   rd   rü   r  r   rŒ   rÜ   rÝ   )r,   rI   r(   rY   rg   rð  r¦   rë  Úp_invrÅ  rh   Ú
q_identityr%   rþ  ÚangÚexponentÚr_arrayr   s                     r"   Útest_powr~  Á	  s\  € ô ×Ñ˜bÓ!€EØ˜RŸ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Ü×Ñ˜rŸw™w z°;ÀÑ3EÓFÓGˆÜ”s˜1“v“ò 	ˆAØ�1ŠuØ˜‘E‘à˜‘I‘ð		ð
 �1—5‘5“7‰{×%Ñ%Ó'ˆØ�v‰v�c˜D‘jÔ!Ð!Ð!ô ×Ñ˜rŸw™w z°;ÀÑ3EÓFÓGˆØ�1‘�~‰~Ó×%Ñ%¨°tÑ);Ô;Ð;Ð;ð#<ð( /ò =ˆØ�‰FˆÜ× Ñ   Q§[¡[£]Ñ!2Ó3ˆÜ˜Ÿ	™	› Q§Y¡Y£[°tÖ<ð=ò 	A€AØò 8ˆØ�‰MˆØ�r—z‘z 8 *Ó-Ñ-ˆÜ˜Ÿ	™	› W§_¡_Ó%6Ô7Ø�r—z‘z (Ó+Ñ+ˆÜ˜Ÿ	™	› W§_¡_Ó%6Õ7ð8ð �X‰X�k DÑ(Ó)€FÜ�V‰V�F‹^˜FÑ#×'Ñ'¨Ó.€FÜ×Ñ˜VÓ$€AØ	€AØ	ˆQ‰€AÜ×Ñ˜Q §¡£Ñ.Ó/€AÜ�A—I‘I“K §¡£°4Õ8ð 	
ˆR�Z‰Z˜˜‹_Ñ€AÜ×Ñ˜Q §¡£Ñ.Ó/€AÜ�A—I‘I“K §¡£°4Õ8Ø	ˆR�Z‰Z˜‹]Ñ€AÜ×Ñ˜Q §¡£Ñ.Ó/€AÜ�A—I‘I“K §¡£°4Ö8r$   c                 óÚ  — t        t        j                  d¬«      | «      }t        j                  t
        d¬«      5  t        |dd«       d d d «       t        j                  t        d¬«      5  || j                  ddg«      z   d d d «       t        j                  t        d¬«      5  || j                  dgdgg«      z   d d d «       y # 1 sw Y   Œ€xY w# 1 sw Y   ŒRxY w# 1 sw Y   y xY w)Nr   rn   zmodulus not supportedr¡   r   zArray exponent must be a scalarr“   )	r-   r   r^   r£   r¤   ÚNotImplementedErrorÚpowr¥   r+   )r,   rë  s     r"   Útest_pow_errorsr‚  
  sÂ   € ä”x—‘¨1Ô-¨rÓ2€AÜ	�‰Ô*Ð2IÔ	Jñ ÜˆAˆq�!Œ÷ä	�‰”zÐ)JÔ	Kñ  Ø	ˆR�Z‰Z˜˜A˜ÓÒ÷ ä	�‰”zÐ)JÔ	Kñ $Ø	ˆR�Z‰Z˜!˜˜q˜c˜
Ó#Ò#÷$ð $÷	ð ú÷ ð  ú÷$ð $ús#   ¼C	Á-CÂ'C!Ã	CÃCÃ!C*c                  óF  — t        j                  d¬«      } t        j                  dd¬«      }t        j                  | «      }t	        |j
                  d«       t        j                  |«      }t	        |j
                  d«       t        |d   j                  «       |d   j                  «       «       t        |d   j                  «       |d   j                  «       «       t        j                  | g«      }t	        |j
                  d«       t	        |d   | «       t        j                  |g«      }t	        |j
                  d«       t        |d	   j                  «       |d   j                  «       «       t        |d
   j                  «       |d   j                  «       «       t        j                  | |gt        ¬«      }t	        |j
                  d«       t	        |d   | «       t	        |d   |«       t        j                  |||g«      }t	        |j
                  d«       y )Nr   rn   r“   r   r   r$  rL   r9  ró   )r   r   r'   )rT   r“   )	r   r^   r3   r4   r   rd   r   rP   Úobject)ÚsingleÚmultipler4   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˜hÐ'¬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                 óŒ  — t        j                  | j                  ddt        j                  t
        j                  dz  «      t        j                  t
        j                  dz  «      g«      «      }t        j                  |«      }t        j                  |«      }t        |j                  «       |j                  «       d¬«       y ©Nr   rA   rU   rp   )r   r   r+   rœ   Úsinr3   r  r-  ÚpickleÚdumpsÚloadsr   rP   )r,   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                 ób  — t        j                  | j                  ddt        j                  t
        j                  dz  «      t        j                  t
        j                  dz  «      g«      «      }t        j                  |«      }t        |j                  «       |j                  «       d¬«       y r‹  )r   r   r+   rœ   rŒ  r3   r  r-  rÂ  Údeepcopyr   rP   )r,   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                  ó:  — t        j                  g d¢«      } | j                  d«      }| j                  d«      }|j                  d   du sJ ‚|j                  d   du sJ ‚t	        d„ |j
                  D «       «      sJ ‚t	        d„ |j
                  D «       «      sJ ‚y )Nr0   rŠ   ra  ÚC_CONTIGUOUSTc              3   ó&   K  — | ]	  }|d k\  –— Œ y­w©r   Nr   ©Ú.0ri   s     r"   ú	<genexpr>z+test_as_euler_contiguous.<locals>.<genexpr>G
  ó   è ø€ Ò*˜!ˆq�A�vÑ*ùó   ‚c              3   ó&   K  — | ]	  }|d k\  –— Œ y­wr™  r   rš  s     r"   rœ  z+test_as_euler_contiguous.<locals>.<genexpr>H
  r�  rž  )r   r   r¥  Úflagsrw   Ústrides)r%   Úe1Úe2s      r"   Útest_as_euler_contiguousr¤  @
  sŒ   € ä×Ñš<Ó(€AØ	
�‰�EÓ	€BØ	
�‰�EÓ	€BØ�8‰8�NÑ# tÑ+Ð+Ð+Ø�8‰8�NÑ# tÑ+Ð+Ð+ÜÑ*˜rŸz™zÔ*Ô*Ð*Ð*ÜÑ*˜rŸz™zÔ*Ô*Ð*Ñ*r$   Úconcatenatec                 ó~  — t        t        j                  dd¬«      | «      }g d¢}dgt        t	        j
                  |«      «      z   }t        ||«      D ��cg c]  \  }}||||z    ‘Œ }}}t        j                  |«      }t        |j                  «       |j                  «       «       t        j                  |«      }t        |j                  «       |j                  «       «       ||usJ ‚t        j                  j                  d«      }| j                  |j                  d¬«      «      }	t        j                  |	«      }t        j                  |	d d…df   «      }
t        j                  |	dd …df   «      }t        j                  |
|g«      }t        |j                  «       |j                  «       «       y c c}}w )	Nr[   r   rn   )r   r“   rT   r   rT   ©rB   r“   rA   rq   rT   .)r-   r   r^   Úlistr3   Úcumsumr  r¥  r
   r   rt   r+   rx   r   )r,   rÇ  ÚsizesÚstartsri   rÅ  Úsplitr  rg   r¦   r}  r~  s               r"   Útest_concatenater­  K
  so  € äœhŸo™o¨b°aÔ8¸"Ó=€HÚ€EØˆS”4œŸ	™	 %Ó(Ó)Ñ)€FÜ+.¨v°uÓ+=×>¡4 1 aˆX�a˜˜A™ÒÐ>€EÑ>Ü×!Ñ! %Ó(€FÜ�H×$Ñ$Ó&¨¯©Ó(8Ô9ô ×!Ñ! (Ó+€FÜ�H×$Ñ$Ó&¨¯©Ó(8Ô9ð ˜6Ñ!Ð!Ð!ô �)‰)×
Ñ
 Ó
"€CØ�:‰:�c—j‘j i�jÓ0Ó1€DÜ×!Ñ! $Ó'€HÜ	×	Ñ	˜D  !  S ™MÓ	*€BÜ	×	Ñ	˜D ¡ S ™MÓ	*€BÜ×!Ñ! 2 r (Ó+€FÜ�H×$Ñ$Ó&¨¯©Ó(8Õ9ùó% ?s   ÁF9c                 ó  — t        j                  t        d¬«      5  t        | j	                  t        j
                  «       j                  «       «      «      }t        j                  |dd g«       d d d «       y # 1 sw Y   y xY w)NzRotation objects onlyr¡   r   )r£   r¤   r  r   r+   rü  r   r¥  )r,   rï   s     r"   Útest_concatenate_wrong_typer¯  e
  s_   € ä	�‰”yÐ(?Ô	@ñ -Ü�r—z‘z¤(×"3Ñ"3Ó"5×"=Ñ"=Ó"?Ó@ÓAˆÜ×Ñ˜c 1 d˜^Ô,÷-÷ -ñ -ús   œAA8Á8Bc                 ó4  — t        j                  | j                  d«      «      }t        j                  | j                  d«      «      }t        j                  t
        t        t        f«      5  t        j                  ||g«       d d d «       y # 1 sw Y   y xY w)Nr§  rÏ   )	r   r   r%  r£   r¤   r¥   ÚRuntimeErrorr  r¥  )r,   r}  r~  s      r"   Útest_concatenate_wrong_shaper²  l
  sm   € ä	×	Ñ	˜BŸG™G IÓ.Ó	/€BÜ	×	Ñ	˜BŸG™G F›OÓ	,€Bä	�‰œ
¤L´)Ð<Ó	=ñ 'Ü×Ñ˜b "˜XÔ&÷'÷ 'ñ 'ús   Á-BÂBc                 óì  — t        | j                  g d¢g«      «      }t        | j                  g d¢g d¢g«      «      }t        | j                  g d¢«      «      }t        |«      dk(  sJ ‚t        |«      dk(  sJ ‚t        j                  t
        d¬«      5  t        |«       d d d «       t        j                  | j                  d«      «      }t        |«      dk(  sJ ‚|sJ ‚|sJ ‚|sJ ‚y # 1 sw Y   ŒJxY w)Nr0   r   r“   zSingle rotation has no len().r¡   r&  rT   )r   r+   rQ  r£   r¤   r  r   r%  )r,   Ú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ñ ÜˆOÔ÷ô  ×)Ñ)¨"¯'©'°)Ó*<Ó=ÐÜÐÓ  AÒ%Ð%Ð%ñ ÐÐÙÐˆ>ÙÐ‰?÷ð ús   ÂC*Ã*C3Úfrom_davenportc                 óâ   — | j                  g d¢«      }t        j                  |ddd¬«      j                  «       }| j                  g d¢«      t	        j
                  d«      z  }t        ||«       y )Nr   ri  r\  Tr  r]  r“   )r+   r   r¹  r   rœ   r�   r   )r,   r!   r¦   rG   s       r"   Ú#test_from_davenport_single_rotationr»  Š
  sX   € à�:‰:’iÓ €DÜ×"Ñ" 4¨°bØ+/ô1ß18±³ð 	à—J‘Jš~Ó.´·±¸1³Ñ=€MÜ�D˜-Õ(r$   c                 ó–  — | j                  g d¢«      }| j                  g d¢«      }t        j                  || j                  z  dz  «      }t        j                  |d| j                  dz  «      }t        |j                  d¬«      |j                  d¬«      «       | j                  |d«      }t        j                  || j                  z  dz  «      }t        j                  |d| j                  dz  g«      }t        |j                  d¬«      |j                  d¬«      «       | j                  ||gd¬	«      }t        j                  || j                  | j                  dz  g| j                  d
z  gg«      z  «      }|d   |d   z  }| j                  ||gd¬	«      }t        j                  |d| j                  d
z  | j                  dz  g«      }t        |j                  d¬«      |j                  d¬«      «       | j                  ||gd¬	«      }t        j                  || j                  | j                  d
z  g| j                  dz  gg«      z  «      }| j                  |d«      }t        j                  |d| j                  d
z  g| j                  dz  gg«      }t        |j                  d¬«      |j                  d¬«      «       y )Nr¶   rñ  rA   ÚeTr�   r  r   r    rJ   r   )	r+   r   rü   r  r¹  r   r   rN   rê   )r,   ÚezÚeyrï   Úrot_davr-  Úaxes_davs          r"   Ú#test_from_davenport_one_or_two_axesrÂ  “
  sO  € à	�‰’KÓ	 €BØ	�‰’KÓ	 €Bô ×
Ñ
˜r B§E¡E™z¨!™|Ó
,€CÜ×%Ñ% b¨#¨r¯u©u°Q©wÓ7€GÜ�C—K‘K¨$�KÓ/°·±È4°Ó1PÔQð �:‰:�b˜&Ó!€DÜ
×
Ñ
˜r B§E¡E™z¨!™|Ó
,€CÜ×%Ñ% d¨C°"·%±%¸±'°Ó;€GÜ�C—K‘K¨$�KÓ/°·±È4°Ó1PÔQð �8‰8�R˜�H 1ˆ8Ó%€DÜ
×
Ñ
˜t b§j¡j°2·5±5¸±7°)¸b¿e¹eÀA¹g¸YÐ1GÓ&HÑHÓ
I€CØ
ˆa‰&�3�q‘6‰/€CØ�x‰x˜˜R˜ 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 b§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                 ól  — t         j                  j                  d«      }|f|dz
  z  }t        j                  | j                  |j                  d¬«      «      «      }|j                  «       }| j                  |j                  |dz   ¬«      «      }t        j                  |d   d|«      }|j                  «       j                  |dz   k(  sJ ‚| j                  |j                  |dz   ¬«      «      }t        j                  |d   d|«      }|j                  «       j                  |dz   k(  sJ ‚| j                  |j                  |d	z   ¬«      «      }t        j                  |d d
…df   d|«      }|j                  «       j                  |dz   k(  sJ ‚t        j                  | j                  |j                  |dz   ¬«      «      «      }|j                  «       }| j                  |j                  |dz   ¬«      «      }t        j                  |d|«      }|j                  «       j                  |dz   k(  sJ ‚y )Nr   r   rM   rq   rL   rµ   r½  )r   N.r$  r“   .rÿ   ©r3   r^   rt   r   r   r+   rx   rP   r¹  r   rd   )r,   rI   rg   rð  r%   r-  rd  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Ü
×
!Ñ
! $ r¨ r¨3 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                 óx  — t         j                  j                  d«      }t        j                  | j                  |j                  d¬«      «      «      }|j                  «       }| j                  |j                  d¬«      «      }t        j                  |d|«      }|j                  «       j                  dk(  sJ ‚y )Nr   ©rA   é	   r   rA   rq   )r   rA   rT   r½  )rA   rÈ  rA   rA   rÄ  )r,   rg   r%   r-  rd  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                 ó°  — g d¢}g d¢}g d¢}| j                  ||g«      }t        |«      rIt        j                  |dddg«      j	                  «       }| j                  | j                  |«      «      s?J ‚t        j                  t        d¬«      5  t        j                  |dddg«       d d d «       | j                  |||g«      }t        |«      rIt        j                  |dg d¢«      j	                  «       }| j                  | j                  |«      «      s?J ‚t        j                  t        d¬«      5  t        j                  |dg d¢«       d d d «       t        j                  t        d	¬«      5  t        j                  | j                  |g«      d
dg«       d d d «       t        j                  t        d¬«      5  t        j                  | j                  |||g«      dg d¢«       d d d «       t        j                  t        d¬«      5  t        j                  | j                  |«      dddg«       d d d «       t        j                  t        d¬«      5  t        j                  | j                  |||g«      dddg«       d d d «       y # 1 sw Y   �ŒæxY w# 1 sw Y   �ŒNxY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒÌxY w# 1 sw Y   ŒŒxY w# 1 sw Y   y xY w)Nr   r   rÐ  r½  r   zmust be orthogonalr¡   r  zorder should berŠ   zExpected `angles`)r   r   r“   rT   r   )
r+   r   r   r¹  r   rw   rª   r£   r¤   r¥   )r,   r¾  r¿  Úezyr-  rh   s         r"   Ú!test_from_davenport_invalid_inputrÌ  à
  sJ  € â	€BÚ	€BÚ
€Cà�:‰:�r˜3�iÓ €DÜ�TÔÜ×#Ñ# D¨#°°1¨vÓ6×>Ñ>Ó@ˆØ�v‰v�b—h‘h˜q“kÔ"Ð"Ð"ä�]‰]œ:Ð-AÔBñ 	7Ü×#Ñ# D¨#°°1¨vÔ6÷	7à�:‰:�r˜2˜s�mÓ$€DÜ�TÔÜ×#Ñ# D¨#ªyÓ9×AÑAÓCˆØ�v‰v�b—h‘h˜q“kÔ"Ð"Ð"ä�]‰]œ:Ð-AÔBñ 	:Ü×#Ñ# D¨#ªyÔ9÷	:ä	�‰”zÐ):Ô	;ñ >Ü×Ñ §
¡
¨B¨4Ó 0°%¸!¸Ô=÷>ä	�‰”zÐ)<Ô	=ñ MÜ×Ñ §
¡
¨B°°B¨<Ó 8¸#º|ÔL÷Mä	�‰”zÐ)<Ô	=ñ =Ü×Ñ §
¡
¨2£°°a¸°VÔ<÷=ä	�‰”zÐ)<Ô	=ñ GÜ×Ñ §
¡
¨B°°B¨<Ó 8¸#ÀÀ1¸vÔF÷Gð G÷	7ñ 	7ú÷	:ñ 	:ú÷>ñ >ú÷Mð Mú÷=ð =ú÷Gð GúsH   ÂJÄ4JÅ1)J'Æ=,J4È)K É,KÊJÊJ$Ê'J1Ê4J=Ë K	ËKc                  ó”  — t         j                  j                  d«      } t        j                  g d¢«      }t        j                  g d¢«      }t        j                  g d¢«      }t	        j                  | ¬«      }|j                  |||gd«      }t	        j                  |||gd|j                  «       «      }|j                  |d¬«      sJ ‚t	        j                  d	| ¬«      }|j                  |||gd«      }t	        j                  |||gd|j                  «       «      }t        j                  |j                  |d¬«      «      sJ ‚y )
Nrm   r   r   r   rn   r½  ro   rp   r“   )
r3   r^   rt   r4   r   Úas_davenportr¹  ru   rv   rw   )rg   r¢  r£  Úe3ry   rd  r%   s          r"   Útest_from_davenport_array_likerÐ  þ
  s  € Ü
�)‰)×
Ñ
 Ó
$€Cä	�‰’)Ó	€BÜ	�‰’)Ó	€BÜ	�‰’)Ó	€BÜ—‘ SÔ)€JØ×$Ñ$ b¨"¨b \°3Ó7€FÜ×Ñ  R¨ ¨c°6·=±=³?ÓC€AØ×"Ñ" 1¨5Ð"Ô1Ð1Ð1ô —‘ ¨Ô,€JØ×$Ñ$ b¨"¨b \°3Ó7€FÜ×Ñ  R¨ ¨c°6·=±=³?ÓC€AÜ�6‰6�*×)Ñ)¨!°%Ð)Ó8Ô9Ð9Ñ9r$   rÎ  c           
      ó  — t        j                  | «      }t        j                  j	                  d«      }d}t        j
                  |df«      }|j                  t        j                   t        j                  |f¬«      |d d …df<   |j                  dt        j                  |f¬«      }|j                  t        j                   t        j                  |f¬«      |d d …df<   |j                  dt        j                  d¬«      }| j                  g d¢«      }| j                  g d¢«      }|D ]Ò  }	| j                  t        j                  |	|z  «      j                  |«      «      }
| j                  |||
gd¬	«      }||	z
  |d d …d
f<   dD ]s  }|dk(  r|n| j                  |d¬	«      }t        j                  ||| j                  ||¬«      «      }|j                  ||«      }t!        || j                  ||¬«      «       Œu ŒÔ y )Nr   r\   rT   rn  r“   )rØ  r  rñ  r    r   ©ri  rj  rj  r'   )r)   r*   r3   r^   r_   rA  rª  r  r+   r   rü   ri  rê   rs  r¹  rÎ  r   )r,   r(   rà   rÅ  rd  Ú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Š1ˆaˆ4�LØ—K‘K A¬B¯E©E¸¸�KÓ=€MØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€FŠ1ˆaˆ4�LØ�k‰k˜a¤b§e¡e°%ˆkÓ8€Gà	�‰’KÓ	 €BØ	�‰’KÓ	 €Bàò IˆØ�Z‰Zœ×,Ñ,¨T°"©WÓ5×;Ñ;¸BÓ?Ó@ˆØ—(‘(˜B  B˜<¨a�(Ó0ˆØ$ tÑ+ˆŠq�!ˆt‰Ø/ò 	IˆEØ! [Ò0‘°b·g±g¸gÈA°gÓ6NˆBÜ×)Ñ)¨"¨e°R·Z±ZÀÈe°ZÓ5TÓUˆCØ×)Ñ)¨"¨eÓ4ˆJÜ˜J¨¯
©
°6À¨
Ó(GÕHñ		Iñ	Ir$   c                 óL  — t         j                  j                  d«      }t        j                  | j                  |j                  d¬«      «      «      }|j                  «       }| j                  |j                  t         j                   t         j                  d¬«      «      }t        j                  |«      d   j                  |d   dz  «      }dD ]O  }|d	k(  r| j                  |d
¬«      }t        j                  |||«      }|j                  ||«      }t!        ||«       ŒQ y )Nr   rÇ  rq   )rA   rÈ  r   rT   rn  r{  r“   rÒ  rj  rÁ   r    )r3   r^   rt   r   r   r+   rx   rP   rª  r  r)   rÜ   rÝ   rs  r¹  rÎ  r   )r,   rg   r%   r-  rd  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¨E°6Ó:ˆØ×%Ñ% d¨EÓ2ˆ
Ü˜
 FÕ+ñ,r$   c           
      óú  — t        j                  | «      }|| j                  k(  rdnd}t        j                  j                  d«      }d}t        j                  |df«      }|j                  t        j                   t        j                  |f¬«      |d d …df<   t        |«      D �cg c]#  }|j                  dt        j                  g«      ‘Œ% }}|j                  t        j                   t        j                  |f¬«      |d d …df<   |j                  dt        j                  d¬«      }	| j                  g d	¢«      }
| j                  g d
¢«      }|	D �]  }| j                  t        j                  ||z  «      j                  |
«      «      }| j                  |
||gd¬«      }||z
  |d d …df<   dD ]³  }|dk(  r|n| j!                  |d¬«      }t        j"                  ||| j                  ||¬«      «      }t%        | | «      5  |j'                  |||¬«      }d d d «       |j)                  «       }t        j"                  ||«      }|j)                  «       }t+        |||¬«       Œµ �Œ y c c}w # 1 sw Y   ŒYxY w)Nro   r×   r   rB   rT   rn  r“   )rB   r  rñ  r    r   rÒ  rj  r'   )rÔ  rp   )r)   r*   rØ   r3   r^   r_   rA  rª  r  rc   Úchoicer+   r   rü   ri  rê   rs  r¹  rÓ  rÎ  rP   r   )r,   rÔ  r(   rY   rà   rÅ  rd  ri   rÓ  rÔ  r¢  r£  rÕ  rÏ  rÖ  r¦  r×  rï   rØ  rÞ  Úrot_estimatedrà  s                         r"   Útest_as_davenport_degeneraterß  9  s2  € ô
 ×Ñ˜bÓ!€EØ˜RŸZ™ZÒ'‰5¨T€Dô �)‰)×
Ñ
 Ó
"€CØ	€AÜ�X‰X�q˜!�fÓ€Fð —;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€FŠ1ˆaˆ4�LÜ5:¸1³XÖ>°�S—Z‘Z ¤B§E¡E 
Õ+Ð>€MÐ>Ø—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€FŠ1ˆaˆ4�LØ�k‰k˜a¤b§e¡e°$ˆkÓ7€Gà	�‰’KÓ	 €BØ	�‰’KÓ	 €Bàó DˆØ�Z‰Zœ×,Ñ,¨T°"©WÓ5×;Ñ;¸BÓ?Ó@ˆØ—(‘(˜B  B˜<¨a�(Ó0ˆØ$ tÑ+ˆŠq�!ˆt‰Ø/ò 	DˆEØ! [Ò0‘°b·g±g¸gÈA°gÓ6NˆBÜ×)Ñ)¨"¨e°R·Z±ZÀÈe°ZÓ5TÓUˆCÜ'Ð,=Ð(=¸rÓBñ Ø ×-Ñ-ØØØ&7ð .ó �
÷ð Ÿ=™=›?ˆLÜ$×3Ñ3°B¸¸zÓJˆMØ)×3Ñ3Ó5ˆMÜ˜L¨-¸dÖCò	Dñ	Dùò ?÷ð ús   Â'(I,ÈI1É1I:c           
      óÆ  — t        j                  | «      }t        j                  j	                  d«      }d}t        j
                  |df«      }|| j                  k(  rdnd}|j                  t        j                   t        j                  |f¬«      |d d …df<   |j                  dt        j                  |f¬«      |d d …df<   |j                  t        j                   t        j                  |f¬«      |d d …df<   | j                  ||¬	«      }d
D ]É  }t        d«      D ]¹  }dj                  |d   |d   |d   g«      }| j                  |D �	cg c]  }	t        |	«      ‘Œ c}	|¬	«      }
|dk(  r|j                  «       }t        j                  ||«      }t        j                   |
||«      }t#        |j%                  d¬«      |j%                  d¬«      |¬«       Œ» ŒË t        j&                  |«      d d …df   j)                  t        j                  dz  «      }d
D ]¹  }t        d«      D ]©  }dj                  |«      }| j                  |D �	cg c]  }	t        |	«      ‘Œ c}	|¬	«      }
|dk(  r|j                  «       }t        j                  ||«      }t        j                   |
||«      }t#        |j%                  «       |j%                  «       |¬«       Œ« Œ» y c c}	w c c}	w )Nr   r\   rT   ro   rÁ  rn  r   r“   r'   rÒ  rŠ   r¾  rj  Tr�   r]   )r)   r*   r3   r^   r_   rA  rØ   rª  r  r+   r   rÂ  r#   rÃ  r   rˆ   r¹  r   r   rÜ   Úsubtract)r,   r(   rà   rÅ  rd  rX   r¦  r®  rÆ  ri   r×  ÚeulÚdavs                r"   Ú&test_compare_from_davenport_from_eulerrä  b  st  € ä×Ñ˜bÓ!€EÜ
�)‰)×
Ñ
 Ó
"€CØ€AÜ�X‰X�q˜!�fÓ€Fð ˜RŸZ™ZÒ'‰5¨T€DØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€FŠ1ˆaˆ4�LØ—;‘; 1¬2¯5©5¸°t�;Ó<€FŠ1ˆaˆ4�LØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€FŠ1ˆaˆ4�LØ�Z‰Z˜ eˆZÓ,€FØ+ò 	'ˆÜ% eÓ,ò 	'ˆIØ—'‘'˜9 Q™<¨°1©°yÀ±|ÐDÓEˆCØ—‘°3Ö7¨aœY q�\Ò7¸u�ÓEˆBØ˜Ò#Ø—i‘i“k�Ü×%Ñ% c¨6Ó2ˆCÜ×)Ñ)¨"¨e°VÓ<ˆCÜ˜CŸK™K°$˜KÓ7¸¿¹Èt¸Ó9TØ!%ö'ñ	'ð	'ô �V‰V�F‹^šA˜q˜DÑ!×*Ñ*¬2¯5©5°1©9Ó5€FØ+ò EˆÜ% eÓ,ò 	EˆIØ—'‘'˜)Ó$ˆCØ—‘°3Ö7¨aœY q�\Ò7¸u�ÓEˆBØ˜Ò#Ø—i‘i“k�Ü×%Ñ% c¨6Ó2ˆCÜ×)Ñ)¨"¨e°VÓ<ˆCÜ˜CŸK™K›M¨3¯;©;«=¸tÖDñ	EñEùò 8ùò 8s   ÅKÉKc                 ó  — t         j                  j                  d«      }d}t        j                  |df«      }|j	                  t         j
                   t         j
                  |f¬«      |d d …df<   |j	                  dt         j
                  |f¬«      |d d …df<   |j	                  t         j
                   t         j
                  |f¬«      |d d …df<   dD ]Á  }t        d«      D ]±  }d	j                  |d   |d   |d   g«      }|D �cg c]  }t        |«      ‘Œ }}|d
k(  r|j                  «       }t        j                  || j                  |«      «      }	|	j                  |«      }
|	j                  | j                  |«      |«      }t        |
|d¬«       Œ³ ŒÃ |d d …dfxx   t         j
                  dz  z  cc<   dD ]µ  }t        d«      D ]¥  }d	j                  |«      }|D �cg c]  }t        |«      ‘Œ }}|d
k(  r|j                  «       }t        j                  || j                  |«      «      }	|	j                  |«      }
|	j                  | j                  |«      |«      }t        |
|d¬«       Œ§ Œ· y c c}w c c}w )Nr   r\   rT   rn  r   r“   rÒ  rŠ   r¾  rj  ro   r]   )r3   r^   r_   rA  rª  r  r   rÂ  r#   rÃ  r   rˆ   r+   r¥  rÎ  r   )r,   rà   rÅ  rd  r¦  r®  rÆ  ri   r×  rï   râ  rã  s               r"   Ú"test_compare_as_davenport_as_eulerræ  ‡  s0  € ô �)‰)×
Ñ
 Ó
"€CØ€AÜ�X‰X�q˜!�fÓ€Fð —;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€FŠ1ˆaˆ4�LØ—;‘; 1¬2¯5©5¸°t�;Ó<€FŠ1ˆaˆ4�LØ—;‘;¤B§E¡E 6´·±¸Q¸D�;ÓA€FŠ1ˆaˆ4�LØ+ò 	2ˆÜ% eÓ,ò 	2ˆIØ—'‘'˜9 Q™<¨°1©°yÀ±|ÐDÓEˆCØ(+Ö, 1”)˜A•,Ð,ˆBÐ,Ø˜Ò#Ø—i‘i“k�Ü×%Ñ% c¨2¯:©:°fÓ+=Ó>ˆCØ—,‘,˜sÓ#ˆCØ×"Ñ" 2§:¡:¨b£>°5Ó9ˆCÜ˜C ¨5Ö1ñ	2ð	2ð Š1ˆaˆ4ƒL”B—E‘E˜A‘IÑƒLØ+ò 	2ˆÜ% eÓ,ò 	2ˆIØ—'‘'˜)Ó$ˆCØ(+Ö, 1”)˜A•,Ð,ˆBÐ,Ø˜Ò#Ø—i‘i“k�Ü×%Ñ% c¨2¯:©:°fÓ+=Ó>ˆCØ—,‘,˜sÓ#ˆCØ×"Ñ" 2§:¡:¨b£>°5Ó9ˆCÜ˜C ¨5Ö1ñ	2ñ	2ùò -ùò -s   Ä	I8Ç%I=c                 ó‚  — t        j                  d¬«      }t        |«      dk(  sJ ‚t        j                  d¬«      }t        |«      dk(  sJ ‚t        j                  d¬«      g    }t        |«      dk(  sJ ‚t        j                  | j                  d«      «      }t        |«      dk(  sJ ‚t        j                  | j                  d«      «      }t        |«      dk(  sJ ‚t        j                  d| j                  d«      «      }t        |«      dk(  sJ ‚t        j                  | j                  d«      «      }t        |«      dk(  sJ ‚t        j                  | j                  d«      d| j                  d«      «      }t        |«      dk(  sJ ‚t        j                  | j                  d«      «      }	t        |	«      dk(  sJ ‚y )	Nr   )ré  rT   ©r   rA   ©r   rT   rT   rŠ   r  ri  )r   r^   rQ  rü  r   rŒ   rÄ   rˆ   rü   r¹  r`   r<  )
r,   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                 óä  — t        j                  | j                  d«      «      }|j                  «       j                  dk(  sJ ‚|j                  «       j                  dk(  sJ ‚|j                  d«      j                  dk(  sJ ‚|j                  «       j                  dk(  sJ ‚|j                  «       j                  dk(  sJ ‚|j                  | j                  d«      d«      j                  dk(  sJ ‚y )Nrè  ré  rŠ   r  rT   ri  )r   r   rŒ   r   rd   rP   r¥  r  rE  rÎ  r`   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                 óÀ  — t        j                  | j                  d«      «      }| j                  g d¢«      }|j	                  |«      }|j
                  dk(  sJ ‚| j                  d«      }|j	                  |«      }|j
                  dk(  sJ ‚| j                  d«      }t        j                  t        d¬«      5  |j	                  |«       d d d «       y # 1 sw Y   y xY w)Nrè  r†  r  r	  r   r¡   )
r   r   rŒ   r+   ri  rd   r%  r£   r¤   r¥   )r,   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   Â9CÃCc                 óp  — t        j                  | j                  d«      «      }t        j                  | j                  g d¢«      «      }||z  }t	        |«      dk(  sJ ‚||z  }t	        |«      dk(  sJ ‚t        j                  | j                  d«      «      }||z  }t	        |«      dk(  sJ ‚t        t        j                  d«      | «      }t        j                  t        d¬«      5  ||z   d d d «       t        j                  t        d¬«      5  ||z   d d d «       y # 1 sw Y   Œ3xY w# 1 sw Y   y xY w)Nrè  r›   r   r“   r   r¡   )
r   r   rŒ   r+   rQ  r-   r^   r£   r¤   r¥   )r,   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Ø�h‘,€KÜˆ{Ó˜qÒ Ð Ð à˜a‘<€LÜˆ|Ó Ò!Ð!Ð!ä	×	Ñ	˜BŸH™H VÓ,Ó	-€BØ�‰V€FÜˆv‹;˜!ÒÐÐä	œŸ™¨Ó*¨BÓ	/€BÜ	�‰”zÐ);Ô	<ñ Ø
ˆRŠ÷ô 
�‰”zÐ);Ô	<ñ Ø
ˆRŠ÷ð ÷ð ú÷ð ús   Ã(D ÄD,Ä D)Ä,D5c                 óZ  — t        j                  | j                  d«      «      }t        j                  ||g«      }t	        |«      dk(  sJ ‚t        j                  | j                  g d¢«      «      }|j                  ||g«      }t	        |«      dk(  sJ ‚t        t        j                  d«      | «      }|j                  ||g«      }t	        |«      dk(  sJ ‚t        t        j                  d«      | «      }|j                  ||g«      }|j                  ||g«      }t	        |«      dk(  sJ ‚y )Nrè  r   r›   r   rT   rA   )r   r   rŒ   r¥  rQ  r+   r-   r^   ©r,   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Ø	
�‰˜˜A�wÓ	€BÜˆr‹7�aŠ<Ðˆ<ä	œŸ™¨Ó*¨BÓ	/€BØ	
�‰˜˜A�wÓ	€BÜˆr‹7�aŠ<Ðˆ<ä	œŸ™¨Ó*¨BÓ	/€BØ	
�‰˜˜2�wÓ	€BØ	
�‰˜˜2�wÓ	€BÜˆr‹7�aŠ<Ð‰<r$   c                 ó„   — t        j                  | j                  d«      «      }dD ]  }||z  }t        |«      dk(  rŒJ ‚ y )Nrè  )rw  rs   r   r   rÏ  r   )r   r   rŒ   rQ  )r,   r%   ÚppÚpow0s       r"   Útest_zero_rotation_powerr    sC   € ä×Ñ˜2Ÿ8™8 FÓ+Ó,€AØ#ò ˆØ�"‰uˆÜ�4‹y˜A‹~Ðˆ~ñr$   c                 óŒ   — t        j                  | j                  d«      «      }|j                  «       }t	        |«      dk(  sJ ‚y )Nrè  r   )r   r   rŒ   r˜   rQ  )r,   r%   Úr_invs      r"   Útest_zero_rotation_inverser
  !  s6   € ä×Ñ˜2Ÿ8™8 FÓ+Ó,€AØ�E‰E‹G€EÜˆu‹:˜Š?Ð‰?r$   c                 óŽ   — t        j                  | j                  d«      «      }|j                  «       }|j                  dk(  sJ ‚y )Nrè  ©r   )r   r   rŒ   rú  rd   )r,   r%   rú  s      r"   Útest_zero_rotation_magnituder  (  s8   € ä×Ñ˜2Ÿ8™8 FÓ+Ó,€AØ—‘“€IØ�?‰?˜dÒ"Ð"Ñ"r$   c                 óÌ   — t        j                  | j                  d«      «      }t        j                  t
        d¬«      5  |j                  «        d d d «       y # 1 sw Y   y xY w)Nrè  z+Mean of an empty rotation set is undefined.r¡   )r   r   rŒ   r£   r¤   r¥   r³  r|   s     r"   Útest_zero_rotation_meanr  /  sH   € ä×Ñ˜2Ÿ8™8 FÓ+Ó,€AÜ	�‰”zÐ)VÔ	Wñ Ø	�‰Œ÷÷ ñ ús   Á AÁA#c                 ó"  — t        j                  | j                  d«      «      }t        j                  | j                  d«      «      }|j                  |«      j                  dk(  sJ ‚t        j                  | j                  g d¢«      «      }|j                  |«      j                  dk(  sJ ‚t        t        j                  «       | «      }|j                  |«      j                  dk(  sJ ‚d}t        t        j                  d«      | «      }t        j                  t        |¬«      5  |j                  |«       d d d «       t        j                  t        |¬«      5  |j                  |«       d d d «       y # 1 sw Y   Œ?xY w# 1 sw Y   y xY w)Nrè  r  r›   z/Expected broadcastable shapes in both rotationsr“   r¡   )r   r   rŒ   rv   rd   r+   r-   r^   r£   r¤   r¥   )r,   r%   rý  r}  r~  Ú
approx_msgrž   s          r"   Útest_zero_rotation_approx_equalr  6  s6  € ä×Ñ˜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ñ Ø	�‰�rÔ÷ô 
�‰”z¨Ô	4ñ Ø
�‰˜Ô÷ð ÷ð ú÷ð ús   Ä)E9ÅFÅ9FÆFz	jax.numpyz.JAX out-of-bounds indexing deviates from numpyc                 ó�  — t        j                  | j                  d«      «      }|| j                  g | j                  ¬«         }t        |«      dk(  sJ ‚|d d }t        |«      dk(  sJ ‚t        j                  t        «      5  || j                  dg«          d d d «       t        j                  t        «      5  || j                  dg«          d d d «       t        j                  t        «      5  t        j                  | j                  g d¢«      «      |d<   d d d «       y # 1 sw Y   ŒŒxY w# 1 sw Y   ŒaxY w# 1 sw Y   y xY w)Nrè  r'   r   Tr0   )	r   r   rŒ   r+   ÚboolrQ  r£   r¤   Ú
IndexError)r,   r%   rë  Úr_slices       r"   Útest_zero_rotation_get_setr  I  s  € ô 	×Ñ˜2Ÿ8™8 FÓ+Ó,€Aàˆb�j‰j˜ 2§7¡7ˆjÓ+Ñ,€EÜˆu‹:˜Š?Ðˆ?à��ˆe€GÜˆw‹<˜1ÒÐÐä	�‰”zÓ	"ñ Ø	ˆ"�*‰*�a�S‹/Ò÷ô 
�‰”zÓ	"ñ Ø	ˆ"�*‰*�d�VÓ
Ò÷ô 
�‰”zÓ	"ñ <Ü×!Ñ! "§*¡*ª\Ó":Ó;ˆˆ!‰÷<ð <÷ð ú÷ð ú÷<ð <ús$   ÂD$Â:D0Ã1*D<Ä$D-Ä0D9Ä<Ec                 ó€  — t        t        j                  d«      | «      }|| j                  g d¢«         }t	        |«      dk(  sJ ‚|| j                  g d¢«         }t	        |«      dk(  sJ ‚|| j                  g d¢«         }t	        |«      dk(  sJ ‚t        j
                  | j                  d«      «      }|| j                  g d¢«         }t	        |«      dk(  sJ ‚|j                  «       j                  d	k(  sJ ‚t        j                  t        «      5  || j                  d
d
g«          d d d «       y # 1 sw Y   y xY w)NrT   )FFFr   )FTFr   )TTTr&  )TFF)r   r“   rA   T)r-   r   r^   r+   rQ  r   r%  r   rd   r£   r¤   r  r  s         r"   Útest_boolean_indexesr  ^  s  € ä”x—‘ qÓ)¨2Ó.€Aà	
ˆ2�:‰:Ò+Ó,Ñ	-€BÜˆr‹7�aŠ<Ðˆ<à	
ˆ2�:‰:Ò*Ó+Ñ	,€BÜˆr‹7�aŠ<Ðˆ<à	
ˆ2�:‰:Ò(Ó)Ñ	*€BÜˆr‹7�aŠ<Ðˆ<ô 	×Ñ˜2Ÿ7™7 9Ó-Ó.€AØ	
ˆ2�:‰:Ò*Ó+Ñ	,€BÜˆr‹7�aŠ<Ðˆ<Ø�:‰:‹<×Ñ Ò*Ð*Ð*ä	�‰”zÓ	"ñ $Ø	ˆ"�*‰*�d˜D�\Ó
"Ò#÷$÷ $ñ $ús   ÄD4Ä4D=Ú__iter__c                 ó  — t        t        j                  d«      | «      }t        |«      D ][  \  }}t	        |t        «      sJ ‚t        |j                  «       ||   j                  «       «       |t        |«      kD  sŒRt        d«      ‚ y )NrT   z&Iteration exceeded length of rotations)	r-   r   r^   rW  r>  r
   r   rQ  r±  )r,   r%   ri   Úr_is       r"   Útest_rotation_iterr  u  sq   € ä”x—‘ qÓ)¨2Ó.€AÜ˜A“,ò I‰ˆˆ3Ü˜#œxÔ(Ð(Ð(Ü˜Ÿ™› q¨¡t§|¡|£~Ô6ØŒs�1‹v‹:ÜÐGÓHÐHñ	Ir$   c                 óÞ   — t        t        dd|z   «      d |dz
   «      }| j                  |dz   «      }t        j                  |«      }|j
                  |k(  sJ d|j
                  › d|› �«       ‚y )Nr“   r   rM   zGot z, expected )rP  rc   r%  r   r   rd   )r,   rI   rd   r¦   r%   s        r"   Útest_rotation_shaper    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                  ó~   — t        j                  g d¢«      } d| j                  _        t	        j
                  | «       y )N)r   r   r   r‹   F)r3   r4   r   Ú	writeabler   r   )rh   s    r"   Útest_non_writeabler"  ‡  s*   € Ü
�‰’Ó €AØ€A‡G�GÔÜ×Ñ�qÕr$   c                  ó¤   — t        j                  g d¢g«      } d| j                  _        t	        j
                  dd«      }|j                  | «       y )N)r€   r€   r€   Fr   r€   )r3   r4   r   r!  r   rˆ   ri  )Úpointsrï   s     r"   Útest_gh_24751r%  �  s=   € Ü�X‰X’Ð'Ó(€FØ"€F‡L�LÔÜ
×
Ñ
˜c 3Ó
'€CØ‡I�IˆfÕr$   c                  ó¦   — t        j                  g d¢«      t         j                  z  dz  } d| j                  _        t        j                  | «       y )Nr   r“   F)r3   r4   r  r   r!  r   rü   )r   s    r"   Útest_rotvec_non_writeabler'  ”  s8   € Ü�X‰X’iÓ ¤2§5¡5Ñ(¨1Ñ,€FØ"€F‡L�LÔÜ×Ñ˜Õ r$   )ärœ   r£   Únumpyr3   Únumpy.testingr   Úscipy.spatial.transformr   r   Ú$scipy.spatial.transform._rotation_cyÚspatialÚ	transformÚ_rotation_cyr6   Ú$scipy.spatial.transform._rotation_xpÚ_rotation_xpr7   Ú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#   r-   r1   r9   r=   rH   ÚmarkÚparametrizer¨  rc   ÚintrO   rk   rz   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'  r0  r6  r8  r;  rC  rF  rH  rJ  rL  rQ  rT  rW  rZ  r^  rb  re  rk  rv  rz  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)  r2  r7  r>  rE  rH  rN  rU  rh  ry  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  r  r  r)  r;  r=  r?  r@  rC  rE  rH  rK  rN  rS  rW  rZ  rb  rh  rk  rm  ro  rt  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  r
  r  r  r  r  r  r  r  r"  r%  r'  r   r$   r"   ú<module>r=     s-  ðÛ ã ã Ý &ß 3ß =Ó =ß 9Ó 9Ý +ß +Ý %Û ÷÷ ÷ ñ ÷ .Ð -ã Û ñ " 8¨YÐ"7¸(ÀKÐ9PÓQ€
òðD�hó Dò
ò$òAò0ð ‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ð0¨Sò 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°#ò 
3ó 4ó ,ð
3ñ �H˜kÐ*Ó+ñ,ó ,ð,ñ6 �H˜kÐ*Ó+ñ,ó ,ð,ñ> �H˜mÐ,Ó-Ø‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ð	H¨ò 	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ð-¨Cò -ó 4ó .ð-ñ �H˜kÐ*Ó+ñWó ,ðWñ" �H˜kÐ*Ó+Ø‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ð4¨Sò 4ó 4ó ,ð4ñ �H˜mÐ,¨x¸Ð.EÓFñ*ó Gð*ñ �H˜mÐ,¨x¸Ð.EÓFñ	ó Gð	ñ �H˜jÐ)Ó*Ø‡�×Ñ˜¡ q¨!£Ó-ðI¨Cò 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¨ò 
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ð-˜Sò -ó 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ð˜Sò ó 4óðñ0 �H˜fÐ%¨°+Ð'>Ó?ñ8ó @ð8ñ* �H˜mÐ,¨x¸Ð.@À8ÈUÐBSØ˜kÐ*ó,à‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ðI ò 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¸Cò 9ó 4ó Cð9ñ8 �H˜gÐ&Ó'ñ ó (ð ò"/ò9ñ" �H˜gÐ&Ó'ñ$ó (ð$ñ Øˆ}Ð ¨+Ð6¸À=Ð8Qóð ‡�×Ñ˜¡¡e¨A¨q£kÓ!2Ó3ðY˜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�sò :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¨ò 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$   