+
    Z°³jc­  ã                   óˆ  € R t ^ RIt^ RIt^ RIHt ^ RIt^ RIHtH	t	H
t
HtHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHu Ht RPRR/R	 R
 llltRQR R lltR R ltRQR R lltR R ltRQR R lltRQR R llt RQRR/R R lllt!R R lt"RQR R llt#R R lt$RQRR/R  R! lllt%RQRR/R" R# lllt&R$ R% lt'R& R' lt(RRR( R) llt)RSR* R+ llt*RSR, R- llt+RQR. R/ llt,R0 R1 lt-RRR2 R3 llt.R4 R5 lt/R6 R7 lt0R8 R9 lt1R: R; lt2R< R= lt3R> R? lt4R@ RA lt5RB RC lt6RD RE lt7RF RG lt8RH RI lt9RJ RK lt:RL RM lt;RN RO lt<R# )Tz·Array API backend for the `Rotation` class.

This module provides generic, functional implementations of the `Rotation` class methods
that work with any Array API-compatible backend.
N)ÚEllipsisType)Úarray_namespaceÚArrayÚ	ArrayLikeÚis_lazy_arrayÚxp_vector_normÚxp_result_typeÚ
xp_promoteÚis_jax)Úbroadcastable©Údevice)Úis_array_api_objÚscalar_firstFc          
      óT   € V ^8„  d   QhR\         R\        R\        R\        R\         /# )é   ÚquatÚ	normalizeÚcopyr   Úreturn©r   Úbool)Úformats   "Úe/home/luca/screen-checking/.venv/lib/python3.14/site-packages/scipy/spatial/transform/_rotation_xp.pyÚ__annotate__r   !   s:   € ÷ ñ Ü
ðäðô ðô
 ðô ñó    c                óÀ   € \        V 4      pV'       d   VP                  V RRR7      p V'       d   V'       g   VP                  V RR7      p V'       d   \        V 4      p V # )é   ©ÚaxisT©r   éÿÿÿÿ)r   ÚrollÚasarrayÚ_normalize_quaternion)r   r   r   r   Úxps   &&&$ r   Ú	from_quatr&   !   sN   € ô 
˜Ó	€BßØ�w‰w�t˜R bˆwÓ)ˆç—IØ�z‰z˜$ TˆzÓ*ˆßÜ$ TÓ*ˆØ€Kr   c                ó<   € V ^8„  d   QhR\         R\        R\         /# )r   ÚmatrixÚassume_validr   r   )r   s   "r   r   r   3   s!   € ÷ #+ñ #+œð #+¬Tð #+¼eñ #+r   c           
      ó$  € \        V 4      p\        V 4      pV'       Egè   VP                  P                  V 4      ^ 8*  p\	        V4      pV'       gq   VP                  V4      '       dZ   \        VP                  \        P                  ! V^VR7      4      ^ ,          ^ ,          4      p\        RV RWR3,           R24      hV'       d%   VP                  VR,          VP                  V 4      p WP                  V 4      ,          pVP                  ^V P                  VR7      pVP!                  \        P"                  ! WxRVR7      RR	7      p	V'       dB   VP                  P%                  V R
R7      w  r«pVP                  V	R,          W
V,          4      p MrVP!                  V	4      '       g\   V	( pVP                  P%                  W,          R
R7      w  r«p\        P&                  ! V 4      V,          P)                  W¬,          4      p \+        V 4      # )é    ©Úndimr%   zSNon-positive determinant (left-handed or null coordinate frame) in rotation matrix z: .Ú.©Údtyper   gê-�™—q=)Úatolr%   r   F)Úfull_matrices©.NN)éþÿÿÿr!   )r   Ú	xp_deviceÚlinalgÚdetr   ÚanyÚintÚnonzeroÚxpxÚ
atleast_ndÚ
ValueErrorÚwhereÚnanÚmatrix_transposeÚeyer0   ÚallÚiscloseÚsvdÚatÚsetÚ_from_matrix_orthogonal)r(   r)   r%   r   ÚmaskÚlazyÚindÚgramiansrA   Úis_orthogonalÚUÚ_ÚVtÚis_not_orthogonals   &&            r   Úfrom_matrixrQ   3   sª  € Ü	˜Ó	 €BÜ�vÓ€Fçˆ<Ø�y‰y�}‰}˜VÓ$¨Ñ)ˆÜ˜TÓ"ˆç˜Ÿ™˜tŸšÜ�b—j‘j¤§¢°¸1ÀÔ!DÓEÀaÕHÈÕKÓLˆCÜð#Ø#& % r¨&°c°Õ*:Ð);¸1ð>óð ÷ Ø—X‘X˜d ?Õ3°R·V±V¸VÓDˆFà×/Ñ/°Ó7Õ7ˆØ�f‰f�Q˜fŸl™l°6ˆfÓ:ˆØŸ™Ü�KŠK˜¨E°bÔ9Àð ó 
ˆ÷ ð —y‘y—}‘} V¸5�}ÓA‰HˆA�"Ø—X‘X˜m¨OÕ<¸fÈ"ÅfÓM‰FØ—‘˜×&Ò&à!. ÐØ—y‘y—}‘} VÕ%>Èe�}ÓT‰HˆA�"Ü—V’V˜F“^Ð$5Õ6×:Ñ:¸1½6ÓBˆFä" 6Ó*Ð*r   c                ó0   € V ^8„  d   QhR\         R\         /# )r   r(   r   ©r   )r   s   "r   r   r   Y   s   € ÷ C'ñ C'¤Eð C'¬eñ C'r   c                ó´  € \        V 4      p\        V 4      pV R,          V R,          ,           V R	,          ,           pVP                  V R,          V R,          V R	,          V.R
R7      pVP                  VR
RR7      pVP	                  . V P
                  RR O^N5V P                  VR7      pVP                  ^VR,          ,
          ^V R,          ,          ,           V R,          V R,          ,           V R,          V R,          ,           V R,          V R,          ,
          .R
R7      pVP                  V^ 8H  Wv4      pVP                  V R,          V R,          ,           ^VR,          ,
          ^V R,          ,          ,           V R,          V R,          ,           V R,          V R,          ,
          .R
R7      pVP                  V^8H  W†4      pVP                  V R,          V R,          ,           V R,          V R,          ,           ^VR,          ,
          ^V R	,          ,          ,           V R,          V R,          ,
          .R
R7      p	VP                  V^8H  W–4      pVP                  V R,          V R,          ,
          V R,          V R,          ,
          V R,          V R,          ,
          ^VR,          ,           .R
R7      p
VP                  V^8H  W¦4      p\        V4      # )z6Convert known orthogonal rotation matrix to quaternion.r   T)r   ÚkeepdimsNr/   ).r+   r+   ).r   r   ).r   r   r!   r4   ).r   r+   ).r+   r   ).r   r+   ).r+   r   ).r   r   ).r   r   )	r   r5   ÚstackÚargmaxÚemptyÚshaper0   r>   r$   )r(   r%   r   Úmatrix_traceÚdecisionÚchoicer   Úquat_0Úquat_1Úquat_2Úquat_3s   &          r   rG   rG   Y   sÁ  € ä	˜Ó	 €BÜ�vÓ€Fà˜)Õ$ v¨iÕ'8Õ8¸6À)Õ;LÕL€LØ�x‰xØ	�	Õ	˜F 9Õ-¨v°iÕ/@À,ÐOØð ó €Hð �Y‰Y�x b°4ˆYÓ8€FØ�8‰8Ð+�f—l‘l 3 BÐ'Ð+¨Ñ+°6·<±<Èˆ8ÓO€Dð �X‰Xà�˜SÕ!Õ! A¨¨yÕ(9Õ$9Õ9Ø�9Õ  yÕ 1Õ1Ø�9Õ  yÕ 1Õ1Ø�9Õ  yÕ 1Õ1ð		
ð ð ó €Fð �8‰8�F˜a‘K Ó.€Dð �X‰Xà�9Õ  yÕ 1Õ1Ø�˜SÕ!Õ! A¨¨yÕ(9Õ$9Õ9Ø�9Õ  yÕ 1Õ1Ø�9Õ  yÕ 1Õ1ð		
ð ð ó €Fð �8‰8�F˜a‘K Ó.€Dð �X‰Xà�9Õ  yÕ 1Õ1Ø�9Õ  yÕ 1Õ1Ø�˜SÕ!Õ! A¨¨yÕ(9Õ$9Õ9Ø�9Õ  yÕ 1Õ1ð		
ð ð ó €Fð �8‰8�F˜a‘K Ó.€Dð �X‰Xà�9Õ  yÕ 1Õ1Ø�9Õ  yÕ 1Õ1Ø�9Õ  yÕ 1Õ1Ø�˜SÕ!Õ!ð		
ð ð ó €Fð �8‰8�F˜a‘K Ó.€Dä  Ó&Ð&r   c                ó<   € V ^8„  d   QhR\         R\        R\         /# )r   ÚrotvecÚdegreesr   r   )r   s   "r   r   r   Ÿ   s!   € ÷ ñ œð ¬ð ¼ñ r   c                 ó2  € \        V 4      pV P                  R	,          ^8w  d   \        RV P                   24      hV'       d   \        V 4      MT p \	        V R	RVR7      pVR8*  pV^,          pRV^0,          ,
          V^,          R,          ,           pW2P                  WCP                  R7      ,           pVP                  V^,          4      V,          pVP                  WFV4      p	VP                  W	,          VP                  V^,          4      .R	R7      p
V
# )
r   z/Expected `rot_vec` to have shape (..., 3), got T©r   rU   r%   çü©ñÒMbP?g      à?i   ©r0   r   r!   )r   rY   r=   Ú_deg2radr   r#   r0   Úsinr>   ÚconcatÚcos)rb   rc   r%   ÚangleÚsmall_angleÚangle2Úsmall_scaleÚ	div_angleÚlarge_scaleÚscaler   s   &&         r   Úfrom_rotvecrs   Ÿ   sñ   € Ü	˜Ó	 €BØ‡|�|�BÕ˜1ÔÜØ=¸f¿l¹l¸^ÐLó
ð 	
÷ ")ŒX�fÔ¨f€Fä˜6¨°T¸bÔA€EØ˜4‘-€KØ�A�X€FØ˜ �Õ# f¨a¥i°$Õ&6Õ6€Kð
 Ÿ
™
 ;·k±k˜
ÓBÕB€IØ—&‘&˜ �Ó# iÕ/€KØ�H‰H�[¨{Ó;€EØ�9‰9�f•n b§f¡f¨U°Q­YÓ&7Ð8¸rˆ9ÓB€DØ€Kr   c                ó0   € V ^8„  d   QhR\         R\         /# )r   Úmrpr   rS   )r   s   "r   r   r   ¶   s   € ÷ ñ ”%ð œEñ r   c                 ó6  € \        V 4      pV P                  R,          ^8w  d   \        RV P                   24      hVP                  P	                  W RR7      R,          ^,           pVP                  ^V R,          ,          ^V,
          .RR7      pW2,          pV# )r   z+Expected `mrp` to have shape (..., 3), got r   r!   ©.N©.:Né   N)r   rY   r=   r6   Úvecdotrj   )ru   r%   Úmrp2_plus_1Ú	q_no_normr   s   &    r   Úfrom_mrpr}   ¶   s‡   € Ü	˜Ó	€BØ
‡y�y�…}˜ÔÜÐFÀsÇyÁyÀkÐRÓSÐSØ—)‘)×"Ñ" 3°"Ð"Ó5°iÕ@À1ÕD€KØ—	‘	˜1˜s 7�|Õ+¨a°+­oÐ?Àb�	ÓI€IØÕ"€DØ€Kr   c                óH   € V ^8„  d   QhR\         R\        R\        R\        /# )r   ÚseqÚanglesrc   r   )Ústrr   r   )r   s   "r   r   r   À   s(   € ÷  ñ  ”Cð  ¤ð  ´ð  Ä%ñ  r   c                 ó"  a € \        V4      p\        S 4      pV^8  g   V^8”  d   \        RS  24      h\        P                  ! RS 4      RJp\        P                  ! RS 4      RJpV'       g   V'       g   \        RS  24      h\
        ;QJ d/    V 3R l\        V^,
          4       4       F  '       g   K   RM$	  RM ! V 3R l\        V^,
          4       4       4      '       d   \        R	S  24      hV'       d   \        V4      p\        P                  ! V^VR
7      pVP                  R,          V8w  d!   \        RVP                  R,           R24      hS P                  4        Uu. uF  p\        V4      NK  	  pp\        W�V4      p	V	# u upi )r   zPExpected axis specification to be a non-empty string of up to 3 characters, got ú^[XYZ]{1,3}$Nú^[xyz]{1,3}$úLExpected axes from `seq` to be from ['x', 'y', 'z'] or ['X', 'Y', 'Z'], got c              3   óX   <"  € T F  pSV,          SV^,           ,          8H  x € K!  	  R# 5i©r   N© ©Ú.0Úir   s   & €r   Ú	<genexpr>Úfrom_euler.<locals>.<genexpr>Ñ   s$   øé € Ð
=Ñ)< Aˆ3ˆq�6�S˜˜Q�•ZÖÓ)<ùó   ƒ'*TFú/Expected consecutive axes to be different, got r,   zTExpected last dimension of `angles` to match number of sequence axes specified, got r.   r!   )r   Úlenr=   ÚreÚmatchr8   Úrangerh   r;   r<   rY   ÚlowerÚ_elementary_basis_indexÚ_elementary_quat_compose)
r   r€   rc   r%   Únum_axesÚ	intrinsicÚ	extrinsicÚxÚaxesÚqs
   f&&       r   Ú
from_eulerr�   À   sd  ø€ Ü	˜Ó	 €BÜ�3‹x€HØ�!„|�x !”|Üð1Ø14°ð7ó
ð 	
ô
 —’˜¨#Ó.°dÐ:€IÜ—’˜¨#Ó.°dÐ:€IßŸÜð,Ø,/¨5ð2ó
ð 	
÷
 ƒsÔ
=¬¨x¸!­|Ô)<Ó
=‡s‡s‚sÔ
=¬¨x¸!­|Ô)<Ó
=×=Ò=ÜÐJÈ3È%ÐPÓQÐQçÜ˜&Ó!ˆä�^Š^˜F¨¨rÔ2€Fà‡|�|�BÕ˜8Ô#ÜðØ$Ÿl™l¨2Õ.Ð/¨qð2ó
ð 	
ð 14·	±	´Ó<±¨1Ô# AÖ&±€DÐ<Ü  ¨yÓ9€AØ€Hùò =s   Å(Fc          
      óT   € V ^8„  d   QhR\         R\        R\         R\        R\         /# )r   r›   Úorderr€   rc   r   ©r   r�   r   )r   s   "r   r   r   ã   s4   € ÷ =ñ =Ü
ð=Üð=Ü%*ð=Ü59ð=ä
ñ=r   c                 ó@  € \        V 4      p\        V 4      pVR9   d   RpMVR9   d   RpM\        RV 24      hV P                  R,          ^8w  d   \        R4      h\        P
                  ! V ^VR7      p \        P
                  ! V^VR7      pV P                  R,          pV^8  g   V^8”  d   \        RV 24      hV \        V RRVR7      ,          p VP                  V P                  RR VP                  VR	7      pV^8”  d:   VVP                  VP                  V R,          V R,          4      4      R8„  ,          pV^8”  d:   VVP                  VP                  V R,          V R,          4      4      R8„  ,          p\        V4      '       g#   VP                  V4      '       d   \        R4      hVP                  VR,          VP                  V 4      p V'       d   \        V4      p\!        V P                  RR VP                  4      '       d*   V P                  R,          VP                  R,          8w  d'   \        RVP                   RV P                   R24      hVP                  RR R,           p	VP                  W’P"                  \        V4      R	7      p
\        P$                  ! V
4      R,          P'                  ^4      p
\)        V4       FG  p\+        VR
VR3,          V R
VR3,          ,          4      pV'       d   \-        WÊ4      M
\-        W¬4      p
KI  	  V
# )ÚeTFúhorder should be 'e'/'extrinsic' for extrinsic sequences or 'i'/'intrinsic' for intrinsic sequences, got ú!Axes must be vectors of length 3.r,   zExpected up to 3 axes, got re   Nr/   .ºNNNçH¯¼šò×z>ú$Consecutive axes must be orthogonal.z/Expected `angles` to match number of axes, got z angles and z axes.©r¢   r™   ©r‹   r˜   r!   r4   ©.r+   r¥   ©.r   r¥   ©.r   r¥   r3   )é   ©.ry   )r   r5   r=   rY   r;   r<   r   Úzerosr   Úabsrz   r   r8   r>   r?   rh   r   r0   rE   rF   r“   rs   Úcompose_quat)r›   rŸ   r€   rc   r%   r   r™   r—   Úaxes_not_orthogonalÚq_shaperœ   r‹   Úqis   &&&&         r   Úfrom_davenportrµ   ã   s¸  € ô 
˜Ó	€BÜ�t‹_€FØÐ"Ô"Ø‰	Ø	Ð$Ô	$Ø‰	äð8Ø8=°wð@ó
ð 	
ð
 ‡z�z�"…~˜ÔÜÐ<Ó=Ð=ä�>Š>˜$ Q¨2Ô.€DÜ�^Š^˜F¨¨rÔ2€FØ�z‰z˜"�~€HØ�!„|�x !”|ÜÐ6°x°jÐAÓBÐBà”. ¨B¸À"ÔEÕE€Dð Ÿ(™( 4§:¡:¨c¨r ?¸"¿'¹'È&˜(ÓQÐØ�!„|à1Ø�F‰F�2—9‘9˜T )�_¨d°9­oÓ>Ó?À$ÑFõ
Ðð �!„|Ø1Ø�F‰F�2—9‘9˜T )�_¨d°9­oÓ>Ó?À$ÑFõ
Ðô Ð,×-Ò-°"·&±&Ð9L×2MÒ2MÜÐ?Ó@Ð@à�x‰xÐ+¨OÕ<¸b¿f¹fÀdÓKˆçÜ˜&Ó!ˆô ˜$Ÿ*™* S b˜/¨6¯<©<×8Ò8Ø�:‰:�b�>˜VŸ\™\¨"Õ-Ô-äØ=¸f¿l¹l¸^ð LØ—:‘:�,˜fð&ó
ð 	
ð
 �l‰l˜3˜BÐ $Õ&€GØ
�‰�§¡´Y¸vÓ5FˆÓG€AÜ�Šˆq‹	�&Õ×Ñ˜aÓ €Aä�8Ž_ˆÜ˜  Q¨ Õ-°°S¸!¸Q°YµÕ?Ó@ˆß#,ŒL˜Ô´,¸qÓ2EŠñ ð €Hr   c                óH   € V ^8„  d   QhR\         R\        R\        R\         /# )r   r   Ú	canonicalr   r   r   )r   s   "r   r   r   #  s,   € ÷ ñ Ü
ðÜ ðÜ;?ðä
ñr   c                óz   € \        V 4      pV'       d   \        V 4      p V'       d   VP                  V ^RR7      p V # )r   r   r!   )r   Ú_quat_canonicalr"   )r   r·   r   r%   s   &&$ r   Úas_quatrº   #  s7   € ô 
˜Ó	€BßÜ˜tÓ$ˆßØ�w‰w�t˜Q RˆwÓ(ˆØ€Kr   c                ó0   € V ^8„  d   QhR\         R\         /# ©r   r   r   rS   )r   s   "r   r   r   .  s   € ÷ ñ ”Eð œeñ r   c           
      ó¤  € \        V 4      pV R,          pV R,          pV R,          pV R,          pW",          pW3,          pWD,          pWU,          p	W#,          p
WE,          pW$,          pW5,          pW4,          pW%,          pWg,
          V,
          V	,           ^W«,
          ,          ^WÍ,           ,          ^W«,           ,          V) V,           V,
          V	,           ^Wï,
          ,          ^WÍ,
          ,          ^Wï,           ,          V) V,
          V,           V	,           .	pVP                  VP                  VRR7      . V P                  RR O^N^N54      pV# ).r   N©.r+   ©.r   ©.r   r®   r!   )r   ÚreshaperV   rY   )r   r%   rš   ÚyÚzÚwÚx2Úy2Úz2Úw2ÚxyÚzwÚxzÚywÚyzÚxwÚmatrix_elementsr(   s   &                 r   Ú	as_matrixrÐ   .  s&  € Ü	˜Ó	€BØˆV�€AØˆV�€AØˆV�€AØˆV�€Aà	
�€BØ	
�€BØ	
�€BØ	
�€Bà	
�€BØ	
�€BØ	
�€BØ	
�€BØ	
�€BØ	
�€Bð 	��"��rÕØ	ˆR�W�Ø	ˆR�W�Ø	ˆR�W�Ø	ˆˆb��2�˜ÕØ	ˆR�W�Ø	ˆR�W�Ø	ˆR�W�Ø	ˆˆb��2�˜Õð
€Oð �Z‰Z˜Ÿ™ °r˜Ó:Ð<T¸d¿j¹jÈÈ"¸oÐ<TÈqÐ<TÐRSÑ<TÓU€FØ€Mr   c                ó<   € V ^8„  d   QhR\         R\        R\         /# )r   r   rc   r   r   )r   s   "r   r   r   P  s!   € ÷ ñ ”Eð ¤Dð ´Uñ r   c                 ó  € \        V 4      p\        V 4      p \        V R,          RRVR7      p^VP                  W0R	,          R
,          4      ,          pVR8*  pV^,          p^V^,          ,           ^V^,          ,          R,          ,           pVP	                  VR,          4      VP                  WTP                  R7      ,           pWH,          p	VP                  WWV	4      p
V'       d   \        V
4      p
W R,          ,          pV# ).Tre   rf   i@  ç       @rg   rx   r!   r®   rw   )	r   r¹   r   Úatan2ri   r#   r0   r>   Ú_rad2deg)r   rc   r%   Úax_normrl   rm   rn   ro   Údiv_sinrq   rr   rb   s   &&          r   Ú	as_rotvecrØ   P  sÓ   € Ü	˜Ó	€BÜ˜4Ó €DÜ˜T '�]°¸dÀrÔJ€GØ�—‘˜ v¥,¨yÕ"9Ó:Õ:€EØ˜4‘-€KØ�A�X€FØ�f˜r•k•/ A¨°­	¥M°DÕ$8Õ8€Kð
 �f‰f�U˜S•[Ó! B§J¡J¨{Ç+Á+ JÓ$NÕN€GØ•/€KØ�H‰H�[¨{Ó;€EßÜ˜“ˆØ˜'•]Õ"€FØ€Mr   c                ó0   € V ^8„  d   QhR\         R\         /# r¼   rS   )r   s   "r   r   r   e  s   € ÷ .ñ .”ð .œ5ñ .r   c                 óø   € \        V 4      pVP                  R \        V 4      V P                  R7      pVP	                  V R,          ^ 8  RV4      pR W0R,          ,          ,           pW0R,          ,          V,          # )ç      ð?©r   r0   ).ry   Nr!   rx   )r   r#   r5   r0   r>   )r   r%   ÚoneÚsignÚdenominators   &    r   Úas_mrprà   e  sh   € Ü	˜Ó	€BØ
�*‰*�S¤¨4£¸¿
¹
ˆ*Ó
C€CØ�8‰8�D˜Õ&¨Ñ*¨B°Ó4€DØ˜ LÕ1Õ1Õ1€KØ�w•-Õ +Õ-Ð-r   Úsuppress_warningsc          
      óT   € V ^8„  d   QhR\         R\        R\        R\        R\         /# )r   r   r   rc   rá   r   r    )r   s   "r   r   r   m  s4   € ÷ $3ñ $3Ü
ð$3Üð$3Ü$(ð$3ÜHLð$3ä
ñ$3r   c                ót  a€ \        V 4      p\        S4      ^8w  d   \        RS R24      h\        P                  ! RS4      RJp\        P                  ! RS4      RJpV'       g   V'       g   \        RS 24      h\
        ;QJ d(    V3R l\        ^4       4       F  '       g   K   RM	  R	M! V3R l\        ^4       4       4      '       d   \        R
S 24      h\        V 4      pSP                  4        Uu. uF  p\        V4      NK  	  p	pV'       d   T	MV	RRR1,          p	V	w  r«pW¬8H  pV'       d   ^V
,
          V,
          MTpVP                  W×R7      pVP                  W«,
          W¼,
          ,          WÊ,
          ,          ^,          V P                  VR7      pVP                  WàR,          V R,          V RV3,          ,
          4      pVP                  WàRV
3,          V RV
3,          V RV3,          V,          ,           4      pVP                  WàRV3,          V RV3,          V R,          ,           4      pVP                  WàRV3,          V,          V RV3,          V,          V RV
3,          ,
          4      p\        WmWôP                  ^,          VVVVV4	      pV'       d   \        V4      # T# u upi )ry   úExpected 3 axes, got r.   rƒ   Nr„   r…   c              3   óX   <"  € T F  pSV,          SV^,           ,          8H  x € K!  	  R# 5ir‡   rˆ   r‰   s   & €r   rŒ   Úas_euler.<locals>.<genexpr>|  s"   øé € Ð
2© Aˆ3ˆq�6�S˜˜Q�•ZÖ«ùrŽ   TFr�   r   r/   .r!   r®   )r   r�   r=   r‘   r’   r8   r“   r5   r”   r•   r#   r0   r>   Ú_get_anglesÚpirÕ   )r   r   rc   rá   r%   r˜   r™   r   rš   r›   r‹   ÚjÚkÚ	symmetricrH   rÞ   ÚaÚbÚcÚdr€   s   &f&$                 r   Úas_eulerrð   m  sE  ø€ ô 
˜Ó	€Bô ˆ3ƒx�1„}ÜÐ0°°°QÐ7Ó8Ð8Ü—’˜¨#Ó.°dÐ:€IÜ—’˜¨#Ó.°dÐ:€IßŸÜðØ�%ðó
ð 	
÷ ƒsÔ
2¬¨q¬Ó
2‡s‡s‚sÔ
2¬¨q¬Ó
2×2Ò2ÜÐJÈ3È%ÐPÓQÐQä�t‹_€FØ03·	±	´Ó<±¨1Ô# AÖ&±€DÐ<ß‰4 $¡t¨ t¥*€DØ�G€Aˆ!Ø‘€IßˆˆA��Ž	 A€Aà�:‰:�iˆ:Ó/€DØ�:‰:�q•u ¥Õ'¨1­5Õ1°QÕ6¸d¿j¹jÐQWˆ:ÓX€Dà
�‰�˜F•| T¨&¥\°D¸¸a¸µLÕ%@ÓA€AØ
�‰�˜C ˜F•| T¨#¨q¨&¥\°D¸¸a¸µLÀ4Õ4GÕ%GÓH€AØ
�‰�˜C ˜F•| T¨#¨q¨&¥\°D¸µLÕ%@ÓA€AØ
�‰�˜C ˜F•| dÕ*¨D°°a°­L¸4Õ,?À$ÀsÈAÀvÅ,Õ,NÓO€AäØ˜d§E¡E¨A¥I¨q°!°Q¸Ð;Ló€F÷  'Œ8�FÓÐ2¨FÐ2ùò# =s   Ã9J5c                ó`   € V ^8„  d   QhR\         R\         R\        R\        R\        R\         /# )r   r   r›   rŸ   rc   rá   r   r    )r   s   "r   r   r   ”  sD   € ÷ 2ñ 2Ü
ð2ä
ð2ô ð2ô ð	2ô ð2ô ñ2r   c                ó–  € \        V 4      pVR9   d   RpMVR9   d   RpM\        RV 24      hVP                  R,          ^8w  d   \        RVP                   R24      hVP                  R,          ^8w  d   \        R4      h\        VP                  RR V P                  RR 4      '       g'   \        RVP                   R	V P                   R
24      hV\	        VRRVR7      ,          pVP                  VR,          VR,          4      pVP                  VR,          VR,          4      pVR8¬  VR8¬  ,          p	\        V	4      '       d&   VP                  V	R,          VP                  V4      pM"VP                  V	4      '       d   \        R4      h\        V VR,          VR,          VR,          VV4      p
V'       d   \        V
4      p
V
# )r¢   TFr£   rä   r.   r¤   Nz2Expected `axes` to match number of rotations, got z
 axes and ú rotations.re   r¦   r§   r¨   r©   r4   r!   rª   r«   r¬   r3   )r   r=   rY   r   r   rz   r   r>   r?   r8   Ú_compute_davenport_from_quatrÕ   )r   r›   rŸ   rc   rá   r%   r™   Úvdot_ax0_ax1Úvdot_ax1_ax2Ú
is_invalidr€   s   &&&&$      r   Úas_davenportrø   ”  s¶  € ô 
˜Ó	€Bð Ð"Ô"Ø‰	Ø	Ð$Ô	$Ø‰	äð-Ø-2¨Gð5ó
ð 	
ð ‡z�z�"…~˜ÔÜÐ0°·±°¸AÐ>Ó?Ð?Ø‡z�z�"…~˜ÔÜÐ<Ó=Ð=Ü˜Ÿ™ C R˜¨$¯*©*°S°b¨/×:Ò:ÜØ@ÀÇÁÀð MØ—:‘:�,˜kð+ó
ð 	
ð ”. ¨B¸À"ÔEÕE€DØ—9‘9˜T )�_¨d°9­oÓ>€LØ—9‘9˜T )�_¨d°9­oÓ>€LØ $Ñ&¨<¸4Ñ+?Õ@€JÜ�Z× Ò Ø�x‰x˜
 ?Õ3°R·V±V¸TÓB‰Ø	�‰�
×	Ò	ÜÐ?Ó@Ð@ä)ØØˆY�ØˆY�ØˆY�ØØó€F÷ Ü˜&Ó!ˆØ€Mr   c                ó0   € V ^8„  d   QhR\         R\         /# r¼   rS   )r   s   "r   r   r   É  s   € ÷ 9ñ 9Œeð 9œñ 9r   c                 ó^   € \         P                  ! V 4      R,          P                  RRR7      # ).Tr    rx   r!   )r;   rE   Úmultiply)r   s   &r   Úinvrü   É  s%   € Ü�6Š6�$‹<˜Õ ×)Ñ)¨"°4Ð)Ó8Ð8r   c                ó0   € V ^8„  d   QhR\         R\         /# r¼   rS   )r   s   "r   r   r   Í  s   € ÷ ñ ”Eð œeñ r   c                 ó¦   € \        V 4      p\        V R,          RVR7      pVP                  V R,          4      p^VP                  W#4      ,          pV# ).©r   r%   rx   r!   r®   )r   r   r°   rÔ   )r   r%   Úsin_qÚcos_qr€   s   &    r   Ú	magnituder  Í  sH   € Ü	˜Ó	€BÜ˜4 �=¨r°bÔ9€EØ�F‰F�4˜•<Ó €EØ�—‘˜%Ó'Õ'€FØ€Mr   c          
      ób   € V ^8„  d   QhR\         R\         R\        R,          R\        R\         /# )r   r   Úotherr1   Nrc   r   )r   Úfloatr   )r   s   "r   r   r   Õ  s8   € ÷ ñ Ü
ðÜðÜ%*¨T¥\ðÜCGðä
ñr   c                 ób  € Vf$   V'       d   \         P                  ! R^R7       RpMV'       d   \        V4      p\        V P                  VP                  4      '       g-   \        RV P                  R R  RVP                  R R  R24      h\        V\        V 4      4      p\        V4      pWR8  # )NzEatol must be set to use the degrees flag, defaulting to 1e-8 radians.©Ú
stacklevelg:Œ0âŽyE>z5Expected broadcastable shapes in both rotations, got z rotations in first and z rotations in second object.r!   )	ÚwarningsÚwarnrh   r   rY   r=   r±   rü   r  )r   r  r1   rc   Úquat_resultr€   s   &&&&  r   Úapprox_equalr  Õ  sª   € ð ‚|ßÜ�MŠMØWØõð ‰ß	Ü˜‹~ˆä˜Ÿ™ U§[¡[×1Ò1ÜØCÀDÇJÁJÈsÐPRÀOÐCTð U&Ø&+§k¡k°#°2Ð&6Ð%7Ð7SðUó
ð 	
ô
 ˜u¤c¨$£iÓ0€KÜ�{Ó#€FØ‰=Ðr   c          	      ó”   € V ^8„  d   QhR\         R\        R,          RR\        ,          \        \        R3,          ,          R\         /# )r   r   ÚweightsNr   .r   )r   r   r9   Útuple)r   s   "r   r   r   í  sF   € ÷ <ñ <Ü
ð<ä˜Õð<ð ”�*”uœS #˜X•Õ
&ð<ô ñ	<r   c                 ó  a a€ \        S 4      p\        S 4      p\        S R VR7      pS P                  ^ ,          ^ 8X  d   \	        R4      h\        \        S P                  ^,
          4      4      pSf   VoM\        S\        4      '       d   S3o\        S\
        4      '       g   \	        R4      hSR8w  dc   \        S4      S P                  ^,
          ) 8  g"   \        S4      S P                  ^,
          8”  d    \	        RS RS P                  RR  R24      h\        \        \        V 3R lS 4       4      4      4      o\        S 4      pS R,          pVf   VP                  V4      V,          p	MàVP!                  WVR	7      pV^ 8  p
V'       g#   VP#                  V
4      '       d   \	        R
4      hV'       d   VP%                  W£P&                  V4      p\)        S P                  RR VP                  4      '       g*   \	        RVP                   RS P                  RR  R24      hVR,          V,          pVP                  V4      V,          p	\
        ;QJ d    . V3R lV 4       F  NK  	  5M! V3R lV 4       4      pVS,           pVP+                  W�V4      pVP                  R\-        V4       R,           pVP/                  VP1                  Wï4      RR7      p	VP2                  P5                  V	4      w  ppVR,          # )T©Úforce_floatingr%   z+Mean of an empty rotation set is undefined.Nz+`axis` must be None, int, or tuple of ints.zaxis z* is out of bounds for rotation with shape r.   c              3   óV   <"  € T F  qSP                   ^,
          ,          x € K   	  R# 5ir‡   )r-   )rŠ   rš   r   s   & €r   rŒ   Úmean.<locals>.<genexpr>  s   øé € Ð>¹°A §¡¨Q¥×/Ò/»ùs   ƒ&)r/   z`weights` must be non-negative.zDExpected `weights` to be broadcastable to rotation shape, got shape z for ró   c              3   ó8   <"  € T F  qS9  g   K  Vx € K  	  R # 5i)Nrˆ   )rŠ   r‹   r   s   & €r   rŒ   r  "  s   øé € Ð;¡˜A°d©]—a’a£ùs   ƒ�
r   rˆ   r!   ).Nr¥   r3   )r!   r­   r­   éýÿÿÿ©.r!   )r   r5   r   rY   r=   r  r“   r-   Ú
isinstancer9   ÚminÚmaxÚsortedrF   r   r@   r#   r8   r>   r?   r   Úmoveaxisr�   ÚmeanrÁ   r6   Úeigh)r   r  r   r%   r   r0   Úall_axesrI   Úquat_expandÚKÚneg_weightsÚweighted_quatÚ	keep_axesÚ
axes_orderÚK_reorderedÚ	new_shaperN   Úvs   f&f               r   r  r  í  s�  ù€ ô
 
˜Ó	€BÜ�t‹_€FÜ˜4°¸Ô<€EØ‡z�z�!…}˜ÔÜÐFÓGÐGô ”U˜4Ÿ9™9 q�=Ó)Ó*€HØ‚|Ø‰Ü	�Dœ#×	Ò	ØˆwˆÜ�dœE×"Ò"ÜÐFÓGÐGàˆr„z”s˜4“y T§Y¡Y°¥]Ð#3Ô3´s¸4³yÀDÇIÁIÐPQÅMÔ7RÜØ�D�6ÐCÀDÇJÁJÈsÐPRÀOÐCTÐTUÐVó
ð 	
ô ”œÔ>¹Ó>Ó>Ó?Ó@€Dä˜Ó€Dà�|Õ$€KØ‚Ø×Ñ Ó,¨{Õ:‰à—*‘*˜W¸&�*ÓAˆØ ‘kˆß˜Ÿ™˜{×+Ò+ÜÐ>Ó?Ð?ßð —h‘h˜{¯F©F°GÓ<ˆGä˜TŸZ™Z¨¨˜_¨g¯m©m×<Ò<ÜØVØ—=‘=�/  t§z¡z°#°2 Ð&7°{ðDóð ð   Õ0°;Õ>ˆØ×Ñ Ó.°Õ<ˆ÷ ”Ô;¡Ó;—‘Ô;¡Ó;Ó;€IØ˜TÕ!€JØ—+‘+˜a¨XÓ6€Kà×!Ñ!Ð"2¤C¨	£NÐ3°jÕ@€IØ
�‰�—
‘
˜;Ó2¸ˆÓ<€AØ�9‰9�>‰>˜!Ó�D€A€qØˆW�:Ðr   c                ó¬   € V ^8„  d   QhR\         R\         R,          R\         R,          R\        \         \         R,          \         R,          3,          /# )r   r   ÚleftNÚrightr   ©r   r  )r   s   "r   r   r   ,  sR   € ÷ H*ñ H*Ü
ðH*ä
�$�,ðH*ô �4�<ðH*ô Œ5”%˜$•,¤¨¥Ð,Õ-ñ	H*r   c                 ó6  € Vf
   Vf   V R R 3# \        V 4      p\        P                  ! V ^VR7      p Vf   VP                  V 4      pVf   VP                  V 4      pT p\	        WC4      w  rV\	        W4      w  rx\	        W#4      w  ršVR,          VR,          ,          V	R,          ,          pVP                  VR,          V
R,          ,          RR7      pVR,          VR,          ,          pVP                  VR,          V
R,          ,          RR7      pVR,          VR,          ,          pVP                  VR,          VR,          ,          RR7      pV	R,          VR	,          ,          pVR,          pVR,          pVP                  P                  VV4      pVP                  VR
,          V
R,          ,          RR7      pVP                  W½,
          V,
          V,
          V,
          4      pVP                  VP                  V^^ 4      VP                  ^,          R34      pVP                  VP                  VVP                  ^ ,          R34      ^R7      pVV
P                  ^ ,          ,          pVV
P                  ^ ,          ,          pVP                  VP                  VP                  R,          4      R4      pVP                  VR4      pVVV3,          pVP                  VR4      pVVV3,          p\        V\        WB4      4      pVf   R pVf   R pVVV3# )Nr,   r   ).r¥   NN).Nr¥   N).NNr¥   ).r¥   Nr¥   ).Nr¥   r¥   r!   ).r¥   r¥   N).r¥   r¥   Nr¥   ).NNr¥   r¥   )r   r!   )r!   r   )r   r;   r<   Ú	ones_likeÚ_split_rotationÚsumr6   Úcrossr°   rÁ   r  rY   rW   Úaranger±   )r   r*  r+  r%   ÚpÚpsÚpvÚlsÚlvÚrsÚrvÚterm1ÚprvÚterm2ÚlrvÚterm3ÚlpvÚterm4Úlv_expandedÚpv_expandedÚcross_lpÚterm5ÚqsÚmax_indÚ	left_bestÚ
right_bestÚall_idxÚleft_idxÚ	right_idxÚreduceds   &&&                           r   ÚreducerM  ,  sÊ  € ð
 ‚|˜šØ�T˜4ÐÐô 
˜Ó	€BÜ�>Š>˜$ Q¨2Ô.€DØ‚|Ø�|‰|˜DÓ!ˆØ‚}Ø—‘˜TÓ"ˆð 	€AÜ˜QÓ#�F€BÜ˜TÓ&�F€BÜ˜UÓ'�F€Bð Ð!Õ" RÐ(:Õ%;Õ;¸bÐASÕ>TÕT€Eà
�&‰&��OÕ$ r¨/Õ':Õ:Àˆ&Ó
D€CØÐ!Õ" S¨Õ%9Õ9€Eà
�&‰&��OÕ$ r¨/Õ':Õ:Àˆ&Ó
D€CØÐ!Õ" S¨Õ%9Õ9€Eà
�&‰&��OÕ$ r¨/Õ':Õ:Àˆ&Ó
D€CØÐ!Õ" S¨Õ%9Õ9€Eð
 �_Õ%€KØ�_Õ%€KØ�y‰y�‰˜{¨KÓ8€Hà�F‰F�8Ð.Õ/°"Ð5JÕ2KÕKÐRTˆFÓU€Eà	�‰�• Õ%¨Õ-°Õ5Ó	6€BØ	�‰�B—K‘K  A qÓ)¨B¯H©H°Q­K¸Ð+<Ó	=€Bð �i‰i˜Ÿ
™
 2¨¯©°­°RÐ'8Ó9ÀˆiÓB€GØ˜2Ÿ8™8 A�;Õ&€IØ˜2Ÿ8™8 A�;Õ&€Jð �j‰j˜Ÿ™ 4§:¡:¨b¥>Ó2°GÓ<€GØ�z‰z˜) WÓ-€HØ�˜'Ð!Õ"€DØ—
‘
˜: wÓ/€IØ�)˜WÐ$Õ%€Eô ˜4¤¨aÓ!7Ó8€Gà‚|Øˆ	Ø‚}Øˆ
Ø�I˜zÐ)Ð)r   c                óH   € V ^8„  d   QhR\         R\         R\        R\         /# )r   r   ÚpointsÚinverser   r   )r   s   "r   r   r   w  s(   € ÷ "ñ "”ð "œuð "¬tð "Äñ "r   c                 óP  € \        V 4      p\        V 4      pVR,          p\        VP                  VP                  4      '       g-   \	        RV P                  RR  RVP                  RR  R24      hV'       d    VP                  V4      V,          R,          # WA,          R,          # ).NzCannot broadcast z rotations to ú	 vectors.rw   r!   r¾   )r   rÐ   r   rY   r=   r@   )r   rO  rP  r%   Úmats   &&&  r   ÚapplyrT  w  sŸ   € Ü	˜Ó	€BÜ
�D‹/€Cð �IÕ€FÜ˜Ÿ™ F§L¡L×1Ò1ÜØ §
¡
¨3¨B Ð0°¸v¿|¹|ÈCÈRÐ?PÐ>Qð Rð ó
ð 	
÷ à×#Ñ# CÓ(¨6Õ1°6Õ:Ð:Ø�L˜&Õ!Ð!r   c                ó‚   € V ^8„  d   QhR\         R\         R\        \        ,          \        ,          R,          R\         /# )r   r   ÚvalueÚindexerNr   )r   r9   Úslicer   )r   s   "r   r   r   ˆ  s:   € ÷ 1ñ 1Ü
ð1Üð1Ü(+¬e­´lÕ(BÀTÕ(Ið1ä
ñ1r   c                 ó^   € \         P                  ! V 4      VR 3,          P                  V4      # ).)r;   rE   rF   )r   rV  rW  s   &&&r   ÚsetitemrZ  ˆ  s&   € ô �6Š6�$‹<˜ ˜Õ%×)Ñ)¨%Ó0Ð0r   c                óŽ   € V ^8„  d   QhR\         R\         R\         R,          R\        R\        \         \         \         3,          /# )r   rì   rí   r  NÚreturn_sensitivityr   )r   r   r  )r   s   "r   r   r   Ž  sK   € ÷ ^$ñ ^$Üð^$Üð^$Ü!&¨¥ð^$ÜJNð^$ä
Œ5”%œÐÕñ^$r   c                 óÈ  € \        V 4      p\        WR VR7      pVP                  WR7      pVP                  WR7      p\        P                  ! V^VR7      p \        P                  ! V^VR7      pV P
                  R,          ^8w  d   \        RVP
                   24      hVP
                  R,          ^8w  d   \        RVP
                   24      hV P
                  VP
                  8w  d'   \        RVP
                   RVP
                   R24      hV P                  ^8”  g   VP                  ^8”  d'   \        R	VP
                   RVP
                   R24      hV P
                  ^ ,          pVf)   VP                  V\        V 4      V P                  R
7      pMçVP                  V\        V 4      V P                  R
7      pVP                  ^8w  d   \        RVP
                   R24      hV^8”  d<   VP
                  ^ ,          V8w  d$   \        RVP
                  ^ ,           RV R24      hV^ 8  p	\        V	4      '       g#   VP                  V	4      '       d   \        R4      hVP                  W”P                  V4      pV^8X  d   VP                  R .4      MW$P                  8H  p
VP!                  VP#                  W P                  4      4      p\        V4      '       g-   V^8”  d   \        R4      hV^8X  d   V'       d   \        R4      hVP                  V^8„  VP                  V4      pVP                  V
RR7      p\        V4      '       dZ   \%        WV4      w  rÞp\'        WV4      w  pppVP                  VVV4      pVP                  VVV4      pVP                  VVV4      pM6VP                  V4      '       d   \'        WV4      w  rÞpM\%        WV4      w  rÞpWÞV3# )Tr  rg   r,   z5Expected input `a` to have shape (3,) or (N, 3), got z5Expected input `b` to have shape (3,) or (N, 3), got z5Expected inputs `a` and `b` to have same shapes, got z and z respectively.z>Expected inputs `a` and `b` to have shape (3,) or (N, 3), got rÜ   z2Expected `weights` to be 1 dimensional, got shape r.   zRExpected `weights` to have number of values equal to number of input vectors, got z values and rR  z)`weights` may not contain negative valuesz#Only one infinite weight is allowedzKCannot return sensitivity matrix with an infinite weight or one vector pairr   r!   )r   r   r#   r;   r<   rY   r=   r-   Úonesr5   r0   r   r8   r>   r?   Úinfr0  ÚastypeÚ_align_vectorsÚ_align_vectors_fixed)rì   rí   r  r\  r%   r0   Ú
a_originalÚ
b_originalÚNÚnegative_weightsÚweight_is_infÚn_infÚ
inf_branchÚq_optÚrssdÚsensitivityÚ	q_opt_infÚrssd_infÚsensitivity_infs   &&&&               r   Úalign_vectorsrp  Ž  sœ  € ô 
˜Ó	€Bä˜1°¸Ô<€EØ—‘˜A�Ó+€JØ—‘˜A�Ó+€JÜ�Š�z¨¨bÔ1€AÜ�Š�z¨¨bÔ1€AØ‡w�wˆr…{�aÔÜØCÀJ×DTÑDTÐCUÐVó
ð 	
ð 	‡w�wˆr…{�aÔÜØCÀJ×DTÑDTÐCUÐVó
ð 	
ð 	‡w�w�!—'‘'ÔÜðØ×%Ñ%Ð& e¨J×,<Ñ,<Ð+=¸^ðMó
ð 	
ð 	‡v�v�„z�Q—V‘V˜a”ZÜØLØ×ÑÐ   j×&6Ñ&6Ð%7°~ðGó
ð 	
ð 	
�‰��
€Að ‚Ø—'‘'˜!¤I¨a£L¸¿¹�'Ó@‰à—*‘*˜W¬Y°q«\ÀÇÁ�*ÓIˆØ�<‰<˜1ÔÜØDÀWÇ]Á]ÀOÐSTÐUóð ð ˆqŒ5�g—m‘m AÕ&¨!Ô+Üð Ø '§¡¨aÕ 0Ð1°¸a¸SÀ	ðKóð ð # Q™;ÐÜÐ-×.Ò.°2·6±6Ð:J×3KÒ3KÜÐHÓIÐIØ—(‘(Ð+¯V©V°WÓ=ˆð +,¨q¬&�B—J‘J ˜vÔ&°gÇÁÑ6G€MØ�F‰F�2—9‘9˜]¯G©GÓ4Ó5€Eô ˜×ÒØ�1Œ9ÜÐBÓCÐCØ�AŒ:×,Üð5óð ð
 �h‰h�u˜q‘y "§&¡&¨'Ó2€Gà—‘˜¨B�Ó/€Jô �Z× Ò Ü#1°!¸Ó#@Ñ ˆ�[Ü/CÀAÈ'Ó/RÑ,ˆ	�8˜_Ø—‘˜ Y°Ó6ˆØ�x‰x˜
 H¨dÓ3ˆØ—h‘h˜z¨?¸KÓH‰à�6‰6�*×ÒÜ';¸AÀ'Ó'JÑ$ˆE™ä'5°a¸GÓ'DÑ$ˆE˜Ø˜Ð#Ð#r   c                ót   € V ^8„  d   QhR\         R\         R\         R\        \         \         \         3,          /# ©r   rì   rí   r  r   r,  )r   s   "r   r   r   ï  s4   € ÷ $ñ $”eð $¤ð $´ð $¼%ÄÄuÌeÐ@SÕ:Tñ $r   c           
      ól  € \        V 4      p\        V 4      pVR,          V ,          P                  V,          pVP                  P	                  V4      w  rgpVP                  P                  Wh,          4      ^ 8  p	\        P                  ! V4      R,          P                  VP                  W—R,          ) VR,          4      4      p\        P                  ! V4      R,          P                  VP                  W–R,          ) VR,          4      4      pWh,          p
VP                  W#P                  V^,          V ^,          ,           RR7      ,          RR7      ^VP                  VRR7      ,          ,
          pVP                  VP                  W³P                  ^VR7      4      4      R,          pVR,          VR	,          ,           VR	,          VR
,          ,           ,          VR
,          VR,          ,           ,          pVR,          VR	,          ,          VR	,          VR
,          ,          ,           VR
,          VR,          ,          ,           pVP                  ^V P                  VR7      pVP!                  V4      V,          Wï,          WUP                  ,          ,           ,          p\#        V
4      pVVV3# )r¥   r   r   r/   )r¥   Nr!   r  ).r¥   r!   r¾   r¿   rÀ   )r   r5   ÚmTr6   rD   r7   r;   rE   rF   r>   r0  ÚsqrtÚmaximumr¯   rA   r0   r  rG   )rì   rí   r  r%   r   ÚBÚuÚsÚvhÚneg_detÚCÚssdrk  ÚzetaÚkapparA   rl  rj  s   &&&               r   ra  ra  ï  s  € Ü	˜Ó	€BÜ�q‹\€FØ	�Õ	˜AÕ	×!Ñ! AÕ%€AØ�y‰y�}‰}˜QÓ�H€Aˆ"ð �i‰i�m‰m˜A�FÓ# aÑ'€GÜ�Šˆq‹	�'Õ×Ñ˜rŸx™x¨°Gµ*°¸aÀ½jÓIÓJ€AÜ�Šˆq‹	�*Õ×!Ñ! "§(¡(¨7°zµ]°NÀAÀjÅMÓ"RÓS€Aà	�€Að
 �&‰&�Ÿ6™6 ! Q¥$¨¨A­¥+°B˜6Ó7Õ7¸bˆ&Ó
AÀAÈÏÉØ	�ð IOó Iõ Eõ €Cð �7‰7�2—:‘:˜c§8¡8¨A°f 8Ó#=Ó>Ó?ÀÕG€Dð ˆf�I˜˜&�	Õ! a¨¥i°!°Fµ)Õ&;Õ<ÀÀ&Å	ÈAÈfÍIÕ@UÕV€DØˆf�I˜˜&�	Õ! A f¥I°°&µ	Õ$9Õ9¸A¸f½IÈÈ&Í	Õ<QÕQ€EØ
�&‰&�˜!Ÿ'™'¨&ˆ&Ó
1€CØ—'‘'˜'Ó" TÕ)¨U­[¸1¿t¹t½8Õ-CÕD€KÜ# AÓ&€EØ�$˜Ð#Ð#r   c                ót   € V ^8„  d   QhR\         R\         R\         R\        \         \         \         3,          /# rr  r,  )r   s   "r   r   r     s>   € ÷ J:ñ J:ÜðJ:ÜðJ:Ü!&ðJ:ä
Œ5”%œÐÕñJ:r   c                 ó˜  € \        V 4      p\        V 4      pV P                  ^ ,          pV^8X  d   VP                  R.VR7      MW#P                  8H  pVP                  VP                  WcP                  4      4      p\        V4      '       g   \        V4      pVP                  W) ^ R7      pVP                  W) ^ R7      p	VP                  W') ^ R7      p
VR,          R,          pV	R,          R,          p\        VRRVR7      p\        VRRVR7      p\        V4      '       g@   VP                  V^ 8H  4      '       g   VP                  V^ 8H  4      '       d   \        R4      h\        P                   ! V4      V^ 8H  ,          P#                  VP$                  4      p\        P                   ! V4      V^ 8H  ,          P#                  VP$                  4      pW½,          pWÎ,          pVP&                  P)                  VR,          VR,          4      p\        VRVR7      pVP+                  VVP-                  VR,          VR,          ,          RR7      4      pRpVP                  . ROVP.                  VR	7      pVP0                  V,
          V8  pVP3                  VP5                  VR,          4      4      pVP7                  VP9                  V^8H  VR,          VP9                  V^8H  VR,          ) ^ 4      4      VP9                  V^8H  VR,          VP9                  V^ 8H  VR,          ) ^ 4      4      VP9                  V^ 8H  VR,          VP9                  V^8H  VR,          ) ^ 4      4      .4      pVP9                  V^ 8H  VV4      pVP9                  V\;        V\        VVR
7      ,          VP0                  ,          4      V4      pVP9                  VVP0                  V,
          V4      pVP9                  VV) V4      pVV,          pVP5                  V4      V8  pV^V^,          ,           VV,          ^,          R,          ,           ,          pVVP                  VVP.                  R7      ,           pVV,          VP=                  V4      ,          pVP9                  VVV4      p\?        \;        V4      V4      pVR,          pV	R,          pV
R,          p\A        VV4      p VP&                  PC                  VP&                  P)                  V V4      V4      p!VP&                  PC                  V V4      VP&                  PC                  V V4      VP&                  PC                  VV4      ,          ,
          p"VP+                  VP-                  VV!,          4      VP-                  VV",          4      4      p#\;        V#VR,          ,          4      p$V^8X  d   TM\?        V$V4      p%V^8„  V^ ,          VP                  8H  ,          V,          p&\        P                   ! VV&4      P#                  ^ RVR7      p'\A        V%V4      p(VPE                  VP-                  V'V V(,
          ^,          ,          4      4      p)VP                  VPG                  V4      RR7      p&VP9                  V&VP$                  V%4      p%V%V)VP                  VP$                  VR7      3# )r+   Tr   )Úshiftr   re   z(Cannot align zero length primary vectorsrÿ   r   rf   r/   )r%   ih  rg   ºr   NN)r   r%   )r+   .)N.r!   rª   )ç        r„  r„  rÛ   )r+   r   )r+   r   )r+   r+   )rƒ  .)$r   r5   rY   r#   r_  rW   r`  Úuint8r
   r9   r"   r   r   r8   r=   r;   rE   rF   r?   r6   r1  rÔ   r0  r0   rè   Úargminr°   rV   r>   rs   ri   r±   rT  rz   ru  Úisnan)*rì   rí   r  r%   r   re  rg  Úinf_idxÚa_sortedÚb_sortedÚweights_sortedÚa_priÚb_priÚ
a_pri_normÚ
b_pri_normr1  Ú
cross_normÚthetaÚ	toleranceÚq_flipÚflipr‹   Úr_componentsÚrÚtheta2ro   Úr_small_scaleÚr_large_scaleÚq_priÚa_secÚb_secÚweights_secÚc_secÚsin_termÚcos_termÚphiÚq_secrj  rH   Úweights_inf_zeroÚa_estrk  s*   &&&                                       r   rb  rb    sœ  € ô 
˜Ó	€BÜ�q‹\€FØ	�‰��
€AØ9:¸a¼�B—J‘J ˜v¨f�JÔ5ÀW×PVÑPVÑEV€Mð �i‰i˜Ÿ	™	 -·±Ó:Ó;€Gô �"�:Š:Ü�g“,ˆØ�w‰w�q ¨qˆwÓ1€HØ�w‰w�q ¨qˆwÓ1€HØ—W‘W˜W¨H¸1�WÓ=€Nà�VÕ˜YÕ'€EØ�VÕ˜YÕ'€EÜ ¨B¸À"ÔE€JÜ ¨B¸À"ÔE€JÜ˜×$Ò$Ø�6‰6�* ‘/×"Ò" b§f¡f¨Z¸1©_×&=Ò&=ÜÐGÓHÐHô —’˜
Ó# J°!¡OÕ4×8Ñ8¸¿¹Ó@€JÜ—’˜
Ó# J°!¡OÕ4×8Ñ8¸¿¹Ó@€JàÕ€EØÕ€Eð �I‰I�O‰O˜E )Õ,¨e°IÕ.>Ó?€EÜ ¨B°2Ô6€JØ�H‰H�Z §¡¨¨iÕ(8¸5ÀÕ;KÕ(KÐRT Ó!UÓV€EØ€IØ�Z‰ZÒ,°E·K±KÈˆZÓO€Fð �5‰5�5�=˜9Ñ$€Dð 	�	‰	�"—&‘&˜˜yÕ)Ó*Ó+€Að —8‘8à�H‰H�Q˜!‘V˜U 4�[¨"¯(©(°1¸±6¸EÀ$½K¸<ÈÓ*KÓLØ�H‰H�Q˜!‘V˜U 4�[¨"¯(©(°1¸±6¸EÀ$½K¸<ÈÓ*KÓLØ�H‰H�Q˜!‘V˜U 4�[¨"¯(©(°1¸±6¸EÀ$½K¸<ÈÓ*KÓLð	
ó€Lð 	�‰�˜q‘ ,°Ó6€Aà�X‰X�dœK¨¬N¸1ÀÔ,DÕ(DÀrÇuÁuÕ(LÓMÈvÓV€FØ�H‰H�T˜2Ÿ5™5 5�=¨%Ó0€EØ�H‰H�T˜E˜6 5Ó)€Eð �U�]€FØ—&‘&˜“- )Ñ+€KØ˜Q ¨!¥�^¨f°v­oÀÕ.AÀCÕ.GÕGÕH€Mð
 �B—J‘J˜{°%·+±+�JÓ>Õ>€EØ˜E•M B§F¡F¨5£MÕ1€MØ
�‰�˜m¨]Ó;€AÜœ Q›¨Ó0€Eð
 �WÕ€EØ�WÕ€EØ  Õ$€Kô �%˜Ó€Eð �y‰y×Ñ §	¡	§¡°°uÓ =¸uÓE€HØ�y‰y×Ñ  uÓ-Ø
�	‰	×Ñ˜ Ó&¨¯©×)9Ñ)9¸%ÀÓ)GÕGõ€Hð �(‰(�2—6‘6˜+¨Õ0Ó1°2·6±6¸+ÈÕ:PÓ3QÓ
R€CÜ˜˜e F�mÕ+Ó,€Eð ˜!”V‰E¤¨e°UÓ!;€Eð
 �‰U�w˜q•z R§V¡VÑ+Õ,°Õ=€Dô —v’v˜g tÓ,×0Ñ0°¸À"Ð0ÓEÐÜ�%˜‹O€EØ�7‰7�2—6‘6Ð*¨a°%­i¸AÕ-=Õ=Ó>Ó?€Dà�6‰6�"—(‘(˜7Ó#¨"ˆ6Ó-€DØ�H‰H�T˜2Ÿ6™6 5Ó)€EØ�$˜Ÿ
™
 2§6¡6°&˜
Ó9Ð9Ð9r   c                óR   € V ^8„  d   QhR\         R\        \         ,          R\         /# )r   r   Únr   )r   r  )r   s   "r   r   r   ž  s%   € ÷ ,ñ ,Œeð ,œ¤�ð ,¬%ñ ,r   c                 ó¶  € \        V 4      p\        V 4      p\        V4      '       dH   VP                  R8X  d   V^ ,          pMVP                  ^ 8w  d   \        R4      h\        WRVR7      w  r\        V4      '       dÃ   \        V\        V 4      ,          4      pVP                  . V P                  RR O^N5V P                  VR7      p\        P                  ! V4      R,          P                  ^4      pVP                  V^ 8H  WT4      pVP                  VR8H  \!        V 4      V4      pVP                  V^8H  W4      pV# V^ 8X  d]   VP                  . V P                  RR O^N5V P                  VR7      p\        P                  ! V4      R,          P                  ^4      # VR8X  d   \!        V 4      # V^8X  d   V # \        V\        V 4      ,          4      # )	r   zArray exponent must be a scalarTr  Nr/   )r   r!   r®   )r   r5   r   rY   r-   r=   r	   r   rs   rØ   r¯   r0   r;   rE   rF   r>   rü   )r   r¦  r%   r   ÚresultÚidentitys   &&    r   Úpowrª  ž  s“  € Ü	˜Ó	€BÜ�t‹_€Fô ˜×ÒØ�7‰7�dŒ?Ø�!•‰AØ�V‰V�qŒ[ÜÐ>Ó?Ð?Ü˜T°T¸bÔA‰ˆô �Q×ÒÜ˜Q¤¨4£Õ0Ó1ˆà—8‘8Ð1˜dŸj™j¨¨"˜oÐ1¨qÑ1¸¿¹ÈF�8ÓSˆÜ—6’6˜(Ó# FÕ+×/Ñ/°Ó2ˆØ—‘˜!˜q™& (Ó3ˆØ—‘˜!˜r™'¤3 t£9¨fÓ5ˆØ—‘˜!˜q™& $Ó/ˆØˆØˆA„vØ—8‘8Ð1˜dŸj™j¨¨"˜oÐ1¨qÑ1¸¿¹ÈF�8ÓSˆÜ�vŠv�hÓ Õ'×+Ñ+¨AÓ.Ð.ØˆB„wÜ�4‹yÐØˆA„vØˆÜ�qœ9 T›?Õ*Ó+Ð+r   c                ó0   € V ^8„  d   QhR\         R\         /# r¼   rS   )r   s   "r   r   r   ¾  s   € ÷ ñ ¤ð ¬%ñ r   c                 óþ   € \        V 4      p\        V RRVR7      pV^ 8H  p\        V4      '       d%   VP                  W1P                  V 4      p W,          # VP                  V4      '       d   \        R4      hW,          # )r   Tre   z&Found zero norm quaternions in `quat`.r!   )r   r   r   r>   r?   r8   r=   )r   r%   Ú	quat_normÚ	zero_norms   &   r   r$   r$   ¾  su   € Ü	˜Ó	€BÜ˜t¨"°tÀÔC€IØ˜Q‘€IÜ�Y×ÒØ�x‰x˜	§6¡6¨4Ó0ˆð ÕÐð 
�‰�	×	Ò	ÜÐAÓBÐBØÕÐr   c                ó0   € V ^8„  d   QhR\         R\         /# r¼   rS   )r   s   "r   r   r   É  s   € ÷ 	2ñ 	2œ%ð 	2¤Eñ 	2r   c                 ó\  € \        V 4      pV R,          ^ 8  pV R,          ^ 8H  pW#V R,          ^ 8  ,          ,          pW0R,          ^ 8H  ,          pW$V R,          ^ 8  ,          ,          pW@R,          ^ 8H  ,          pW%V R,          ^ 8  ,          ,          pVP                  VR,          V ) V 4      # ).r®   r¾   r¿   rÀ   rw   )r   r>   )r   r%   rH   Úzero_wÚzero_wxÚzero_wxys   &     r   r¹   r¹   É  s¥   € Ü	˜Ó	€BØ��<˜!Ñ€DØ�&�\˜QÑ€FØ˜T &�\¨AÑ-Õ.Õ/€DØ˜V�¨Ñ)Õ*€GØ˜d 6�l¨QÑ.Õ/Õ0€DØ˜v�,¨!Ñ+Õ,€HØ˜t F�|¨aÑ/Õ0Õ1€DØ�8‰8�D˜•O d U¨DÓ1Ð1r   c                ó0   € V ^8„  d   QhR\         R\        /# )r   r   r   )r�   r9   )r   s   "r   r   r   Õ  s   € ÷ Nñ N¤#ð N¬#ñ Nr   c                 óT   € V R 8X  d   ^ # V R8X  d   ^# V R8X  d   ^# \        RV  24      h)rš   rÂ   rÃ   z.Expected axis to be from ['x', 'y', 'z'], got )r=   r   s   &r   r•   r•   Õ  s3   € Øˆs„{ÙØ	�ŒÙØ	�ŒÙÜ
ÐEÀdÀVÐLÓ
MÐMr   c                ól   € V ^8„  d   QhR\         R\         R\         R\         R\        R\        R\         /# )r   r   Ún1Ún2Ún3r™   rá   r   r   )r   s   "r   r   r   ß  sN   € ÷ )ñ )Ü
ð)äð)ô 	ð)ô 	ð	)ô
 ð)ô ð)ô ñ)r   c                 óÒ  € \        V 4      pV'       d   W3MW13w  rVP                  P                  W4      pVP                  VP	                  W74      VP	                  W14      4      pV^ 8  p	VP                  V	R,          V) V4      pVP                  W˜) V4      pVP                  V	R,          V) V4      pT	p
VP                  VP                  V^,          4      R,          V,          VP                  V^,          4      R,          3RR7      p\        W°4      pVR,          pVP                  P	                  VR,          V4      pVP                  P	                  VR,          V4      pVP                  P	                  VR,          V4      p\        VR^W�WïVV4	      p\        P                  ! V4      R,          P                  VP                  V
VR,          ) VR,          4      4      pV# )r+   r   Frw   r!   r®   rx   r¿   )r   r6   r1  rÔ   rz   r>   rj   ri   rk   r±   rç   r;   rE   rF   )r   r·  r¸  r¹  r™   rá   r%   Ún_crossÚlambrH   Úcorrect_setÚ	quat_lambÚq_transrì   rí   rî   rï   r€   s   &&&&&&            r   rô   rô   ß  s¤  € ô 
˜Ó	€Bß"ˆb‰X¨¨�F€Bà�i‰i�o‰o˜bÓ%€GØ�8‰8�B—I‘I˜bÓ*¨B¯I©I°bÓ,=Ó>€Dð �!‰8€DØ	�‰�$�y•/ B 3¨Ó	+€BØ�8‰8�D˜% Ó&€DØ�h‰h�t˜I•¨¨°'Ó:€GØ€Kà—	‘	Ø	�‰��q•Ó	˜)Õ	$ rÕ	)¨2¯6©6°$¸µ(Ó+;¸IÕ+FÐGÈbð ó €Iô ˜9Ó+€GØ��€AØ
�	‰	×Ñ˜ Õ)¨2Ó.€AØ
�	‰	×Ñ˜ Õ)¨2Ó.€AØ
�	‰	×Ñ˜ Õ)¨7Ó3€Aä˜ E¨1¨d°q¸QÐ@QÓR€FÜ�VŠV�F‹^˜FÕ#×'Ñ'Ø
�‰�˜v f�~˜o¨v°f­~Ó>ó€Fð €Mr   c                ó^   € V ^8„  d   QhR\         \        ,          R\        R\        R\        /# )r   r›   r€   r˜   r   )Úlistr9   r   r   )r   s   "r   r   r     s-   € ÷ ñ ¤4¬¥9ð ´eð Ìð ÔQVñ r   c                 ó  € \        V4      p\        V4      p\        V ^ ,          VR,          WCR7      p\        ^\	        V 4      4       F>  p\        W,          VRV3,          WCR7      pV'       d   \        WW4      M
\        Wu4      pK@  	  V# )r+   .)r   r%   r¾   )r   r5   Ú_make_elementary_quatr“   r�   r±   )r›   r€   r˜   r%   r   r   r‹   Úax_quats   &&&     r   r–   r–     ss   € Ü	˜Ó	 €BÜ�vÓ€FÜ   a¥¨&°­.ÀÔO€DÜ�1”c˜$“iÖ ˆÜ'¨­°¸¸Q¸µÈÔVˆß.7Œ|˜DÔ*¼\È'Ó=XŠñ !ð €Kr   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   r   rl   r   )r9   r   )r   s   "r   r   r     s!   € ÷ ñ ¤ð ¬Eð Ä%ñ r   c                 ól  € VP                  . VP                  O^N5VP                  VR7      p\        P                  ! V4      R,          P                  VP                  VR,          4      4      p\        P                  ! V4      RV 3,          P                  VP                  VR,          4      4      pV# )r­   r/   .rÓ   r®   )r¯   rY   r0   r;   rE   rF   rk   ri   )r   rl   r   r%   r   s   &&&& r   rÃ  rÃ    s†   € Ø�8‰8Ð%�e—k‘kÐ% 1Ñ%¨U¯[©[Àˆ8ÓH€DÜ�6Š6�$‹<˜Õ×#Ñ# B§F¡F¨5°3­;Ó$7Ó8€DÜ�6Š6�$‹<˜˜T˜	Õ"×&Ñ& r§v¡v¨e°c­kÓ':Ó;€DØ€Kr   c                ó�   € V ^8„  d   QhR\         R\         R\        R\        R\        R\        R\        R\        R	\         R
\        /
# )r   r™   rë   rÞ   r¼  rì   rí   rî   rï   rá   r   )r   r9   r  r   )r   s   "r   r   r     sl   € ÷ ;ñ ;Üð;äð;ô ð;ô ð	;ô
 ð;ô ð;ô ð;ô ð;ô ð;ô ñ;r   c	           
      ó  € \        V4      p	\        V4      p
R pV	P                  WT4      pV	P                  Wv4      pV	P                  . VP                  O^N5VP
                  V
R7      p\        P                  ! V4      R,          P                  ^V	P                  V	P                  Wg4      V	P                  WE4      4      ,          4      pV '       d   ^ M^pV '       d   ^M^ pV	P                  VR,          4      V8*  pV	P                  VR,          V	P                  ,
          4      V8*  pVV,          ( pV'       gB   \        V4      '       g1   V	P                  V( 4      '       d   \        P                  ! R^R7       T	P!                  T^V,          ^V,          V '       d   RM^,          4      p\        P                  ! V4      R,          P                  V4      pV	P!                  VWÍ,
          VRV3,          4      p\        P                  ! V4      RV3,          P                  V4      pV	P!                  VWÍ,           VRV3,          4      pV'       gD   VV,          p\        P                  ! V4      R,          P                  VR,          V,
          4      p\        P                  ! V4      RV3,          P                  V4      pWéP                  ,           ^V	P                  ,          ,          V	P                  ,
          pV# )r¦   r/   .zlGimbal lock detected. Setting third angle to zero since it is not possible to uniquely determine all angles.r  r¿   r!   r¾   )r   r5   rÔ   r¯   rY   r0   r;   rE   rF   Úhypotr°   rè   r   r8   r	  r
  r>   )r™   rë   rÞ   r¼  rì   rí   rî   rï   rá   r%   r   ÚepsÚhalf_sumÚ	half_diffr€   Úangle_firstÚangle_thirdÚcase1Úcase2Úcase0Úa0Úa1Úa3s   &&&&&&&&&              r   rç   rç     sA  € ô 
˜Ó	€BÜ�q‹\€FØ
€CØ�x‰x˜‹~€HØ—‘˜“€Ið �X‰X�m˜Ÿ™�m ‘m¨1¯7©7¸6ˆXÓB€Fä�VŠV�F‹^˜FÕ#×'Ñ'¨¨B¯H©H°R·X±X¸a³^ÀRÇXÁXÈaÃ^Ó,TÕ(TÓU€Fç ‘! a€Kß ‘! a€Kð �F‰F�6˜&•>Ó" cÑ)€EØ�F‰F�6˜&•> B§E¡EÕ)Ó*¨cÑ1€EØ�e�mÐ€Eß¤]°5×%9Ò%9¸b¿f¹fÀeÀV¿nºnÜ�Šðð õ		
ð 
�‰�%˜˜X� q¨9¥}¿i¹ÈQÕ'OÓ	P€BÜ�VŠV�F‹^˜FÕ#×'Ñ'¨Ó+€Fð 
�‰�%˜Õ-¨v°c¸;Ð6FÕ/GÓ	H€BÜ�VŠV�F‹^˜C Ð,Õ-×1Ñ1°"Ó5€Fð 
�‰�%˜Õ-¨v°c¸;Ð6FÕ/GÓ	H€BßØ�$�YˆÜ—’˜“ Õ'×+Ñ+¨F°6­N¸TÕ,AÓBˆÜ�VŠV�F‹^˜C Ð,Õ-×1Ñ1°"Ó5€Fà—u‘u�n  R§U¡U¥Õ+¨b¯e©eÕ3€FØ€Mr   c                ó<   € V ^8„  d   QhR\         R\         R\         /# )r   r3  rœ   r   rS   )r   s   "r   r   r   Z  s!   € ÷ ñ ”Eð œeð ¬ñ r   c                 óö  € \        V 4      pVP                  P                  V R,          VR,          4      pV R,          VR,          ,          VR,          V R,          ,          ,           VR,          ,           pV R,          VR,          ,          VR,          V R,          ,          ,           VR,          ,           pV R,          VR,          ,          VR,          V R,          ,          ,           VR,          ,           pV R,          VR,          ,          V R,          VR,          ,          ,
          V R,          VR,          ,          ,
          V R,          VR,          ,          ,
          pVP                  WEWg.RR7      pV# ).r   rx   r®   r¾   r¿   rÀ   r!   )r   r6   r1  rV   )	r3  rœ   r%   r1  ÚqxÚqyÚqzÚqwr   s	   &&       r   r±   r±   Z  s#  € Ü	˜Ó	€BØ�I‰I�O‰O˜A˜g�J¨¨'­
Ó3€EØ	
ˆ6��Q�v•YÕ	  6¥¨Q¨v­YÕ!6Õ	6¸¸v½Õ	F€BØ	
ˆ6��Q�v•YÕ	  6¥¨Q¨v­YÕ!6Õ	6¸¸v½Õ	F€BØ	
ˆ6��Q�v•YÕ	  6¥¨Q¨v­YÕ!6Õ	6¸¸v½Õ	F€Bà	ˆ&�	�A�f•IÕØ
ˆF�)�a˜•iÕ
õ	 à
ˆF�)�a˜•iÕ
õ	 ð ˆF�)�a˜•iÕ
õ	 ð ð �8‰8�R˜RÐ$¨2ˆ8Ó.€DØ€Kr   c                óR   € V ^8„  d   QhR\         R\        \         \         3,          /# )r   rœ   r   r,  )r   s   "r   r   r   j  s#   € ÷ #ñ #”uð #¤U¬5´%¨<Õ%8ñ #r   c                 ó`   € \         P                  ! V ^VR7      p V R,          V RRR13,          3# )r   r,   .Nr!   r  )r;   r<   )rœ   r%   s   &&r   r/  r/  j  s/   € Ü�Š�q˜q RÔ(€AØˆW�:�q˜˜c˜r˜c˜•{Ð"Ð"r   c                ó0   € V ^8„  d   QhR\         R\         /# ©r   r€   r   rS   )r   s   "r   r   r   o  ó   € ÷ $ñ $”Uð $œuñ $r   c                 ó>   € V \         P                  R ,          ,          # ©g     €f@©Únprè   ©r€   s   &r   rh   rh   o  s   € Ø”R—U‘U˜U•]Õ#Ð#r   c                ó0   € V ^8„  d   QhR\         R\         /# rÞ  rS   )r   s   "r   r   r   s  rß  r   c                 ó>   € V R \         P                  ,          ,          # rá  râ  rä  s   &r   rÕ   rÕ   s  s   € Ø�UœRŸU™U•]Õ#Ð#r   )TT)F)NF)NN)=Ú__doc__r‘   r	  Útypesr   Únumpyrã  Úscipy._lib._array_apir   r   r   r   r   r   r	   r
   Úscipy._lib._utilr   Ú scipy._external.array_api_compatr   r5   r   Úscipy._external.array_api_extraÚ	_externalÚarray_api_extrar;   r&   rQ   rG   rs   r}   r�   rµ   rº   rÐ   rØ   rà   rð   rø   rü   r  r  r  rM  rT  rZ  rp  ra  rb  rª  r$   r¹   r•   rô   r–   rÃ  rç   r±   r/  rh   rÕ   rˆ   r   r   Ú<module>rð     s3  ðñó 
Û Ý ã ÷	÷ 	ó 	õ +Ý @Ý =ß -Ð -ñð
 ÷ð ÷$#+õLC'÷Lõ.÷ ÷F=ñ@ØBG÷ð õ÷Dõ*.ñ$3ØOT÷$3ð $3ñN2ð $÷2ð 2õj9õ÷÷0<÷~H*÷V"õ"1÷^$õB$õDJ:õZ,õ@õ	2õNõ)õXõõ;õ|õ #õ
$÷$r   