403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.85
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/sparse/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/scipy/sparse/tests/__pycache__/test_base.cpython-311.pyc
�

d�c`��
�
�dZddlZddlZddlZddlZddlZddlZddlmZddl	Z
ddl	mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZddlZddlmZmZmZmZmZm Z m!Z!ddl"m#Z$ddl%Z&ddl'm(Z(ddl'm)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2ddl3m4Z4m5Z5m6Z6m7Z7m8Z8dd	l9m:Z:m;Z;m<Z<dd
l=m>Z>ddl"Z"dej?vZ@dZd�ZAd
�ZBeCdg��ZDd�ZEe!��ZFeF�Ge��		d[d�ZHd�ZIGd�d��ZJGd�d��ZKGd�d��ZLGd�d��ZMGd�d��ZNGd�d��ZOGd�d ��ZPGd!�d"��ZQGd#�d$��ZRejSd%���ZTGd&�d'��ZUGd(�d)��ZVGd*�d+��ZWGd,�d-��ZXGd.�d/��ZYGd0�d1��ZZd\d3�Z[				d]d4�Z\Gd5�d6e\����Z]e]�^��Gd7�d8e\����Z_e_�^��Gd9�d:e\dd�;����Z`e`�^��Gd<�d=e\d�>����Zaea�^��Gd?�d@e\ddddd�A����Zbeb�^��GdB�dCe\ddddddd�D����Zcec�^��GdE�dFe\dddddd�G����Zded�^��dH�ZeGdI�dJ��ZfGdK�dLef��ZgGdM�dNeg��ZhGdO�dPehe]��ZiGdQ�dRehe_��ZjGdS�dTeged��ZkGdU�dVefeb��ZldW�ZmGdX�dY��ZndS)^z� Test functions for sparse matrices. Each class in the "Matrix class
based tests" section become subclasses of the classes in the "Generic
tests" section. This is done by the functions in the "Tailored base
class for generic tests" section.

�N)�_pep440)�arange�zeros�array�dot�asarray�vstack�ndarray�	transpose�diag�kron�inf�	conjugate�int8�ComplexWarning)�assert_equal�assert_array_equal�assert_array_almost_equal�assert_almost_equal�assert_�assert_allclose�suppress_warnings)�raises)
�
csc_matrix�
csr_matrix�
dok_matrix�
coo_matrix�
lil_matrix�
dia_matrix�
bsr_matrix�eye�
isspmatrix�SparseEfficiencyWarning)�supported_dtypes�isscalarlike�get_index_dtype�asmatrix�matrix)�splu�expm�inv)�	decoratorzgoogle.colabc�>�t||v|�|n|�d|�����dS)Nz not found in )�msg)r)�member�
collectionr.s   �>/usr/lib/python3/dist-packages/scipy/sparse/tests/test_base.py�	assert_inr21s8���F�j� �S�_�c�c�Z`�Z`�Z`�bl�bl�Bm�n�n�n�n�n�n�c�\�t|j|jk��t||fi|��dS�N)r�dtyper)�x�y�kwargss   r1�assert_array_equal_dtyper:5s7���A�G�q�w������q�!�&�&�v�&�&�&�&�&r3�dokc�v�d�}||��D])}||��D]}tj||��rdS��*dS)Nc��g}|j���D]=}t|tjtjf��r|�|���>|Sr5)�__dict__�values�
isinstance�npr
�generic�append)r7�arrays�as   r1�_underlying_arraysz3sparse_may_share_memory.<locals>._underlying_arrays?sY������"�"�$�$�	!�	!�A��!�b�j�"�*�5�6�6�
!��
�
�a� � � ���
r3TF)rA�may_share_memory)�A�BrFrE�bs     r1�sparse_may_share_memoryrK<sv����� �
��
"�
"����#�#�A�&�&�	�	�A��"�1�a�(�(�
��t�t�t�
�	��5r3Fc����������tjd���ntj����|rd
d��n8��d
�fd�	�n/|r'tj�d����d
�fd	�	�nd
�fd
�	����fd��t���fd���}|S)z�
    Monkeypatch the maxval threshold at which scipy.sparse switches to
    64-bit index arrays, or make it (pseudo-)random.

    N�
�Fc��t|||��}ttj|��jtjtj��j��t
|tjkp|tjk��|Sr5)r&rrA�iinfo�max�int32r�intc)rD�maxval�check_contents�tps    r1�new_get_index_dtypez4with_64bit_maxval_limit.<locals>.new_get_index_dtypecsa�� ����@�@�B����"���)�2�8�B�H�+=�+=�+A�B�B�B��B�"�(�N�3�b�B�G�m�4�4�4��Ir3c����Sr5rN)rDrTrU�fixed_dtypes   �r1rWz4with_64bit_maxval_limit.<locals>.new_get_index_dtypeis	����r3��)�seedc�f��tjtjf��d��S)N�)rArR�int64�randint)rDrTrU�counters   �r1rWz4with_64bit_maxval_limit.<locals>.new_get_index_dtypens#����H�b�h�'�����(:�(:�;�;r3c���tj}|�|�krtj}|D]�}tj|��}|jtjkrt|rf|jdkr�9tj|jtj��r6|���}|�	��}|�kr|�kr��tj}��|S�Nr)
rArRr^rr6�size�
issubdtype�integerrQ�min)rDrTrUr6�arr�minval�maxval_limits      �r1rWz4with_64bit_maxval_limit.<locals>.new_get_index_dtypeqs�����H�E��!��L�(�(��H�E��

%�

%���j��o�o���9�r�x�'�'�%�	)��8�q�=�=�$��]�3�9�b�j�A�A�)�%(�W�W�Y�Y�F�%(�W�W�Y�Y�F�%�,��6�6�6�\�;Q�;Q� (��H�E���Lr3c���|����krtd���|�tj��S)Nzdowncast limited)rQ�AssertionError�astyperA�intp)rg�downcast_maxvals �r1�new_downcast_intp_indexz8with_64bit_maxval_limit.<locals>.new_downcast_intp_index�s9����w�w�y�y�?�*�*�$�%7�8�8�8��:�:�b�g�&�&�&r3c
����g}tjjtjjtjjtjjtjjtjjtjjtjj	tjj
tjjg
}	|D]t}|�|dt|dd��f��t|d�
����8|�|dt|dd��f��t|d�	���u||i|��|D]\}}}|�t|||���S#|D]\}}}|�t|||���wxYw)Nr&�downcast_intp_index)�scipy�sparse�_bsr�_coo�_csc�_csr�_dia�_dok�_lil�_sputils�_compressed�
_constructrC�getattr�setattr)�funcrE�kw�backup�modules�mod�name�oldfuncrnrorWs        ���r1�decoz%with_64bit_maxval_limit.<locals>.deco�s�������<�$�e�l�&7���9J��<�$�e�l�&7���9J��<�$�e�l�&;��<�+�U�\�-D�F��
	0��
Q�
Q���
�
�s�$5�&�s�,=�t�D�D�F�G�G�G���.�0C�D�D�D�"�.��M�M�3�(=�#*�3�0E�t�#L�#L�#N�O�O�O��C�!6�8O�P�P�P���4��>�b�>�>�&,�
0�
0�"��T�7��&��C��w�/�/�/��
0��f�
0�
0�"��T�7��&��C��w�/�/�/��
0���s
�'A>E�E )rNNF)rAr^�random�RandomStater,)	rir�rYrn�assert_32bitr�r`rorWs	` ``  @@@r1�with_64bit_maxval_limitr�Ts4�����������x��|�|����x��-�-���"�	�	�	�	�	�

�	 �	�	�	�	�	�	�	�	���)�'�'�T�'�2�2��	<�	<�	<�	<�	<�	<�	<�	�	�	�	�	�	�*�"�	'�	'�	'�	'�	'�
�0�0�0�0�0�0��Y�0�*�Kr3c��t|tj��st|��r|S|���Sr5)r@rAr
r%�toarray�rEs r1r�r��s6���!�R�Z� � ��L��O�O�����9�9�;�;�r3c�>�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�BinopTesterc��dS�N�matrix on the rightrN��self�mats  r1�__add__zBinopTester.__add__����$�$r3c��dSr�rNr�s  r1�__mul__zBinopTester.__mul__�r�r3c��dSr�rNr�s  r1�__sub__zBinopTester.__sub__�r�r3c��dS�N�matrix on the leftrNr�s  r1�__radd__zBinopTester.__radd__����#�#r3c��dSr�rNr�s  r1�__rmul__zBinopTester.__rmul__�r�r3c��dSr�rNr�s  r1�__rsub__zBinopTester.__rsub__�r�r3c��dSr�rNr�s  r1�
__matmul__zBinopTester.__matmul__�r�r3c��dSr�rNr�s  r1�__rmatmul__zBinopTester.__rmatmul__�r�r3N)�__name__�
__module__�__qualname__r�r�r�r�r�r�r�r�rNr3r1r�r��s�������%�%�%�%�%�%�%�%�%�$�$�$�$�$�$�$�$�$�%�%�%�$�$�$�$�$r3r�c�P�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�BinopTester_with_shapec��||_dSr5��_shape)r��shapes  r1�__init__zBinopTester_with_shape.__init__�s
������r3c��|jSr5r��r�s r1r�zBinopTester_with_shape.shape�s
���{�r3c�*�t|j��Sr5)�lenr�r�s r1�ndimzBinopTester_with_shape.ndim�s���4�;���r3c��dSr�rNr�s  r1r�zBinopTester_with_shape.__add__�r�r3c��dSr�rNr�s  r1r�zBinopTester_with_shape.__mul__�r�r3c��dSr�rNr�s  r1r�zBinopTester_with_shape.__sub__�r�r3c��dSr�rNr�s  r1r�zBinopTester_with_shape.__radd__�r�r3c��dSr�rNr�s  r1r�zBinopTester_with_shape.__rmul__�r�r3c��dSr�rNr�s  r1r�zBinopTester_with_shape.__rsub__�r�r3c��dSr�rNr�s  r1r�z!BinopTester_with_shape.__matmul__�r�r3c��dSr�rNr�s  r1r�z"BinopTester_with_shape.__rmatmul__�r�r3N)r�r�r�r�r�r�r�r�r�r�r�r�r�r�rNr3r1r�r��s������������� � � �%�%�%�%�%�%�%�%�%�$�$�$�$�$�$�$�$�$�%�%�%�$�$�$�$�$r3r�c��eZdZdZeZed���Zd�Zd�Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zej j!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+�Z3e4d,���Z5e4d-���Z6e4d.���Z7e4d/���Z8d0�Z9d1�Z:e4d2���Z;d3�Z<d4�Z=d5�Z>d6�Z?d7�Z@d8�ZAd9�ZBd:�ZCd;�ZDd<�ZEd=�ZFd>�ZGd?�ZHd@�ZIdA�ZJdB�ZKdC�ZLdD�ZMdE�ZNdF�ZOdG�ZPdH�ZQdI�ZRdJ�ZSdK�ZTdL�ZUdM�ZVdN�ZWdO�ZXdP�ZYdQ�ZZdR�Z[dS�Z\dT�Z]dU�Z^dV�Z_dWS)X�_TestCommonz6test common functionality shared by all sparse formatsc��tgd�gd�gd�gd��|_|�|j��|_t	t
���|j��|_i|_	i|_
|jD]Y}|j�|��|j	|<|�|j�|����|j
|<�Zt|j|j	tj��t|j���|j
tj�����dS)N)�rrr])�rr�r)rr]rr�d)r�dat�spmatrix�datsp�setr$�union�math_dtypes�checked_dtypes�
dat_dtypes�datsp_dtypesrlrrA�float64r�)�clsr6s  r1�
init_classz_TestCommon.init_class�s)������|�|�|�\�\�\�B�C�H�H����L�L���)�)��	�!�!1�2�2�8�8���I�I����������'�	J�	J�E�$'�G�N�N�5�$9�$9�C�N�5�!�&)�l�l�3�7�>�>�%�3H�3H�&I�&I�C��U�#�#�	�S�W�c�n�R�Z�8�9�9�9��S�Y�&�&�(�(��%�b�j�1�9�9�;�;�	=�	=�	=�	=�	=r3c����fd�}t�t��rtjd���jD]
}||���dS)Nc�����j|}ttt|��t	��dg����t	��dg����dS)Nr�r)r��
assert_raises�
ValueError�boolrr�)r6r�r�s  �r1�checkz$_TestCommon.test_bool.<locals>.checksc����%�e�,�E��*�d�E�2�2�2��D�M�M�1�#�&�&�'�'�'���
�
�q�c�*�*�*�+�+�+�+�+r3z%Cannot create a rank <= 2 DOK matrix.)r@�TestDOK�pytest�skipr��r�r�r6s`  r1�	test_boolz_TestCommon.test_bool
sm���	,�	,�	,�	,�	,��d�G�$�$�	A��K�?�@�@�@��(�	�	�E��E�%�L�L�L�L�	�	r3c���tddgg��}|�|��}td��D]}||z}||z}�
t||�����dS)NTFrM)rr��rangerr�)r�r�r��_s    r1�test_bool_rolloverz_TestCommon.test_bool_rolloverso���d�E�]�O�$�$���
�
�c�"�"���r���	�	�A��E�M�E���)�C�C��3��
�
���0�0�0�0�0r3c�"��t��}|�t��|t�fd�����}t	�t
ttf��stj	d���j
D]
}||���dS)Nc����	j|}�	j|}|���}d|dd�df<�	�|��}t	|��}t|��}t
|��}t|��}t||k||k�	����t||k||k�	����t||k||k�	����t||k||k�	����t||k||k�	����t||k||k��t|dk|dk�	����t|dk|dk�	����t|tjk|tjk�	����dS�Nrr�)r�r��copyr�r rrrr:r�rA�nan)
r6r�r��dat2�datsp2�datbsr�datcsr�datcsc�datlilr�s
         �r1r�z"_TestCommon.test_eq.<locals>.check)s�����/�%�(�C��%�e�,�E��8�8�:�:�D��D����1��I��]�]�4�(�(�F���_�_�F���_�_�F���_�_�F���_�_�F�
%�S�D�[�5�F�?�2K�2K�2M�2M�N�N�N�$�S�D�[�6�V�3C�2L�2L�2N�2N�O�O�O�$�S�D�[�6�V�3C�2L�2L�2N�2N�O�O�O�$�S�D�[�6�V�3C�2L�2L�2N�2N�O�O�O�$�S�D�[�6�V�3C�2L�2L�2N�2N�O�O�O�$�S�F�]�F�c�M�B�B�B�$�S�A�X���
�/C�/C�/E�/E�F�F�F�$�S�A�X���
�/C�/C�/E�/E�F�F�F�$�S�B�F�]�&+�r�v�o�%>�%>�%@�%@�
B�
B�
B�
B�
Br3�8Bool comparisons only implemented for BSR, CSC, and CSR.�r�filterr#�sup_complexr@�TestBSR�TestCSC�TestCSRr�r�r��r��supr�r6s`   r1�test_eqz_TestCommon.test_eq%s�����!�!���
�
�*�+�+�+�	�	�	B�	B�	B�	B�
��

��	B�4�$��'�7� ;�<�<�	T��K�R�S�S�S��(�	�	�E��E�%�L�L�L�L�	�	r3c�"��t��}|�t��|t�fd�����}t	�t
ttf��stj	d���j
D]
}||���dS)Nc����	j|}�	j|}|���}d|dd�df<�	�|��}t	|��}t|��}t
|��}t|��}t||k||k�	����t||k||k�	����t||k||k�	����t||k||k�	����t||k||k�	����t||k||k��t|dk|dk�	����t|dk|dk�	����td|kd|k�	����td|kd|k�	����t|tjk|tjk�	����dSr�)r�r�r�r�r rrrr:r�rAr�)
r6r�r�r�r�r�r�r�r�r�s
         �r1r�z"_TestCommon.test_ne.<locals>.checkNs����/�%�(�C��%�e�,�E��8�8�:�:�D��D����1��I��]�]�4�(�(�F���_�_�F���_�_�F���_�_�F���_�_�F�
%�S�D�[�5�F�?�2K�2K�2M�2M�N�N�N�$�S�D�[�6�V�3C�2L�2L�2N�2N�O�O�O�$�S�D�[�6�V�3C�2L�2L�2N�2N�O�O�O�$�S�D�[�6�V�3C�2L�2L�2N�2N�O�O�O�$�S�D�[�6�V�3C�2L�2L�2N�2N�O�O�O�$�S�F�]�F�c�M�B�B�B�$�S�A�X���
�/C�/C�/E�/E�F�F�F�$�S�A�X���
�/C�/C�/E�/E�F�F�F�$�Q�#�X��U�
�/C�/C�/E�/E�F�F�F�$�Q�#�X��U�
�/C�/C�/E�/E�F�F�F�$�S�B�F�]�&+�r�v�o�%>�%>�%@�%@�
B�
B�
B�
B�
Br3r�r�r�s`   r1�test_nez_TestCommon.test_neJs�����!�!���
�
�*�+�+�+�	�	�	B�	B�	B�	B�
��

��	B�8�$��'�7� ;�<�<�	T��K�R�S�S�S��(�	�	�E��E�%�L�L�L�L�	�	r3c�"��t��}|�t��|t�fd�����}t	�t
ttf��stj	d���j
D]
}||���dS)Nc����j|}�j|}|���}d|dd�df<��|��}|�t
��}d|dd�df<��|��}t
|��}t|��}t|��}	t|��}
t||k||k�����t||k||k�����t||k||k�����t||k||k�����t||k|	|k�����t||k|
|k�����t||k||k�����t||k||k�����t||k||	k�����t||k||
k�����t||k||k��t||k||k��dD]j}tj
|��}t||k���||k��t||k���||k���ktjd���5t|tjk���|tjk��ddd��n#1swxYwY�j|}�j|}|���}d|dd�df<��|��}t||k||k��dS�Nr��?�?)r]r�r�������ignore��invalid�r�r�r�r�rl�complexr rrrr:r�rAr^�errstater��
r6r�r�r�r��
datcomplex�datspcomplexr�r�r�r��valr�s
            �r1r�z"_TestCommon.test_lt.<locals>.checkus�����/�%�(�C��%�e�,�E��8�8�:�:�D��D����1��I��]�]�4�(�(�F����G�,�,�J�$�J�q�q�q��s�O��=�=��4�4�L���_�_�F���_�_�F���_�_�F���_�_�F�
%�S�4�Z�%�&�.�1I�1I�1K�1K�L�L�L�$�Z�$�%6�&2�V�&;�%D�%D�%F�%F�
H�
H�
H�
%�S�4�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�S�4�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�S�4�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�S�4�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�T�C�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�T�C�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�T�C�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�T�C�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�S�4�Z����>�>�>�$�Z�$�%6��t�8K�L�L�L�(�
M�
M���h�s�m�m��(�%�#�+�)>�)>�)@�)@�#��)�L�L�L�(�#��+�)>�)>�)@�)@�#��)�L�L�L�L���X�.�.�.�
7�
7�(�%�"�&�.�)A�)A�)C�)C�),�r�v��7�7�7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7�
�/�%�(�C��%�e�,�E��8�8�:�:�D��D����1��I��]�]�4�(�(�F�
%�S�6�\�5�4�<�@�@�@�@�@��?M#�#M'�*M'r�r�r�s`   r1�test_ltz_TestCommon.test_ltqs�����!�!���
�
�*�+�+�+�	�	�2	A�2	A�2	A�2	A�
��

��2	A�h�$��'�7� ;�<�<�	T��K�R�S�S�S��(�	�	�E��E�%�L�L�L�L�	�	r3c�"��t��}|�t��|t�fd�����}t	�t
ttf��stj	d���j
D]
}||���dS)Nc����j|}�j|}|���}d|dd�df<��|��}|�t
��}d|dd�df<��|��}t
|��}t|��}t|��}	t|��}
t||k||k�����t||k||k�����t||k||k�����t||k||k�����t||k|	|k�����t||k|
|k�����t||k||k�����t||k||k�����t||k||	k�����t||k||
k�����t||k||k��t||k||k��dD]j}tj
|��}t||k���||k��t||k���||k���ktjd���5t|tjk���|tjk��ddd��n#1swxYwY�j|}�j|}|���}d|dd�df<��|��}t||k||k��dSr�rrs
            �r1r�z"_TestCommon.test_gt.<locals>.check�s�����/�%�(�C��%�e�,�E��8�8�:�:�D��D����1��I��]�]�4�(�(�F����G�,�,�J�$�J�q�q�q��s�O��=�=��4�4�L���_�_�F���_�_�F���_�_�F���_�_�F�
%�S�4�Z�%�&�.�1I�1I�1K�1K�L�L�L�$�Z�$�%6�&2�V�&;�%D�%D�%F�%F�
H�
H�
H�
%�S�4�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�S�4�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�S�4�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�S�4�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�T�C�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�T�C�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�T�C�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�T�C�Z�&�6�/�1J�1J�1L�1L�M�M�M�$�S�4�Z����>�>�>�$�Z�$�%6��t�8K�L�L�L�(�
M�
M���h�s�m�m��(�%�#�+�)>�)>�)@�)@�#��)�L�L�L�(�#��+�)>�)>�)@�)@�#��)�L�L�L�L���X�.�.�.�
7�
7�(�%�"�&�.�)A�)A�)C�)C�),�r�v��7�7�7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7�
�/�%�(�C��%�e�,�E��8�8�:�:�D��D����1��I��]�]�4�(�(�F�
%�S�6�\�5�4�<�@�@�@�@�@r
r�r�r�s`   r1�test_gtz_TestCommon.test_gt�s�����!�!���
�
�*�+�+�+�	�	�1	A�1	A�1	A�1	A�
��

��1	A�f�$��'�7� ;�<�<�	T��K�R�S�S�S��(�	�	�E��E�%�L�L�L�L�	�	r3c�"��t��}|�t��|t�fd�����}t	�t
ttf��stj	d���j
D]
}||���dS)Nc�����j|}�j|}|���}d|dd�df<��|��}|�t
��}d|dd�df<��|��}t
|��}t|��}t|��}	t|��}
t||k||k�����t||k||k�����t||k���||k��t||k���||k��t|	|k���||k��t|
|k���||k��t||k���||k��t||k���||k��t||	k���||k��t||
k���||k��t||k||k��t||k||k��dD]j}tj
|��}t||k���||k��t||k���||k���k�j|}�j|}|���}d|dd�df<��|��}t||k||k��dS�Nrr�)r]r�r�r��r�r�r�r�rlrr rrrr:r�rAr^rs
            �r1r�z"_TestCommon.test_le.<locals>.check��1����/�%�(�C��%�e�,�E��8�8�:�:�D��D����1��I��]�]�4�(�(�F����G�,�,�J�$�J�q�q�q��s�O��=�=��4�4�L���_�_�F���_�_�F���_�_�F���_�_�F�
%�S�D�[�5�F�?�2K�2K�2M�2M�N�N�N�$�Z�4�%7�&2�f�&<�%E�%E�%G�%G�
I�
I�
I�
%�f��&6�%?�%?�%A�%A�3�$�;�O�O�O�$�f��&6�%?�%?�%A�%A�3�$�;�O�O�O�$�f��&6�%?�%?�%A�%A�3�$�;�O�O�O�$�f��&6�%?�%?�%A�%A�3�$�;�O�O�O�$�f��&6�%?�%?�%A�%A�4�3�;�O�O�O�$�f��&6�%?�%?�%A�%A�4�3�;�O�O�O�$�f��&6�%?�%?�%A�%A�4�3�;�O�O�O�$�f��&6�%?�%?�%A�%A�4�3�;�O�O�O�$�U�d�]�C�4�K�@�@�@�$�\�T�%9�:��;M�N�N�N�%�
O�
O���h�s�m�m��(�%�3�,�)?�)?�)A�)A�3�#�:�N�N�N�(�#��,�)?�)?�)A�)A�3�#�:�N�N�N�N��/�%�(�C��%�e�,�E��8�8�:�:�D��D����1��I��]�]�4�(�(�F�
%�S�F�]�E�T�M�B�B�B�B�Br3r�r�r�s`   r1�test_lez_TestCommon.test_le������!�!���
�
�*�+�+�+�	�	�-	C�-	C�-	C�-	C�
��

��-	C�^�$��'�7� ;�<�<�	T��K�R�S�S�S��(�	�	�E��E�%�L�L�L�L�	�	r3c�"��t��}|�t��|t�fd�����}t	�t
ttf��stj	d���j
D]
}||���dS)Nc�����j|}�j|}|���}d|dd�df<��|��}|�t
��}d|dd�df<��|��}t
|��}t|��}t|��}	t|��}
t||k||k�����t||k||k�����t||k���||k��t||k���||k��t|	|k���||k��t|
|k���||k��t||k���||k��t||k���||k��t||	k���||k��t||
k���||k��t||k||k��t||k||k��dD]j}tj
|��}t||k���||k��t||k���||k���k�j|}�j|}|���}d|dd�df<��|��}t||k||k��dSrrrs
            �r1r�z"_TestCommon.test_ge.<locals>.check,rr3r�r�r�s`   r1�test_gez_TestCommon.test_ge(rr3c�D�t|�d�����td����t|�d��jd��t|�d�����d��dS)N�r�r�r)rr�r�r�nnz�
count_nonzeror�s r1�
test_emptyz_TestCommon.test_emptybs}���T�]�]�6�*�*�2�2�4�4�e�F�m�m�D�D�D��T�]�]�6�*�*�.��2�2�2��T�]�]�6�*�*�8�8�:�:�A�>�>�>�>�>r3c��tj|j�����}t	|j���|��t	|jj���|��dSr5)rArr�r�r�T)r��expecteds  r1�test_count_nonzeroz_TestCommon.test_count_nonzerohsd���#�D�J�$6�$6�$8�$8�9�9���T�Z�-�-�/�/��:�:�:��T�Z�\�/�/�1�1�8�<�<�<�<�<r3c��tt|jd��tt|jd��tt|jd��dS)N�r�r��r�r��r�r�)r�r�r�r�s r1�test_invalid_shapesz_TestCommon.test_invalid_shapesmsD���j�$�-��8�8�8��j�$�-��8�8�8��j�$�-��9�9�9�9�9r3c�.�t|j��dSr5)�reprr�r�s r1�	test_reprz_TestCommon.test_reprrs���T�Z�����r3c�.�t|j��dSr5)�strr�r�s r1�test_strz_TestCommon.test_strus���D�J�����r3c�V�d}tjd��tjd��tjd��tjd��tjd��fD]�}|�||���}||z}d|z}||���z}||���z}||���z}||||||fD]S}	t
|	j|j|jz��t
|	j|��t
|	jj|���T��dS)	N��r/rR�float32r��	complex64�
complex128�r6r])rAr6r��tocsc�tocsr�tocoorrH)
r�r��mytyperErJ�cr��e�f�ms
          r1�test_empty_arithmeticz!_TestCommon.test_empty_arithmeticxs �����x��(�(�"�(�9�*=�*=����#�#�R�X�k�%:�%:����&�&�(�
	/�
	/�F��
�
�e�6�
�2�2�A��A��A��A��A��A�G�G�I�I�
�A��A�G�G�I�I�
�A��A�G�G�I�I�
�A���!�A�a��]�
/�
/���Q�S�!�#�a�c�'�*�*�*��Q�W�V�,�,�,��Q�S�Y�v�.�.�.�.�	
/�
	/�
	/r3c���tgd�gd�gd�gd�gd��}tt|��t|�|���������dS)N�r�r��r���r�r����r�rrrr�)rr�absr�r��r�rHs  r1�test_absz_TestCommon.test_abs�sf���;�;�;�
�
�
�J�J�J�	�	�	�B�C�H�H���S��V�V�S����q�!1�!1�2�2�:�:�<�<�=�=�=�=�=r3c���d}tddgddggd��}ttj||���t	|�|��|��������dS)	Nr�g��������g�Q����?g@1@g�Q����r�)�decimals)�ndigits)rrrA�around�roundr�r�)r��decimalrHs   r1�
test_roundz_TestCommon.test_round�s}�����E�4�=�5�%�.�1�3�7�7���R�Y�q�7�3�3�3��4�=�=��+�+�W�=�=�=�E�E�G�G�	I�	I�	I�	I�	Ir3c�J�tgd�gd�gd�gd��}ttj|d��|�|���d�������t
t|�|��j|��dS)N)rC���r�)r�rr��r]r��r�r])rrrA�powerr�r�r��NotImplementedErrorrFs  r1�test_elementwise_powerz"_TestCommon.test_elementwise_power�s����<�<�<����Y�Y�Y�7��=�=���R�X�a��^�^�T�]�]�1�%5�%5�%;�%;�A�%>�%>�%F�%F�%H�%H�I�I�I�	�)�4�=�=��+;�+;�+A�1�E�E�E�E�Er3c�0�tgd�gd�gd�gd�gd��}t||�|�������tgd�gd�g��}t	t
|�|��j��dS)Nr>r@rBrDr�)TFF)FFT)rrr�r�r�rT�__neg__rFs  r1�test_negz_TestCommon.test_neg�s����;�;�;�
�
�
�J�J�J�	�	�	�B�C�H�H���a�R�4�=�=��+�+�+�4�4�6�6�7�7�7�
�'�'�'�)=�)=�)=�>�?�?���)�4�=�=��+;�+;�+C�D�D�D�D�Dr3c��tddgg��}|�|��}t|j���|j��dS�N��?@y@�)rr�r�realr��r��DrHs   r1�	test_realz_TestCommon.test_real��L���F�F�#�$�%�%���M�M�!�����Q�V�^�^�%�%�q�v�.�.�.�.�.r3c��tddgg��}|�|��}t|j���|j��dSrZ)rr�r�imagr�r]s   r1�	test_imagz_TestCommon.test_imag�r`r3c	�D�g}|�gd�g��|�dgdgdgg��|�ddgddgddgg��|�gd�gd�gd�g��|�ddgddgg��|�t|dddgg����|�t|ddgdgg����|�t|dddgdd	gg����|�t|dddgdd	gg����|�t|dddgdd	gg����|�t|dgd
�g����|D]�}t|��j\}}|�|��}t|dz
|dz��D]5}t
|�|���t||������6t
|�d���t|d�����t
|�d
���t|d
�������t
|�d�����tj
d����t
|�d�����tjd����t
|�d�����tjd����t
|�d���d��tjd����dS)N�r�rr]r�rr]r��rrr�)rrr]�rr�rrR�r�r]r�rR��krMi����)�(i?rk�rr)�r�rr/)rCr
rr�r�r�r�diagonalrrAr�empty)r��matsr;�rows�cols�
sparse_matrjs       r1�
test_diagonalz_TestCommon.test_diagonal�sH�������W�W�W�I�������a�S�!��a�S�M�"�"�"����a��U�A�a�5�!�A��'�(�(�(����W�W�W�W�W�W�W�W�W�-�.�.�.����a��U�A�a�5�M�"�"�"����D��a��1�Q�%��)�)�*�*�*����D��a��1�#�q�c��+�+�,�,�,����D��a��1�Q�%��1���/�/�0�0�0����D��a��1�Q�%��1���/�/�0�0�0����D��a��1�Q�%��1���/�/�0�0�0����D��a��)�)�)��-�-�.�.�.��	E�	E�A��q����J�D�$����q�)�)�J��D�5��7�D��F�+�+�
E�
E���Z�0�0�1�0�5�5�t�A��|�|�|�D�D�D�D���,�,�r�,�2�2�D��b�M�M�M�B�B�B���,�,�s�,�3�3�T�!�s�^�^�^�D�D�D�D�	�T�]�]�;�/�/�8�8�:�:�B�H�R�L�L�I�I�I�	�T�]�]�6�*�*�3�3�5�5�r�x��{�{�C�C�C��T�]�]�7�+�+�4�4�6�6������D�D�D��T�]�]�6�*�*�3�3�B�7�7���!���E�E�E�E�Er3c���tjgd�gd�gd�g��}|�|��}tdd��D]:}t	|�|���|�|������;tjgd�gd�g��}|�|��}tdd��D]:}t	|�|���|�|������;dS)N�r�r]r��rRr/�)���	r�r�)�offsetr�)rArr�r�r�trace)r�rHrIrjs    r1�
test_tracez_TestCommon.test_trace�s����H�i�i�i����I�I�I�6�7�7���M�M�!�����r�1���	?�	?�A�������*�*�A�G�G�1�G�,=�,=�>�>�>�>�
�H�i�i�i����+�,�,���M�M�!�����r�1���	?�	?�A�������*�*�A�G�G�1�G�,=�,=�>�>�>�>�	?�	?r3c	��|�gd�gd�gd�gd�g��}dD]e}dD]`}t|�||������|����||������a�f|�gd�gd	�gd
�g��}|�d��}gd�gd
�g}t|j|��|�d��}t|j|��|�d��}t|j|��tt|jd��|�dd��}t|j|��tt|jddd���|�d��}t||u��|�dd���}t||u��t|j	d��d|_	t|j|��tt|j|j
f��tt|jd|j
df��dS)N)r�rrzrDrg)rrr/)�C�F))�r�)r�r���order�rrMrr�rrrr�r��rk�r]ry)rrMrrrr)rrrr�r�rk�r]r�)r�ryr%r]ryr�)�
not_an_arg�r�rRT�r�)r�r�reshaper�rHr�r��	TypeErrorrr�rc)r�r7r��sr8�desireds      r1�test_reshapez_TestCommon.test_reshape�s[���M�M�9�9�9�i�i�i����I�I�I�F�G�G���	H�	H�E�'�
H�
H��"�1�9�9�Q�e�9�#<�#<�#D�#D�#F�#F�#$�9�9�;�;�#6�#6�q��#6�#F�#F�H�H�H�H�
H�
�M�M�=�=�=�,�,�,����H�I�I��
�I�I�f����&�&�&�(=�(=�(=�>���1�3��(�(�(�
�I�I�g�����1�3��(�(�(�
�I�I�g�����1�3��(�(�(��j�!�)�X�6�6�6�
�I�I�a��O�O���1�3��(�(�(��i���A�q�Q�?�?�?�?�
�I�I�f������Q�����
�I�I�f�4�I�(�(�����
����	�1�7�F�+�+�+�����1�3��(�(�(�	�j�!�)�a�f�Y�7�7�7��j�!�)�a����^�<�<�<�<�<r3c�(����fd����fd�}tj�d��gd�}tjtjfD]�}|D]�\}}tj|dz|dz
��}|D]�}t
||||f���tj||f|���}|�||f|���}	|||	|��tj�	|tt|��d�����D]}
|||	|
�������dS)	Nc���tj|��}|dkr�t|jd|jd|z
��}|jdkr't|t|����}|d|�}tjd|��}tj|||z��}||||f<dS|dkr�|j||��dSdSr�)rArrfr�r�r�rr)rE�vrj�n�i�j�
dense_setdiags      �r1r�z=_TestCommon.test_setdiag_comprehensive.<locals>.dense_setdiag	s�����
�1�
�
�A��A�v�v�����
�A�G�A�J��N�3�3���6�Q�;�;��A�s�1�v�v���A��"�1�"��A��I�a��O�O���I�a��Q��'�'����!�A�#�����Q����
�a�c�1�q�b�)�)�)�)�)��r3c�@��dttj||����ddfD�]t}|dkr.tj�tdd����}n"tj�dd|���}�|||��t��5}|�td��|�
||��ddd��n#1swxYwYtj||��}tj|��jdkrt||d	�	|fz�
��nQtt|��t|����}t|d|�|d|�d	�	|fz�
��t|j|d	�	|fz�
����vdS)Nr�r]r�rr�r��rc�?Changing the sparsity structure of a cs[cr]_matrix is expensivez%s %d��err_msg)r�rArr��choicer�r_rr�r#�setdiagrr�rrfrH)
rErJrj�rr�r�r�r�r�r.s
        ��r1�
check_setdiagz=_TestCommon.test_setdiag_comprehensive.<locals>.check_setdiags�����#�b�g�a��m�m�,�,�a��4�
G�
G���q�5�5��	�(�(��q�"���6�6�A�A��	�)�)�!�R�a�)�8�8�A��
�a��A�&�&�&�&�(�(�$�C��J�J�6�8y�z�z�z��I�I�a��O�O�O�$�$�$�$�$�$�$�$�$�$�$����$�$�$�$�
�G�A�q�M�M���:�a�=�=�%��*�*�&�q�!�W��Q�x�5G�H�H�H�H�H��C��F�F�C��F�F�+�+�A�&�q��!��u�a����e�W��Q�x�=O�P�P�P�P�"�1�3��7�c�1�X�3E�F�F�F�F�F�'
G�
Gs�2C�C	�!C	rZ)rn�r/r�r�r/�r/r�r.r�r3r/r�)rAr�r[rr�rr(rr�r�rfr�)
r�r��shapesr6r;r��ksrjrErJ�k2r�r.s
           @@r1�test_setdiag_comprehensivez&_TestCommon.test_setdiag_comprehensivesv����	*�	*�	*�	*�	*�	G�	G�	G�	G�	G�	G�2	�	���t����4�4�4���g�r�z�*�	0�	0�E��
0�
0���!��Y��r�!�t�Q�q�S�)�)���	0�	0�A���q�!�Q�/�0�0�C���!�Q��u�5�5�5�A��
�
�q�!�f�E�
�:�:�A�!�M�!�Q��*�*�*�!�i�.�.�r��C��G�G�Q���.�H�H�0�0��%�
�a��B�/�/�/�/�0�	0�
0�	0�	0r3c
�x�|�tjd����}|�d��}gd�}t��5}|�t
d��t
t|j|d���|�|��t|�
��|��|�|d���t|jtjgd�gd	�gd
�g����|�|d���t|jtjgd�gd	�gd�g����|�d
d���t|jdd��|�d
d���t|jdd��|�dgd���t|jdgd���|�ddgd���t|jdd�gd�gd�g��ddd��dS#1swxYwYdS)Nr��rRrR)r�r]r�r�rRrir�)r�r�r)rr]r]rfr�)r�rr�)r|r]�rr]r|�r]rr�rrr�r)rrrr�)
r�rAr!rr�r#r�r�r�rrorHr)r�r;�m2r?r�s     r1�test_setdiagz_TestCommon.test_setdiag?s����M�M�"�&��)�)�$�$��
�]�]�6�
"�
"������
�
 �
 �	9�C��J�J�.�X�
Z�
Z�
Z��*�a�i��1�=�=�=�=�
�I�I�f�����q�z�z�|�|�V�4�4�4�
�I�I�f��I�"�"�"��q�s�B�H�i�i�i�.7�i�i�.7�i�i�.9�%:�%:�
;�
;�
;�
�I�I�f��I�#�#�#��q�s�B�H�i�i�i�.7�i�i�.7�i�i�.9�%:�%:�
;�
;�
;�
�I�I�d�a�I� � � ��q�s�3�x��+�+�+�
�I�I�d�b�I�!�!�!��q�s�3�x��+�+�+��J�J��s�a�J� � � ��r�t�A�w����5�5�5��J�J��1�v��J�#�#�#��r�t�B�Q�B�x�,�,�,�*6�,�,�*8�
9�
9�
9�/	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s�GH/�/H3�6H3c�`�tgd�gd�gd�g��}|�|��}td�t|�����D����}td�t|�����D����}t||��dS)N�r�rr��rr�r�rfc�,�g|]}t|����SrN��tuple��.0�ijs  r1�
<listcomp>z,_TestCommon.test_nonzero.<locals>.<listcomp>bs��?�?�?�"�E�"�I�I�?�?�?r3c�,�g|]}t|����SrNr�r�s  r1r�z,_TestCommon.test_nonzero.<locals>.<listcomp>cs��C�C�C�B�e�B�i�i�C�C�Cr3)rr�r�r�nonzeror�r�rH�Asp�A_nz�Asp_nzs     r1�test_nonzeroz_TestCommon.test_nonzero^s����9�9�9�Y�Y�Y�y�y�y�1�2�2���m�m�A�����?�?�	�!�)�)�+�+�(>�(>�?�?�?�@�@���C�C�)�C�K�K�M�M�*B�*B�C�C�C�D�D���T�6�"�"�"�"�"r3c�`�tgd�gd�gd�g��}|�|��}td�tt	j|����D����}td�tt	j|����D����}t
||��dS)Nr�r�rfc�,�g|]}t|����SrNr�r�s  r1r�z2_TestCommon.test_numpy_nonzero.<locals>.<listcomp>ls��A�A�A�"�E�"�I�I�A�A�Ar3c�,�g|]}t|����SrNr�r�s  r1r�z2_TestCommon.test_numpy_nonzero.<locals>.<listcomp>ms��E�E�E�B�e�B�i�i�E�E�Er3)rr�r�rrAr�rr�s     r1�test_numpy_nonzeroz_TestCommon.test_numpy_nonzerogs����9�9�9�i�i�i����3�4�4���m�m�A�����A�A�	�"�*�Q�-�-�(@�(@�A�A�A�B�B���E�E�)�B�J�s�O�O�*D�*D�E�E�E�F�F���T�6�"�"�"�"�"r3c�.�t|j�d�����|jdgdd�f��t|j�d�����|jdgdd�f��dS�Nr�r�)rr��getrowr�r�r�s r1�test_getrowz_TestCommon.test_getrowqs����4�:�,�,�Q�/�/�7�7�9�9�4�8�Q�C����F�;K�L�L�L��4�:�,�,�R�0�0�8�8�:�:�D�H�b�T�1�1�1�W�<M�N�N�N�N�Nr3c�.�t|j�d�����|jdd�dgf��t|j�d�����|jdd�dgf��dSr�)rr��getcolr�r�r�s r1�test_getcolz_TestCommon.test_getcolus����4�:�,�,�Q�/�/�7�7�9�9�4�8�A�A�A��s�F�;K�L�L�L��4�:�,�,�R�0�0�8�8�:�:�D�H�Q�Q�Q���W�<M�N�N�N�N�Nr3c����	�tj�d��tgd�gd�gd�g��}tj�dd��}tjgg��}tjd��}tjddd���j}|||||g�	�	�fd	�}�j	D]-}tt�	����D]}|||����.dS)
NrZ�rr�r]�r�rCr/����rzr|r/)rkrkg{�G�z�?)�densityc����t�||���}��||���}tjd���5t	|���|�����t
|���j|���j��ttj	|�d�������t	|�d���|�d�����t
|�d���j|�d���j��t	|�d���|�d�����t
|�d���j|�d���j��t	|�d���|�d�����t
|�d���j|�d���j��t	|�d���|�d�����t
|�d���j|�d���j��t	|�d���|�d�����t
|�d���j|�d���j��ddd��dS#1swxYwYdS)	Nr3r)�over��axisrr�r�r�)
r(r�rArr�sumrr6r�isscalar)r6r�r�r��matricesr�s    ��r1r�z#_TestCommon.test_sum.<locals>.check�s�����!��E�2�2�2�C��M�M�#�U�M�3�3�E���(�+�+�+�
O�
O�)�#�'�'�)�)�U�Y�Y�[�[�A�A�A��S�W�W�Y�Y�_�e�i�i�k�k�.?�@�@�@����E�I�I�4�I�$8�$8�9�9�:�:�:�)�#�'�'�t�'�*<�*<�*/�)�)��)�*>�*>�@�@�@��S�W�W�$�W�/�/�5�"�Y�Y�D�Y�1�1�7�9�9�9�)�#�'�'�q�'�/�/�5�9�9�!�9�;L�;L�M�M�M��S�W�W�!�W�_�_�2�E�I�I�1�I�4E�4E�4K�L�L�L�)�#�'�'�q�'�/�/�5�9�9�!�9�;L�;L�M�M�M��S�W�W�!�W�_�_�2�E�I�I�1�I�4E�4E�4K�L�L�L�)�#�'�'�r�'�*:�*:�E�I�I�2�I�<N�<N�O�O�O��S�W�W�"�W�-�-�3�U�Y�Y�B�Y�5G�5G�5M�N�N�N�)�#�'�'�r�'�*:�*:�E�I�I�2�I�<N�<N�O�O�O��S�W�W�"�W�-�-�3�U�Y�Y�B�Y�5G�5G�5M�N�N�N�
O�
O�
O�
O�
O�
O�
O�
O�
O�
O�
O�
O����
O�
O�
O�
O�
O�
Os�L
M�M �#M )rAr�r[r(�randrrrsrHr�r�r�)
r��dat_1�dat_2�dat_3�dat_4�dat_5r�r6r�r�s
`        @r1�test_sumz_TestCommon.test_sumys����
�	���t�����	�	�	�"�
�
�"�
�
�$�%�%���	���q�!�$�$����"��������"�"����A�q�$�/�/�/�1���5�%���6��	O�	O�	O�	O�	O�	O�(�(�	 �	 �E��3�x�=�=�)�)�
 �
 ����e�Q�����
 �	 �	 r3c�j�tjd��}tgd�gd�gd�g��}|�|��}t	t
|jd���t	t|jd���t	t|jd���t	t
|jd	|�
��dS�N�r�r�r�r�r�r�r��rr���?r��r��out)rArrr�r�r�r�r��r�r�r�r�s    r1�test_sum_invalid_paramsz#_TestCommon.test_sum_invalid_params�s����h�v�����Y�Y�Y��Z�Z��Z�Z�!�"�"���
�
�c�"�"���j�%�)�!�4�4�4�4��i����8�8�8�8��i����5�5�5�5��j�%�)�!��=�=�=�=�=�=r3c����tgd�gd�gd�g���|�������fd�}|jD]
}||���dS)Nr�r�r�c�����|���}��|���}t||��t|j|j��dS�Nr3��meanrrr6�r6�dat_mean�
datsp_meanr�r�s   ��r1r�z)_TestCommon.test_sum_dtype.<locals>.check��T����x�x�e�x�,�,�H����%��0�0�J�%�h�
�;�;�;�����)9�:�:�:�:�:r3�rr�r��r�r�r6r�r�s   @@r1�test_sum_dtypez_TestCommon.test_sum_dtype�������Y�Y�Y��Z�Z��Z�Z�!�"�"���
�
�c�"�"��	;�	;�	;�	;�	;�	;��(�	�	�E��E�%�L�L�L�L�	�	r3c��tgd�gd�gd�g��}|�|��}tdgg��}tdgg��}|�|d���|�|���t	||��tjd��}ttjd����}|�d	|d�
��|�d	|���t	||��dS�Nr�r�r�rT)r��keepdims�r��r�r�r�)r�r�r�r�)rr�r(r�rrArr'�r�r�r��dat_out�	datsp_outs     r1�test_sum_outz_TestCommon.test_sum_out�s����Y�Y�Y��Z�Z��Z�Z�!�"�"���
�
�c�"�"���!���,�,���Q�C�5�M�M�	����G�d��+�+�+�
�	�	�i�	� � � �!�'�9�5�5�5��(�6�"�"���R�X�f�-�-�.�.�	����Q�G�d��3�3�3�
�	�	�q�i�	�(�(�(�!�'�9�5�5�5�5�5r3c��tgd�gd�gd�g��}|�|��}tj|��}tj|��}t	||��t|j|j��dS�Nr�r�r�)rr�rAr�rrr6�r�r�r�r�r�s     r1�test_numpy_sumz_TestCommon.test_numpy_sum�s����Y�Y�Y��Z�Z��Z�Z�!�"�"���
�
�c�"�"���6�#�;�;���V�E�]�]�
�!�(�J�7�7�7��X�^�Z�%5�6�6�6�6�6r3c�<���fd�}�jD]
}||���dS)Nc���tgd�gd�gd�g|���}��||���}t|���|�����t	|���j|���j��t
tj|�d�������t|�dd���|�d�����t	|�d���j|�d���j��t|�dd���|�d�����t	|�d���j|�d���j��t|�d	d���|�d	�����t	|�d	���j|�d	���j��t|�d
d���|�d
�����t	|�d
���j|�d
���j��t|�dd���|�d�����t	|�d���j|�d���j��dS)Nr��r�rRr/)ryrzr|r3r�T�r�r�rr�r�r�)	rr�rr�rr6rrAr��r6r�r�r�s   �r1r�z$_TestCommon.test_mean.<locals>.check�s��������"���"���$�+0�2�2�2�C��M�M�#�U�M�3�3�E�%�c�h�h�j�j�%�*�*�,�,�?�?�?�������)�5�:�:�<�<�+=�>�>�>��B�K��
�
��
� 5� 5�6�6�7�7�7�%����d�T��2�2�E�J�J�D�J�4I�4I�
�
�
�
����t��,�,�2�E�J�J�D�J�4I�4I�4O�P�P�P�%����a�$��/�/������1C�1C�
�
�
�
����q��)�)�/������1C�1C�1I�J�J�J�%����a�$��/�/������1C�1C�
�
�
�
����q��)�)�/������1C�1C�1I�J�J�J�%����b�4��0�0�%�*�*�"�*�2E�2E�
�
�
�
����r��*�*�0�%�*�*�"�*�2E�2E�2K�L�L�L�%����b�4��0�0�%�*�*�"�*�2E�2E�
�
�
�
����r��*�*�0�%�*�*�"�*�2E�2E�2K�L�L�L�L�Lr3)r�r�s`  r1�	test_meanz_TestCommon.test_mean�sN���	M�	M�	M�	M�	M�<�(�	�	�E��E�%�L�L�L�L�	�	r3c��ttjd����}tgd�gd�gd�g��}|�|��}tt|jd���tt|jd���tt|jd���tt|jd	|�
��dSr�)	r'rArrr�r�r�r�r�r�s    r1�test_mean_invalid_paramsz$_TestCommon.test_mean_invalid_params�s����r�x��'�'�(�(���Y�Y�Y��Z�Z��Z�Z�!�"�"���
�
�c�"�"���j�%�*�1�5�5�5�5��i���&�9�9�9�9��i���#�6�6�6�6��j�%�*�1�#�>�>�>�>�>�>r3c����tgd�gd�gd�g���|�������fd�}|jD]
}||���dS)Nr�r�r�c�����|���}��|���}t||��t|j|j��dSr�r�r�s   ��r1r�z*_TestCommon.test_mean_dtype.<locals>.check
r�r3r�r�s   @@r1�test_mean_dtypez_TestCommon.test_mean_dtyper�r3c��tgd�gd�gd�g��}|�|��}tdgg��}tdgg��}|�|d���|�|���t	||��tjd��}ttjd����}|�d	|d�
��|�d	|���t	||��dSr�)rr�r(r�rrArr�s     r1�
test_mean_outz_TestCommon.test_mean_outs����Y�Y�Y��Z�Z��Z�Z�!�"�"���
�
�c�"�"���!���,�,���Q�C�5�M�M�	����W�t��,�,�,�
�
�
�y�
�!�!�!�!�'�9�5�5�5��(�6�"�"���2�8�F�+�+�,�,�	����a�W�t��4�4�4�
�
�
��y�
�)�)�)�!�'�9�5�5�5�5�5r3c��tgd�gd�gd�g��}|�|��}tj|��}tj|��}t	||��t|j|j��dSr)rr�rAr�rrr6rs     r1�test_numpy_meanz_TestCommon.test_numpy_mean+s����Y�Y�Y��Z�Z��Z�Z�!�"�"���
�
�c�"�"���7�3�<�<���W�U�^�^�
�!�(�J�7�7�7��X�^�Z�%5�6�6�6�6�6r3c�T�tgd�gd�gd�gt��}|�|dt���}tj�|��}tgd�gd�gd�g��}|�|dt���}tj�|��}t
��5}|�td	��|�td
��|�td��t|���	��}t|���	��}	ddd��n#1swxYwYt||z
td����t|	|z
td����dS)Nre�rrr��rCr/ryr�r�r6)�@���?)r�@r)rrr�&splu converted its input to CSC format�Cspsolve is more efficient when sparse b is in the CSC matrix format�.spsolve requires A be CSC or CSR matrix format)r�floatr�rr�linalgr*rr�r#r�rr)
r��M�sM�Mexp�N�sN�Nexpr��sMexp�sNexps
          r1�	test_expmz_TestCommon.test_expm8s����9�9�9�i�i�i����4�e�<�<��
�]�]�1�E��]�
7�
7���|� � ��#�#���<�<�<����|�|�|�<�=�=��
�]�]�1�E��]�
7�
7���|� � ��#�#��
�
 �
 �	'�C��J�J�.�?�
A�
A�
A��J�J�.�\�
^�
^�
^��J�J�.�G�
I�
I�
I���H�H�$�$�&�&�E���H�H�$�$�&�&�E�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	"�5�4�<�%��-�-�@�@�@�!�5�4�<�%��-�-�@�@�@�@�@s�=BE�E!�$E!c�>���fd�}tfD]
}||���dS)Nc�:��tgd�gd�gd�g|��}t��5}|�td��|�td��|�td����|d|���}t|��}ddd��n#1swxYwYt
|�|�����tj
d	����ttt
|��dS)
Nrerrrrrrrr�)
rrr�r#r�r+rrr�rAr!r�r�)r6r"r�r#�sMinvr�s     �r1r�z#_TestCommon.test_inv.<locals>.checkOsJ����y�y�y�)�)�)�Z�Z�Z�8�%�@�@�A�"�$�$�
 ���
�
�2�K�M�M�M��
�
�2�`�b�b�b��
�
�2�C�E�E�E��]�]�1�E��]�?�?���B����
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 �
&�e�i�i��m�m�&;�&;�&=�&=�r�v�a�y�y�I�I�I��)�S�!�,�,�,�,�,s�A9B.�.B2�5B2)r r�s`  r1�test_invz_TestCommon.test_invNsH���	-�	-�	-�	-�	-��W�	�	�E��E�%�L�L�L�L�	�	r3c���tgd�gd�gd�gd�g��}t|�|�����|��tgd�gd�gd�g��}t|�|�����|��t|�|d������|�d����dS�	N�r�rrrQ)rr/rrD)r[rr)r�@r�int16r3)rrr�r�rlrFs  r1�test_from_arrayz_TestCommon.test_from_array_s����7�7�7�7�7�7�7�7�7�7�7�7�3�4�4���4�=�=��+�+�3�3�5�5�q�9�9�9��#�#�#�"�?�?��9�9��
�
��	�4�=�=��+�+�3�3�5�5�q�9�9�9��4�=�=��'�=�:�:�B�B�D�D�a�h�h�w�FW�FW�X�X�X�X�Xr3c���tgd�gd�gd�gd�g��}t|�|�����|��tgd�gd�gd�g��}t|�|�����|��t|�|d������|�d����dSr0)r(rr��todenserlrFs  r1�test_from_matrixz_TestCommon.test_from_matrixjs����I�I�I�y�y�y�)�)�)�Y�Y�Y�?�@�@���4�=�=��+�+�3�3�5�5�q�9�9�9��$�$�$�#�O�O��I�I��
 �
 ��	�4�=�=��+�+�3�3�5�5�q�9�9�9���M�M�!�7�M�+�+�3�3�5�5�q�x�x��7H�7H�	
�	
�	
�	
�	
r3c���gd�gd�gd�gd�g}t|�|�����|��gd�gd�gd�g}t|�|�����t|����t|�|d������t|���d����dSr0)rr�r�rrlrFs  r1�test_from_listz_TestCommon.test_from_listws���
�W�W�W�W�W�W�W�W�W�W�W�-���4�=�=��+�+�3�3�5�5�q�9�9�9�
�
�
�
�_�_�
�Y�Y�
��	�4�=�=��+�+�3�3�5�5�u�Q�x�x�@�@�@���M�M�!�7�M�+�+�3�3�5�5�u�Q�x�x���w�7O�7O�	
�	
�	
�	
�	
r3c���tgd�gd�gd�gd�g��}t|��}t|�|�����|��|�|��}t|�|�����|��tgd�gd�gd�g��}t|��}t|�|�����|��t|�|d������|�d����|�|��}t|�|�����|��t|�|d������|�d����dSr0)rrrr�r�rl�r�r^�Ss   r1�test_from_sparsez_TestCommon.test_from_sparse�s����7�7�7�7�7�7�7�7�7�7�7�7�3�4�4���q�M�M���4�=�=��+�+�3�3�5�5�q�9�9�9��M�M�!�����4�=�=��+�+�3�3�5�5�q�9�9�9��#�#�#�"�?�?��9�9��
�
��
�q�M�M���4�=�=��+�+�3�3�5�5�q�9�9�9��4�=�=��'�=�:�:�B�B�D�D�a�h�h�w�FW�FW�X�X�X��M�M�!�����4�=�=��+�+�3�3�5�5�q�9�9�9��4�=�=��'�=�:�:�B�B�D�D�a�h�h�w�FW�FW�X�X�X�X�Xr3c��|j���}t|tj��sJ�t||j��t|jj	|jj
k��|j�d���}t||j��t|jj	��t|jj
��|j�d���}t||j��t|jj	��t|jj
��tj|jj|jj
���}|j�|���}t|j|��t|j|��t|j|u��ttj|jj|jj
�����}|j�|���}t|j|��t|j|��t||u��t!gd�g��}||jz}||j���z}t||��t!gd�g��j}|j|z}|j���|z}t||��|�|jt&���}|j�t&��}	t|���|	��dS)Nr�r�r�r3r��rrr�rrr�@)r�r6r@rAr(rr�r�flags�c_contiguous�f_contiguousrr�r6�baser'rrr�r�rl)
r��chkr�rE�dense_dot_denser�rJ�check2�spbool�matbools
          r1�test_todensez_TestCommon.test_todense�s����j� � �"�"���#�r�y�)�)�)�)�)��3���)�)�)���	�&�#�)�*@�@�A�A�A��j� � �s� �+�+���3���)�)�)���	�&�'�'�'��C�I�*�*�+�+�+��j� � �s� �+�+���3���)�)�)��C�I�*�*�+�+�+���	�&�'�'�'��h�t�z�'�t�z�/?�@�@�@���j� � �S� �)�)���4�8�S�)�)�)��4�8�S�)�)�)����C�� � � ��r�x��
� 0��
�8H�I�I�I�J�J���j� � �S� �)�)���4�8�S�)�)�)��4�8�S�)�)�)���s�
�����:�:�:�,�����d�h�,���D�J�&�&�(�(�(���?�E�2�2�2��=�=�=�/�"�"�$���(�Q�,����#�#�%�%��)���?�F�3�3�3����t�x�t��4�4���(�/�/�$�'�'���6�>�>�+�+�W�5�5�5�5�5r3c�j�t|j��}|j���}t	||��t|jj|jjk��|j�d���}t	||��t|jj��t|jj��|j�d���}t	||��t|jj��t|jj��tj
|jj|jj���}|j�|���t	||��d|d<|j�|���t	||��tgd���}t||��}t||j�����}t	||��tgd	���}t||��}t|j���|��}t	||��|�|jt ���}	|�t ��}
t	|	���|
��dS)
Nr�r�r�r3r�r.r?r@)rr�r�r�rrrBrCrDrArr�r6rrr�r�rl)r�r�rFr�rErGr�rJrHrI�arrbools           r1�test_toarrayz_TestCommon.test_toarray�sJ���d�h�����j� � �"�"���3��$�$�$���	�&�#�)�*@�@�A�A�A��j� � �s� �+�+���3��$�$�$���	�&�'�'�'��C�I�*�*�+�+�+��j� � �s� �+�+���3��$�$�$��C�I�*�*�+�+�+���	�&�'�'�'��h�t�z�'�t�z�/?�@�@�@���
���s��#�#�#��3��$�$�$���C���
���s��#�#�#��3��$�$�$��*�*�*�����a��+�+���A�t�z�)�)�+�+�,�,���?�E�2�2�2��-�-�-� � ���c�1�+�+���T�Z�'�'�)�)�1�-�-���?�F�3�3�3����t�x�t��4�4���*�*�T�"�"���6�>�>�+�+�W�5�5�5�5�5r3c����	�tgd�gd�gd�g��}|�|��}tD�]0}|�|��}dD]o}|�||����t	�j|j��t	����|��t	�j|j���pt��|d����u����|d����	t�	�u����	fd�}�jd	vrd
D]
}||������jdkrdD]
}||������jd
krdD]
}||�����2dS)N)y@@rr)ry@@rrD)TFr�FTc���t�|��}t�|��}t||��t||u��d|jz}||}||||<t||||k��|||<dS)N)r)r~rrr�)�	attributerErJr��b_i�S_casted�S_copieds     ��r1�(check_equal_but_not_same_array_attributezI_TestCommon.test_astype.<locals>.check_equal_but_not_same_array_attribute�s�����H�i�0�0���H�i�0�0��"�1�a�(�(�(����
�#�#�#��1�6�M����d���Q�4�x��!����!���!���%�%�%���!���r3)�csr�csc�bsr)�indices�indptr�data�coo)�row�colr[�dia)�offsetsr[)	rr�r$rlrr6r��formatr)
r�r^r<r7�D_castedr�rUrQrSrTs
        @@r1�test_astypez_TestCommon.test_astype�s������#�#�#�#�#�#��9�9��
�
��
�M�M�!����!� 	H� 	H�A��x�x��{�{�H�%�
8�
8���8�8�A�D�8�1�1���X�^�X�^�<�<�<��X�-�-�/�/��:�:�:��X�_�a�h�7�7�7�7��H�O�O�A�E�O�2�2�h�>�?�?�?����q�t��4�4�H��H�H�,�-�-�-�	
�	
�	
�	
�	
�	
���"7�7�7�!>�H�H�I�<�<�Y�G�G�G�G�H���E�)�)�!7�H�H�I�<�<�Y�G�G�G�G�H���E�)�)�!4�H�H�I�<�<�Y�G�G�G�G��A 	H� 	Hr3c�0�|�tdd����dd����}t|jtjd����t|���jtjd����t|���j|j��t|�d�����jtjd����t|�d	�����jtjd	����|���}|���}t||u��dS)
NryrRr3r]r�r�r3r0r2)
r�rr�rr6rA�asfptyperarlr)r�rHrIr�s    r1�
test_asfptypez_TestCommon.test_asfptypes%���M�M�&���1�1�1�9�9�!�A�>�>�?�?���Q�W�b�h�w�/�/�0�0�0��Q�Z�Z�\�\�'���)�)<�)<�=�=�=��Q�Z�Z�\�\�(�!�(�3�3�3��Q�X�X�g�&�&�/�/�1�1�7���)�9L�9L�M�M�M��Q�X�X�l�+�+�4�4�6�6�<�b�h�|�>T�>T�U�U�U�
�J�J�L�L��
�J�J�L�L����Q������r3c�<���fd�}�jD]
}||���dS)Nc�����j|}�j|}t|dz|dz�����t|dz|dz�����dS�Nr]������L1@�r�r�rr�r
s   �r1r�z*_TestCommon.test_mul_scalar.<locals>.checksj����/�%�(�C��%�e�,�E��s�1�u�u�Q�w�&7�&7�&9�&9�:�:�:��s�4�x�%��*�)=�)=�)?�)?�@�@�@�@�@r3�r�r�s`  r1�test_mul_scalarz_TestCommon.test_mul_scalar�N���	A�	A�	A�	A�	A��%�	�	�E��E�%�L�L�L�L�	�	r3c�<���fd�}�jD]
}||���dS)Nc�����j|}�j|}td|zd|z�����td|zd|z�����dSrirkr
s   �r1r�z+_TestCommon.test_rmul_scalar.<locals>.check*sj����/�%�(�C��%�e�,�E��q��u�q��w�&7�&7�&9�&9�:�:�:��t�C�x�$�u�*�)=�)=�)?�)?�@�@�@�@�@r3rlr�s`  r1�test_rmul_scalarz_TestCommon.test_rmul_scalar)rnr3c��|jtj}tt��5d|zddd��dS#1swxYwYdSr5)r�rAr�r�r�)r�r�s  r1�test_rmul_scalar_type_errorz'_TestCommon.test_rmul_scalar_type_error5s����!�"�*�-��
�9�
%�
%�	�	��5�L�L�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�?�A�Ac�<���fd�}�jD]
}||���dS)Nc�����j|}�j|}|���}d|d<|}||z}t||���|z��||���z}t|���|���|���z��||dz}t||���|dz��dS)Nrr�r)r�r�r�rr�r5�r6r�r�rErJr8r�s      �r1r�z#_TestCommon.test_add.<locals>.check;s�����/�%�(�C��%�e�,�E����
�
�A��A�c�F��A��A��A��q�!�)�)�+�+��/�2�2�2��A�G�G�I�I�
�A��q�y�y�{�{� �y�y�{�{�Q�Y�Y�[�[�8�
:�
:�
:��A�a�D��A��q�!�)�)�+�+��!��"4�5�5�5�5�5r3rlr�s`  r1�test_addz_TestCommon.test_add:sI���	6�	6�	6�	6�	6�$�%�	�	�E��E�%�L�L�L�L�	�	r3c�<���fd�}�jD]
}||���dS)Nc�����j|}�j|}|���}d|d<|}||z}t|||���z��dS)Nrr�)r�r�r�rr�rvs      �r1r�z$_TestCommon.test_radd.<locals>.checkQsb����/�%�(�C��%�e�,�E����
�
�A��A�c�F��A��A��A��q�!�a�i�i�k�k�/�2�2�2�2�2r3rlr�s`  r1�	test_raddz_TestCommon.test_raddPsI���	3�	3�	3�	3�	3��%�	�	�E��E�%�L�L�L�L�	�	r3c�n���fd�}�jD]&}|tjd��kr�||���'dS)Nc����j|}�j|}t||z
���t	jd����t|dz
���|����t	jgd�gd�gd�gd����}t||z
���||���z
��t||z
���|���|z
��t||dz
||dz
��dS)Nr�r�r�rrrR�r�rrr�rr{rrAr�)r�r�rr�rArr�r�r6r�r�rHr�s    �r1r�z#_TestCommon.test_sub.<locals>.check_s����/�%�(�C��%�e�,�E����
�6�6�8�8�"�(�6�:J�:J�K�K�K����	�2�2�4�4�c�:�:�:��
�
���,�,�,�
�
�
�}�}�}�E�s�K�K���A�
���	�2�2�4�4�c�A�I�I�K�K�6G�H�H�H���E�	�2�2�4�4�a�i�i�k�k�C�6G�H�H�H�
�u�s�1�v�~�s�S��V�|�<�<�<�<�<r3r��r�rAr6r�s`  r1�test_subz_TestCommon.test_sub^sa���	=�	=�	=�	=�	=� �%�	�	�E�����(�(�(�(���E�%�L�L�L�L�	�	r3c�n���fd�}�jD]&}|tjd��kr�||���'dS)Nc����j|}�j|}t||z
gd�gd�gd�g��t||z
gd�gd�gd�g��td|z
���|����tgd�gd�gd�gd����}t||z
||���z
��t||z
|���|z
��t|���|z
|���|z
��t||���z
||���z
��t|d|z
|d|z
��dS)Nr�rr}r~rr�)r�r�rr�r�r(r�s    �r1r�z$_TestCommon.test_rsub.<locals>.checkwsx����/�%�(�C��%�e�,�E���e��i�i�i�	�	�	�)�)�)�-L�M�M�M�����i�i�i�	�	�	�)�)�)�-L�M�M�M���E�	�2�2�4�4�s�d�;�;�;��
�
�f�i�i�i�
�
�
�:�:�:�%F�s�K�K�L�L�A���a��#��	�	���*;�<�<�<���C��!�)�)�+�+��*;�<�<�<��q�y�y�{�{�U�2�A�I�I�K�K�#�4E�F�F�F��u�q�y�y�{�{�2�C�!�)�)�+�+�4E�F�F�F�
�s�1�v��~�s�1�v��|�<�<�<�<�<r3r�r�r�s`  r1�	test_rsubz_TestCommon.test_rsubvsa���	=�	=�	=�	=�	=�"�%�	�	�E�����(�(�(�(���E�%�L�L�L�L�	�	r3c�<���fd�}�jD]
}||���dS)Nc�r�����j|��j|�t�dz������t	�fd�tdd��D����}t	�fd�tdd��D����}t
|���|��dS)Nrc���g|]}|�z��SrNrN)r�rjr�s  �r1r�z8_TestCommon.test_add0.<locals>.check.<locals>.<listcomp>�s���7�7�7�a��E�	�7�7�7r3r�r�c���g|]}|�z��SrNrN)r�rjr�s  �r1r�z8_TestCommon.test_add0.<locals>.check.<locals>.<listcomp>�s���5�5�5�A��C��5�5�5r3)r�r�rr�r�r�r)r6�sumS�sumDr�r�r�s   @@�r1r�z$_TestCommon.test_add0.<locals>.check�s�������/�%�(�C��%�e�,�E�
���	�2�2�4�4�c�:�:�:��7�7�7�7�5��A�;�;�7�7�7�8�8�D��5�5�5�5��q�!���5�5�5�6�6�D��������5�5�5�5�5r3rlr�s`  r1�	test_add0z_TestCommon.test_add0�sI���		6�		6�		6�		6�		6��%�	�	�E��E�%�L�L�L�L�	�	r3c��tgd�gd�g��}tgd�gd�g��}|�|��}|�|��}t|�|�����||z��t|�|�����||z��tgd�gd�g��}tgd�gd�g��}|�|��}|�|��}t|�|�����||z��t|�|�����||z��t|�|�����||z��t|�|�����||z��dS)	N)rRrr|)r]rPr/)rrzr)rrCr�y�?�y@y��y@�y�@r/�y@@y@�y��?�y�y�@r|)rr�r�multiplyr�)	r�rHrIr��Bspr�r^�Csp�Dsps	         r1�test_elementwise_multiplyz%_TestCommon.test_elementwise_multiply�s����7�7�7�8�8�8�$�%�%���7�7�7�8�8�8�$�%�%���m�m�A�����m�m�A�����C�L�L��-�-�5�5�7�7��1��=�=�=��C�L�L��O�O�3�3�5�5�q��s�;�;�;�
�$�$�$�^�^�^�4�5�5���$�$�$�^�^�^�4�5�5���m�m�A�����m�m�A�����C�L�L��-�-�5�5�7�7��1��=�=�=��C�L�L��O�O�3�3�5�5�q��s�;�;�;�	�C�L�L��-�-�5�5�7�7��1��=�=�=��C�L�L��O�O�3�3�5�5�q��s�;�;�;�;�;r3c���tdg��}tdgg��}tgd���}tgd�g��}tdgdgdgg��}tgd�gd	�gd
�g��}gd�}tjd��}|j}	td
gg��}
tddgd
dggg��}|�|��}|�|��}
|�|��}|�|��}|�|��}|�|d��}|�|	��}|�|	dd�d
df��}|�|
��}|||||||||	|
|g}||
|||||||g	}|D]�}|D]�}	|���|���z}n+#t$rtt|j|��Y�TwxYw|�|��}t|���|������|D]�}|D]�}	|���|z}n6#t$rY�'t$rtt|j|��Y�MwxYw|�|��}t|��r#t|���|����t||������dS)NrR����r�r�r)rzr|r�r�r]r�)r{ryr�)rCr�r])ryryryrwr�r�rN)rrA�onesrr�r�r�r�r�rr�r")r�rHrIr�r^�Er��G�H�J�K�Lr�r��Esp�Fsp�Hsp�Hspp�Jsp�Jspp�Kspr��
spmatricesr�r��
dense_mult�sp_mults                           r1�#test_elementwise_multiply_broadcastz/_TestCommon.test_elementwise_multiply_broadcast�s1���1�#�J�J���B�4�&�M�M���(�(�(�O�O���8�8�8�*�����A�3��s�A�3�-� � ���7�7�7�8�8�8�G�G�G�,�-�-���I�I���G�F�O�O��
�C���A�3�%�L�L���Q�q�E�1�Q�%�=�/�"�"���m�m�A�����m�m�A�����m�m�A�����m�m�A�����m�m�A�����}�}�Q�v�Y�'�'���m�m�A�����}�}�Q�q�q�q��4�x�[�)�)���m�m�A�����q�!�Q��1�a��A�q�!�4���3��S�#�t�S�$��D�
��	C�	C�A��
C�
C���!"�����q�y�y�{�{�!:�J�J��!����!�*�a�j�!�<�<�<��H������*�*�Q�-�-��#�G�O�O�$5�$5�z�B�B�B�B�
C��
	=�
	=�A��
=�
=���!"�����q��J�J�� �����H�!����!�*�a�j�!�<�<�<��H������*�*�Q�-�-���g�&�&�=�'����(9�(9�:�F�F�F�F�'���<�<�<�<�
=�
	=�
	=s*�')G�%G9�8G9�>I�
J	�"$J	�J	c	���dtjtjdgdtjdtjgtjdtjtjgg}tt|j|jz��|��|�t
gd�gd�gd�gd����}dtjtjdgdtjttjgtjdtjd	gg}tt|j|z��|��tgd
�gd�g��}tgd�gd
�g��}|�|��}|�|��}tt||z��||z��tgd�gd�g��}tgd�gd�g��}|�|��}|�|��}tj
d���5tt||z��||z��ddd��n#1swxYwYtd	dgdd	gg��}tdd	gdd	gg��}|�|��}|�|��}tj
dd���5ttjt||z����||z��ddd��dS#1swxYwYdS)Nr�r}r~rr���?rPg�?rr�r�r�r�rw)rPr]r�r�)rr�r�r)�divide)r�r)rAr�rr�r�r�r(rrrr)r�r �denomrHrIr�r�s       r1�test_elementwise_dividez#_TestCommon.test_elementwise_divide�sO���r�v�b�f�Q�'��r�v�a���'��V�A�b�f�R�V�,�.��	�7�4�:��
�#:�;�;�X�F�F�F��
�
�f�i�i�i�
�
�
�:�:�:�%F�s�K�K�L�L���r�v�b�f�S�)����s�2�6�*��V�D����*�,��	�7�4�:��#5�6�6��A�A�A�
�$�$�$�^�^�^�4�5�5���$�$�$�^�^�^�4�5�5���m�m�A�����m�m�A�����G�C�#�I�.�.��!��4�4�4�
�7�7�7�8�8�8�$�%�%���7�7�7�8�8�8�$�%�%���m�m�A�����m�m�A����
�[��
)�
)�
)�	:�	:��w�s�S�y�1�1�1�q�5�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:�
�A�a�5�!�A��-� � ���A�a�5�!�A��-� � ���m�m�A�����m�m�A����
�[��(�
;�
;�
;�	D�	D��r�x���c�	�(:�(:�;�;�Q��U�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds$�$H5�5H9�<H9�*6K-�-K1�4K1c���tgd�gd�gd�gd�g��}|�|��}dD]c}||z}tj�||��}t|���|��t|j|j���ddD]}tt|j|���|�|dd�dd�f��}tt|jd��dS)	N�r�rr]r)rr�rRr)rr/rr)rryrzr{�rr�r]r�)r�g������@r[r�r�)rr�rAr!�matrix_powerrr�rr6r��	Exception�__pow__)r�rHrI�exponent�ret_sp�ret_nps      r1�test_powz_TestCommon.test_pow
s����<�<�<����|�|�|�\�\�\�J�K�K���M�M�!����!�	5�	5�H���[�F��Y�+�+�A�x�8�8�F��v�~�~�/�/��8�8�8����v�|�4�4�4�4�*�	:�	:�H��)�Q�Y��9�9�9�9�
�M�M�!�B�Q�B�q�q�q�D�'�"�"���i���A�.�.�.�.�.r3c	�D�|�tgd�gd�gd�gd�g����}tgd�|ztgd�|�������tgd�g��}t||z||���z��dS)N�r�rr�rr�r�r]rr�r]r�rrh)r�r(rrr�r)r�r"r]s   r1�test_rmatvecz_TestCommon.test_rmatvecs����M�M�&�'�'�'�'�'�'�)�)�)�G�G�G�!D�E�E�F�F��!�)�)�)�A�+�s�9�9�9�a�i�i�k�k�/J�/J�K�K�K��Y�Y�Y�K� � ��!�#��'�3������+<�=�=�=�=�=r3c�<�|�dgdgdgg��}tt|td��z����t	|td��z���dgdgdgg��t	|tdg��ztgd�����t	|tdgg��ztdgdgdgg����t	|t
jd��zt
jd����dS)Nr�r]r�rw�r�r�r�r)r�rr"rrr�rAr�rFs  r1�test_small_multiplicationz%_TestCommon.test_small_multiplication%s����M�M�A�3��s�A�3�-�(�(���
�1�u�Q�x�x�<�(�(�)�)�)��a�%��(�(�l�+�+�-�-���a�S�1�#��?�?�?��Q���s���^�U�9�9�9�%5�%5�6�6�6��Q����u���%�u�q�c�A�3���_�'=�'=�>�>�>��Q������(�"�'�&�/�/�:�:�:�:�:r3c��|�dgdgdgg��}t��}t||zd��t||z
d��t||zd��t||zd��t||z
d��t||zd��ttd��d��ttd��d��dS)Nr�r]r�r�r��A @ B�B @ A)r�r�r�eval�r�rHrIs   r1�test_binop_custom_typez"_TestCommon.test_binop_custom_type/s���

�M�M�A�3���a�S�/�*�*���M�M���Q��U�0�1�1�1��Q��U�0�1�1�1��Q��U�0�1�1�1��Q��U�1�2�2�2��Q��U�1�2�2�2��Q��U�1�2�2�2��T�'�]�]�$8�9�9�9��T�'�]�]�$9�:�:�:�:�:r3c��|�dgdgdgg��}td��}t||zd��t||z
d��t||zd��t||zd��t||z
d��t||zd��ttd��d��ttd��d��dS)	Nr�r]r�r�r�r�r�r�)r�r�rr�r�s   r1�!test_binop_custom_type_with_shapez-_TestCommon.test_binop_custom_type_with_shape@s����M�M�A�3���a�S�/�*�*��"�5�)�)���Q��U�0�1�1�1��Q��U�0�1�1�1��Q��U�0�1�1�1��Q��U�1�2�2�2��Q��U�1�2�2�2��Q��U�1�2�2�2��T�'�]�]�$8�9�9�9��T�'�]�]�$9�:�:�:�:�:r3c	��|�tgd�gd�gd�gd�g����}d}|�|��}||z}t|���|�����dS)Nr�r�r�r�rM)r�rrrr�)r�r"�scalar�actualr s     r1�test_dot_scalarz_TestCommon.test_dot_scalarMs}���M�M�%����������7�7�7� C�D�D�E�E�������v�����v�:������(�(�(�*:�*:�*<�*<�=�=�=�=�=r3c	��|�tgd�gd�gd�gd�g����}|�tddgddgddggd����}tgd	�g��j}tt	j||��|���|z��tt	j||�����||z�����tt	j|���|��||z�����tt	j||�����||z�����tttj|d��tttjd|��dS)
Nr�r�r�r�rr�r]r�rw)	r�rrr�operator�matmulr�r�r�)r�r"rIr^s    r1�test_matmulz_TestCommon.test_matmulUs����M�M�%����������7�7�7� C�D�D�E�E���M�M�%�!�A���!�u�a��U� 3�C�8�8�9�9���W�W�W�I��� ��	"�(�/�!�S�"9�"9�"#�)�)�+�+��"3�	5�	5�	5�	"�(�/�!�Q�"7�"7�"?�"?�"A�"A�#$�q�5�/�/�"3�"3�	5�	5�	5�!�(�/�!�)�)�+�+�q�"A�"A�#$�q�5�/�/�"3�"3�	5�	5�	5�!�(�/�!�Q�Y�Y�[�[�"A�"A�#$�q�5�/�/�"3�"3�	5�	5�	5�	�j�(�/�1�a�8�8�8��j�(�/�1�a�8�8�8�8�8r3c
��|�tgd�gd�gd�gd�g����}tgd�g��j}t	||z|���|z��t
|tgd���zjd��t
|tdgdgd	gg��zjd
��t
|tdgdgd	gg��zjd
��tt|tgd���zt����tt|tgd���jztj����tddg��tgd���tdgdgg��tgd���tdgdgg��g}|D]}tt|j|���t	|tgd���zt|jgd�����t	|dgdgd	ggzt#t|jgd�����j��dS)Nr�r�r�r�rw)rRr�r]r�)rRr�rh)r�r(rrrr�rr�rr@r
rAr�r�r�rrHr')r�r"r^�bad_vecsr7s     r1�test_matvecz_TestCommon.test_matvecjs)���M�M�&�'�'�'�'�'�'�)�)�)�G�G�G�!D�E�E�F�F���W�W�W�I��� ��!�!�c�'�1�9�9�;�;��+<�=�=�=�	�a�%����.�.�(�/��5�5�5��a�%�!��a�S�!��
�.�.�.�5�e�<�<�<��a�&�1�#�q�c�1�#��/�/�/�6�u�=�=�=�	�
�1�u�W�W�W�~�~�-�w�7�7�8�8�8��
�1�v�g�g�g���0�0�"�)�<�<�=�=�=��1�Q�%�L�L�%�	�	�	�"2�"2�E�A�3��s�)�4D�4D��7�7�7�O�O�V�a�S�!��I�%6�%6�8���	4�	4�A��*�a�i��3�3�3�3�	"�!�E�'�'�'�N�N�"2�C���G�G�G�4D�4D�E�E�E�!�!�a�S�!��a�S�M�/�8�C���G�G�G�<L�<L�3M�3M�3O�P�P�P�P�Pr3c��tgd�gd�gd�gd�g��}tgd�gd�gd�gd�g��}tddgddgddggd��}|�|��}|�|��}t||z���||z��t||z||z��t||z||z��t||z||z��|���}|}||z}t||z���|��t||z|��t||z|��t||z|��|���}t||z���|��t||z|��t||z|��t||z|��|���}t||z���|��t||z|��t||z|��t||z|��d	}	d
}
tj	d��t|	df��}t|	��D]7}td��D]%}
tj��}||
kr
||
z|||
f<�&�8|�|��}||jz}t|���|���|j���z��t|���|���|���jz��|�ddgddgg��}|�ddgddgd
dgg��}tt|j|��dS)Nr�r�r�r�rr�r]r�r�g333333�?r�rRr/ry)r(rr�rr�r4r5r6r�r[rr�rr�r�r�)r�rE�a2rJ�asp�bsp�cspr8�wantr��fracrHr�r�r�rIs                r1�test_matmat_sparsez_TestCommon.test_matmat_sparse�s����G�G�G�G�G�G�I�I�I�g�g�g�6�7�7��
�G�G�G�G�G�G�I�I�I�g�g�g�6�
7�
7���Q�q�E�1�Q�%��1��&�s�+�+���m�m�A�����m�m�A����!�3�s�7�"3�"3�"5�"5�q��s�;�;�;�!�#�a�%��1��-�-�-�!�!�C�%��1��-�-�-�!�"�S�&�!�A�#�.�.�.��i�i�k�k��
����s��!�3�s�7�"3�"3�"5�"5�t�<�<�<�!�#�a�%��.�.�.�!�!�C�%��.�.�.�!�"�S�&�$�/�/�/��i�i�k�k��!�3�s�7�"3�"3�"5�"5�t�<�<�<�!�#�a�%��.�.�.�!�!�C�%��.�.�.�!�"�S�&�$�/�/�/��i�i�k�k��!�3�s�7�"3�"3�"5�"5�t�<�<�<�!�#�a�%��.�.�.�!�!�C�%��.�.�.�!�"�S�&�$�/�/�/�
������A�����1�Q�%�L�L���q���	$�	$�A��1�X�X�
$�
$���M�O�O���t�8�8��t�V�A�a��c�F��
$�

�M�M�!����
�a�c�E��!�!�)�)�+�+�q�y�y�{�{�Q�S�[�[�]�]�/J�K�K�K�!�!�)�)�+�+�q�y�y�{�{�Q�Y�Y�[�[�]�/J�K�K�K�
�M�M�A�a�5�!�A��-�(�(���M�M�A�a�5�!�A���!�u�-�.�.���j�!�)�Q�/�/�/�/�/r3c	��tgd�gd�gd�gd�g��}|�|��}tddgddgd	d
gg��tddgddgd	d
gg��g}|D]d}||z}tt	|t|������t
|jd��t
|t||�����edS)Nr�r�r�r�r�r]r�rRr/ry�rRr])	r(r�rrr@�typerr�r)r�rEr��bsrJ�results      r1�test_matmat_densez_TestCommon.test_matmat_dense�s����G�G�G�G�G�G�I�I�I�g�g�g�6�7�7���m�m�A�����a��U�A�a�5�!�A��'�(�(�&�1�Q�%��1��q��e�1D�*E�*E�
F���	+�	+�A���U�F��J�v�t�A�w�w�/�/�0�0�0����u�-�-�-����Q�q���*�*�*�*�		+�	+r3c��tjgd�gd�gd�gddgddgg��}|���}|�|��}dD�]}|�|��}t|j|��t|���|��|�|d	z���|��}t|j|��t|���|d	z��t|d
z��|��}t|j|��t|���|����dD]e}|�|��}t||��|�|d	z���|��}t||d	z���fdS)Nre�rr�rR)r/rrr�r]rr�)rXr\rWrVr_r;�lil�@�_matrix)r�dense)	rsr
r�r��asformatrrarr�)r�rHr^rarErJr8s       r1�test_sparse_format_conversionsz*_TestCommon.test_sparse_format_conversions�s����K����������1�Q�q�E�1�Q�%�=�A�A��
�I�I�K�K���M�M�!����A�	/�	/�F��
�
�6�"�"�A����&�)�)�)��q�y�y�{�{�A�.�.�.��
�
�a��d�#�#�,�,�V�4�4�A����&�)�)�)��q�y�y�{�{�A�b�D�1�1�1�(��V�i�'�(�(��+�+�A����&�)�)�)��q�y�y�{�{�A�.�.�.�.�(�	(�	(�F��
�
�6�"�"�A��q�!�$�$�$��
�
�a��d�#�#�,�,�V�4�4�A��q�!�B�$�'�'�'�'�	(�	(r3c	�J�tgd�gd�gd�g��}tgd�gd�g��}t||��}|�|��}dD]M}t|d|z��}dD]5}d	D]0}t	|||f�
�����|���1�6�NdS)Nr�r��rrrRr/r��r�rr/)rX�to)r�r]r�ry)r�r]r�rRryr���	blocksize)rr
r�r~rr�)	r�r7r8rHr�ra�fn�X�Ys	         r1�
test_tobsrz_TestCommon.test_tobsr�s����9�9�9�Y�Y�Y�y�y�y�1�2�2���7�7�7�7�7�7�#�$�$����1�I�I���m�m�A�����	D�	D�F���d�V�m�,�,�B�!�
D�
D��,�D�D�A� ���q�!�f�!5�!5�!5�!=�!=�!?�!?��C�C�C�C�D�
D�	D�	Dr3c�0����j}tjgg��}||g���fd�}��d��}t	tj|�����tjtd������t	|j���td����tt|jd����jD]-}tt�����D]}|||����.dS)Nc���t�||���}��|��}|���}|���}t|���|��t|������|��t|j|j��dSr�)rr�rrr�rr6)r6r�r�r�rErJr�r�s      ��r1r�z)_TestCommon.test_transpose.<locals>.check�s��������5�1�1�1�C��M�M�#�&�&�E����!�!�A��
�
���A��q�y�y�{�{�A�.�.�.��q�{�{�}�}�4�4�6�6��<�<�<����!�'�*�*�*�*�*r3r��rRr�r)�axes)r�rArr�rrr�rrr�r�r�r�r�)r�r�r�r�rpr6r�r�s`      @r1�test_transposez_TestCommon.test_transpose�s���������"������5�>��		+�		+�		+�		+�		+�		+��
�
�f�%�%���2�<��.�.�6�6�8�8��<��f�
�
�6�6�	8�	8�	8��5�7�?�?�,�,�e�F�m�m�<�<�<��j�%�/��:�:�:�:��(�	 �	 �E��3�x�=�=�)�)�
 �
 ����e�Q�����
 �	 �	 r3c�<���fd�}�jD]
}||���dS)Nc����j|}�j|}||z}t|||z��||z}t|||z��dSr5)r�r�r�r6r�r��sum1�sum2r�s     �r1r�z)_TestCommon.test_add_dense.<locals>.checks^����/�%�(�C��%�e�,�E���;�D��t�S�3�Y�/�/�/��3�;�D��t�S�3�Y�/�/�/�/�/r3rlr�s`  r1�test_add_densez_TestCommon.test_add_dense
sI���	0�	0�	0�	0�	0��%�	�	�E��E�%�L�L�L�L�	�	r3c�n���fd�}�jD]&}|tjd��kr�||���'dS)Nc�8���j|}�j|}|jtkr2||z
}t	|||z
��||z
}t	|||z
��dS||z|z|z
}t	|||z��||z|z|z
}t	|||z��dSr5)r�r�r6r�rrs     �r1r�z)_TestCommon.test_sub_dense.<locals>.checks�����/�%�(�C��%�e�,�E��y�D� � ��U�{��"�4��s��3�3�3��s�{��"�4��s��3�3�3�3�3��c�	�C��5�0��"�4��s��3�3�3���
��-��4��"�4��s��3�3�3�3�3r3r�r�r�s`  r1�test_sub_densez_TestCommon.test_sub_densesa���	4�	4�	4�	4�	4�$�%�	�	�E�����(�(�(�(���E�%�L�L�L�L�	�	r3c	������tjgd�gd�gd�g���tjgd�gd�gd�g���tjgd�gd�gd�g�������fd	�}�jD]^}tjtjtjfD]8}d
D]3}|tj|��tj|��|���4�9�_dS)N)r�rr�)rrRr/rD)r�r�r])rr�ryr�)ry@@r/)r��?y��c�x��tj|tj��r)�
���|����}n(�
��
�|����}|dkr|�d��}nu|dkr|�d��}nY|dkr��|��}n=|dkr)�
���|����}nt
���t��5}|�td��|�
|��}|�|��}ddd��n#1swxYwYtj
t|��t|����}tt|��|��t|j|j��tjt|��t|����}	tt|��|	��t|j|	j��dS)Nr�r��scalar2r�r�rszHTaking maximum .minimum. with > 0 .< 0. number results to a dense matrix)rArd�complexfloatingr�rlr�r�rr�r#�maximum�minimumr�rrr6)r6�dtype2�btyperHrIr��max_s�min_s�max_d�min_d�A_dense�A_dense_cpx�B_denser�s          ����r1r�z/_TestCommon.test_maximum_minimum.<locals>.check9s����}�U�B�$6�7�7�
9��M�M�+�"4�"4�U�";�";�<�<����M�M�'�.�.��"7�"7�8�8���� � ��K�K��N�N����)�#�#��K�K��O�O����'�!�!��N�N�6�*�*����(�"�"��M�M�'�.�.��"8�"8�9�9��� �l�l�"�"�$�$�
%���
�
�2�e�g�g�g��	�	�!�����	�	�!����
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%��J�w�q�z�z�7�1�:�:�6�6�E��w�u�~�~�u�5�5�5����e�k�2�2�2��J�w�q�z�z�7�1�:�:�6�6�E��w�u�~�~�u�5�5�5����e�k�2�2�2�2�2s�AE#�#E'�*E')r�r
r�rs)rArr�r�float_�complex_r6)r�r�r6rrrrrs`    @@@r1�test_maximum_minimumz _TestCommon.test_maximum_minimum3s�������(�I�I�I�y�y�y�)�)�)�<�=�=���(�I�I�I�y�y�y�*�*�*�=�>�>���h�	�	�	�<�<�<����F�G�G��	3�	3�	3�	3�	3�	3�	3�	3�>�%�	D�	D�E��7�B�I�r�{�;�
D�
D��E�D�D�E��E�"�(�5�/�/�2�8�F�+;�+;�U�C�C�C�C�D�
D�	D�	Dr3c��|j}t|���j|j��t|�|d���j|j��t|�|d���j|j��t|������|�����t|�|d������|�����t|�|d������|�����t
|d|jz��}t|��|u��t|d���|u��t|d���j|j��t|d������|�����tt|���|����dS)NTr�Fr�)	r�rr�ra�	__class__r�r~rrK)r�rH�toselfs   r1�	test_copyz_TestCommon.test_copy]s����J��	�Q�V�V�X�X�_�a�h�/�/�/��Q�[�[���[�-�-�4�a�h�?�?�?��Q�[�[���[�.�.�5�q�x�@�@�@��Q�V�V�X�X�%�%�'�'������5�5�5��Q�[�[���[�.�.�6�6�8�8�!�)�)�+�+�F�F�F��Q�[�[���[�/�/�7�7�9�9�1�9�9�;�;�G�G�G���4�!�(�?�+�+�������A�
�������E�"�"�"�a�'�(�(�(��V�V��&�&�&�-�q�x�8�8�8��V�V��&�&�&�.�.�0�0�!�)�)�+�+�>�>�>�	�+�A�F�F�H�H�a�8�8�8�9�9�9�9�9r3c�
�ttjd���dd����}|�|��}t||��D]'\}}t
|���|���(dS)N�2r/rM)r(rArr�r��ziprr�)r�rIrHr7r8s     r1�
test_iteratorz_TestCommon.test_iteratorusx���2�9�R�=�=�(�(��B�/�/�0�0���M�M�!������1�I�I�	)�	)�D�A�q�������a�(�(�(�(�	)�	)r3c��tg��}|�d��}|�d��}|�d��}|�d��}|�d��}tjddg��}|�|��}|�|��}	|�|��}
|�|��}|�|��}|�|��}
t|�|��jtj||����t|	�|��jtj||����t|�|	��jtj||����t|
�|��jtj||����t|
�|
��jtj||����t|�|
��jtj||����t|�|
��jtj||����t|
�|��jtj||����tt|j|��tt|j|��t|�
|��jtj
||����t|	�
|	��jtj
||����t|�
|��jtj
||����t|�
|��jtj
||����t|	�
|��jtj
||����t|�
|��jtj
||����t|�
d��jtj
|d����t|	�
d��jtj
|d����t|�
d��jtj
|d����tt|j
|��tt|j
|��t|�|��j|�|����t|	�|	��j|�|����t|�|��j|�|����tt|j|��tt|	j|��dS)Nrlr�rnr�r�r/ry)rr�rAr�r�rrrHr�r�r�r�)r�r�rErJr8r�r9r:r�r�r��dsp�esp�fsps              r1� test_size_zero_matrix_arithmeticz,_TestCommon.test_size_zero_matrix_arithmetic|s����B�i�i���K�K������K�K������K�K������K�K������K�K������G�Q��F�O�O���m�m�A�����m�m�A�����m�m�A�����m�m�A�����m�m�A�����m�m�A����	�3�7�7�3�<�<�>�2�6�!�Q�<�<�8�8�8��3�7�7�3�<�<�>�2�6�!�Q�<�<�8�8�8��3�7�7�3�<�<�>�2�6�!�Q�<�<�8�8�8��3�7�7�3�<�<�>�2�6�!�Q�<�<�8�8�8��3�7�7�3�<�<�>�2�6�!�Q�<�<�8�8�8��3�7�7�3�<�<�>�2�6�!�Q�<�<�8�8�8��3�7�7�3�<�<�>�2�6�!�Q�<�<�8�8�8��3�7�7�3�<�<�>�2�6�!�Q�<�<�8�8�8�	�j�#�'�1�-�-�-��j�#�'�1�-�-�-�	�3�<�<��,�,�.���A�q�0A�0A�B�B�B��3�<�<��,�,�.���A�q�0A�0A�B�B�B��3�<�<��,�,�.���A�q�0A�0A�B�B�B��3�<�<��?�?�,�b�k�!�Q�.?�.?�@�@�@��3�<�<��?�?�,�b�k�!�Q�.?�.?�@�@�@��3�<�<��?�?�,�b�k�!�Q�.?�.?�@�@�@��3�<�<��?�?�,�b�k�!�Q�.?�.?�@�@�@��3�<�<��?�?�,�b�k�!�Q�.?�.?�@�@�@��3�<�<��?�?�,�b�k�!�Q�.?�.?�@�@�@�	�j�#�,��2�2�2��j�#�,��2�2�2�	�3�;�;�s�+�+�-�q�y�y��|�|�<�<�<��3�;�;�s�+�+�-�q�y�y��|�|�<�<�<��3�;�;�s�+�+�-�q�y�y��|�|�<�<�<�	�j�#�+�s�3�3�3��j�#�+�s�3�3�3�3�3r3c��tg��}|�d��}|�d��}|�d��}|||fD�]}|�|��}t|���j|��t|���j|��t|���j|��t|���j|��t|�	��j|��t|�
��j|����dS)Nrlrnr�)rr�r�rr6rHr5r4�tolil�todok�tobsr)r�r�rErJr8r;�spms       r1�test_size_zero_conversionsz&_TestCommon.test_size_zero_conversions�s���B�i�i���K�K������K�K������K�K������Q���	1�	1�A��-�-��"�"�C��s�y�y�{�{�}�a�0�0�0��s�y�y�{�{�}�a�0�0�0��s�y�y�{�{�}�a�0�0�0��s�y�y�{�{�}�a�0�0�0��s�y�y�{�{�}�a�0�0�0��s�y�y�{�{�}�a�0�0�0�0�	1�	1r3c����ddl�t��}|�t��|��fd���}|��dS)Nrc�v���j���}t�j��D�]}����||�����}t
|j|j��t|�	��|�	����t
|j
|j
��|j���D]Y\}}t|tj��rt||j|���;t!||j|k���Z��
dS)N)�protocol)r�r�r��HIGHEST_PROTOCOL�loads�dumpsrr�rr�rar>�itemsr@rAr
r)r�r/�sploaded�keyr	�pickler�s     ��r1r�z&_TestCommon.test_pickle.<locals>.check�s����J�O�O�%�%�E�!�&�"9�:�:�	
?�	
?��!�<�<����U�X��(N�(N�O�O���U�[�(�.�9�9�9�"�5�=�=�?�?�H�4D�4D�4F�4F�G�G�G��U�\�8�?�;�;�;� %�� 4� 4� 6� 6�?�?�H�C��!�#�r�z�2�2�?�*�3��0A�#�0F�G�G�G�G���x�'8��'=� =�>�>�>�>�	?�	
?�	
?r3)r6rr�r#)r�r�r�r6s`  @r1�test_picklez_TestCommon.test_pickle�sd�����
�
�
��!�!���
�
�*�+�+�+�	�	?�	?�	?�	?�	?�

��	?�	������r3c�2���fd�}dD]
}||���dS)Nc����|dkrtjd���jttfvrtjd��tt|��}��t
jd���dd��dz��}||�	����}||��}t|�	��|��dS)N�signz2sign conflicts with comparison op support on Numpyz%Unary ops not implemented for dok/lilr�rRr/�4@)r�r�r�rrr~rArr�r�r)r��ufuncr��X0�X2r�s     �r1r�z5_TestCommon.test_unary_ufunc_overrides.<locals>.check�s�����v�~�~���/�0�0�0��}��Z� 8�8�8���C�D�D�D��B��%�%�E��
�
�b�i��m�m�3�3�A�q�9�9�C�?�@�@�A���q�y�y�{�{�#�#�B���q���B��r�z�z�|�|�R�0�0�0�0�0r3)�sin�tan�arcsin�arctan�sinh�tanh�arcsinh�arctanh�rintr:�expm1�log1p�deg2rad�rad2deg�floor�ceil�trunc�sqrtrErN)r�r�r�s`  r1�test_unary_ufunc_overridesz&_TestCommon.test_unary_ufunc_overrides�sH���	1�	1�	1�	1�	1��	�	�D�
�E�$�K�K�K�K�		�	r3c�(�tjgd�gd�gd�g��}|�|��}t|�d��du��t|jddgddgddgg��|�d	��t|jddgddgg��|�d��t|jddgddgddgg��|�d
��t|jgd�gd�gd
�g��|�d
��t|jgd�gd�gd
�g��|�dd��t|jddgddgddgg��dD]}tt|j|���dS)N�r�rr�rR�r]rrr�r�rrr�r�r]r�rr]r��r]r]rr1)r]rrrD)r�)r�r]r�rw�	rArr�r�resizerrHr�r�)r�r^r<�	bad_shapes    r1�test_resizez_TestCommon.test_resize�s���H�l�l�l�"�l�l�"�l�l�$�
%�
%��
�M�M�!��������� � �D�(�)�)�)��1�3�!�Q��"#�Q��"#�Q��!)�	*�	*�	*�	
��������1�3�!�Q��"#�Q��!)�	*�	*�	*�	��������1�3�!�Q��"#�Q��"#�Q��!)�	*�	*�	*�	
��������1�3����!*���!*���!,�	-�	-�	-�	
��������1�3����!*���!*���!,�	-�	-�	-�
	
����A�����1�3�!�Q��"#�Q��"#�Q��!)�	*�	*�	*�:�	;�	;�I��*�a�h�	�:�:�:�:�	;�	;r3c��|j}|j}|�|d���}t|���|�����|t
vrt
t||����|�||jd���}t|���|�����|t
vrt
t||����|�|tj
d���}t|���|�����|�|d���}t|���|�����t
t||����dD]�}||kr�	|�|��}|�|d���}t|���|�����|�|d���}t|���|�����t
t||������dS)NFr�)r6r�T)rVrWr\r_r;r�)
r�rarr:r��NON_ARRAY_BACKED_FORMATSrrKr6rAr0rr�)r�rH�self_formatr��other_formatrIs      r1�test_constructor1_basez"_TestCommon.test_constructor1_bases���J���h��
�K�K���K�&�&�� ������a�i�i�k�k�:�:�:��6�6�6��+�A�q�1�1�2�2�2�
�K�K����u�K�5�5�� ������a�i�i�k�k�:�:�:��6�6�6��+�A�q�1�1�2�2�2�
�K�K����%�K�8�8���1�9�9�;�;��	�	���4�4�4�
�K�K���K�%�%�� ������a�i�i�k�k�:�:�:��+�A�q�1�1�1�2�2�2�F�		7�		7�L��{�*�*���
�
�<�(�(�A����A�E��*�*�A�$�Q�Y�Y�[�[�!�)�)�+�+�>�>�>����A�D��)�)�A�$�Q�Y�Y�[�[�!�)�)�+�+�>�>�>��/��1�5�5�5�6�6�6�6�		7�		7r3N)`r�r�r��__doc__r$r��classmethodr�r�r�r�r�rrrrrr!r&r)r,r<rGrNrUrXr_rcrurr�r��mark�slowr�r�r�r�r�r�r�r�r�rrrr
rrrr*r.r�r4r7r9r=rKrNrcrfrmrqrsrwrzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr!r&r,r7rPrZr_rNr3r1r�r��s�������@�@�"�K��=�=��[�=�,���	1�	1�	1�#�#�#�J%�%�%�N=�=�=�~<�<�<�|8�8�8�t8�8�8�t?�?�?�=�=�=�
:�:�:�
������/�/�/�$>�>�>�I�I�I�F�F�F�E�E�E�/�/�/�
/�/�/�
F�F�F�B?�?�?�*=�*=�*=�X�[��50�50���50�n9�9�9�>#�#�#�#�#�#�O�O�O�O�O�O�! �! �! �F
>�
>�
>���� 6�6�6�(7�7�7� � � �D
?�
?�
?���� 6�6�6�(7�7�7�A�A�A�,���"�Y�Y��[�Y��

�

��[�

��

�

��[�

��Y�Y��[�Y�*'6�'6�'6�R#6�#6�#6�J�&H�&H��[�&H�P���	�	�	�	�	�	����
���,������0���2
�
�
�<�<�<�*5=�5=�5=�n!D�!D�!D�F/�/�/�$>�>�>�;�;�;�;�;�;�";�;�;�>�>�>�9�9�9�*Q�Q�Q�:40�40�40�l+�+�+�(�(�(�2
D�
D�
D� � � �6������6(D�(D�(D�T:�:�:�0)�)�)�84�84�84�t
1�
1�
1����(���*";�";�";�H7�7�7�7�7r3r�c�&�eZdZd�Zd�Zd�Zd�ZdS)�_TestInplaceArithmeticc��tjd��}|�|��}|���}|���}||z
}||z
}t	||��|���}|���}||z}||z}t	||��tttj||��|���}|���}|�	|j
��}||j
z}t	||��tttj||��dS)Nr�)
rAr�r�r�rr�r�r��imulrrr��	ifloordiv)r�rErJr7r8s     r1�test_inplace_densez)_TestInplaceArithmetic.test_inplace_dense5s���G�F�O�O���M�M�!����
�F�F�H�H��
�F�F�H�H��	�Q���	�Q����1�a� � � �
�F�F�H�H��
�F�F�H�H��	�Q���	�Q����1�a� � � �	�j�(�-��A�6�6�6�
�F�F�H�H��
�F�F�H�H��
�E�E�!�#�J�J��	�Q�S����1�a� � � �	�i��!3�Q��:�:�:�:�:r3c�<���fd�}�jD]
}||���dS)Nc� ���j|}�j|}tjt	d��|d���rT|���}|dz}|���}|dz}t
||�����tjt	d��|d���rV|���}|dz}|���}|dz}t
||�����dSdS�Nr]�	same_kind)�castingrj�r�r�rA�can_castr�r�rr��r6r�r�rErJr�s     �r1r�z6_TestInplaceArithmetic.test_imul_scalar.<locals>.checkQs�����/�%�(�C��%�e�,�E��{�4��7�7�E�;�?�?�?�
3��J�J�L�L���Q����H�H�J�J���Q���"�1�a�i�i�k�k�2�2�2��{�4��:�:�u�k�B�B�B�
3��J�J�L�L���T�	���H�H�J�J���T�	��"�1�a�i�i�k�k�2�2�2�2�2�
3�
3r3rlr�s`  r1�test_imul_scalarz'_TestInplaceArithmetic.test_imul_scalarPsI���	3�	3�	3�	3�	3�&�%�	�	�E��E�%�L�L�L�L�	�	r3c�z���fd�}�jD],}tj|tj��s||���-dS)Nc� ���j|}�j|}tjt	d��|d���rT|���}|dz}|���}|dz}t
||�����tjt	d��|d���rV|���}|dz}|���}|dz}t
||�����dSdSrlrorqs     �r1r�z6_TestInplaceArithmetic.test_idiv_scalar.<locals>.checkhs�����/�%�(�C��%�e�,�E��{�4��7�7�E�;�?�?�?�
3��J�J�L�L���Q����H�H�J�J���Q���"�1�a�i�i�k�k�2�2�2��{�4��:�:�u�k�B�B�B�
3��J�J�L�L���T�	���H�H�J�J���T�	��"�1�a�i�i�k�k�2�2�2�2�2�
3�
3r3)r�rArp�int_r�s`  r1�test_idiv_scalarz'_TestInplaceArithmetic.test_idiv_scalargs`���	3�	3�	3�	3�	3�$�%�	�	�E��;�u�b�g�.�.�
���e�����		�	r3c�
�|�tjd����}|�tjd����}|�tjd����}||z
}||z}t|j|j��||z}||z}t|j|j��||z}||z
}t|j|j��tttj||��dS)Nr/)	r�rAr!rrHr�r�r�rh)r�rErJ�bps    r1�test_inplace_successz+_TestInplaceArithmetic.test_inplace_success�s���
�M�M�"�&��)�)�$�$���M�M�"�&��)�)�$�$��
�]�]�2�6�!�9�9�
%�
%��	�Q���
�!�V�����R�T�"�"�"�	�Q���
�!�V�����R�T�"�"�"�	�Q���
�!�V�����R�T�"�"�"��i��!3�Q��:�:�:�:�:r3N)r�r�r�rirrrvryrNr3r1rere4sP������;�;�;�6���.���2;�;�;�;�;r3rec�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�_TestGetSetc�`���fd�}tD]}|tj|����� dS)Nc���tgd�gd�gd�gd�g|���}��|��}|j\}}t||��D]6}t||��D]"}t	|||f|||f���#�7t	t|d��|��dD]$}t
ttf|j	|���%dS)Nr1�rRr�r�rr]rrDr3�r�r���rr�r#)rRrr�)rRr�rw)
rr�r�r�rr�r��
IndexErrorr��__getitem__)	r6r^rHr"r%r�r�r�r�s	        �r1r�z*_TestGetSet.test_getelement.<locals>.check�s	����w�w�w��w�w��w�w��w�w� �(-�.�.�.�A��
�
�a� � �A��'�C�A�a��A�2�q�\�\�
1�
1����r�1���1�1�A� ��1�Q�3���1�Q�3��0�0�0�0�1�
��a��f���u�-�-�-�B�
J�
J���z�9�5�q�}�b�I�I�I�I�
J�
Jr3�r$rAr6r�s`  r1�test_getelementz_TestGetSet.test_getelement�sW���	J�	J�	J�	J�	J�$&�	#�	#�E��E�"�(�5�/�/�"�"�"�"�	#�	#r3c�`���fd�}tD]}|tj|����� dS)Nc������d|���}t��5}|�td��|�d��|d<|�d��|d<|�d��|d	<|�d
��|d<|�d��|d
<|�d��|d<|�d��|d	<ddd��n#1swxYwY|t
jkr+t|���gd�gd�gd�g��dD]}tt|j|d���gd�tgd���fD]}tt|jd|���tj|t
j��s1|t
jkr#dD]"}tt |jd|���dSdSdS)Nr�r3r�rrlrA�r�r]r�r�rr�r{�rr�rz�r�r�r/)rr/rr{)rrrRr)r]rrzr))rrR)r�rRr�r�r$g�^@rw)r�)r�rr�r#r�rA�bool_rr�r�r��__setitem__rr�rdrr�)r6rHr�r�r�r�s     �r1r�z*_TestGetSet.test_setelement.<locals>.check�s6����
�
�e�5�
�1�1�A�"�$�$�	
(���
�
�2�\�^�^�^��*�*�Q�-�-��$���*�*�S�/�/��$���*�*�Q�-�-��$���*�*�S�/�/��$���*�*�Q�-�-��$�� �:�:�a�=�=��%���*�*�Q�-�-��$��	
(�	
(�	
(�	
(�	
(�	
(�	
(�	
(�	
(�	
(�	
(����	
(�	
(�	
(�	
(���� � �"��I�I�K�K�$���$���$�������8�
D�
D���j�!�-��U�C�C�C�C��g�g�u�W�W�W�~�~�.�
C�
C���j�!�-���B�B�B�B��M�%��);�<�<�
F��R�X�%�%��F�F�A�!�)�Q�]�E�1�E�E�E�E�
F�
F�%�%�F�Fs�CC7�7C;�>C;r�r�s`  r1�test_setelementz_TestGetSet.test_setelement�sX��� 	F� 	F� 	F� 	F� 	F�D&�	#�	#�E��E�"�(�5�/�/�"�"�"�"�	#�	#r3c�`���fd�}�jD]}|tj|����� dS)Nc������d|���}t��5}|�td��d|d<ddd��n#1swxYwYt	|dd��dS)N)r�rMr3r�r�)rrC)r�rr�r#r�r6rHr�r�s   �r1r�z9_TestGetSet.test_negative_index_assignment.<locals>.check�s�����
�
�g�U�
�3�3�A�"�$�$�
���
�
�2�\�^�^�^���%��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
��5��1�%�%�%�%�%s�!A�A�Ar�r�s`  r1�test_negative_index_assignmentz*_TestGetSet.test_negative_index_assignment�sU���	&�	&�	&�	&�	&��%�	#�	#�E��E�"�(�5�/�/�"�"�"�"�	#�	#r3c	������d\�����fd�}dddtd��dfdtd��ftd��td��ffD]\}}|||d���dS)	N�r/rMc�V��|�d|�d|��}����f��}t��5}|�td��d|||f<ddd��n#1swxYwYt	|���||���t	|||fd|���dS)Nz ; r�r�r�)r�rr�r#rr�)	r�r��nitemsr.rHr�r;r�r�s	      ���r1�	_test_setz3_TestGetSet.test_scalar_assign_2.<locals>._test_set�s����$%�A�A�q�q�q�&�&�1�C��
�
�q�!�f�%�%�A�"�$�$�
���
�
�2�\�^�^�^���!�Q�$��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
 ��������=�=�=�=���!�Q�$���C�8�8�8�8�8�8s�#A � A$�'A$�r]r��r�r{r�r�r�r�)r�r�r�r�r�r;r�s`   @@r1�test_scalar_assign_2z _TestGetSet.test_scalar_assign_2�s���������1�	9�	9�	9�	9�	9�	9�	9��W�h��r���B��"�e�B�i�i���B�i�i��r���+�-�	�	�D�A�q��I�a��A�����	�	r3c�L�|�d��}tjd��}t��5}|�t
d��||fD]}d|d<d|d<d|d<�	ddd��n#1swxYwYt
|���|��dS)Nr.r�r�r�rRr�r|�r�rArrr�r#rr��r�rHrIr�r�s     r1�test_index_scalar_assignz$_TestGetSet.test_index_scalar_assign�s����M�M�&�!�!���H�V����
�
 �
 �	�C��J�J�.�X�
Z�
Z�
Z���V�
�
����#����#����#���
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�1�9�9�;�;��*�*�*�*�*s�2A7�7A;�>A;N)r�r�r�r�r�r�r�r�rNr3r1r{r{�s`������#�#�#�,$#�$#�$#�L#�#�#����$
+�
+�
+�
+�
+r3r{c��eZdZd�ZdS)�
_TestSolvec��d}tj�d��t||ft���}tj�|��}tj�|dz
��dtj�|dz
��zz}tj�|��}t
t|����D]}|||||f<�t
t|����D]/}|||||dzf<t||��||dz|f<�0|�	|��}t��5}|�td��t|���|��}ddd��n#1swxYwYt||z|��dS)Nr�rr3r�rr)rAr�r[rrr�r�r�rr�rr�r#r)�solver)r�r�rHr7r8r�r�r�s        r1�
test_solvez_TestSolve.test_solve	s���
��
�	���q�����1�Q�%�w�'�'�'���I�N�N�1�����I�N�N�1�Q�3����2�9�>�>�!�A�#�#6�#6� 6�6���I�N�N�1�����s�1�v�v���	�	�A��q�T�A�a��c�F�F��s�1�v�v���	'�	'�A���t�A�a��!��e�H� ��1����A�a��c�!�e�H�H��M�M�!����
�
 �
 �	!�C��J�J�.�?�
A�
A�
A��Q���
�
�a� � �A�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	�A�a�C��"�"�"�"�"s�>F%�%F)�,F)N)r�r�r�r�rNr3r1r�r�	s#������#�#�#�#�#r3r�c�J�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)�_TestSlicingc�F�t|�dtj���ddd�fjtj��t|�dtj���ddd�fjtj��t|�dtj���ddd�fjtj��t|�dtj���ddd�fjtj��dS)N�r�rMr3rr�r/)rr�rAr3r6rRr0r�r�s r1�test_dtype_preservationz$_TestSlicing.test_dtype_preservation	s����T�]�]�6���]�:�:�1�Q�q�S�5�A�G���R�R�R��T�]�]�6���]�:�:�1�Q�q�S�5�A�G���R�R�R��T�]�]�6���]�<�<�Q�q��s�U�C�I�2�:�V�V�V��T�]�]�6���]�<�<�Q�q��s�U�C�I�2�:�V�V�V�V�Vr3c��tjtjtjtjfD]�}|�d|���}t
|dd�ddd�fj|��t
|ddd�dd�fj|��t
|dddd�fj|��t
|ddd�dfj|����dS)NrUr3rr]�rAr3rRr0r�r�rr6�r��dtrHs   r1�#test_dtype_preservation_empty_slicez0_TestSlicing.test_dtype_preservation_empty_slice	s����8�R�X�r�z�2�:�>�	0�	0�B��
�
�f�B�
�/�/�A���1�1�1�a��!�e�8��*�B�/�/�/���1�Q�q�5�!�!�!�8��*�B�/�/�/���1�a��!�e�8��*�B�/�/�/���1�Q�q�5�!�8��*�B�/�/�/�/�	0�	0r3c	��ttd���dd����}|�|��}t	|ddd�f|ddd�f�����t	|ddd�f|ddd�f�����t
gd�gd�gd�gd	�g��}|�|��}t	|ddd
�f|ddd
�f�����t
gd�gd�gd�gd	�g��}|�|��}t	|ddd
�f|ddd
�f�����t	|ddd�f|ddd�fj��tt|j
td��d
f��tt|j
dtd
d��f��dS)N�I@r/rMr�r]�r�r]r��rRrryrDrfr��rRrrr��ryrz)r'rr�r�rr�r(rHr�r�r��slice�r�rIrHr�r^r�r�s       r1�test_get_horiz_slicez!_TestSlicing.test_get_horiz_slice(	s����V�C�[�[�(�(��2�.�.�/�/���M�M�!�����1�Q����T�7�A�a����d�G�O�O�$5�$5�6�6�6��1�Q��!��V�9�a��1�Q�3��i�&7�&7�&9�&9�:�:�:��I�I�I�y�y�y�)�)�)�Y�Y�Y�?�@�@���M�M�!�����1�Q��!��V�9�a��1�Q�3��i�&7�&7�&9�&9�:�:�:�
�I�I�I�y�y�y�)�)�)�Y�Y�Y�?�@�@���M�M�!�����1�Q��!��V�9�a��1�Q�3��i�&7�&7�&9�&9�:�:�:��1�Q����V�9�a��2�3�3��i�k�2�2�2�	�j�!�-�%��+�+�r�1B�C�C�C��j�!�-�!�U�1�a�[�[�1A�B�B�B�B�Br3c	�t�td���dd��}|�|��}t|dd�dgf|dd�df�����t|dd�dgf|dd�df�����tgd�gd�gd	�gd
�g��}|�|��}t|dd�dgf|dd�df�����t|dd�dgf|dd�df�����tgd�gd
�gd	�gd
�g��}|�|��}t|dd�dgf|dd�df�����t|dd�dgf|dd�df�����t
t|jtd��df��t
t|jdtdd��f��dS)Nr�r/rMr]rr�r�r�rDrfr�r�r�r�r�ryrz)
rr�r�rr�rr�r�r�r�r�s       r1�test_get_vert_slicez _TestSlicing.test_get_vert_slice<	s$���3�K�K����2�&�&���M�M�!�����1�Q�q�S�1�#�X�;��!�A�#�q�&�	�(9�(9�(;�(;�<�<�<��1�Q�Q�Q���V�9�a����1��g�o�o�&7�&7�8�8�8��9�9�9�i�i�i����I�I�I�>�?�?���M�M�!�����1�Q�q�S�1�#�X�;��!�A�#�q�&�	�(9�(9�(;�(;�<�<�<��1�Q�Q�Q���V�9�a����1��g�o�o�&7�&7�8�8�8�
�9�9�9�i�i�i����I�I�I�>�?�?���M�M�!�����1�Q�Q�Q���V�9�a����1��g�o�o�&7�&7�8�8�8��1�R�S�S�1�#�X�;��"�#�#�q�&�	�(9�(9�(;�(;�<�<�<�	�j�!�-�%��+�+�r�1B�C�C�C��j�!�-�!�U�1�a�[�[�1A�B�B�B�B�Br3c��td���dd��}|�|��}t|dd�dd�f���|dd�dd�f��t|dd�dd�f���|dd�dd�f��t|dd�dd�f���|dd�dd�f��tgd	�gd
�gd�gd�g��}|�|��}t|dd�dd�f|dd�dd�f�����t|dd�dd�f|dd�dd�f�����dS)
Nr�r/rMr]rr�r�r�r�r�rDrf)rr�r�rr�r)r�rIrHr�r�s     r1�test_get_slicesz_TestSlicing.test_get_slicesQ	s����3�K�K����2�&�&���M�M�!�����1�Q�q�S�!�A�#�X�;�.�.�0�0�!�A�a�C��1��H�+�>�>�>��1�Q�R�R��"��W�:�-�-�/�/��1�2�2�s��s�7��<�<�<��1�S�b�S�!�"�"�W�:�-�-�/�/��3�B�3����7��<�<�<�
�9�9�9�i�i�i����I�I�I�>�?�?���M�M�!�����1�Q�q�S�!�A�#�X�;��!�A�#�q��s�(��(;�(;�(=�(=�>�>�>��1�Q�Q�Q����U�8�Q�q�q�q�!�"�"�u�X�%5�%5�%7�%7�8�8�8�8�8r3c�4�tj�dd��}	|�|��ddd�ddd�f}n"#t$rtjd���wxYwt|���|ddd�ddd�f��dS)Nrr�r]r�r��feature not implemented)	rAr�r�r�r�r�r�rr�)r��v0r�s   r1� test_non_unit_stride_2d_indexingz-_TestSlicing.test_non_unit_stride_2d_indexing^	s���
�Y�^�^�B��
#�
#��	9��
�
�b�!�!�!�B�q�&�!�B�q�&�.�1�A�A���	9�	9�	9��+�7�8�8�8�	9����	�1�9�9�;�;��1�R��6�1�R��6�>�(:�;�;�;�;�;s�#A�A%c��ttd���dd����}|�|��}t	|d|d��t	|d|d��t	|d|d��t	|td��df|d��t	|dtd��f|d��t	|td��td��f|d��t	|d	dd�f���|d	dd�f��t	|d	dd�f���|d	dd�f��t	|td	��dd�f���|d	dd�f��t	|dd�d	f���|dd�d	f��t	|d
d�df���|d
d�df��t	|d
d�df���|d
d�df��t	|d	d�d
f���|d	d�d
f��t	|d	d�td
��f���|d	d�d
f��t	|d
d	�d
d	�f���|d
d	�d
d	�f��t	|dd�d
d�f���|dd�d
d�f��t	|dd�dd�f���|dd�dd�f��t	|d	d�dd�f���|d	d�dd�f��t	|d
dd�f���|d
dd�f��t	|ddd�f���|ddd�f��t	|td��dd�f���|ddd�f��t	|d
d����|d
d���t	|d
d����|d
d���ttd	��td��d��}t	||dd�f���|d	d�dd�f��t	|dd�|f���|dd�d	d�f��dS)Nrr/rMr�r�r�r�r�r]r�rRr|r�rA)	r'rr�r�rrr�r�r)r�rIrHr�s    r1�test_slicing_2z_TestSlicing.test_slicing_2i	s���V�B�Z�Z�'�'��"�-�-�.�.���M�M�!����	�Q�s�V�Q�s�V�$�$�$��Q�t�W�a��g�&�&�&��Q�u�X�a��h�'�'�'��Q�u�R�y�y��|�_�Q�u�X�.�.�.��Q�r�%��)�)�|�_�Q�u�X�.�.�.��Q�u�R�y�y��r���*�+�A�e�H�5�5�5�	�Q�q�!�!�!�t�W�_�_�&�&��!�Q�Q�Q�$��0�0�0��Q�q�!�B�$�w�Z�'�'�)�)�1�Q��"��W�:�6�6�6��Q�u�Q�x�x��2��~�&�.�.�0�0�!�A�q��t�G�*�=�=�=�	�Q�q�q�q�!�t�W�_�_�&�&��!�!�!�Q�$��0�0�0��Q�q��s�A�v�Y�&�&�(�(�!�A�a�C��F�)�4�4�4��Q�q��s�B�w�Z�'�'�)�)�1�Q�q�S�"�W�:�6�6�6��Q�q��t�Q�w�Z�'�'�)�)�1�Q�r�T�1�W�:�6�6�6��Q�q��t�U�1�X�X�~�&�.�.�0�0�!�A�b�D�!�G�*�=�=�=�	�Q�q��s�A�a�C�x�[�(�(�*�*�A�a��c�1�Q�3�h�K�8�8�8��Q�q�r�r�1�2�2�v�Y�&�&�(�(�!�A�B�B����F�)�4�4�4��Q�r��r�2�A�2�v�Y�&�&�(�(�!�B�Q�B����F�)�4�4�4��Q�q��t�R�a�R�x�[�(�(�*�*�A�a��d�B�Q�B�h�K�8�8�8�	�Q�q�!�!�!�t�W�_�_�&�&��!�Q�Q�Q�$��0�0�0��Q�r�1�1�1�u�X�%�%�'�'��2�q�q�q�5��2�2�2��Q�u�R�y�y�!�!�!�|�_�,�,�.�.��"�a�a�a�%��9�9�9�	�Q�q��s�V�^�^�%�%�q��1��v�.�.�.��Q�q��t�W�_�_�&�&��!�B�$��0�0�0�
�$�q�'�'�$�q�'�'�$�'�'���Q�q�!�!�!�t�W�_�_�&�&��!�A�#�q�q�q�&�	�2�2�2��Q�q�q�q�!�t�W�_�_�&�&��!�!�!�Q�q�S�&�	�2�2�2�2�2r3c�l���ttd���dd�����|�����tj}|dd�|dd�|dd�|ddd�|dd�|dd�|d	dd
�|ddd�|ddd
�d
d|dd�|dd�d
ddt
d
��t	jd��g}��fd�}t|��D]\}}||�����fd�}t|��D]&\}}t|��D]\}}|||����'g}	tj
dgdz�D]1\}}}
|
d
kr�
|	�t|||
�����2|	D]&}|||��||d��|d|���'dS)Nrr/rMr]r�r�rmr�r{r�rRr�rrArPc����|}�|}|jdkr t||t|����dS|jdkr
|jdkrdSt	|���|t|����dS�NrNr)r�rr(rcrr�)rEr7r8rHrIs   ��r1�check_1z,_TestSlicing.test_slicing_3.<locals>.check_1�	s~����!��A��!��A��w�"�}�}��Q��4��7�7�+�+�+�+�+��6�Q�;�;�1�6�Q�;�;��D�&�q�y�y�{�{�A�t�A�w�w�?�?�?�?�?r3c����t|tj��rt|��}n|}t|tj��rt|��}n|}�||f}�||f}|jdkr"t||t
||f����dS|jdkr
|jdkrdSt|�	��|t
||f����dSr�)
r@rAr
�intr�rr(rcrr�)rErJ�ai�bir7r8rHrIs      ��r1�check_2z,_TestSlicing.test_slicing_3.<locals>.check_2�	s�����!�R�Z�(�(�
���V�V������!�R�Z�(�(�
���V�V������!�Q�$��A��"�b�&�	�A��w�"�}�}��Q��4��A��<�<�0�0�0�0�0��6�Q�;�;�1�6�Q�;�;��D�&�q�y�y�{�{�A�t�Q��F�|�|�D�D�D�D�Dr3)
Nrr�r]r/rmr�r�r/i�)
r'rr�r�rA�s_rr�	enumerate�	itertools�productrCr�)
r�r��slicesr�r�rEr�r�rJ�extra_slicesr8rHrIs
           @@r1�test_slicing_3z_TestSlicing.test_slicing_3�	sL�����V�B�Z�Z�'�'��"�-�-�.�.���M�M�!����
�U���R�a�R�&�"�Q�q�S�'�2�a�b�b�6�2�a�d��d�8��R��U�)�R��!��W��Q�q��V�*�b���B��i��E�Q�r�E���Q��1�1�1��r�!�A�#�w��B����)�)�R�W�R�[�[�	*��		@�		@�		@�		@�		@�		@��f�%�%�	�	�D�A�q��G�A�J�J�J�J�	E�	E�	E�	E�	E�	E�0�f�%�%�	�	�D�A�q�!�&�)�)�
�
���1����1�
�
�
�
�
��� �(�-=�,>�>?�,@�B�	0�	0�G�A�q�!��A�v�v������a��A���/�/�/�/��	�	�A��G�A�q�M�M�M��G�A�r�N�N�N��G�B��N�N�N�N�	�	r3c��ttd���dd����}|�|��}t	|dj|dj��t	|dj|dj��t	|dj|dj��t	|dj|dj��t	|dd�dfj|dd�dfj��t	|ddd�fj|ddd�fj��t	|dd�ddfj|dd�ddfj��t	|dddd�fj|dddd�fj��t
|d	|d	��t
|d
|d
��dS)Nrr/rM.).)r�.).r�r�)r�r�.)r�.r�)r'rr�r�rrHr�r�rJrEs   r1�test_ellipsis_slicingz"_TestSlicing.test_ellipsis_slicing�	s����V�B�Z�Z�'�'��"�-�-�.�.���M�M�!�����1�S�6�8�Q�s�V�X�.�.�.��1�T�7�9�a��g�i�0�0�0��1�V�9�;��&�	��4�4�4��1�V�9�;��&�	��4�4�4��1�Q�R�R��W�:�<��1�2�2�s�7���6�6�6��1�S�!�"�"�W�:�<��3����7���6�6�6��1�Q�R�R��C�Z�=�?�A�a�b�b�!�S�j�M�O�<�<�<��1�Q��Q�R�R�Z�=�?�A�a��a�b�b�j�M�O�<�<�<��Q�y�\�1�Y�<�0�0�0��Q�y�\�1�Y�<�0�0�0�0�0r3c��ttd���dd����}|�|��}t	|dj|dd�dd�fj��t	|dj|dd�dd�fj��t	|dj|ddd�fj��t	|dd�ddfj|dd�dd�fj��t	|dddd�fj|dd�dd�fj��t	|d	j|dd�dfj��dS)
Nrr/rM)..)...)r�..r�.)..r�)r'rr�r�rrHr�s   r1�test_multiple_ellipsis_slicingz+_TestSlicing.test_multiple_ellipsis_slicing�	s>���V�B�Z�Z�'�'��"�-�-�.�.���M�M�!�����1�X�;�=�!�A�A�A�q�q�q�D�'�)�4�4�4��1�]�+�-�q����A�A�A��w�y�9�9�9��1�[�>�+�Q�q�!�!�!�t�W�Y�7�7�7��1�Q�R�R��c�\�?�,�a����A�A�A��h�j�9�9�9��1�S�#�q�r�r�\�?�,�a����1�2�2��h�j�9�9�9��1�[�>�+�Q�q�q�q�!�t�W�Y�7�7�7�7�7r3N)
r�r�r�r�r�r�r�r�r�r�r�r�r�rNr3r1r�r�	s�������W�W�W�0�0�0�C�C�C�(C�C�C�*9�9�9�	<�	<�	<�+3�+3�+3�Z@�@�@�D1�1�1�$	8�	8�	8�	8�	8r3r�c�>�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�_TestSlicingAssignc��|�d��}tjd��}t��5}|�t
d��||fD]2}d|dd�df<d|dd�df<d|dd�df<d|ddd�f<d|ddd�dd�f<�3	ddd��n#1swxYwYt
|���|��dS)	Nr.r�r�rrRr�r|r�r�r�s     r1�test_slice_scalar_assignz+_TestSlicingAssign.test_slice_scalar_assign�	s4���M�M�&�!�!���H�V����
�
 �
 �	 �C��J�J�.�X�
Z�
Z�
Z���V�
 �
 ����!�A�#�a�%����!�A�#�a�%����!�A�#�a�%����!�A�B�B�$����!�%�R�%����(���
 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	�1�9�9�;�;��*�*�*�*�*s�AB�B�Bc������d\�����fd�}dtd��fdtddd��fdtdd��ftd��tdd��ffD]\}}|||���dS)	Nr�c�X��d|�d|��}����f��}t��5}|�td��d|||f<ddd��n#1swxYwYt	j��f��}d|||f<t
|���||���dS)Nzi=z; j=r�r�r�)r�rr�r#rArrr�)	r�r�r.rHr�rIr;r�r�s	      ���r1r�z9_TestSlicingAssign.test_slice_assign_2.<locals>._test_set
s�����"#�!�!�Q�Q�'�C��
�
�q�!�f�%�%�A�"�$�$�
���
�
�2�\�^�^�^���!�Q�$��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
���!�Q�� � �A��A�a��d�G�%�a�i�i�k�k�1�c�B�B�B�B�B�Bs�#A�A"�%A"r]r�rMrRr/r�)r�rr�s`   @@r1�test_slice_assign_2z&_TestSlicingAssign.test_slice_assign_2
s���������1�		C�		C�		C�		C�		C�		C�		C���q���]�Q��d�B��(:�(:�$;�a��q�"���=N��A�h�h��a����-�/�	�	�D�A�q��I�a��O�O�O�O�	�	r3c��|�d��}t��5}|�td��d|d<d|d<d|d<d	|d
<|d	z}|ddd�f|ddd�f<t	|ddd�fj|ddd�fj��|d	z}|dd�dd�f|dd�dd�f<t	t
jd��|dz|j��|d	z}|ddd�fj|dd
�df<t	|ddd�fjj|dd
�dfj��ddd��dS#1swxYwYdS)Nr�r�r]rlrzr�r��r]r�rMr�rr�r�)	r�rr�r#rrHrArr)r�rIr�rHs    r1�test_self_self_assignmentz,_TestSlicingAssign.test_self_self_assignment
s���
�M�M�%� � ��
�
 �
 �	7�C��J�J�.�X�
Z�
Z�
Z��A�c�F��A�c�F��A�c�F��A�c�F��B��A��q����s�V�A�a����c�F��q��1�1�1��v�x��1�Q�Q�Q�3���2�2�2��B��A��r��r�"�1�"�u�X�A�a�a�a����c�F��r�x�����3��7���=�=�=��B��A���1�1�1��v�x�A�c�r�c�!�e�H��q��1�1�1��v�x�z�1�S�b�S��U�8�:�6�6�6�%	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�DE�E�
Ec��|�d��}tgd�gd�gd�gd�g��}ddgddgg}t��5}|�td	��d
|d<d|d
<d|d<||z|dd�dd�f<t|���|��tt|����|dd�dd�f<t|���dd�dd�f|��ddd��dS#1swxYwYdS)Nr��rMrr)rrry)r�rrDr�rrRr�r/rlr�r�rzr�r])r�rrr�r#rr�r)r�rIr �blockr�s     r1�test_slice_assignmentz(_TestSlicingAssign.test_slice_assignment/
sy���M�M�%� � ���(�(�(�!�'�'�"�(�(�!�'�'�#�$�$���A���!�u�
��
�
 �
 �
	;�C��J�J�.�X�
Z�
Z�
Z��A�c�F��A�c�F��A�c�F��q�S�A�a�a�a����c�F��q�y�y�{�{�H�5�5�5�!�%��,�,�/�/�A�b�q�b��!��e�H��q�y�y�{�{�2�A�2�r��r�6�2�E�:�:�:�
	;�
	;�
	;�
	;�
	;�
	;�
	;�
	;�
	;�
	;�
	;�
	;����
	;�
	;�
	;�
	;�
	;�
	;s�B.D�D�	Dc��|�d��}t��5}|�td��d|d<d|d<d|d<d	|d
<t	tjd����|dd�<ddd��n#1swxYwYtgd�gd�gd
�gd�g��}t|�	��|��dS)Nr�r�r/rlr�r�rzr�rMr�r1r�rfr�)
r�rr�r#rrAr!rrr�)r�rIr�r s    r1�"test_sparsity_modifying_assignmentz5_TestSlicingAssign.test_sparsity_modifying_assignmentC
s���M�M�%� � ��
�
 �
 �	*�C��J�J�.�X�
Z�
Z�
Z��A�c�F��A�c�F��A�c�F��A�c�F��r�v�a�y�y�)�)�A�b�q�b�E�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*��'�'�'�'�'�'�'�'�'�(�(�(�;�<�<���1�9�9�;�;��1�1�1�1�1s�AB�B
�
B
c��|�d��}ttdt����}tj}|dd�|dd�|dd�|ddd�|ddd�|ddd�|dd	d�d
d|dd�|dd	�dddtd��t	jd��g}t��5}|�td
��t|��D]?\}}|||<|||<t|���|t|�����@t|��D]r\}}t|��D]]\}}	d|zd|dzzz|||	f<d|zd|dzzz|||	f<t|���|t||	f�����^�stddd��|d
ddd�f<tddd��|d
ddd�f<t|���|��t	jdd	d��dd�df|dd	d�d
f<t	jdd	d��dd�|dd	d�d
f<t|���|��ddd��n#1swxYwYt!t"|jdt'td������t!t"|jdtd����t!t"|jd
t)d��ft'td������t!t"|jt)d��dft'td������t!t"|jt)d��df|�����t!t"|jgd�gd�ggd�fgd���t!t"|jgd�gd�gd�ggd�gd�gfgd���t!t"|jt)d��d
fddgddgg��dS)Nr�r]r�r�r{r�rRr�r/rrArPr�rM��rl�drwr�rh)rRr�r��r�r]rR)rr�r�rQ)r�rrr rAr�rrr�r#r�rr�r(r�rr�r�r��listr�r�)
r�rHrIr�r�r�r�rEr�rJs
          r1�test_set_slicez!_TestSlicingAssign.test_set_sliceQ
s����M�M�&�!�!���%���'�'�(�(��
�U���R�a�R�&�"�Q�q�S�'�2�a�b�b�6�2�a�d��d�8��Q�q��V�*�b���B��i��E�Q�r�E���Q��1�1�1��r�!�A�#�w��B����)�)�R�W�R�[�[�*��
�
 �
 �	/�C��J�J�.�X�
Z�
Z�
Z�!�&�)�)�
<�
<���1���!����!��"�1�9�9�;�;��4��7�7�;�;�;�;�!�&�)�)�
E�
E���1�%�f�-�-�E�E�D�A�q���T�D�!�A�#�J�.�A�a��c�F���T�D�!�A�#�J�.�A�a��c�F�&�q�y�y�{�{�A�t�Q��F�|�|�D�D�D�D�E�
!��B��?�?�A�a��2�a��i�L� ��B��?�?�A�a��2�a��i�L��q�y�y�{�{�A�.�.�.��)�A�q�!�,�,�Q�Q�Q��W�5�A�a��!�e�Q�h�K��)�A�q�!�,�,�Q�Q�Q�/�A�a��!�e�Q�h�K��q�y�y�{�{�A�.�.�.�'	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�,	�j�!�-���e�C�j�j�9I�9I�J�J�J��j�!�-������E�E�E��j�!�-�!�U�4�[�[�1A��5��:�:�&�&�	(�	(�	(��j�!�-�%��+�+�q�1A��5��:�:�&�&�	(�	(�	(��j�!�-�%��+�+�q�1A�1�6�6�8�8�L�L�L��j�!�-�!�	�	�9�9�9�-�y�y�y�9�<�<�<�	I�	I�	I��j�!�-�!�	�	�9�9�9�i�i�i�8�!�	�	�9�9�9�-�/�09�	�	�	;�	;�	;�	�j�!�-�%��(�(�A���1�v��1�v�&�	(�	(�	(�	(�	(s�F1J�J�Jc���|�tjd����}|�d��}||ddd�f<t|���gd�gd�g��dS)Nr�r�r�r]�r�r�r�rf)r�rAr�rr�r�s   r1�test_assign_empty_spmatrixz-_TestSlicingAssign.test_assign_empty_spmatrix
sh���M�M�"�'�&�/�/�*�*���M�M�&�!�!����!�R�a�R�%���1�9�9�;�;����I�I�I�(>�?�?�?�?�?r3c��|�tjd����}tjd��}||dd�df<||ddd�f<t	|���gd�gd�gd�g��dS)Nrr�rr�r�rD)r�rAr�rrr��r�rHr7s   r1�test_assign_1d_slicez'_TestSlicingAssign.test_assign_1d_slice�
s{���M�M�"�'�&�/�/�*�*���H�Q�K�K����!�!�!�Q�$����!�Q�Q�Q�$���1�9�9�;�;����I�I�I�y�y�y�(I�J�J�J�J�Jr3N)r�r�r�r�r�r�r�r�r�r�r�rNr3r1r�r��	s�������+�+�+����$7�7�7�0;�;�;�(2�2�2�,(�,(�,(�\@�@�@�K�K�K�K�Kr3r�c�N�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�_TestFancyIndexingz�Tests fancy indexing features.  The tests for any matrix formats
    that implement these features should derive from this class.
    c��tjtjtjtjfD]�}|�d|���}t
|dd�ddgfj|��t
|gd�dd�fj|��t
|dd�gfj|��t
|gdd�fj|����dS)NrUr3F)FFFr�r�s   r1�#test_dtype_preservation_empty_indexz6_TestFancyIndexing.test_dtype_preservation_empty_index�
s����8�R�X�r�z�2�:�>�	-�	-�B��
�
�f�B�
�/�/�A���1�1�1�u�e�n�,�-�3�R�8�8�8���0�0�0�!�!�!�3�4�:�B�?�?�?���1�1�1�b�5����,�,�,���2�q�q�q�5����,�,�,�,�	-�	-r3c�H�|�tjddg����}ttt
tf|jd��ttt
tf|jd��ttt
f|jgd�gd�f��dS)Nr/�foo�r]r�rwrh)r�rArr�r�r�r�r�rFs  r1�test_bad_indexz!_TestFancyIndexing.test_bad_index�
s����M�M�"�(�A�q�6�*�*�+�+���z�:�y�9�1�=�%�P�P�P��z�:�y�9�1�=�*�U�U�U��z�:�.��
� �y�y�,�,�,�/�	1�	1�	1�	1�	1r3c
��ttd���dd����}|�|��}t	|ddg���|ddg��t	|dddgf���|dddgf��t	|dddgf���|dddgf��t	|t
d��ddgf���|dddgf��t	|dt
ddg��f���|dddgf��t	|t
d��t
ddg��f���|dddgf��t	|dd�gd	�f���|dd�gd	�f��t	|dd
�dgf���|dd
�dgf��t	|dd
�ddgf���|dd
�ddgf��t	|dd
�t
ddg��f���|dd
�ddgf��t	|ddgdf���|ddgdf��t	|ddgdf���|ddgdf��t	|t
ddg��df���|ddgdf��t	|ddgt
d��f���|ddgdf��t	|t
ddg��t
d��f���|ddgdf��t	|ddgdd�f���|ddgdd�f��t	|ddgd
d�f���|ddgd
d�f��t	|t
ddg��d
d�f���|ddgd
d�f��t	t|ddgdd
gf��|ddgdd
gf��t	t|ddgddgf��|ddgddgf��t	t|t
ddg��ddgf��|ddgddgf��t	t|ddgt
ddg��f��|ddgddgf��t	t|t
ddg��t
ddg��f��|ddgddgf��t	|dgdggdd
gf���|dgdggdd
gf��t	|dgdgdggddgf���|dgdgdggddgf��t	|t
dgdgdgg��ddgf���|dgdgdggddgf��t	|dgdgdggt
ddg��f���|dgdgdggddgf��t	|t
dgdgdgg��t
ddg��f���|dgdgdggddgf��t	|ddg���|ddg��t	|ddg���|ddg��t	|t
ddg�����|ddg��t	|ddgdd�fdd�dd
gf���|ddgdd�fdd�dd
gf��t	|ddgdd�fdd�ddgf���|ddgdd�fdd�ddgf��t	|t
ddg��dd�fdd�t
ddg��f���|ddgdd�fdd�ddgf��t	|dd�ddgfdd
gdd�f���|dd�ddgfdd
gdd�f��t	|dd�ddgfddgdd�f���|dd�ddgfddgdd�f��t	|dd�t
ddg��ft
ddg��dd�f���|dd�ddgfddgdd�f��ttd��td
��d��}t	||dd�f���|dd
�dd�f��t	|dd�|f���|dd�dd
�f��tjdggt���}t	|||f���|||f��t	|ggggf���|ggggf��dS)Nrr/rMr�r�r�r]rA)r]r{r�r�rRr|rCr{rPr�r3)r'rr�r�rr�rr�rrAr�)r�rIrHr�r�s     r1�test_fancy_indexingz&_TestFancyIndexing.test_fancy_indexing�
s����V�B�Z�Z�'�'��"�-�-�.�.���M�M�!����	�Q��1�v�Y�&�&�(�(�!�Q��F�)�4�4�4�	�Q�q�1�a�&�y�\�)�)�+�+�Q�q�1�a�&�y�\�:�:�:��Q�r�A�r�7�{�^�+�+�-�-�q��a��W��~�>�>�>��Q�u�R�y�y�1�b�'�)�*�2�2�4�4�a��Q��G��n�E�E�E��Q�r�5�!�R��>�>�)�*�2�2�4�4�a��Q��G��n�E�E�E��Q�u�R�y�y�%��B��.�.�0�1�9�9�;�;�Q�r�A�r�7�{�^�L�L�L�	�Q�q�q�q�-�-�-�'�(�0�0�2�2�A�a�a�a����6F�4G�H�H�H��Q�q��s�Q�C�x�[�(�(�*�*�A�a��c�A�3�h�K�8�8�8��Q�q��s�R��H�}�%�-�-�/�/��1�Q�3��R��=�1A�B�B�B��Q�q��s�E�2�r�(�O�O�+�,�4�4�6�6��!�A�#��B�x�-�8H�I�I�I�	�Q��1�v�q�y�\�)�)�+�+�Q��1�v�q�y�\�:�:�:��Q��2�w��{�^�+�+�-�-�q�!�R��"��~�>�>�>��Q�u�a��W�~�~�r�)�*�2�2�4�4�a��B����n�E�E�E��Q��2�w��b�	�	�)�*�2�2�4�4�a��B����n�E�E�E��Q�u�a��W�~�~�u�R�y�y�0�1�9�9�;�;�Q��2�w��{�^�L�L�L�	�Q��1�v�q�q�q�y�\�)�)�+�+�Q��1�v�q�q�q�y�\�:�:�:��Q��2�w��"��}�%�-�-�/�/��A�r�7�A�b�D�=�1A�B�B�B��Q�u�a��W�~�~�q��t�+�,�4�4�6�6��1�b�'�1�R�4�-�8H�I�I�I�	�W�Q��1�v��1�v�~�.�/�/��A�q�6�A�q�6�>�1B�C�C�C��W�Q��B�x�!�R��0�1�2�2�A�r�2�h��B��6G�4H�I�I�I���A�e�R��H�o�o��2�w�.�/�0�0�!�R��H�q�"�g�4E�2F�	
�	
�	
�	��A�r�2�h��q�"�g���.�/�0�0�!�R��H�q�"�g�4E�2F�	
�	
�	
�	��A�e�R��H�o�o�u�a��W�~�~�5�6�7�7��B��8�a��W�;L�9M�	
�	
�	
�
	�Q���a�S�z�A�q�6�)�*�2�2�4�4�a�!��q�c�
�Q��F�8J�6K�L�L�L��
��t�b�T�B�4� �1�b�'�)�*�2�2�4�4�
��t�b�T�B�4� �1�b�'�)�*�	
�	
�	
�	�
�e�b�T�B�4�"��&�'�'�!�R��0�1�9�9�;�;�
��t�b�T�B�4� �1�b�'�)�*�	
�	
�	
�	�
��t�b�T�B�4� �%��B��.�.�0�1�9�9�;�;�
��t�b�T�B�4� �1�b�'�)�*�	
�	
�	
�	�
�e�b�T�B�4�"��&�'�'���2�w���7�8�@�@�B�B�
��t�b�T�B�4� �1�b�'�)�*�	
�	
�	
�	�Q��1�v�Y�&�&�(�(�!�Q��F�)�4�4�4��Q��B�x�[�(�(�*�*�A�r�2�h�K�8�8�8��Q�u�b�"�X���'�/�/�1�1�1�b�"�X�;�?�?�?�	�
�q�!�f�a�a�a�i�L����Q��F��#�+�+�-�-�q�!�Q������|�A�A�A��1�v�I�/F�	
�	
�	
�	�
�r�2�h����k�N�1�1�1�q�"�g�:�&�.�.�0�0�!�R��H�a�a�a�K�.����Q��G��2L�	
�	
�	
�	�
�e�R��H�o�o�q�q�q� �!�!�!�!�U�A�r�7�^�^�"3�4�<�<�>�>�
�r�2�h����k�N�1�1�1�q�"�g�:�&�	
�	
�	
�	�
�a�a�a�!�Q��i�L�!�Q������#�+�+�-�-�q����Q��F��|�Q��F�A�A�A�I�/F�	
�	
�	
�	�
�a�a�a�"�b��k�N�A�r�7�A�A�A�:�&�.�.�0�0�!�A�A�A��B�x�K�.�!�R��!�!�!��2L�	
�	
�	
�	�
�a�a�a���B�x��� �!�%��B��.�.�!�!�!�"3�4�<�<�>�>�
�a�a�a�"�b��k�N�A�r�7�A�A�A�:�&�	
�	
�	
�
�$�q�'�'�$�q�'�'�$�'�'���Q�q�!�!�!�t�W�_�_�&�&��!�A�#�q�q�q�&�	�2�2�2��Q�q�q�q�!�t�W�_�_�&�&��!�!�!�Q�q�S�&�	�2�2�2�
�H�q�c�U�#�&�&�&���Q�q�!�t�W�_�_�&�&��!�Q�$��0�0�0�	�Q��t�b�T�z�]�*�*�,�,�a���r�d�
�m�<�<�<�<�<r3c��tj�d��d}d}d}ttj�||����}tj||dk��}tj�|dz||���}tj�|dz||���}|�|��}|||f}t|��r|�	��}t||||f��||z}	||z
}
tt|j
|	|f��tt|j
||
f��dS)NrZrryrRr�r�r�)rAr�r[r'r�r�r_r�r"r�rr�r�r�)r��NUM_SAMPLESr"r%r^�Ir�r<�SIJ�I_bad�J_bads           r1�test_fancy_indexing_randomizedz1_TestFancyIndexing.test_fancy_indexing_randomized
s4��
�	���t������
��
���R�Y�^�^�A�a�(�(�)�)���K��1�s�7�#�#���I���q�b�1�f�a�k��:�:���I���q�b�1�f�a�k��:�:���M�M�!������!��f���c�?�?�	 ��+�+�-�-�C��S�!�A�a�C�&�!�!�!��A����A����j�!�-�%���;�;�;��j�!�-�!�E��;�;�;�;�;r3c��tj�d��tt	d���dd����}|�|��}tjtj�ddd���t���}tjtj�ddd���t���}tjtj�ddd	���t���}tt||��||��tt|dd�|f��|dd�|f��tt||��||��tt||d
k��||d
k��tjgd���}tjgd���}tt|||f��|||f��tjd
t���}tjd
t���}d|d<tjd
t���}d|d<t||tjg����tt|j|��tt|j|��ttt f|j|df��dS)NrZrr/rMrr]r�r3r�r|)TFTTF)
FTTFTFFFFF)ryr�Tr�)r�rr�)rAr�r[r'rr�r�rr_r�rr�rr�r�r�r�)	r�rIrHrr�r��Z1�Z2�Z3s	         r1�test_fancy_indexing_booleanz._TestFancyIndexing.test_fancy_indexing_boolean'st��
�	���t�����V�B�Z�Z�'�'��"�-�-�.�.���M�M�!�����H�R�Y�&�&�q�!�!�&�4�4�D�A�A�A���H�R�Y�&�&�q�!�"�&�5�5�T�B�B�B���H�R�Y�&�&�q�!�'�&�:�:�$�G�G�G���W�Q�q�T�]�]�A�a�D�)�)�)��W�Q�q�q�q�!�t�W�%�%�q����A��w�/�/�/��W�Q�q�T�]�]�A�a�D�)�)�)��W�Q�q�1�u�X�&�&��!�a�%��1�1�1��H�5�5�5�6�6���H�9�9�9�
:�
:��	�W�Q�q�!�t�W�%�%�q��A��w�/�/�/�
�X�g�T�
*�
*�
*��
�X�g�T�
*�
*�
*����4��
�X�g�T�
*�
*�
*����4���Q�r�U�B�H�R�L�L�)�)�)��j�!�-��4�4�4��j�!�-��4�4�4��z�:�.��
��1�v�F�F�F�F�Fr3c���tj�d��tt	d���dd����}|�|��}tjtj�ddd���t�	��}t|��}tt||��||��tt||d
k��||d
k��tjtj�ddd���t�	��}tjtj�ddd���t�	��}t|��}t|��}tt|j|��tt|j|��ttt f|j|d
f��dS)NrZrr/rMrr]r�r�r3r|)r/r�)ryrMr�)rAr�r[r'rr�r�rr_r�rrr�r�r�r�r�)	r�rIrHr��Xsp�Zr��Zsp�Ysps	         r1�"test_fancy_indexing_sparse_booleanz5_TestFancyIndexing.test_fancy_indexing_sparse_booleanGs}��
�	���t�����V�B�Z�Z�'�'��"�-�-�.�.���M�M�!�����H�R�Y�&�&�q�!�'�&�:�:�$�G�G�G����m�m���W�Q�s�V�_�_�a��d�+�+�+��W�Q�q�1�u�X�&�&��!�a�%��1�1�1��H�R�Y�&�&�q�!�'�&�:�:�$�G�G�G���H�R�Y�&�&�q�!�'�&�:�:�$�G�G�G����m�m����m�m���j�!�-��5�5�5��j�!�-��5�5�5��z�:�.��
��Q�x�H�H�H�H�Hr3c��|�tgd�gd�gd�g����}tj|�d����dk}t|dd�|fjddgddgddgg��dS)Nr1r�rr�)r�rrA�ravelr�rrH)r�r��desired_colss   r1�#test_fancy_indexing_regression_3087z6_TestFancyIndexing.test_fancy_indexing_regression_3087^s����m�m�E�9�9�9�g�g�g�w�w�w�"?�@�@�A�A���x�����
�
�+�+�a�/���S����L��)�+�q�!�f�q�!�f�q�!�f�-E�F�F�F�F�Fr3c	��|�tddgddgg����}tt|jdtjddg����dS)Nr�rrlr])r�rr�r�r�rAr�s  r1�test_fancy_indexing_seq_assignz1_TestFancyIndexing.test_fancy_indexing_seq_assigncsP���m�m�E�A�q�6�A�q�6�"2�3�3�4�4���j�#�/�6�2�8�Q�q�E�?�?�K�K�K�K�Kr3c�f�|�tddgddgg����}t��5}|�td��|ddgddgf|ddgddgf<ddd��n#1swxYwYtt
|��tddgddgg����dS)Nr�rr]r�zChanging the sparsity structure)r�rrr�r#rr�)r�r�r�s   r1�test_fancy_indexing_2d_assignz0_TestFancyIndexing.test_fancy_indexing_2d_assigngs����m�m�E�A�q�6�A�q�6�"2�3�3�4�4��
�
 �
 �	6�C��J�J�.�8�
:�
:�
:�"%�q�!�f�q�!�f�n�"5�C��A���A����	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	�W�S�\�\�5�1�a�&�1�a�&�)9�#:�#:�;�;�;�;�;s�3A6�6A:�=A:c� �ttd���dd����}d|ddd�f<d|dd�df<d|d<|�|��}t	jgd���}t
t||��||��t	jgt�	��}t
t||��||��t
t|||f��|||f��t	jgd
�t�	��dd�df}t
t|||f��|||f��t
t|||f��|||f��dS)Nrr/rMrr�r]�r�ry�FFFFFr3�rr�r]r�rR�	r'rr�r�rArrr�r��r�rIrHr�r�s     r1�test_fancy_indexing_emptyz,_TestFancyIndexing.test_fancy_indexing_emptypsj���V�B�Z�Z�'�'��"�-�-�.�.����!�A�A�A�#����!�!�!�A�#����#���M�M�!�����H�8�8�8�9�9���W�Q�q�T�]�]�A�a�D�)�)�)��H�R�s�#�#�#���W�Q�q�T�]�]�A�a�D�)�)�)��W�Q�q�!�t�W�%�%�q��A��w�/�/�/��H�_�_�_�C�0�0�0����4��8���W�Q�q�!�t�W�%�%�q��A��w�/�/�/��W�Q�q�!�t�W�%�%�q��A��w�/�/�/�/�/r3N)r�r�r�r`r�r�r�rr
rrrrrrNr3r1r�r��
s���������-�-�-�1�1�1�h=�h=�h=�T<�<�<�4G�G�G�@I�I�I�.G�G�G�
L�L�L�<�<�<�0�0�0�0�0r3r�c#��K�t|d��r|jsdV�dSdV�|j���}d|_|���t||jd��dS)zIChecks that sorted indices property is retained through an operation
    �has_sorted_indicesNFz'Expected sorted indices, found unsorted)�hasattrr!rYr��sort_indicesr)r�rYs  r1�check_remains_sortedr$�s������1�*�+�+��1�3G��
������	�E�E�E��i�n�n���G� �A���N�N�����w��	�@�B�B�B�B�Br3c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�_TestFancyIndexingAssignc��|�tjddg����}ttt
tf|jdd��ttt
tf|jdd��dS)Nr/r�r]r�)r�rArr�r�r�r�r�rFs  r1�test_bad_index_assignz._TestFancyIndexingAssign.test_bad_index_assign�sc���M�M�"�(�A�q�6�*�*�+�+���z�:�y�9�1�=�%�QR�S�S�S��z�:�y�9�1�=�*�VW�X�X�X�X�Xr3c�l����d\�����fd�}dtddd��ftjd��tdd��ftd	d��tdd��ffD]\}}|||���tjd��tjd��fd
fD]\}}|||���dS)Nr�c�������f��}ttj��f����}t	��5}|�td��d|||f<t|��5d|||f<ddd��n#1swxYwYddd��n#1swxYwYt|�	��|��dS�Nr�r�)
r�r'rArrr�r#r$rr�)r�r�rHrIr�r;r�r�s     ���r1�_test_set_slicezI_TestFancyIndexingAssign.test_fancy_indexing_set.<locals>._test_set_slice�sM����
�
�q�!�f�%�%�A����1�a�&�)�)�*�*�A�"�$�$�
 ���
�
�2�\�^�^�^���!�Q�$��)�!�,�,� � ��A�a��d�G� � � � � � � � � � � ���� � � � �	
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 �
&�a�i�i�k�k�1�5�5�5�5�5s6�
2B'�<B�B'�B	�B'�B	�B'�'B+�.B+rQrMrRr�r/r�r])r�r�)r�rAr�r�r,r�r�r;r�s`   @@r1�test_fancy_indexing_setz0_TestFancyIndexingAssign.test_fancy_indexing_set�s���������1�		6�		6�		6�		6�		6�		6�		6� ��t�R��!3�!3�4��i��l�l�E�!�R�L�L�1��A�q�k�k�5��B�<�<�0�2�	"�	"�D�A�q�
�O�A�q�!�!�!�!��i��l�l�B�I�a�L�L�1�3I�J�	"�	"�D�A�q��O�A�q�!�!�!�!�	"�	"r3c�`���fd�}tD]}|tj|����� dS)Nc������d|���}t��5}|�td��|�d��|ddgddgf<t|���|�d��dz��|�d��|dd�dd�f<t|���|�d��dz��|�d��|d	<t|���|�d��dz|�d��z��ddd��dS#1swxYwYdS)
Nr.r3r�r�rr]rrRrV)r�rr�r#r�rr�r�s   �r1r�zD_TestFancyIndexingAssign.test_fancy_assignment_dtypes.<locals>.check�s�����
�
�f�E�
�2�2�A�"�$�$�
G���
�
�2�\�^�^�^�!&���A����1�Q�%��1��+���Q�U�U�W�W�e�j�j��m�m�A�o�6�6�6�"�Z�Z��_�_��!�A�#�a��c�'�
��Q�U�U�W�W�e�j�j��m�m�A�o�6�6�6����C����#���Q�U�U�W�W�e�j�j��m�m�A�o��
�
�1�
�
�&E�F�F�F�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G�
G�
Gs�D.E"�"E&�)E&r�r�s`  r1�test_fancy_assignment_dtypesz5_TestFancyIndexingAssign.test_fancy_assignment_dtypes�sW���
	G�
	G�
	G�
	G�
	G�&�	#�	#�E��E�"�(�5�/�/�"�"�"�"�	#�	#r3c��|�d��}|�tdd����}gd�}d}t|��}t��5}|�t
d��t
|��5||dfj|d|f<||dfj|d|f<||dfj|d|f<ddd��n#1swxYwYt|�	��|j�	����|�d	��}t
|��5d
dg|ddd�f<ddd��n#1swxYwYt|�	��gd�gd
�g��|�d��}t
|��5d
gdgg|dd�df<ddd��n#1swxYwYt|�	��ddgdd
gddgg��|�d��}ttjd����}t
|��5||fD]}gd�|gd�gd�f<�	ddd��n#1swxYwYt|�	��|��|�d��}t
|��5gd�|d<ddd��n#1swxYwYt|���d��ttjd����}gd�|d<t|�	��|��ddd��dS#1swxYwYdS)Nr�r�rRr�r�rr�r]r�rMr�rD)rrMr�rUrrxrw)rwr�ry)r�r!rrr�r#r$rrr�r'rArrr�)r�rHrI�i0�i1�i2r�r�s        r1�test_sequence_assignmentz1_TestFancyIndexingAssign.test_sequence_assignment�s����M�M�%� � ���M�M�#�a��(�(�#�#��
�W�W��
��
�2�Y�Y��
�
 �
 �$	/�C��J�J�.�X�
Z�
Z�
Z�%�a�(�(�
$�
$��B�q�D�'�)��!�B�$���B�q�D�'�)��!�B�$���B�q�D�'�)��!�B�$��
$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$����
$�
$�
$�
$�
�q�y�y�{�{�A�C�K�K�M�M�:�:�:��
�
�e�$�$�A�%�a�(�(�
#�
#��r�7��!�A�a�C�%��
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#��q�y�y�{�{�Y�Y�Y����,D�E�E�E��
�
�e�$�$�A�%�a�(�(�
'�
'��D�"��;��!�A�#�a�%��
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'����
'�
'�
'�
'��q�y�y�{�{�a��V�a��W�q�"�g�,F�G�G�G��
�
�e�$�$�A����%���)�)�A�%�a�(�(�
2�
2��Q��2�2�A�*1�'�'�A�g�g�g�w�w�w�&�'�'�2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2����
2�
2�
2�
2�
�q�y�y�{�{�A�.�.�.��
�
�f�%�%�A�%�a�(�(�
4�
4�*3�)�)��&�'�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4��������+�+�+����&�)�)�*�*�A�&/�i�i�A�"�#��q�y�y�{�{�A�.�.�.�I$	/�$	/�$	/�$	/�$	/�$	/�$	/�$	/�$	/�$	/�$	/�$	/����$	/�$	/�$	/�$	/�$	/�$	/s��+M�=C�M�C	�M�C	�A M�8E�M�E	�M�E	�AM�'G�5M�G	�M�G	�	A3M�<I�M�I"	�"M�%I"	�&A	M�/K�7M�K	�M�
K	�A/M�M�Mc���ttd���dd����}d|ddd�f<d|dd�df<d|d<|�|��}t	jgd���}d	||<t
t|��|��t	jgt�
��}d	||<t
t|��|��d	|||f<t
t|��|��t	jgd�t�
��dd�df}d	|||f<t
t|��|��d	|||f<t
t|��|��dS)Nrr/rMrr�r]rr�*r3rrrs     r1�test_fancy_assign_emptyz0_TestFancyIndexingAssign.test_fancy_assign_empty�s]���V�B�Z�Z�'�'��"�-�-�.�.����!�A�A�A�#����!�!�!�A�#����#���M�M�!�����H�8�8�8�9�9����!���W�Q�Z�Z��#�#�#��H�R�s�#�#�#����!���W�Q�Z�Z��#�#�#���!�A�#���W�Q�Z�Z��#�#�#��H�_�_�_�C�0�0�0����4��8����!�A�#���W�Q�Z�Z��#�#�#���!�A�#���W�Q�Z�Z��#�#�#�#�#r3N)r�r�r�r(r.r1r6r9rNr3r1r&r&�sc������Y�Y�Y�
"�"�"�*#�#�#� ,/�,/�,/�\$�$�$�$�$r3r&c��eZdZd�ZdS)�_TestFancyMultidimc
��tjdgdgdgg��tjgd���ftjdgdgdgg��tjgd�g��ftjgd�g��tjdgdgdgg��ftjgd���tjdgdgdgg��ftjgd�gd�g��tjgd�gd�g��fg}|D�]H\}}tj�d	��t	tj�d
d����}|�|��}|||f}t|��r|���}t||||f��|d
z}|dz}tt|j||f��tt|j||f��tt|j||gtd��f��tt|jtd��||gf����JdS)Nr�r]r��r�rRr]rwrR�r/ryr��r]r�r�rZr/rz)rArr�r[r'r�r�r"r�rr�r�r�r�)	r��setsrr�r^r<rrrs	         r1�test_fancy_indexing_ndarrayz._TestFancyMultidim.test_fancy_indexing_ndarrays(��
�X��s�Q�C�!��o�
&�
&������(;�(;�<�
�X��s�Q�C�!��o�
&�
&���)�)�)��(=�(=�>�
�X�y�y�y�k�
"�
"�B�H�q�c�A�3���_�$=�$=�>�
�X�i�i�i�
 �
 �"�(�Q�C�!��q�c�?�";�";�<�
�X�y�y�y�)�)�)�,�
-�
-�
�X�y�y�y�)�)�)�,�
-�
-�
/����	L�	L�D�A�q��I�N�N�4� � � �������1�-�-�.�.�A��
�
�a� � �A��A�a�C�&�C��#���
$��k�k�m�m����a��!��f�%�%�%���E�E���E�E��*�a�m�e�A�Y�?�?�?��*�a�m�a��Y�?�?�?�
�*�a�m�q�!�f�e�D�k�k�5J�K�K�K��*�a�m�e�D�k�k�A�q�6�5J�K�K�K�K�%	L�	Lr3N)r�r�r�rArNr3r1r;r;s(������L�L�L�L�Lr3r;c�&�eZdZd�Zd�Zd�Zd�ZdS)�_TestFancyMultidimAssignc��tj�d��ttj�dd����}|�|��}tj�dd��}tjgd�gd�g��}tjgd�gd	�g��}t|��5||||f<ddd��n#1swxYwY||||f<t|�	��|��|dz}|dz}gd�}t|��5||||f<ddd��n#1swxYwY||||f<t|�	��|��t|��5d|||f<ddd��n#1swxYwYd|||f<t|�	��|��tt|j||f|��tt|j||f|��dS)
NrZr/rzr]r�rwr=r>r?)
rAr�r[r'r�r�rr$rr�r�r�r��	r�r^r<r�rr�rrr�s	         r1�test_fancy_assign_ndarrayz2_TestFancyMultidimAssign.test_fancy_assign_ndarray%s���
�	���t�����R�Y�^�^�A�q�)�)�*�*���M�M�!�����I�N�N�1�a� � ���H�i�i�i����+�,�,���H�i�i�i����+�,�,��
!�!�
$�
$�	�	��A�a��c�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	���!�A�#���Q�Y�Y�[�[�!�$�$�$��A����A����I�I��
!�!�
$�
$�	�	��A�a��c�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	���!�A�#���Q�Y�Y�[�[�!�$�$�$�
!�!�
$�
$�	�	��A�a��c�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	���!�A�#���Q�Y�Y�[�[�!�$�$�$��j�!�-�%���A�>�>�>��j�!�-�!�E��A�>�>�>�>�>s6�C�C� C�*D>�>E�E�F�F�Fc������d\�����fd�}tjddgddgg��ddgftjddg��ddgddggfgd�gd	�ggd
�gd�gffD]\}}|||���dS)Nr�c�������f��}t|��5t��5}|�td��d|||f<ddd��n#1swxYwYddd��n#1swxYwYtt
j��f����}d|||f<t|�	��|��dSr+)
r�r$rr�r#r'rArrr�)r�r�rHr�rIr;r�r�s     ���r1r,zR_TestFancyMultidimAssign.test_fancy_indexing_multidim_set.<locals>._test_set_sliceIsM����
�
�q�!�f�%�%�A�%�a�(�(�
�
�*;�*=�*=�
���
�
�2�\�^�^�^���!�Q�$��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����1�a�&�)�)�*�*�A��A�a��d�G�%�a�i�i�k�k�1�5�5�5�5�5s4�A=�#A&�A=�&A*	�*A=�-A*	�.A=�=B�Br�r]r�rrRrw�rr]rR)rrRr�)rRr�r])rArr-s`   @@r1� test_fancy_indexing_multidim_setz9_TestFancyMultidimAssign.test_fancy_indexing_multidim_setFs���������1�	6�	6�	6�	6�	6�	6�	6��h��A���A��/�0�0�1�a�&�9���1�a�&�)�)�Q��F�Q��F�+;�<�#�)�)�Y�Y�Y�/�)�)�)�Y�Y�Y�1G�H�J�	"�	"�D�A�q�
�O�A�q�!�!�!�!�	"�	"r3c��tj�d��ttj�dd����}|�|��}tj�dd��}gd�gd�g}gd�gd	�g}||||f<||||f<t
|���|��d
�|D��}d�|D��}gd�}||||f<||||f<t
|���|��d|||f<d|||f<t
|���|��tt|j
||f|��tt|j
||f|��dS)NrZr/rzr]r�rwr=r>r?c�&�g|]}d�|D����S)c��g|]}|dz��S�r/rN�r��iis  r1r�zN_TestFancyMultidimAssign.test_fancy_assign_list.<locals>.<listcomp>.<listcomp>f���%�%�%�R�"�q�&�%�%�%r3rN)r�r�s  r1r�zC_TestFancyMultidimAssign.test_fancy_assign_list.<locals>.<listcomp>f�'��1�1�1�!�%�%�1�%�%�%�1�1�1r3c�&�g|]}d�|D����S)c��g|]}|dz��S�rzrN�r��jjs  r1r�zN_TestFancyMultidimAssign.test_fancy_assign_list.<locals>.<listcomp>.<listcomp>grQr3rN)r�r�s  r1r�zC_TestFancyMultidimAssign.test_fancy_assign_list.<locals>.<listcomp>grRr3)rAr�r[r'r�r�rr�r�r�r�rEs	         r1�test_fancy_assign_listz/_TestFancyMultidimAssign.test_fancy_assign_listXs|��
�	���t�����R�Y�^�^�A�q�)�)�*�*���M�M�!�����I�N�N�1�a� � ��
�Y�Y�	�	�	�"��
�Y�Y�	�	�	�"����!�A�#����!�A�#���Q�Y�Y�[�[�!�$�$�$�1�1�q�1�1�1��1�1�q�1�1�1���I�I����!�A�#����!�A�#���Q�Y�Y�[�[�!�$�$�$���!�A�#����!�A�#���Q�Y�Y�[�[�!�$�$�$��j�!�-�%���A�>�>�>��j�!�-�!�E��A�>�>�>�>�>r3c��tj�d��ttj�dd����}|�|��}gd�}gd�}d�|D��}d�|D��}gd�}tjd��dd�df}tt|j	|td��f|��tt|j	td��|f|��dS)	NrZr/rz)r�r]r�r�rRr])r/ryr�r]r�r�c��g|]}|dz��SrNrNrOs  r1r�zD_TestFancyMultidimAssign.test_fancy_assign_slice.<locals>.<listcomp>~���$�$�$�B��a��$�$�$r3c��g|]}|dz��SrUrNrVs  r1r�zD_TestFancyMultidimAssign.test_fancy_assign_slice.<locals>.<listcomp>r[r3)r�r]r�rRr/ryrz)rAr�r[r'r�r�rr�r�r�r�)	r�r^r<rr�rr�C1�C2s	         r1�test_fancy_assign_slicez0_TestFancyMultidimAssign.test_fancy_assign_sliceus���
�	���t�����R�Y�^�^�A�q�)�)�*�*���M�M�!������������$�$�!�$�$�$��$�$�!�$�$�$��
"�
"�
"��
�Y�q�\�\�!�!�!�T�'�
"���j�!�-�%��t���1E�r�J�J�J��j�!�-�%��+�+�u�1E�r�J�J�J�J�Jr3N)r�r�r�rFrJrXr_rNr3r1rCrC$sV������?�?�?�B"�"�"�$?�?�?�:K�K�K�K�Kr3rCc�$�eZdZdZd�Zd�Zd�ZdS)�_TestArithmeticz&
    Test real/complex arithmetic
    c��tgd�gd�gd�gd�gd��|_tgd�gd�gd�gd	�gd
��|_tgd�gd�gd
�gd�gd��|j_t	|jdz�d��d|jz��t	|jjdz�d��d|jjz��t	|jjdz�d��d|jjz��|�|j��|_|�|j��|_	dS)N)g��g@r�@rr)g	@g��g�?rrr)rr���rrr)rrg� @rrrr�)g�?rrrrAg@)g�,@g�rrrdr)rg@rrrr)g�2@���rrrrr2)g�?rrrryg�)rc��@rrrg@)rrfrrrr)rerrrrr�rR)
r�_TestArithmetic__A�_TestArithmetic__Brbrrlr\r��_TestArithmetic__Asp�_TestArithmetic__Bspr�s r1�__arith_initz_TestArithmetic.__arith_init�s����4�4�4�9�9�9�3�3�3�0�0�0�2�4=�>�>����3�3�3�9�9�9�/�/�/�5�5�5�7�9E�F�F����9�9�9�;�;�;�5�5�5�7�7�7�9�;D�E�E���
�	�D�H�R�K�/�/��8�8��D�H��E�E�E��D�H�M�"�,�4�4�W�=�=�b����>N�O�O�O��D�H�M�"�,�4�4�W�=�=�b����>N�O�O�O��]�]�4�8�,�,��
��]�]�4�8�,�,��
�
�
r3c��|���t|j|jz���|j|jz��tD�]�}tj	d���5|j�
|��}ddd��n#1swxYwY|�|��}tD�]�}tj|tj
��sMtj	d���5|jj�
|��}ddd��n#1swxYwYn|j�
|��}|�|��}||z}||z}t|j|j��t|���|��t||z|��t||z|��tjd��||fvr��$||z
}||z
}t|j|j��t|���|��t||z
|��t||z
|��������dS)Nrrr�)�_TestArithmetic__arith_initrrjrkr�rhrir$rArrlr�rdrr\rr6�	r�r7rHr�r8rIr��D1�S1s	         r1�test_add_subz_TestArithmetic.test_add_sub�s���������	�
�Z�$�*�
$�-�-�/�/���D�H�1D�	
�	
�	
�
"� 	/� 	/�A���X�.�.�.�
'�
'��H�O�O�A�&�&��
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'����
'�
'�
'�
'��-�-��"�"�C�%�
/�
/���}�Q��(:�;�;�+���X�6�6�6�4�4� �H�M�0�0��3�3��4�4�4�4�4�4�4�4�4�4�4����4�4�4�4�������*�*�A��m�m�A�&�&����U���3�Y���R�X�b�h�/�/�/�"�2�:�:�<�<��4�4�4�"�3��7�2�.�.�.�"�1�s�7�2�.�.�.��8�F�#�#��1�v�-�-����U���3�Y���R�X�b�h�/�/�/�"�2�:�:�<�<��4�4�4�"�3��7�2�.�.�.�"�1�s�7�2�.�.�.�.�9
/�	 	/� 	/s$�0B�B	�B	�5 D!�!D%�(D%c
��|���t|j|jjz���|j|jjz��tD�]z}tj
d���5|j�|��}ddd��n#1swxYwY|�|��}tD�]}tj
|tj��r|j�|��}nLtj
d���5|jj�|��}ddd��n#1swxYwY|�|��}||jz}||jz}t!|���|dt#|�����z���t'|j|j������|dS)Nrrg�+����=)�atol)rnrrjrkrr�rhrir$rArrlr�rdrr\rrErQrr6ros	         r1�test_muz_TestArithmetic.test_mu�s,��������	�D�J����5�>�>�@�@��8�d�h�j�0�	2�	2�	2�"�	0�	0�A���X�.�.�.�
'�
'��H�O�O�A�&�&��
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'����
'�
'�
'�
'��-�-��"�"�C�%�

0�

0���=��B�$6�7�7�4������*�*�A�A���X�6�6�6�4�4� �H�M�0�0��3�3��4�4�4�4�4�4�4�4�4�4�4����4�4�4�4��m�m�A�&�&�����W���3�5�[����
�
���b�%*�3�r�7�7�;�;�=�=�%8�:�:�:�:��R�X�b�h�/�/�/�/�

0�		0�	0s$�:B!�!B%	�(B%	� E�E
�
E
N)r�r�r�r`rnrrrurNr3r1rara�sL��������-�-�-�.)/�)/�)/�V0�0�0�0�0r3rac�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�_TestMinMaxc�\�tjtjtjtjtjfD�]�}tjd|����dd��}|�|��}t|�
��d��t|���d��t|�
��j|��t|���j|��|dz}|�|��}t|�
��d��t|���d��|dz
}|�|��}t|�
��d	��t|���d�����|�tjd
d���dd����}t|�
��d
��t|�
��j|j��|}t|���d��|�tj
d
����}t|�
��d��t|���d��t|���j|j��tjdt����dd��}d|dd
�dd�f<|�|��}t|�
��d��t|���d��tj
d��tj
d��tj
d��fD]K}|�|��}tt |j
��tt |j���LdS)Nr�r3r/rRr�r�i��i�r�rMr�r]rl�rrM�rMr)rAr0r�rRr^r2rr�r�rrfrQr6rr r�r�)r�r6r^r�r
s     r1�test_minmaxz_TestMinMax.test_minmax�s3���j�"�*�b�h���"�-�P�	%�	%�E��	�"�E�*�*�*�2�2�1�Q�7�7�A��
�
�a� � �A�������!�$�$�$�������"�%�%�%���������.�.�.���������.�.�.�
��G�A��
�
�a� � �A�������#�&�&�&�������!�$�$�$�
��F�A��
�
�a� � �A�������#�&�&�&�������!�$�$�$�$�
�M�M�"�)�A�r�*�*�2�2�1�a�8�8�9�9���Q�U�U�W�W�a� � � ��Q�U�U�W�W�]�A�G�,�,�,�
�B���Q�U�U�W�W�b�!�!�!�
�M�M�"�(�1�+�+�&�&���Q�U�U�W�W�a� � � ��Q�U�U�W�W�a� � � ��Q�U�U�W�W�]�A�G�,�,�,�
�I�b��&�&�&�.�.�q��3�3����!�A�#�q�q�q�&�	��M�M�!�����Q�U�U�W�W�a� � � ��Q�U�U�W�W�b�!�!�!��(�6�"�"�B�H�W�$5�$5�r�x��7H�7H�I�	-�	-�A��
�
�a� � �A��*�a�e�,�,�,��*�a�e�,�,�,�,�	-�	-r3c�(�tjd���dd��}d|ddd�f<d|dd�df<d|d<d|d	<|�|��}gd
�}|D]~}t	|�|���j|�|d�
����t	|�|���j|�|d�
�����tjdd���dd��}|�|��}|D]~}t	|�|���j|�|d�
����t	|�|���j|�|d�
�����tjd��}|�|��}|D]~}t	|�|���j|�|d�
����t	|�|���j|�|d�
�����ddg}ddg}tjd��}|�|��}|D]:}tt|j|���tt|j|����;|D]x}t	tjd��|�|���j��t	tjd��|�|���j���ytjd��}|�|��}|D]:}tt|j|���tt|j|����;|D]x}t	tjd��|�|���j��t	tjd��|�|���j���ydS)Nrr/rMrr�r|rr�rV)r�r�rr�r�Tr	�3)rMr/r�rzr�r{r�)rArr�r�rrQrHrfrr�r�)r�r^r�r�r��	axes_even�axes_odds       r1�test_minmax_axisz_TestMinMax.test_minmax_axis
s���I�b�M�M�!�!�!�R�(�(����!�Q�Q�Q�$����!�!�!�Q�$����$����$���M�M�!�����~�~���	�	�D�����4�� � �"�A�E�E�t�d�E�$C�$C�
�
�
�
����4�� � �"�A�E�E�t�d�E�$C�$C�
�
�
�
�

�I�a����$�$�R��+�+���M�M�!�����	�	�D�����4�� � �"�A�E�E�t�d�E�$C�$C�
�
�
�
����4�� � �"�A�E�E�t�d�E�$C�$C�
�
�
�
�

�H�W�����M�M�!�����	�	�D�����4�� � �"�A�E�E�t�d�E�$C�$C�
�
�
�
����4�� � �"�A�E�E�t�d�E�$C�$C�
�
�
�
���G�	��r�7��
�H�W�����M�M�!�����	8�	8�D��*�a�e�$�7�7�7�7��*�a�e�$�7�7�7�7�7��	E�	E�D��r�x��/�/����D��1A�1A�1C�D�D�D��r�x��/�/����D��1A�1A�1C�D�D�D�D��H�W�����M�M�!�����	8�	8�D��*�a�e�$�7�7�7�7��*�a�e�$�7�7�7�7�7��	E�	E�D��r�x��/�/����D��1A�1A�1C�D�D�D��r�x��/�/����D��1A�1A�1C�D�D�D�D�	E�	Er3c�D�tgd�gd�gd�g��}|�|��}dD]o}t||��}tt|d���tt
|d���tt
|d���tt|d	d	�
���pdS)Nr�r�r�)rfrQr�r�r�r�r�r�)rr�r~r�r�r�)r�r�r��fnamer�s     r1�test_minmax_invalid_paramsz&_TestMinMax.test_minmax_invalid_paramsY
s����Y�Y�Y��Z�Z��Z�Z�!�"�"���
�
�c�"�"��#�	;�	;�E��5�%�(�(�D��*�d��3�3�3�3��)�T��7�7�7�7��)�T��4�4�4�4��*�d���:�:�:�:�:�	;�	;r3c�j�ddlm}tgd�gd�gd�g��}|�|��}t	||j��rjt
tj|��tj|����t
tj	|��tj	|����dSdS)Nr)�_datar�r�r�)
�scipy.sparser�rr�r@�
_minmax_mixinrrArfrQ)r�r�r�r�s    r1�test_numpy_minmaxz_TestMinMax.test_numpy_minmaxf
s���	'�&�&�&�&�&��Y�Y�Y��Z�Z��Z�Z�!�"�"���
�
�c�"�"���e�U�0�1�1�	;��r�v�e�}�}�b�f�S�k�k�:�:�:��r�v�e�}�}�b�f�S�k�k�:�:�:�:�:�	;�	;r3c
��tjgd�gd�gd�gd�gd�g��}|���}||fD�]�}t|��}t	|���tj|����t	|���tj|����t	|�d���ttj|d�������t	|�d���ttj|d�������t	|�d���ttj|d����d	d������t	|�d���ttj|d����d	d���������tj	d
��}tj	d��}dD]O}|�
|��}tt|j|���tt|j|����Pd
D]O}|�
|��}tt|j|���tt|j|����PdS)N)r�r/r]r�)rrr�r�)r�r�rPrCrh)r�r]rrrr�r�r�rnr�rb)Nr�)
rArrrr�argmax�argminr'r�rpr�r�r�)r�rp�D2r^r�r�s      r1�test_argmaxz_TestMinMax.test_argmaxx
s���
�X��M�M��N�N�����L�L��L�L�
�����\�\�^�^���b��	H�	H�A��Q�-�-�C�������r�y��|�|�4�4�4�������r�y��|�|�4�4�4�������+�+�!�"�)�A�A�"6�"6�"6�7�7�
9�
9�
9�������+�+�!�"�)�A�A�"6�"6�"6�7�7�
9�
9�
9�
������+�+�!�"�)�A�A�"6�"6�"6�">�">�r�1�"E�"E�F�F�
H�
H�
H�������+�+�!�"�)�A�A�"6�"6�"6�">�">�r�1�"E�"E�F�F�
H�
H�
H�
H��X�f�
�
��
�X�f�
�
���	=�	=�D��-�-��#�#�C��*�c�j�t�<�<�<�<��*�c�j�t�<�<�<�<�<��	=�	=�D��-�-��#�#�C��*�c�j�t�<�<�<�<��*�c�j�t�<�<�<�<�<�	=�	=r3N)r�r�r�r|r�r�r�r�rNr3r1rwrw�sd������--�--�--�^?E�?E�?E�B;�;�;�;�;�;�$%=�%=�%=�%=�%=r3rwc��eZdZd�ZdS)�_TestGetNnzAxisc���tddgddgddgg��}|�t��}|�|��}tjtjf}t|�d���|�	d�����t|���|�	����t|�d���|�	d�����t|�	d���j|��t|�d���|�	d�����t|�	d���j|��t|�d	���|�	d	�����t|�	d	���j|��t|�d
���|�	d
�����t|�	d
���j|��tt|j	d���dS)Nrr]r�r/r�r|r�r�r�r�)rrlr�r�rArRr^rr��getnnzr2r6r�r�)r�r��bool_datr��accepted_return_dtypess     r1�test_getnnz_axisz _TestGetNnzAxis.test_getnnz_axis�
s����a��V���V��!�W������:�:�d�#�#���
�
�c�"�"��"$�(�B�H�!5���8�<�<�T�<�2�2�E�L�L�d�L�4K�4K�L�L�L��8�<�<�>�>�5�<�<�>�>�:�:�:��8�<�<�Q�<�/�/����1��1E�1E�F�F�F��%�,�,�A�,�&�&�,�.D�E�E�E��8�<�<�Q�<�/�/����1��1E�1E�F�F�F��%�,�,�A�,�&�&�,�.D�E�E�E��8�<�<�R�<�0�0�%�,�,�B�,�2G�2G�H�H�H��%�,�,�B�,�'�'�-�/E�F�F�F��8�<�<�R�<�0�0�%�,�,�B�,�2G�2G�H�H�H��%�,�,�B�,�'�'�-�/E�F�F�F��j�%�,�Q�7�7�7�7�7�7r3N)r�r�r�r�rNr3r1r�r��
s#������8�8�8�8�8r3r�Tc��|r|Sd�}t|j��}|j���D](\}}|�d��r||��||<�)t	|jdz|j|��S)z�
    Construct a class that either runs tests as usual (require=True),
    or each method skips if it encounters a common error.
    c�F��tj����fd���}|S)Nc���	�|i|��S#tttttf$rtjd���wxYw)Nr�)rTr�r�r��AttributeErrorr�r�)rEr��fcs  �r1�wrapperz6_possibly_unimplemented.<locals>.wrap.<locals>.wrapper�
sY���A��2�q�<�B�<�<�'��+�Y�
�"�N�4�A�A�A� �+�&?�@�@�@�A���s	��8A)�	functools�wraps)r�r�s` r1�wrapz%_possibly_unimplemented.<locals>.wrap�
s=���
�_�R�
 �
 �
A�
A�
A�
A�!�
 �
A��Nr3�test_�NotImplemented)�dictr>r3�
startswithr�r��	__bases__)r��requirer��new_dictr�r�s      r1�_possibly_unimplementedr��
s���
���
�		�		�		����%�%���,�,�,�.�.�	,�	,�J�D�$����w�'�'�
,�!%��d��������C�L�#3�3��M����	r3c	��ttt|��ttt
tt|��tt|��tt|��tt|��tt|o|��tt|o|��tt|��tt|��f
}	i}
|	D]`}|jD]V}|�d��s�|
�|��}
|
�"t#d|j�d|�d|
j�����||
|<�W�at'd|	i��S)z�
    Construct a base class, optionally converting some of the tests in
    the suite to check that the feature is not implemented.
    r�NzTest class z overloads test z defined in �TestBase)r�r�r{r�rerar�r�r�r&r;rCrwr�r>r��getr�r�r�)�getset�slicing�slicing_assign�fancy_indexing�fancy_assign�fancy_multidim_indexing�fancy_multidim_assign�minmax�nnz_axis�bases�namesr�r��old_clss              r1�sparse_test_classr��
sW���
$�[�&�
9�
9�
�
#�
�
$�\�7�
;�
;�
$�%7��
H�
H�
$�%7��
H�
H�
$�%=�%1�3�3�
$�%7�%3�%O�8O�Q�Q�
$�%=�%:�%K�|�M�M�
$�[�&�
9�
9�
$�_�h�
?�
?�
A�E�$
�E������L�	�	�D��?�?�7�+�+�
���i�i��o�o�G��"� �j��L�L�L�$�$�$��(8�(8�":�;�;�;��E�$�K�K�	��
�E�2�&�&�&r3c��eZdZed���Zejejejej	gZ
d�Zd�Zd�Z
d�Zd�Zd�Zd�Zd	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�ZdS)r�c��t��5}|�td��t|i|��cddd��S#1swxYwYdS)Nz<Changing the sparsity structure of a csr_matrix is expensive)rr�r#r�r��argsr9r�s    r1r�zTestCSR.spmatrix���
�
 �
 �	/�C��J�J�.�U�
W�
W�
W��t�.�v�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/��'A�A�
Ac��tgd�gd�gd�gd��}t|��}t|jgd���t	|jgd���t	|jgd���t|���d��t|�	��d	��t	|�
��|��dS)
N)rrRrr�rr�)rRr�r]r�r�r�rV)rrrr[rrYrZrr��	getformatr��r�rJr�s   r1�test_constructor1zTestCSR.test_constructor1
s����9�9�9��9�9��9�9��"�
$�
$����m�m��!�#�(�7�7�7�3�3�3��3�;�w�w�w�/�/�/��3�:�i�i�i�0�0�0��S�Z�Z�\�\�!�$�$�$��S�]�]�_�_�U�+�+�+��3�;�;�=�=�!�,�,�,�,�,r3c��tdd��}d|d<t|��}t|jdg��t	|jdg��t	|jgd���t|���|��dS)N�ryryr�r/r�rR)rrrrr�r�r�)rrrr[rrYrZr�r�s   r1�test_constructor2zTestCSR.test_constructor2s����%�������#����m�m��!�#�(�A�3�/�/�/��3�;��s�+�+�+��3�:�o�o�o�6�6�6�!�#�+�+�-�-��3�3�3�3�3r3c�$�tddgddgddggd��}t|��}t|jgd���t	|jgd���t	|jgd���t|���|��dS)	Nr�rr]r�r�rwr�r�)rrrr[rrYrZr�r�s   r1�test_constructor3zTestCSR.test_constructor3"s����A�q�6��q�6��q�6���
!�
!����m�m��!�#�(�7�7�7�3�3�3��3�;�w�w�w�/�/�/��3�:�i�i�i�0�0�0�!�#�+�+�-�-��3�3�3�3�3r3c��tgd���}tgd���}tgd���}t||f��}t||fd��}tt	d���dd��|�����tdd	gd
d	gd
d	gfftj���}tdd
gd
d	ggtj���}t||�����dS�N�r]r�r�r�rr�r�rr]r�r]�rr�rrr�r�r]r]r]r]r��g@g$@rg"@rrAg&@rg @g@r2r�r�rRr�lr�rr3)	rr	rrrr�r�rA�uint64)r�r]r^r[r�rVr�s       r1�test_constructor4zTestCSR.test_constructor4,s���5�5�5�6�6���5�5�5�6�6���3�3�3�4�4���S��I�
�
���$�r��5�)�)���6�"�:�:�-�-�a��3�3�S�[�[�]�]�C�C�C��9�a�.�A�q�6�A�q�6�*:�;�2�9�M�M�M���	�1�~��1�v�.�b�i�@�@�@���5�#�+�+�-�-�0�0�0�0�0r3c��tgd���}tgd���}tgd���}t|||f��}t|jd��dS�N�rr�r�r��rr/r�r]rhr)rrrr��r�rZrYr[rVs     r1�test_constructor5zTestCSR.test_constructor5<�a���y�y�y�!�!���	�	�	�"�"���Y�Y�Y�����$���0�1�1���3�9�U�+�+�+�+�+r3c���gd�}gd�}gd�}t|||f��}t|jd��tt	j|jtj����dSr�)rrr�rrArdr6�
signedintegerr�s     r1�test_constructor6zTestCSR.test_constructor6Dsh�������,�,���|�|���$���0�1�1���3�9�e�,�,�,���
�c�i��)9�:�:�;�;�;�;�;r3c��td��dz}tgd�tj���}tgd�tj���}t	|||fd���}tgd�gd	�gd
�gd��}t|jjtjtj����t|j	jtjtj����t|���|��dS)Nryr�)r�r]r�rrr]r3�rr]rRryr�r�r�r~)r/rryr�)rrrAr^rrrZr6rRrYrr�)r�r[r^�ptrrErJs      r1�test_constructor_smallcolz!TestCSR.test_constructor_smallcolMs����a�y�y�1�}���&�&�&�b�h�7�7�7���L�L�L���1�1�1����c�3�'�v�6�6�6���9�9�9��9�9��9�9��"�
$�
$��	�Q�X�^�R�X�b�h�%7�%7�8�8�8��Q�Y�_�b�h�r�x�&8�&8�9�9�9��1�9�9�;�;��*�*�*�*�*r3c	�H�td��dz}tjtj��jdz}tddd||dz|dzgtj���}tgd�tj���}t|||f��}t|j	j
tj
tj����t|jj
tj
tj����t|j
dt	|��dzf��dS)	Nryr�r�rr]r3r�r�)rrArPrRrQrr^rrrZr6rYrr�)r�r[�larger^r�rEs      r1�test_constructor_largecolz!TestCSR.test_constructor_largecol]s����a�y�y�1�}������"�"�&��,���Q��1�e�U�1�W�e�A�g�6�b�h�G�G�G���L�L�L���1�1�1����c�3�'�(�(���Q�X�^�R�X�b�h�%7�%7�8�8�8��Q�Y�_�b�h�r�x�&8�&8�9�9�9��1�7�Q��C����
�O�4�4�4�4�4r3c�v�td��}tgd���}tgd���}t|||fd���}|���}|���t|jgd���t|���|�����dS)Nr/�rzr]r�r/rR�rr�r/�r]rMr��r�r]rzrRr/)rrrr�r#rrYr��r�r[rYrZr�r�s      r1�test_sort_indiceszTestCSR.test_sort_indicesjs����a�y�y������(�(���y�y�y�!�!���$���0��?�?�?���h�h�j�j���������3�;����7�7�7��3�;�;�=�=�#�+�+�-�-�8�8�8�8�8r3c��tgd���}tgd���}tgd���}t|||fd���}|���}|���t	|jd��t	|jgd���t	|���|�����dS)N�r�rrrr]rr�r�r�r]r�rRr/ryrzr{�rr�r{r�r�r�rw)rrr��eliminate_zerosrrr[r�r�s      r1�test_eliminate_zeroszTestCSR.test_eliminate_zerost����-�-�-�.�.���0�0�0�1�1���y�y�y�!�!���$���0��?�?�?���h�h�j�j���������3�7�A�&�&�&��3�8�I�I�I�.�.�.��3�;�;�=�=�#�+�+�-�-�8�8�8�8�8r3c	�2�ttjd���dd��dz��}dD]�}t	tt|��d��t
||����}t	|j|j��t|j	|j	��t|j
|j
��t|���t
t|��|���������dS)Nr�rRr/r;�r?r@rArBrCrDrErFrGr:rHrIrJrKrLrMrNrOT)rrArr�rr"r~r�rrYrZr��r�r�r:r>s    r1�test_ufuncszTestCSR.test_ufuncs�����r�y��}�}�,�,�Q��2�2�S�8�9�9��J�	J�	J�A�
���Q�/�/��6�6�6����A�����B����"�(�+�+�+��q�y�"�*�5�5�5��q�x���3�3�3��r�z�z�|�|�^�W�R��^�^�A�I�I�K�K�-H�-H�I�I�I�I�	J�	Jr3c��td��}tgd���}tgd���}t|||fd���}td��}tgd���}tgd���}t|||fd���}t||z���|���|���z��dS)	Nr/r�r�r�r�ry�r{r�r/rzr]rR�rr]ry)rrrrr�r�s      r1�test_unsorted_arithmeticz TestCSR.test_unsorted_arithmetic������a�y�y������(�(���y�y�y�!�!���$���0��?�?�?���a�y�y���*�*�*�+�+���y�y�y�!�!���$���0��?�?�?���c�C�i�(�(�*�*�C�K�K�M�M�C�K�K�M�M�,I�J�J�J�J�Jr3c��tjdgdgdgg��}tjgd���}tj�d��t	tj�dd����}|�|��}|||f}t|��r|���}t||||f��dS�Nr�r]r�r=rZr/rz�
rArr�r[r'r�r�r"r�r�r�rr�r^r<rs      r1�test_fancy_indexing_broadcastz%TestCSR.test_fancy_indexing_broadcast�����H�q�c�A�3���_�%�%���H�Y�Y�Y����
�	���t�����R�Y�^�^�A�q�)�)�*�*���M�M�!������!��f���c�?�?�	 ��+�+�-�-�C��S�!�A�a�C�&�!�!�!�!�!r3c�P�tjddg��}tjddg��}tjddg��}tjddg��}t|||f�����}t	d|j��t
|j��tksJ�t|||f�����}t	d|j��|���t	d|j��t|j
|��t|||f�����}d|_t	d|j��t|j
|��|���t|j
|��dS)z@Ensure has_sorted_indices memoizes sorted state for sort_indicesrr�r]TFN)rArrr�rr!r�r�r#rrY)r��sorted_inds�
unsorted_indsr[rZr"s      r1�test_has_sorted_indiceszTestCSR.test_has_sorted_indices�s~���h��1�v�&�&����!�Q��(�(�
��x��A�������1�a�&�!�!����k�6�2�3�3�8�8�:�:���T�1�/�0�0�0��A�(�)�)�T�1�1�1�1���m�V�4�5�5�:�:�<�<���U�A�0�1�1�1�	
�������T�1�/�0�0�0��1�9�k�2�2�2���m�V�4�5�5�:�:�<�<��#����T�1�/�0�0�0��1�9�m�4�4�4�	
�������1�9�m�4�4�4�4�4r3c���ttjdg��tjdg��tjddg��f��}td|j��tjddg��}tjddg��}tjddg��}t|||f�����}td|j��t
|j��tksJ�|���td|j��tdt|j
����t|||f�����}d|_td|j��tdt|j
����|���tdt|j
����dS)z=Ensure has_canonical_format memoizes state for sum_duplicatesr]rr�TFN)rrArr�has_canonical_formatr�r�r��sum_duplicatesr�rY)r�r"rYr[rZs     r1�test_has_canonical_formatz!TestCSR.test_has_canonical_format�s���
���!��
�
�r�x���}�}�b�h��1�v�6F�6F�G�H�H���T�1�1�2�2�2��(�A�q�6�"�"���x��A�������1�a�&�!�!����g�v�.�/�/�4�4�6�6���U�A�2�3�3�3��A�*�+�+�t�3�3�3�3�	
�������T�1�1�2�2�2��Q��A�I���'�'�'���g�v�.�/�/�4�4�6�6��!%����T�1�1�2�2�2��Q��A�I���'�'�'�	
�������Q��A�I���'�'�'�'�'r3c��tjdtj���}tjdtj���}tjd��}t|||fd���}t|||fd���}tjdtj���}t||fd���}t||fd���}td��}	td��}
t	|jjtj��t	|jjtj��t	|jjtj��t	|jjtj��t	|	jjtj��t	|
jjtj��|||||	|
fD]}||z�dS)Nr]r3r�r���r��r��r�)rArrRrrrZr6r^�r�rZrY�valsrErJr�r8r�r9r:r7s            r1�test_scalar_idx_dtypezTestCSR.test_scalar_idx_dtype������!�2�8�,�,�,���(�1�B�H�-�-�-���x��{�{����g�v�.�l�C�C�C����g�v�.�j�A�A�A��
�X�f�B�H�
-�
-�
-����b�z��6�6�6����b�z��4�4�4���|�$�$���z�"�"���Q�X�^�R�X�.�.�.��Q�X�^�R�X�.�.�.��Q�X�^�R�X�.�.�.��Q�X�^�R�X�.�.�.��Q�X�^�R�X�.�.�.��Q�X�^�R�X�.�.�.��Q��1�a��#�	�	�A�
��E�E�E�	�	r3c��tgd���}tgd���}||zjdksJ�|�|��jdksJ�dS)Nr��r�r�rr]r�)rrr��r�rErJs   r1�test_binop_explicit_zerosz!TestCSR.test_binop_explicit_zeros�sa��
�y�y�y�!�!���y�y�y�!�!���A��{�a������z�z�!�}�}� �A�%�%�%�%�%�%r3N)r�r�r�rar�rAr�rurrr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrNr3r1r�r�sJ�������/�/��[�/�
�8�R�W�b�i���=�K�
-�
-�
-�4�4�4�4�4�4�1�1�1� ,�,�,�<�<�<�+�+�+� 5�5�5�9�9�9�	9�	9�	9�
J�
J�
J�	K�	K�	K�"�"�"�5�5�5�8(�(�(�:���0&�&�&�&�&r3r�c��eZdZed���Zejejejej	gZ
d�Zd�Zd�Z
d�Zd�Zd�Zd�Zd	�Zd
�Zd�Zd�Zd
�ZdS)r�c��t��5}|�td��t|i|��cddd��S#1swxYwYdS)Nz<Changing the sparsity structure of a csc_matrix is expensive)rr�r#rr�s    r1r�zTestCSC.spmatrixr�r�c��tgd�gd�gd�gd��}t|��}t|jgd���t	|jgd���t	|jgd���t|���d��t|j	|j	��t|�
��d	��dS)
N�r�rrrr��rr]rr�r�)r�r]r�r�)rr]r�r]rrRrW)rrrr[rrYrZrr�r�r�r�s   r1r�zTestCSC.test_constructor1
s����<�<�<����|�|�|�<�c�B�B����m�m��!�#�(�9�9�9�5�5�5��3�;�y�y�y�1�1�1��3�:�k�k�k�2�2�2��S�Z�Z�\�\�!�$�$�$��S�Y�q�w�'�'�'��S�]�]�_�_�U�+�+�+�+�+r3c���tdd��}d|d<t|��}t|jdg��t	|jdg��t	|jgd���dS)Nr�r�r/)r]rRr])rrrrrr�r�)rrrr[rrYrZr�s   r1r�zTestCSC.test_constructor2si���%�������#����m�m��!�#�(�A�3�/�/�/��3�;��s�+�+�+��3�:�o�o�o�6�6�6�6�6r3c���tddgddgddggd��}t|��}t|jddg��t	|jddg��t	|jgd���dS)Nr�rr]r�r�)rrrr[rrYrZr�s   r1r�zTestCSC.test_constructor3sw���A�q�6�A�q�6�A�q�6�*�C�0�0����m�m��!�#�(�A�a�5�1�1�1��3�;��!�u�-�-�-��3�:�g�g�g�.�.�.�.�.r3c�8�tgd���}tgd���}tgd���}t||f��}t||fd��}tt	d���dd��|�����dS)Nr�r�r�r�r�rRr�)rr	rrrr�r�)r�r]r^r[r�rWs      r1r�zTestCSC.test_constructor4#s����5�5�5�6�6���5�5�5�6�6���3�3�3�4�4���S��I�
�
���$�r��5�)�)���6�"�:�:�-�-�a��3�3�S�[�[�]�]�C�C�C�C�Cr3c��tgd���}tgd���}tgd���}t|||f��}t|jd��dS�Nr�r�rh)ryr�)rrrr��r�rZrYr[rWs     r1r�zTestCSC.test_constructor5.r�r3c���gd�}gd�}gd�}t|||f��}t|jd��tt	j|jtj����dSr)rrr�rrArdr6r�rs     r1r�zTestCSC.test_constructor66sh�������,�,���|�|���$���0�1�1���3�9�U�+�+�+���
�c�i��)9�:�:�;�;�;�;�;r3c��tgd���}tgd���}tgd���}t|||fd���}|���}|���t	|jd��t	|jgd���t	|���|�����dS)Nr�r�r��rMr]r�r�rw)rrr�r�rrr[r�r�s      r1r�zTestCSC.test_eliminate_zeros?r�r3c�\�td��}tgd���}gd�}t|||fd���}|���}|���t|jgd���t|���|�����dS)Nr/r�r�rr�r�)rrrr�r#rrYr�)r�r[r]r�r�r�s      r1r�zTestCSC.test_sort_indicesJs����a�y�y���O�O�O�$�$���i�i���$��S�)��8�8�8���h�h�j�j���������3�;����7�7�7��3�;�;�=�=�#�+�+�-�-�8�8�8�8�8r3c	�2�ttjd���dd��dz��}dD]�}t	tt|��d��t||����}t	|j|j��t|j
|j
��t|j|j��t|���tt|��|���������dS)N�rzr�g5@r�T)
rrArr�rr"rr~r�rrYrZr�r�s    r1r�zTestCSC.test_ufuncsTr�r3c��td��}tgd���}tgd���}t|||fd���}td��}tgd���}tgd���}t|||fd���}t||z���|���|���z��dS)	Nr/r�r�rr�ryr�r�)rrrrr�r�s      r1r�z TestCSC.test_unsorted_arithmetic`r�r3c��tjdgdgdgg��}tjgd���}tj�d��t	tj�dd����}|�|��}|||f}t|��r|���}t||||f��dSr�r�r�s      r1r�z%TestCSC.test_fancy_indexing_broadcastkr�r3c��tjdtj���}tjdtj���}tjd��}t|||fd���}t|||fd���}tjdtj���}t||fd���}t||fd���}t	d��}	t	d	��}
t|jjtj��t|jjtj��t|jjtj��t|jjtj��t|	jjtj��t|
jjtj��|||||	|
fD]}||z�dS)
Nr]r3r)rr�r�)r	r�r�rr)	rArrRrrrrZr6r^r
s            r1rzTestCSC.test_scalar_idx_dtypeyr
r3N)r�r�r�rar�rAr�rurrr�r�r�r�r�r�r�r�r�r�r�r�rrNr3r1r�r�s�������/�/��[�/�
�8�R�W�b�i���=�K�,�,�,�7�7�7�/�/�/�	D�	D�	D�,�,�,�<�<�<�	9�	9�	9�9�9�9�
J�
J�
J�	K�	K�	K�"�"�"�����r3r�c�^�eZdZeZejejejgZ	d�Z
d�Zd�Zd�Z
d�Zd�ZdS)r�c��td��}d|d<d|d<||jz}||jz}t|j|j��dS)N�rMrMrMr�r��r/ry)rrr�rrH)r�rHr^r�s    r1�	test_multzTestDOK.test_mult�sQ���w������#����#��
�a�c�E��
�a�c�E���1�3���$�$�$�$�$r3c��|�d��}d|d<d|d<|dz}tddgddgddgg��}t|���|��|d	z}|d	z}t|���|��dS)
NrU���r�r�r�rMrr�r)r�rrr�r�s   r1�test_add_nonzerozTestDOK.test_add_nonzero�s����M�M�%� � ����#����#��
��F���B��7�R��H�r�2�h�/�0�0���1�9�9�;�;��*�*�*�
��F��
��F���1�9�9�;�;��*�*�*�*�*r3c�,�|�d��}d|d<d|d<t|dz���|���dz��t|dz���|���dz��dS)NrUr,r�r�r�rr|)r�rr�rFs  r1�test_dok_divide_scalarzTestDOK.test_dok_divide_scalar�s}���M�M�%� � ����#����#���A�b�D�>�>�+�+�Q�Y�Y�[�[��^�<�<�<��A�a�C�=�=�?�?�A�I�I�K�K��M�:�:�:�:�:r3c��d\}}t||f��}d|d<d|d<d|d<d|d	<d
|d<d|d
<t|���dd�|dz
ft|����|���}t|���dd�|dz
ft|����||}}|���}t
|j||f��t|���|dz
dd�ft|����|���}t|���|dz
dd�ft|����dS)N)ryrzr�r�r]r�r�r�rRr�r/r�ryr�)	rrr�rr4rrr�r5)r�r;r�rErWrJrVs       r1�test_convertzTestDOK.test_convert�sd�����A���1�v������#����#����#����#����#����#��	�1�9�9�;�;�q�q�q��1��u�-�u�Q�y�y�9�9�9��g�g�i�i���3�;�;�=�=����1�Q�3��/��q���;�;�;��Q�A��
�K�K�M�M���Q�W�q�!�f�%�%�%��1�9�9�;�;�q��s�1�1�1�u�-�u�Q�y�y�9�9�9��g�g�i�i���3�;�;�=�=��1��Q�Q�Q��/��q���;�;�;�;�;r3c��ttt��tgd�gd�gd�gd��}t|��}t	|j|j��t	|���|��t|��}t	|���|�����gd�gd�g}t|tj	���}t	|jtj	��|���}t	|jtj	��t||��dS)Nrr�rr�r�r�r3)r�r�rrrr6r�rrAr0r)r�rJrHr8r[r��das       r1�	test_ctorzTestDOK.test_ctor�s���i��,�,�,�
�<�<�<����|�|�|�<�c�B�B���q�M�M���Q�W�a�g�&�&�&��Q�Y�Y�[�[�!�$�$�$�
�q�M�M���Q�Y�Y�[�[�!�)�)�+�+�.�.�.��	�	�9�9�9�%���t�2�:�.�.�.���Q�W�b�j�)�)�)�
�Y�Y�[�[���R�X�r�z�*�*�*��2�t�$�$�$�$�$r3c��td��}d|d<td|���vd��td��}d|dd�df<tt|�����dkd��dS)NrrrlzUnexpected entry (0,0) in keyszUnexpected entries in keys)rr�keysr�rs   r1�test_ticket1160zTestDOK.test_ticket1160�s����u������#��	��Q�V�V�X�X�%�'G�H�H�H�
�u������!�!�!�A�#����A�F�F�H�H�
�
��"�$@�A�A�A�A�Ar3N)r�r�r�rr�rArurrr�r*r-r/r1r4r7rNr3r1r�r��s��������H��7�B�I�r�{�3�K�%�%�%�
+�
+�
+�;�;�;�<�<�<�>%�%�%�*B�B�B�B�Br3r�)r�r�c�j�eZdZeZejejejgZ	d�Z
d�Zd�Zd�Z
d�Zd�Zd�Zd�Zd	S)
�TestLILc��tdtj��}d|d<d|d<tdtj���}d|d<d|d<t	j��dkr2t
||jz||jz�����t
||�	��jz||j
z�����dS)Nr(rMr�y4@r)r3�ppc64le)rrAr2r�platform�machinerrr�rr�r�s   r1�test_dotzTestLIL.test_dot�s����(�B�M�*�*����$����$���x�r�}�5�5�5����$����$�������*�*��q�1�3�w��Q�S��(9�(9�(;�(;�<�<�<��1�q�{�{�}�}��.��Q�S��0A�0A�0C�0C�D�D�D�D�Dr3c��td��}d|d<|dz}t|dd��|dz}t|dd��dS)Nrr]rlrRr)rr)r�r7s  r1�test_scalar_mulzTestLIL.test_scalar_mul
sX���v������$��
�a�C���Q�t�W�a� � � �
�a�C���Q�t�W�a� � � � � r3c��tgd�gd�g��}tgd�gd�g��}|||zf|||z
fd|dzfd�}|���D]l\}\}}|���}t|d|z��|��t	|���|������mtdt
jd���	��}tgd
���}|ddd�fxx|z
cc<t	|ddd�f����	��|��dS)N�rr]r�r�r�r�)�add�sub�mulz__i%s__r�r�r3)皙�����?rFrFr)
rr3r�r~rr�rAr6r�squeeze)r�rHrIr[�op�otherr r�s        r1�test_inplace_opszTestLIL.test_inplace_opss`���	�	�	�9�9�9�-�.�.���	�	�	�9�9�9�-�.�.���1�q�5�z��1�q�5�z��1�q�5�z�#�#��&*�Z�Z�\�\�	E�	E�!�B�!����V�V�X�X�F�+�G�F�I��N�+�+�E�2�2�2��v�~�~�/�/��1A�1A�1C�1C�D�D�D�D�
�v�R�X�i�%8�%8�9�9�9���/�/�/�"�"��	�!�Q�Q�Q�$����1������1�Q����T�7�?�?�,�,�4�4�6�6��:�:�:�:�:r3c���gd�gd�g}tt|����}t|��D]<\}}t|���t||d������=dS)Nrwrxr])�ndmin)rrr�rr�)r��row_datarIr�r]s     r1�test_lil_iterationzTestLIL.test_lil_iteration+sz���I�I�y�y�y�)���u�X���'�'����l�l�	K�	K�F�A�s��s�{�{�}�}�e�H�Q�K�q�.I�.I�.I�J�J�J�J�	K�	Kr3c���td��}d|d<d|d<d|d<d|d	<d
|d<|���}t|��}t|j|j��dS)Nr(rMr�r�r)r�)r{r�rk)r�r{r)r{r|)rr5rrH)r�rIr�r^s    r1�test_lil_from_csrzTestLIL.test_lil_from_csr1sp��
�x� � ����$����$����$����$����$��
�G�G�I�I���q�M�M���1�3���$�$�$�$�$r3c�,�ttd���dd����}t|��}t	|tgd���dd�f���|tgd���dd�f��dS)Nr�r/rwr]r�)r'rr�rrrr�)r�r"rHs   r1�test_fancy_indexing_lilzTestLIL.test_fancy_indexing_lil>s����V�B�Z�Z�'�'��1�-�-�.�.���q�M�M���Q�u�Y�Y�Y�'�'��1��,�-�5�5�7�7��u�Y�Y�Y�'�'��1��,�-�	/�	/�	/�	/�	/r3c���td��}d|d<d|d<d|d<d|d	<td��}d|d<d|d
<d|d<d|d	<d|d<t|�|�����|�|�������t|�|�����gd�gd
�gd�gd�g��dS)Nr�r�rlr]r�r�rVrRr�r�rUr1rD�rrr|)rrgr)rrr�r�)r��lr;s   r1�test_point_wise_multiplyz TestLIL.test_point_wise_multiplyEs���v������$����$����$����$���v������$����$����$����$����$���1�:�:�a�=�=�0�0�2�2��:�:�a�=�=�0�0�2�2�	4�	4�	4�	�1�:�:�a�=�=�0�0�2�2�%�I�I�%�I�I�%�I�I�&�J�J�(�	)�	)�	)�	)�	)r3c�d�ttjd����}|dz}d|ddd�f<dS)Nrrr)rrAr�)r�rEs  r1�test_lil_multiply_removalz!TestLIL.test_lil_multiply_removal\s5���r�w�v���'�'��	�R�����!�Q�Q�Q�$���r3N)r�r�r�rr�rArurrr�r>r@rJrNrPrRrVrXrNr3r1r9r9�s��������H��7�B�I�r�{�3�K�
E�
E�
E�!�!�!�;�;�;�(K�K�K�%�%�%�/�/�/�)�)�)�.����r3r9)r�c���eZdZeZejejejgZ	d�Z
d�Zd�Zd�Z
d�Zej�dd���d	���Zd
�Zd�Zd�Zd
�Zd�Zd�ZdS)�TestCOOc���tgd���}tgd���}tgd���}t|||ffd��}ttd���dd��|�����tdd	gd
d	gd
d	gfftj���}tdd
gd
d	ggtj���}t||�����dSr�)rrrrr�r�rAr�)r�r]r^r[r\r�s      r1r�zTestCOO.test_constructor1ls����5�5�5�6�6���5�5�5�6�6���C�C�C�D�D���$��C�y�)�%�0�0���6�"�:�:�-�-�a��3�3�S�[�[�]�]�C�C�C��9�a�.�A�q�6�A�q�6�*:�;�2�9�M�M�M���	�1�~��1�v�.�b�i�@�@�@���5�#�+�+�-�-�0�0�0�0�0r3c��tgd���}tgd���}tgd���}t|||ffd��}tgd�gd�gd�g��}t||�����dS)N)
rr�r]r]r]r]rrr]r])
rr]rr]r�r�r�rrr])
r]r|rCr/rzrr�r]r�rAr)rRr�rrT)rPrzr)rrrr�)r�r]r^r[r\r�s      r1r�zTestCOO.test_constructor2zs����)�)�)�*�*���)�)�)�*�*���-�-�-�.�.���$��C�y�)�%�0�0���Z�Z�Z����J�J�J�7�8�8���3����
�
�.�.�.�.�.r3c�*�td��}t|jd��t|jg��t|jg��t|jg��t|���td����dS)Nr�)rrr�r]r^r[r�r�r�r\s  r1r�zTestCOO.test_constructor3�s{��������3�9�U�+�+�+��3�7�2�&�&�&��3�7�2�&�&�&��3�8�B�'�'�'��3�;�;�=�=�%��-�-�8�8�8�8�8r3c�h�tgd�gd�gd�g��}t|��}t|���|��tgd���}t|��}t|���|�dd����tjtd���5tgd�gd	�gd
�f��ddd��n#1swxYwYtjtd���5tgd�d�
��ddd��dS#1swxYwYdS)N�rr�rr)rzrr�r)rrRrrr�r�zobject cannot be interpreted)�match)rr���!r�r�zinconsistent shapesr�r�)	rrrr�r�r�rr�r�)r�r�r\s   r1r�zTestCOO.test_constructor4�s����Y�Y�Y��Y�Y��Y�Y� �!�!����o�o���3�;�;�=�=�#�.�.�.��I�I�I������o�o���3�;�;�=�=�#�+�+�a��*<�*<�=�=�=��]�9�,K�
L�
L�
L�	F�	F��������|�|�|�(D�E�E�E�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F����	F�	F�	F�	F��]�:�-C�
D�
D�
D�	6�	6�����f�5�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s$�;C � C$�'C$�D'�'D+�.D+c��dg}t|dgdgffd���}|jtj|��jksJ�dS)Nr�rr3)rr6rAr)r�r[r\s   r1�"test_constructor_data_ij_dtypeNonez*TestCOO.test_constructor_data_ij_dtypeNone�sL���s���$�!��q�c�
�+�4�8�8�8���y�B�H�T�N�N�0�0�0�0�0�0�0r3FzCOO does not have a __getitem__��run�reasonc��dSr5rNr�s r1r!zTestCOO.test_iterator�����r3c�|�ddgg}t|�����}t|j|��dSrb)r�todiarrH)r�rr_s   r1�test_todia_all_zeroszTestCOO.test_todia_all_zeros�s>���Q��������%�%�'�'���3�5�%�(�(�(�(�(r3c���td��}|���tddgddgddgff��}|���t|jddgddgg��tddgddgddgff��}|���t|jddgddgg��t|jdg��t|jdg��t|jdg��dS)Nr�r�r]rr�)rrrrHr]r^r[r^s  r1�test_sum_duplicateszTestCOO.test_sum_duplicates�s��������������1�Q�%�1�Q�%�!�A���0�1�1���������3�5�A�a�5�!�A��-�0�0�0��1�Q�%�1�Q�%�!�A���0�1�1���������3�5�A�a�5�!�A��-�0�0�0��3�7�Q�C�(�(�(��3�7�Q�C�(�(�(��3�8�a�S�)�)�)�)�)r3c��tgd�gd�gd�ff��}|���}t|j|j��dS)N)r�r�r�r�)rr]r]r)rr�r�r)rr)rrH)r�r\r;s   r1�test_todok_duplicateszTestCOO.test_todok_duplicates�sL���)�)�)�i�i�i����%;�<�=�=���i�i�k�k���3�5�#�%�(�(�(�(�(r3c�n�tgd���}tgd���}tgd���}t|||ffd���}|���}|���t	|jdk�����t|j|j��dS)Nr�)rrrr�r�r�r�r�r�r�r�r)	rrr�r�rr[�allrrH)r�r[r]r^r�r�s      r1r�zTestCOO.test_eliminate_zeros�s����-�-�-�.�.���,�,�,�-�-���,�,�,�-�-���$��c�
�+�6�:�:�:���h�h�j�j�����������Q��#�#�%�%�&�&�&��3�5�#�%�(�(�(�(�(r3c��gd�gd�gd�g}d}t|��}|�|��}t|j|ju��|�|d���}t|j|ju��|�|d���}tt	j|j|j����dS)Nr�r�r�r�Fr�T)rr�rr[rArG)r�rg�	new_shaper7r8s     r1�test_reshape_copyzTestCOO.test_reshape_copy�s����}�}�l�l�l�O�O�O�<���	��s�O�O��
�I�I�i� � �����!�&� �!�!�!�
�I�I�i�e�I�,�,�����!�&� �!�!�!�
�I�I�i�d�I�+�+���B�'�����7�7�7�8�8�8�8�8r3c�&�tdgdgdgffd��}tdgdgdgffd��}t|�dd���|kjdk��t|�dd	���|kjdk��dS)
Nr�i��-r�)��-��)ryrxr�r�rr�)rrr�r)r��mat1�mat2s   r1�test_large_dimensions_reshapez%TestCOO.test_large_dimensions_reshape�s����A�3�'��T�F� 3�4�o�F�F���A�3�$��'�� 3�4�o�F�F��	����o�S��9�9�T�A�F�!�K�L�L�L�����o�S��9�9�T�A�F�!�K�L�L�L�L�Lr3N)r�r�r�rr�rArurrr�r�r�r�r�rer�rb�xfailr!rmrorqr�rvr|rNr3r1rZrZfs
�������H��7�B�I�r�{�3�K�1�1�1�	/�	/�	/�9�9�9�6�6�6�*1�1�1�
�[���5�)J��K�K�
�
�L�K�
�)�)�)�
*�*�*�)�)�)�
)�)�)�9�9�9�	M�	M�	M�	M�	Mr3rZ)r�r�r�r�r�c��eZdZeZejejejgZ	d�Z
ej�
dd���d���Zed��d���Zej�d�	��d
���Zd�ZdS)
�TestDIAc�&�tgd�gd�gd�gd�g��}tjgd�g���dd���}tjgd	���}tt	||fd
������|��dS)N)r�rr�r)r�r]rrR)rr]r�r)rrr�rRrhr�rr�)rr�r]r�r�)rrA�repeatrrr�)r�r^r[r`s    r1r�zTestDIA.test_constructor1�s����<�<�<��<�<��<�<��<�<�!�
"�
"���x�����$�$�+�+�A�1�+�5�5���(�8�8�8�$�$���Z��w��v�>�>�>�F�F�H�H�!�L�L�L�L�Lr3FzDIA does not have a __getitem__rfc��dSr5rNr�s r1r!zTestDIA.test_iterator�rjr3r�c��ttjd����}t|jjtj��|�dd���t|jjtj��ttjd����}t|jjtj��|�dd���t|jjtj��dS)Nr�)r�r]rirR)	rrAr!rr`r6rRr�r^�r�r;s  r1�test_setdiag_dtypezTestDIA.test_setdiag_dtype�s����r�v�a�y�y�!�!���Q�Y�_�b�h�/�/�/�	�	�	�$�!�	�����Q�Y�_�b�h�/�/�/��r�v�a�y�y�!�!���Q�Y�_�b�h�/�/�/�	�	�	�$�!�	�����Q�Y�_�b�h�/�/�/�/�/r3zDIA stores extra zeros�rhc��dSr5rNr�s r1r�zTestDIA.test_getnnz_axis
rjr3c�,�tgd�gdgfd���}|���}t|������|��t|������|��dS)Nrr�r�r�)rr�rr4r5)r�r;r s   r1�test_convert_gh14555zTestDIA.test_convert_gh14555s|�������b�T�*�&�9�9�9���9�9�;�;���1�7�7�9�9�,�,�.�.��9�9�9��1�7�7�9�9�,�,�.�.��9�9�9�9�9r3N)r�r�r�rr�rArurrr�r�r�rbr}r!r�r�r�r�r�rNr3r1rr�s��������H��7�B�I�r�{�3�K�M�M�M��[���5�)J��K�K�
�
�L�K�
���Q���	0�	0� ��	0��[���5��6�6�
�
�7�6�
�:�:�:�:�:r3r)r�r�r�r�r�r�r�c��eZdZeZejejejgZ	d�Z
d�Zd�Zd�Z
d�Zd�Zd�Zd�Zd	�Zd
�Zd�Zej�dd
���d���Zej�dd���d���Zd�Zej�dd���d���Zej�ed���d���ZdS)r�c�:�tgd���}tgd���}td��}tgd�gd�g��|d<tgd�gd�g��|d	<tgd
�gd�g��|d<tgd
�gd�g��|d<tgd�gd�gd�ggd�gd�g��}t|||fd���}t	|���|��t|||f��}t	|���|��dS�N)rr]r]rR)rr]r]r�)rRr]r�r�r�rrI)ryrrMr�)rrRr{)r�rr�r])rr/rM)rmrr�r�r�r�r��ryr�r�)rrr
r rr�)r�rZrYr[rHr�s      r1r�zTestBSR.test_constructor1 sY���y�y�y�!�!���	�	�	�"�"���W�~�~������"���$�%�%��Q������#���%�&�&��Q������$���&�'�'��Q������$���&�'�'��Q��
�)�)�)�I�I�I�i�i�i�0�7�7�7�7�7�7�2C�D�D���$�w�v�.�V�<�<�<���S�[�[�]�]�A�&�&�&��$�w�v�.�/�/���S�[�[�]�]�A�&�&�&�&�&r3c�X�dD]@}t|��}tt|�����|���Atd��}tt|d������|��tt|d������|��t	gd�gd�gd�ggd	�gd
�g��}tt|�����|��tt|d������|��tt|d
������|��tt|d������|��tt|d������|��tt|d������|��tt|d������|��tt|d������|��t	gd�gd�gd�ggd	�gd
�g��}tt|d������|��dS)N)r�r�r�)rMrR)r�rzr�)rRryrVr�r�r�r�r�r�r�r�r�r�r�)r]r�)r�r�r`)rrr r�r
)r�r�rHs   r1r�zTestBSR.test_constructor27so��B�	5�	5�E��e���A���A���.�.�0�0�!�4�4�4�4��%�L�L���Z��V�4�4�4�<�<�>�>��B�B�B��Z��V�4�4�4�<�<�>�>��B�B�B��)�)�)�I�I�I�i�i�i�0�7�7�7�7�7�7�2C�D�D���Z��]�]�*�*�,�,�a�0�0�0��Z���1�1�1�9�9�;�;�Q�?�?�?��Z��V�4�4�4�<�<�>�>��B�B�B��Z��V�4�4�4�<�<�>�>��B�B�B��Z��V�4�4�4�<�<�>�>��B�B�B��Z��W�5�5�5�=�=�?�?��C�C�C��Z��W�5�5�5�=�=�?�?��C�C�C��Z��W�5�5�5�=�=�?�?��C�C�C��)�)�)�I�I�I�i�i�i�0�7�7�7�7�7�7�2C�D�D���Z��V�4�4�4�<�<�>�>��B�B�B�B�Br3c��gd�gd�gd�ff}tddgddgg��}tt|d�	�����|��dS)
Nrwr�rfr�rr]r�rVr�)rrr r�)r��argrHs   r1r�zTestBSR.test_constructor3Ose���w�w����'�'�'�*�+���A�a�5�!�A��-� � ���Z��v�6�6�6�>�>�@�@�!�D�D�D�D�Dr3c��d}tj||dftj���}tjd|gtj���}tj|tj���}t
|||f|dfd���dS)Nr{r�r3rF)r�r�)rAr�rrrRrr )r�r�r[rZrYs     r1r�zTestBSR.test_constructor4Us{��
���w��1�a�y���0�0�0����1�a�&���1�1�1���)�A�R�X�.�.�.���D�'�6�*�q�!�f�5�I�I�I�I�I�Ir3c�2�d}tj|��}tj|||f��}tjd|g��}tj|��}t	t
��5t
|||f��ddd��n#1swxYwYt	t
��5t
|||fd���ddd��n#1swxYwYt	t
��5t
|||fd���ddd��dS#1swxYwYdS)Nr{rr�r�r�)rAr�rrr�r�r )r�r��	data_1dimr[rZrYs      r1r�zTestBSR.test_constructor5^s���
���G�A�J�J�	��w��1�a�y�!�!����1�a�&�!�!���)�A�,�,��
�:�
&�
&�	5�	5��	�7�F�3�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5��:�
&�
&�	E�	E���g�v�.�)�D�D�D�D�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E��:�
&�
&�	B�	B���g�v�.�&�A�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs6�,B�B�B�*C�C�C�*D�D�Dc��dgdggdgdggg}tjddgtj���}tjddgtj���}t|||fd���}|jtj|��jksJ�dS)Nr�rr]r3r�r�)rArrRr r6)r�r?rZrYrJs     r1�test_default_dtypezTestBSR.test_default_dtypers����3���*��s�Q�C�j�)����1�a�&���1�1�1���(�A�q�6���2�2�2������0�F�C�C�C���w�"�(�6�*�*�0�0�0�0�0�0�0r3c��tgd���}tgd���}td��}tgd�gd�g��|d<tgd�gd�g��|d	<tgd
�gd�g��|d<tgd
�gd�g��|d<tgd�gd�gd�ggd�gd�g��}t|||fd���}|���}|������}t
|���|��t
|���|�����dSr�)rrr
r r5r6rr�)r�rZrYr[rH�Absr�Acsr�Acsr_via_coos        r1�test_bsr_tocsrzTestBSR.test_bsr_tocsrzs|���|�|�|�$�$������%�%���Y��������"���$�%�%��Q������#���%�&�&��Q������$���&�'�'��Q������$���&�'�'��Q��
�,�,�,����l�l�l�;��)�)�Y�Y�Y�'�
)�
)���4��&�1��A�A�A���z�z�|�|���z�z�|�|�)�)�+�+���T�\�\�^�^�Q�'�'�'��T�\�\�^�^�\�%9�%9�%;�%;�<�<�<�<�<r3c��tgd�ddgddgg��j}|�ddd��}tgd���}tgd���}t	|||fd���}|���}|���t|jd	��t|�	��|�	����dS)
Nr�r�r�r]r�r�)rRr�r�r�)
r
rr�rr r�r�rrr�r�s      r1r�zTestBSR.test_eliminate_zeros�s����,�,�,��!�u�a��U�m�<�<�>���|�|�B�q��#�#���0�0�0�1�1���y�y�y�!�!���$���0��?�?�?���h�h�j�j���������3�7�C�(�(�(��3�;�;�=�=�#�+�+�-�-�8�8�8�8�8r3c�N�tj�d��ttj�d��d���}d|j|jdk<|���t
|jd��t|jj	d��d|j|jdk<|���t
|jd��t|jj	d	��t|�
��tjd����|���t
|jd��t|jj	d	��t|�
��tjd����dS)
Nr)r�r�r�r�g�������?�B)r�r]r�rrB)rAr�r[r r[r�rrrr�r�rr�s  r1�test_eliminate_zeros_all_zeroz%TestBSR.test_eliminate_zeros_all_zero�sT��
�	���q�����r�y�'�'��1�1�V�D�D�D��!"���q�v��}��	�������Q�U�B�����1�6�<��4�4�4�!"���q�v��}��	�������Q�U�A�����1�6�<��3�3�3��1�9�9�;�;����(:�(:�;�;�;�	
�������Q�U�A�����1�6�<��3�3�3��1�9�9�;�;����(:�(:�;�;�;�;�;r3c��ttd���dd��d���}t|jd���dd��}t	||z|���|z��dS)N�xr{rm�rRr/r�r�r��r rr�r�rr�r�s   r1�test_bsr_matveczTestBSR.test_bsr_matvec�ss���v�g���.�.�s�3�7�7�5�I�I�I���1�7�1�:���&�&�r�!�,�,���Q�q�S�!�)�)�+�+��/�*�*�*�*�*r3c��ttd���dd��d���}t|jddz���dd��}t	||z|���|z��dS)	Nr�r{rmr�r�r�ryr�r�r�s   r1�test_bsr_matvecszTestBSR.test_bsr_matvecs�sw���v�g���.�.�s�3�7�7�5�I�I�I���1�7�1�:�a�<� � �(�(��A�.�.���Q�q�S�!�)�)�+�+��/�*�*�*�*�*r3FzBSR does not have a __getitem__rfc��dSr5rNr�s r1r!zTestBSR.test_iterator�rjr3zBSR does not have a __setitem__c��dSr5rNr�s r1r�zTestBSR.test_setdiag�rjr3c�T�tjgd�gd�gd�g��}|�|d���}t|�d��du��t|jddgd	dgd
dgg��|�d��t|jddgd	dgg��|�d��t|jddgd	dgddgg��|�d��t|jgd
�gd�gd�g��tt|jd��dS)NrRrSrTr�r�rUr�rr]r�rVr�rr�r�rWr;s   r1�test_resize_blockedzTestBSR.test_resize_blocked�sm���H�l�l�l�"�l�l�"�l�l�$�
%�
%��
�M�M�!�v�M�.�.������� � �D�(�)�)�)��1�3�!�Q��"#�Q��"#�Q��!)�	*�	*�	*�	
��������1�3�!�Q��"#�Q��!)�	*�	*�	*�	��������1�3�!�Q��"#�Q��"#�Q��!)�	*�	*�	*�	
��������1�3����!-���!-���!/�	0�	0�	0�	�j�!�(�F�3�3�3�3�3r3c��dSr5rNr�s r1r�z"TestBSR.test_setdiag_comprehensive�rjr3zexceeds memory limitr�c���tjdtj���}tjdtj���}tjd��}t|||fd���}t|||fd���}td��}td��}t	|jjtj��t	|jjtj��t	|jjtj��t	|jjtj��	tjd��}tjd	��}	t|||fd���}
t|	||fd���}t	|
jjtj��t	|jjtj��n#ttf$rd}
d}YnwxYw|||||
|fD]}||z�dS)
Nr]r3rr�rr�r)rr�r)rr�r	)
rArrRr rrZr6r^�MemoryErrorr�)
r�rZrYrrErJr8r��vals2�vals3r9r:r7s
             r1rzTestBSR.test_scalar_idx_dtype�s�����!�2�8�,�,�,���(�1�B�H�-�-�-���x�	�"�"����g�v�.�l�C�C�C����g�v�.�j�A�A�A���|�$�$���z�"�"���Q�X�^�R�X�.�.�.��Q�X�^�R�X�.�.�.��Q�X�^�R�X�.�.�.��Q�X�^�R�X�.�.�.�
	��H�_�-�-�E��H�]�+�+�E��E�7�F�3�<�H�H�H�A��E�7�F�3�:�F�F�F�A�������2�2�2�������2�2�2�2���Z�(�	�	�	��A��A�A�A�	�����Q��1�a��#�	�	�A�
��E�E�E�	�	s�,BG�G�GN)r�r�r�r r�rArurrr�r�r�r�r�r�r�r�r�r�r�r�r�rbr}r!r�r�r��skipif�IS_COLABrrNr3r1r�r�s��������H��7�B�I�r�{�3�K�'�'�'�.C�C�C�0E�E�E�J�J�J�B�B�B�(1�1�1�=�=�=�.	9�	9�	9�<�<�<�.+�+�+�
+�+�+�
�[���5�)J��K�K�
�
�L�K�
��[���5�)J��K�K�
�
�L�K�
�4�4�4�.�[���5�)J��K�K�
�
�L�K�
��[����)?��@�@���A�@���r3r�)r�r�r�r�r�r�c��|�dd��}tj|jtj��s$tj|jtj��r|�|f|zS|f|z|fzS|dk���}|�dd���}|ddd�xxdzcc<d|ddd�<|djdkrTtd�|D����}d|dzf|dd�z}d|dzdzf|dd�z}d||<d||<td�|D����}|�|f|zS|f|z|dzfzS)	z-Duplicates entries to produce the same matrixrZNrr]r�r�c3�&K�|]}|dV��
dSr�rN)r��ps  r1�	<genexpr>z&_same_sum_duplicate.<locals>.<genexpr>s&����,�,�Q�A�a�D�,�,�,�,�,�,r3c3�@K�|]}|�d��V��dS)r]N)r�)r�rYs  r1r�z&_same_sum_duplicate.<locals>.<genexpr>"s.����7�7�w�����"�"�7�7�7�7�7�7r3)
�poprArdr6r��unsignedintegerr�r�rcr�)r[�indsr9rZ�	zeros_pos�pos�pos1�pos2s        r1�_same_sum_duplicater�	s���
�Z�Z��$�
'�
'�F�	�}�T�Z���*�*�.�	�}�T�Z��!3�4�4�.��>��7�T�>�!��7�T�>�V�I�-�-����#�#�%�%�I��;�;�q�q�;�!�!�D����1��I�I�I��N�I�I�I��D���A��J���|��1����,�,�)�,�,�,�,�,���#�a�&��{�S����W�$���#�a�&���
�}�s�1�2�2�w�&����T�
���T�
��7�7�$�7�7�7�7�7�D�
�~��w��~���w��~��!��
�-�-r3c���eZdZd
�fd�	Zej�d���d���Zej�d���d���Zej�d���d	���Z	�xZ
S)�_NonCanonicalMixinFc����t��j}||fi|��}|jdk���}|djdk}|r�|djdz}t��5}	|	�td��|�||d||d|��}ddd��n#1swxYwY|�	||��}
d|vr
|j
|d<||
fi|��}|jtj
tjfvrd}nd}t|j|j|�	��|r*t!|jdk�����|S)
zcReplace D with a non-canonical equivalent: containing
        duplicate elements and explicit zerosrr]r�r�Nr�g�h㈵��>gH�����z>)�rtol)�superr�rHr�rcrr�r#�_insert_explicit_zero�_arg1_for_noncanonicalr�r6rAr0r1rrr[�any)r�r^�sorted_indicesr9�	constructr"�zero_pos�	has_zerosrjr��arg1�NCr�rs             �r1r�z_NonCanonicalMixin.spmatrix+s�����G�G�$�	��I�a�"�"�6�"�"���C�1�H�%�%�'�'���a�[�%��)�	��	R���� �!�#�A�"�$�$�
R���
�
�2�\�^�^�^��.�.�q�(�1�+�a�.�(�1�+�a�.�Q�Q��
R�
R�
R�
R�
R�
R�
R�
R�
R�
R�
R����
R�
R�
R�
R�
�*�*�1�n�=�=���&� � ��g�F�7�O�
�Y�t�
&�
&�v�
&�
&���8��
�B�L�1�1�1�
�D�D��D����a�c��-�-�-�-��	*��R�W��\�&�&�(�(�)�)�)��	s�,AC�C�
Cz"bool(matrix) counts explicit zerosr�c��dSr5rNr�s r1r�z_NonCanonicalMixin.test_boolQrjr3z!getnnz-axis counts explicit zerosc��dSr5rNr�s r1r�z#_NonCanonicalMixin.test_getnnz_axisUrjr3znnz counts explicit zerosc��dSr5rNr�s r1rz_NonCanonicalMixin.test_emptyYrjr3�F)r�r�r�r�r�rbr�r�r�r�
__classcell__)rs@r1r�r�*s��������$�$�$�$�$�$�L�[���A��B�B�
�
�C�B�
��[���@��A�A�
�
�B�A�
��[���8��9�9�
�
�:�9�
�
�
�
�
r3r�c��eZdZdd�Zd�ZdS)�_NonCanonicalCompressedMixinFc�>�t|j|j|j���\}}}|srt	||dd���D]Y\}}|||�ddd����|||�<|||�ddd����|||�<�Z|||fS)�5Return non-canonical constructor arg1 equivalent to M)rZr�Nr�)r�r[rYrZr r�)r�r"r�r[rYrZ�start�stops        r1r�z3_NonCanonicalCompressedMixin._arg1_for_noncanonical_s��� 3�A�F�A�I�;<�8�!E�!E�!E���g�v��	A�"�6�6�!�"�"�:�6�6�
A�
A���t�&-�e�D�j�&9�$�$�B�$�&?�&D�&D�&F�&F���d�
�#�#'��d�
�#3�D�D�b�D�#9�#>�#>�#@�#@��U�4�Z� � ��W�f�$�$r3c��d|||f<|SrbrN�r�r"r�r�s    r1r�z2_NonCanonicalCompressedMixin._insert_explicit_zerois����!�A�#���r3Nr�)r�r�r�r�r�rNr3r1r�r�^s7������%�%�%�%�����r3r�c��eZdZd�Zd�Zej�dd���d���Zej�dd���d���Z	d	S)
�_NonCanonicalCSMixinc�l���fd�}tD]%}dD] }|tj|��|���!�&dS)Nc�b��tgd�gd�gd�gd�g|���}�	�||���}|j\}}t||��D]6}t||��D]"}t	|||f|||f���#�7dD]$}tttf|j|���%dS)Nr1r~rrDr3)r�r�)	rr�r�r�rr�r�r�r�)
r6r�r^rHr"r%r�r�r�r�s
         �r1r�z3_NonCanonicalCSMixin.test_getelement.<locals>.checkps�����w�w�w��w�w��w�w��w�w� �(-�.�.�.�A��
�
�a��
�?�?�A��'�C�A�a��A�2�q�\�\�
1�
1����r�1���1�1�A� ��1�Q�3���1�Q�3��0�0�0�0�1�C�
J�
J���z�9�5�q�}�b�I�I�I�I�
J�
Jr3)FTr�)r�r�r6r�s`   r1r�z$_NonCanonicalCSMixin.test_getelementosm���	J�	J�	J�	J�	J� &�	7�	7�E�"/�
7�
7����b�h�u�o�o�~�6�6�6�6�
7�	7�	7r3c���tjd��}|�|��}|�gd�g��}|���|ddd�f<t	��5}|�td��||ddd�f<ddd��n#1swxYwYt|���|��|������|dd�df<t	��5}|�td��|j	|dd�df<ddd��n#1swxYwYt|���|��dS)Nr�rwr�r�r])
rAr!r�r�rr�r#rrr)r�r^rHrIr�s     r1�test_setitem_sparsez(_NonCanonicalCSMixin.test_setitem_sparse�s����F�1�I�I���M�M�!�����M�M�7�7�7�)�$�$��������!�A�A�A�#��
�
 �
 �	�C��J�J�.�X�
Z�
Z�
Z��A�a����c�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�1�9�9�;�;��*�*�*������"�"�$�$��!�!�!�A�#��
�
 �
 �	�C��J�J�.�X�
Z�
Z�
Z��S�A�a�a�a��c�F�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�1�9�9�;�;��*�*�*�*�*s$�+%B�B �#B �*D:�:D>�D>Fz(inverse broken with non-canonical matrixrfc��dSr5rNr�s r1r.z_NonCanonicalCSMixin.test_inv�rjr3z&solve broken with non-canonical matrixc��dSr5rNr�s r1r�z_NonCanonicalCSMixin.test_solve�rjr3N)
r�r�r�r�r�r�rbr}r.r�rNr3r1r�r�ns�������7�7�7�*+�+�+�&�[���5�)S��T�T�
�
�U�T�
��[���5�)Q��R�R�
�
�S�R�
�
�
r3r�c��eZdZdS)�TestCSRNonCanonicalN�r�r�r�rNr3r1r�r����������Dr3r�c��eZdZdS)�TestCSCNonCanonicalNr�rNr3r1r�r��r�r3r�c��eZdZd�Zej�dd���d���Zej�dd���d���ZdS)	�TestBSRNonCanonicalc�n�|���}d|||f<|�|j���S)Nrr�)r5r*r�)r�r"r�r�r7s     r1r�z)TestBSRNonCanonical._insert_explicit_zero�s2��
�G�G�I�I����!�A�#���w�w���w�-�-�-r3Fz&diagonal broken with non-canonical BSRrfc��dSr5rNr�s r1ruz!TestBSRNonCanonical.test_diagonal�rjr3z"expm broken with non-canonical BSRc��dSr5rNr�s r1r*zTestBSRNonCanonical.test_expm�rjr3N)	r�r�r�r�r�rbr}rur*rNr3r1r�r��s�������.�.�.�
�[���5�)Q��R�R�
�
�S�R�
��[���5�)M��N�N�
�
�O�N�
�
�
r3r�c�"�eZdZdd�Zd�Zd�ZdS)�TestCOONonCanonicalNc�V�t|j|j|j��\}}}|||ffS)r�)r�r[r]r^)r�r"r�r[r]r^s      r1r�z*TestCOONonCanonical._arg1_for_noncanonical�s.��,�Q�V�Q�U�A�E�B�B���c�3��c�3�Z��r3c�h�tj|jj�d��|jf|_tj|jj�|��|jf|_tj|jj�|��|jf|_|Srb)rA�r_r[r6r�r]r^r�s    r1r�z)TestCOONonCanonical._insert_explicit_zero�s|����q�v�|�(�(��+�+�Q�V�3�4�����a�e�k�&�&�q�)�)�1�5�0�1�����a�e�k�&�&�q�)�)�1�5�0�1����r3c�N�|�tjd����}|���|�ddgd���|���ttjtj|j��dk����dS)Nr�r]r�rir)	r�rAr!rr�rrs�diffr^r�s  r1�test_setdiag_noncanonicalz-TestCOONonCanonical.test_setdiag_noncanonical�s����M�M�"�&��)�)�$�$��	������	�	�	�1�a�&�A�	����	���������r�w�q�u�~�~��*�+�+�,�,�,�,�,r3r5)r�r�r�r�r�r�rNr3r1r�r��sF������ � � � �
���-�-�-�-�-r3r�c#�K�tttttt
tg}dddddddd�}|D�]P}tt|����D�]/}t||��}|�
d���rt|d	d
��s�g}|�|��}t|��r$|tj�|���gz
}t!jtj��t!jd��kr5t|d
g��}|D] }|jdvr|�|���!n)dD]&}	t-||	��r|t||	��gz
}�'tj|||���V���1��RdS)Nz%expm for 64-bit indices not availablez)linsolve for 64-bit indices not availableztest implemented in base classz%test actually requires 64-bit to workztest verifies int32 indexesztest verifies int64 indexes)r*r.r�rr|r�r�r�rcFr�z3.6.0�
pytestmark)r�r�r}�xslow)�marks)r�rZr�r�rr�r9�sorted�dirr~r�r�r�r�rbr�r�parse�__version__�Versionr�rCr"�param)
�TEST_CLASSES�
SKIP_TESTSr��method_name�methodr�r.�markersrb�mnames
          r1�cases_64bitr�s������W�g�w���W��L�=�?�A�!A�)P�%B�%B���J��B�B��!�#�c�(�(�+�+�	B�	B�K��S�+�.�.�F��&�&�w�/�/�
B�����6�6�
B��� �n�n�[�1�1����9�9�<��f�k�.�.�c�.�:�:�;�;�E��=��!3�4�4����8P�8P�P�P�%�f�l�B�?�?�G� '�/�/���9�(L�L�L�!�L�L��.�.�.��/�"F�>�>��"�6�5�1�1�>�!�g�f�e�&<�&<�%=�=�E���l�3��5�A�A�A�A�A�A��)	B�B�Br3c��eZdZeeeeegZd�Z	d�Z
d�Zd�Zd�Z
ej�de����d���Zej�de����d���Zej�de����d	���Zej�de����d
���Zej�de����d���Zd�Zd
S)�	Test64Bitc�T�|tj�||����Sr5)rAr�r�)r��mat_clsr;r�s    r1�_create_some_matrixzTest64Bit._create_some_matrix�s"���w�r�y�~�~�a��+�+�,�,�,r3c��tj|��}t|ttt
f��r |jj|ko|jj|kSt|t��r |j	j|ko|j
j|kSt|t��r|jj|kStd|�d����)Nzmatrix z has no integer indices)rAr6r@rrr rYrZrr]r^rr`r�)r�r;r6s   r1�_compare_index_dtypezTest64Bit._compare_index_dtype�s����������a�*�j�*�=�>�>�	H��I�O�u�,�K�1�8�>�U�3J�K�
��:�
&�
&�	H��E�K�5�(�D�q�u�{�e�/C�D�
��:�
&�
&�	H��I�O�u�,�-��*�1�1�1�F�G�G�Gr3c�h��td����fd���}�jD]
}||���dS)NrM�ric�`��|tj�dd����}t��|tj����|tj�dd����}t��|tj����dS)NrMr�r�)rAr�r�rrrRr^)rr;r�s  �r1r�z4Test64Bit.test_decorator_maxval_limit.<locals>.checks�������	���r�1�-�-�.�.�A��D�-�-�a���:�:�;�;�;����	���r�1�-�-�.�.�A��D�-�-�a���:�:�;�;�;�;�;r3�r��MAT_CLASSES�r�r�rs`  r1�test_decorator_maxval_limitz%Test64Bit.test_decorator_maxval_limitsa���
!�b�	1�	1�	1�	<�	<�	<�	<�
2�	1�	<��'�	�	�G��E�'�N�N�N�N�	�	r3c�h��td����fd���}�jD]
}||���dS)NT�r�c���d}d}td��D]d}��|dd��}|p��|tj��}|p��|tj��}|r|rdS�et
d���)NFr�r|z#both 32 and 64 bit indices not seen)r�r	rrArRr^rk)r�seen_32�seen_64rjr;r�s     �r1r�z5Test64Bit.test_decorator_maxval_random.<locals>.checks�����G��G��3�Z�Z�
L�
L���,�,�W�a��;�;��!�K�T�%>�%>�q�"�(�%K�%K��!�K�T�%>�%>�q�"�(�%K�%K����w���E�E��$�%J�K�K�Kr3rrs`  r1�test_decorator_maxval_randomz&Test64Bit.test_decorator_maxval_randomsf���
!��	-�	-�	-�
	L�
	L�
	L�
	L�
.�	-�
	L��'�	�	�G��E�'�N�N�N�N�	�	r3c�H�tdi|��d���}|||��dS)Nc�4�|��}t|d��r|���	t||����t|d��r|���dSdS#t|d��r|���wwxYw)N�setup_method�teardown_method)r"rr~r)r�r�instances   r1r�z*Test64Bit._check_resiliency.<locals>.check)s����s�u�u�H��x��0�0�
(��%�%�'�'�'�
/�.���+�.�.�0�0�0��8�%6�7�7�/��,�,�.�.�.�.�.�/�/��7�8�%6�7�7�/��,�,�.�.�.�.�/���s�A0�0'BrN)r�)r�r�rr�r�s     r1�_check_resiliencyzTest64Bit._check_resiliency%sF��
!�	&�	&�2�	&�	&�	/�	/�
'�	&�	/�	��c�;�����r3zcls,method_namec�6�|�||d���dS)NrMr
�r�r�r�rs   r1�test_resiliency_limit_10z"Test64Bit.test_resiliency_limit_106s#�����s�K�b��A�A�A�A�Ar3c�6�|�||d���dS)NTrr r!s   r1�test_resiliency_randomz Test64Bit.test_resiliency_random:s%��
	
���s�K���=�=�=�=�=r3c�J�|�||tj���dS�N�rY)rrArRr!s   r1�test_resiliency_all_32z Test64Bit.test_resiliency_all_32A�%�����s�K�R�X��F�F�F�F�Fr3c�J�|�||tj���dSr&)rrAr^r!s   r1�test_resiliency_all_64z Test64Bit.test_resiliency_all_64Er)r3c�6�|�||d���dS)NT)r�r r!s   r1�
test_no_64zTest64Bit.test_no_64Is#�����s�K�d��C�C�C�C�Cr3c��ttjd���d���}ttj���d���}|��|��dS)Nr�)rYrnc�j�tddgddgddgg��}tt|jd���tt|jd���tgd	�gd
�g��}tt|jd���t
gd	�gd�g��}tt|jd���dS�Nr�r]r�rRr/ryr�rrw)r�rRryr)rr�rkr�r�rrr�s r1�
check_limitedz3Test64Bit.test_downcast_intp.<locals>.check_limitedTs����Q��F�Q��F�Q��F�3�4�4�A��.�!�(��;�;�;�;��.�!�%�a�8�8�8�8��I�I�I�y�y�y�1�2�2�A��.�!�(��;�;�;�;��I�I�I�y�y�y�1�2�2�A��.�!�(��;�;�;�;�;�;r3r'c�:�tddgddgddgg��}|�d���|�d���tgd	�gd
�g��}|�d���t	gd	�gd�g��}|�d���dSr0)rr�r�rrr�s r1�check_unlimitedz5Test64Bit.test_downcast_intp.<locals>.check_unlimitedbs����Q��F�Q��F�Q��F�3�4�4�A�
�H�H�!�H����
�E�E�q�E�M�M�M��I�I�I�y�y�y�1�2�2�A�
�H�H�!�H�����I�I�I�y�y�y�1�2�2�A�
�H�H�!�H�����r3)r�rAr^)r�r1r3s   r1�test_downcast_intpzTest64Bit.test_downcast_intpMs���
!�R�X�12�
4�
4�
4�
	<�
	<�
4�
4�
	<�
!�R�X�	6�	6�	6�
	�
	�
7�	6�
	�	�
����������r3N)r�r�r�r rrrrrr	rrrrr�rb�parametrizerr"r$r(r+r-r4rNr3r1rr�s��������z�:�z�:�N�K�-�-�-�	H�	H�	H�������& � � �"�[���.���
�
�>�>�B�B�?�>�B��[���.���
�
�>�>�>�>�?�>�>��[���.���
�
�>�>�G�G�?�>�G��[���.���
�
�>�>�G�G�?�>�G��[���.���
�
�>�>�D�D�?�>�D�#�#�#�#�#r3rr5)NFNNF)T)	TTTTTTTTT)or`�
contextlibr�r�r<r��sys�
scipy._libr�numpyrArrrrrr	r
rrr
rrrrr��
numpy.testingrrrrrrrr�rr��scipy.linalgrrr�rsrrrrrrr r!r"r#�scipy.sparse._sputilsr$r%r&r'r(�scipy.sparse.linalgr)r*r+�scipy._lib.decoratorr,r�r�r2r:�	frozensetr\rKr�r�r�r�r�r�r�rer{r�r�r�r��contextmanagerr$r&r;rCrarwr�r�r�r�r�r�r�r9rZrr�r�r�r�r�r�r�r�r�rrrNr3r1�<module>rAs�
������������������������
�
�
�
�����������)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)��
�
�
�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�+�*�*�*�*�*�����������2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�F�F�F�F�F�F�F�F�F�F�F�F�F�F�/�/�/�/�/�/�/�/�/�/�*�*�*�*�*�*�
�
�
�
�
�c�k�)��o�o�o�o�'�'�'�
%�9�e�W�-�-�����( ��!�!�����>�"�"�"�JN�?D�N�N�N�N�b���$�$�$�$�$�$�$�$�6"$�"$�"$�"$�"$�"$�"$�"$�X7�7�7�7�7�7�7�7�D:_;�_;�_;�_;�_;�_;�_;�_;�Dg+�g+�g+�g+�g+�g+�g+�g+�T#�#�#�#�#�#�#�#�.\8�\8�\8�\8�\8�\8�\8�\8�~TK�TK�TK�TK�TK�TK�TK�TK�nq0�q0�q0�q0�q0�q0�q0�q0�h��B�B���B�n$�n$�n$�n$�n$�n$�n$�n$�b L� L� L� L� L� L� L� L�F`K�`K�`K�`K�`K�`K�`K�`K�F^0�^0�^0�^0�^0�^0�^0�^0�Bu=�u=�u=�u=�u=�u=�u=�u=�p8�8�8�8�8�8�8�8�8����8AE�8<�JN�,0�%'�%'�%'�%'�Xw&�w&�w&�w&�w&���!�!�w&�w&�w&�t������N�N�N�N�N���!�!�N�N�N�b������_B�_B�_B�_B�_B���u�u�=�=�=�_B�_B�_B�D������f�f�f�f�f���u�-�-�-�f�f�f�R������M�M�M�M�M���u�(-�e�/4�5�J�J�J�M�M�M�D������(:�(:�(:�(:�(:���u�e�E�/4�5�',�u�>�>�>�(:�(:�(:�V������f�f�f�f�f���u�(-�e�/4�5�).�0�0�0�f�f�f�R������.�.�.�B1
�1
�1
�1
�1
�1
�1
�1
�h
�
�
�
�
�#5�
�
�
� /
�/
�/
�/
�/
�7�/
�/
�/
�d	�	�	�	�	�.��	�	�	�	�	�	�	�	�.��	�	�	�
�
�
�
�
�6��
�
�
�-�-�-�-�-�,�g�-�-�-�(&B�&B�&B�R|�|�|�|�|�|�|�|�|�|r3

Youez - 2016 - github.com/yon3zu
LinuXploit