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/linalg/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

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

d�c�����dZdZddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZm
Z
ddlZddlmZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ddl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:ddl;m<Z<dd	l=m>Z>dd
l?m@Z@ddlmAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWddlXmYZYmZZZdd
l[m\Z\ddl]m^Z^ddl_m`Z`ddlambZbdecfd�ZdejIejegZfejJejggZhefehzZidVd�Zjd�Zkd�Zld�ZmGd�d��ZnGd�d��ZoGd�d��ZpGd�d��ZqGd �d!��ZrGd"�d#��ZsGd$�d%es��ZtGd&�d'��ZuGd(�d)��ZvGd*�d+ev��ZwGd,�d-��ZxGd.�d/��ZyGd0�d1��ZzGd2�d3��Z{Gd4�d5��Z|Gd6�d7��Z}Gd8�d9��Z~d:�ZGd;�d<��Z�Gd=�d>��Z�Gd?�d@��Z�dA�Z�ej���ej���dBkdC�D��dE���Z�dF�Z�dG�Z�ej���ddH�I��dJ���Z�GdK�dL��Z�dWdM�Z�ej�j�ej���ejUej���j�dNkdO�D��dP�����Z�dQ�Z�dR�Z�dS�Z�GdT�dU��Z�dS)Xz* Test functions for linalg.decomp module

z~
Build linalg:
  python setup_linalg.py build
Run tests if scipy is installed:
  python -c 'import scipy;scipy.linalg.test()'
�N)�assert_equal�assert_almost_equal�assert_array_almost_equal�assert_array_equal�assert_�assert_allclose)�raises)�eig�eigvals�lu�svd�svdvals�cholesky�qr�schur�rsf2csf�lu_solve�	lu_factor�solve�diagsvd�
hessenberg�rq�
eig_banded�eigvals_banded�eigh�eigvalsh�qr_multiply�qz�orth�ordqz�subspace_angles�hadamard�eigvalsh_tridiagonal�eigh_tridiagonal�
null_space�cdf2rdf�LinAlgError)
�dgbtrf�dgbtrs�zgbtrf�zgbtrs�dsbev�dsbevd�dsbevx�zhbevd�zhbevx�get_lapack_funcs)�norm)�_select_function)�ortho_group)�array�diag�ones�full�linalg�argsort�zeros�arange�float32�	complex64�ravel�sqrt�	iscomplex�shape�sort�sign�asarray�isfinite�ndarray�eye�dtype�triu�tril)�seed�random)�assert_no_overwrite)�matrix)�check_free_memory)�	HAS_ILP64Fc��|tvrdtj�||��tj�||��dzz}||���jzdz}n-tj�||��}||jzdz}|r*|t
d|z��tj|��zz
}|�|��S)z7Generate random sym/hermitian array of the given size n��?�)	�COMPLEX_DTYPES�nprM�rand�conj�Tr@rH�astype)�n�posdefrI�As    �@/usr/lib/python3/dist-packages/scipy/linalg/tests/test_decomp.py�_random_hermitian_matrixr_3s��������I�N�N�1�a� � �2�9�>�>�!�Q�#7�#7��#<�<��
�������^�Q�����I�N�N�1�a� � ��
���W�a�K��
�!�	�T�!�A�#�Y�Y�r�v�a�y�y�
 � ���8�8�E�?�?���c��tj|��}tj|��r,t|j��dt|j��zzStj|j��j}tj	|��\}}d||z
z}||z}tj
||���||z}tj||��S)zCClears trailing `fuss_binary_bits` of mantissa of a floating numberrS�@)�out)rV�
asanyarray�iscomplexobj�
clear_fuss�real�imag�finforI�nmant�frexp�rint�ldexp)�ar�fuss_binary_bits�x�significant_binary_bits�x_mant�x_exp�fs       r^rgrgGs���
�
�b���A�	��q���<��!�&�!�!�B��A�F�);�);�$;�;�;� �h�q�w�/�/�5���H�Q�K�K�M�F�E��%�(8�8�9�A�
�a�K�F��G�F������
�a�K�F�
�8�F�E�"�"�"r`c��t|t��r|j}nt|��}t|t��r|j}nt|��}t||kd�||����dS)Nz%dtype mismatch: "{}" (should be "{}"))�
isinstancerGrIr�format)�act�dess  r^�assert_dtype_equalr{Xs����#�w�����i����C�j�j���#�w�����i����C�j�j���C�3�J�3�:�:�3��D�D�F�F�F�F�Fr`c��t|t��r|}t|��dzdz
}nLt|t��r(t	|j��dkr|jd}|}nt
d���tj|��}|j	�
��t|��z|z}d|j	|zz}|S)aReturn a random symmetric (Hermitian) matrix.

    If 'dim_or_eigv' is an integer N, return a NxN matrix, with eigenvalues
        uniformly distributed on (-1,1).

    If 'dim_or_eigv' is  1-D real array 'a', return a matrix whose
                      eigenvalues are 'a'.
    rT�rzinput type not supported.��?)rw�intrMrG�lenrB�	TypeErrorr4�rvsrYrXr6)�dim_or_eigv�dim�d�v�hs     r^�symrandr�is����+�s�#�#�5����3�K�K��M�A����
�[�'�
*�
*�5�

�k��
 �
 �A�
%�
%����"������3�4�4�4������A�	����
�
�T�!�W�W��q� �A��Q�S��U��A��Hr`c��t|��t|��}}|dt|��t|��z
zz}|�|��S)NrS)r�rJrKrZ)r�rI�a1�a2�as     r^�_complex_symrandr��sG��
�S�\�\�7�3�<�<��B�
�R��b���$�r�(�(�"�
#�#�A��8�8�E�?�?�r`c�&�eZdZd�Zd�Zd�Zd�ZdS)�TestEigValsc��gd�gd�gd�g}t|��}dtd��zdzddtd��z
dzg}t||��dS)N�r}rT��rT���	�]rTr�rr@r��selfr��w�exact_ws    r^�test_simplezTestEigVals.test_simple�sc��
�Y�Y�	�	�	�9�9�9�-���A�J�J���d�2�h�h�J��>�1�q��b���z�1�n�5��!�!�W�-�-�-�-�-r`c��tgd�gd�gd�gd��j}|���}|j}t|��}dt	d��zdzddt	d��z
dzg}t||��dS)Nr�r�r�r�r�rTr)r5rY�copyrr@rr�s    r^�test_simple_trzTestEigVals.test_simple_tr�s����9�9�9�i�i�i����3�S�9�9�;��
�F�F�H�H��
�C���A�J�J���d�2�h�h�J��>�1�q��b���z�1�n�5��!�!�W�-�-�-�-�-r`c��gd�gd�gd�g}t|��}dtd��zdzddtd��z
dzg}t||��dS)Nr��rTr�y@�?y"@�?yW@@rTrr�r�s    r^�test_simple_complexzTestEigVals.test_simple_complex�sm��
�Y�Y�	�	�	�<�<�<�0���A�J�J����e���$�a�'����e���$�a�'�)��	"�!�W�-�-�-�-�-r`c��gd�gd�gd�g}t|d���}dtd��zdzddtd��z
dzg}t||��dS)	Nr�r�F��check_finiter�r�rTrr�r�s    r^�test_finitezTestEigVals.test_finite�sj��
�Y�Y�	�	�	�9�9�9�-���A�E�*�*�*���d�2�h�h�J��>�1�q��b���z�1�n�5��!�!�W�-�-�-�-�-r`N)�__name__�
__module__�__qualname__r�r�r�r��r`r^r�r��sP������.�.�.�.�.�.�.�.�.�.�.�.�.�.r`r�c��eZdZd�Zd�Zd�Zd�Zd�Zej	�
d���d���Zd	�Zd
�Z
d�Zd�Zd
�Zd�ZdS)�TestEigc�Z�tgd�gd�gd�g��}t|��\}}dtd��zdzddtd��z
dzg}tdddtd��dzzdzg��}tgd	���}tdddtd��dzz
dzg��}|t|��z}|t|��z}|t|��z}t	||��t	||dd�dft|d
��z��t	||dd�dft|d��z��t	||dd�dft|d��z��t
d��D]2}t	||dd�|fz|||dd�|fz���3t|dd�
��\}}t
d��D]7}t	|j|dd�|fz|||dd�|fz���8dS)Nr�r�r�r�rTrr}r���@r����rr�rr}�rrT��left�right)r5r
r@r2rrD�rangerY�	r�r�r�r�r��v0�v1�v2�is	         r^r�zTestEig.test_simple�s8���9�9�9�i�i�i����3�4�4���1�v�v���1��d�2�h�h�J��>�1�q��b���z�1�n�5��
�A�q�1�T�"�X�X�a�Z�<��*�+�
,�
,��
�;�;�;�
�
��
�A�q�1�T�"�X�X�a�Z�<��*�+�
,�
,��
�$�r�(�(�]��
�$�r�(�(�]��
�$�r�(�(�]��!�!�W�-�-�-�!�"�a����1��g�d�1�T�7�m�m�&;�<�<�<�!�"�a����1��g�d�1�T�7�m�m�&;�<�<�<�!�"�a����1��g�d�1�T�7�m�m�&;�<�<�<��q���	A�	A�A�%�a�!�A�A�A�q�D�'�k�1�Q�4��!�!�!�Q�$��<�@�@�@�@��1�1�A�&�&�&���1��q���	C�	C�A�%�a�c�A�a�a�a��d�G�m�Q�q�T�!�A�A�A�q�D�'�\�B�B�B�B�	C�	Cr`c���tddgddgg��}t|dd���\}}}t|tddg����td��D]2}t||dd�|fz|||dd�|fz���3td��D][}t|���j|dd�|fz||���|dd�|fz���\dS)Nr}rT���r���?@y�?�)r5r
rr�rXrY�r�r�r��vl�vrr�s      r^�test_simple_complex_eigzTestEig.test_simple_complex_eig�s���A�q�6�B��7�#�$�$������+�+�+�	��2�r�!�!�U�D�$�<�%8�%8�9�9�9��q���	C�	C�A�%�a�"�Q�Q�Q��T�(�l�A�a�D��A�A�A�q�D��M�B�B�B�B��q���	<�	<�A�%�a�f�f�h�h�j�2�a�a�a��d�8�&;�&'��d�i�i�k�k�"�Q�Q�Q��T�(�&:�
<�
<�
<�
<�	<�	<r`c��tgd�gd�gd�g��}t|dd���\}}}td��D]2}t||dd�|fz|||dd�|fz���3td��D][}t|���j|dd�|fz||���|dd�|fz���\dS)Nr�r�r}r�r�)r5r
r�rrXrYr�s      r^r�zTestEig.test_simple_complex�s����9�9�9�i�i�i����6�7�7������+�+�+�	��2�r��q���	C�	C�A�%�a�"�Q�Q�Q��T�(�l�A�a�D��A�A�A�q�D��M�B�B�B�B��q���	<�	<�A�%�a�f�f�h�h�j�2�a�a�a��d�8�&;�&'��d�i�i�k�k�"�Q�Q�Q��T�(�&:�
<�
<�
<�
<�	<�	<r`c�8�dgg}dgg}t||d���\}}t|dd��t|ddk��t|d��t||��\}}t|tj��t|d��dS)Nr}rT��homogeneous_eigvals)r}rr�)r
rrrrV�inf)r�r��br�r�s     r^�test_gh_3054zTestEig.test_gh_3054�s����S�E���S�E���A�q�d�3�3�3���2���$���#�#�#���$��1�������A�����A�q�	�	���2��Q��������A�����r`c	���|�!t|��t|��}}|}n$t|��}|}tj|j�}d|�d|��}t	||d���\}}t||d���}||z|ddd�fz}||z|ddd�fz}	t
|jd��D]*}
t|dd�|
f|	dd�|
fdd|����+|�4t|ddd�fd��t|ddd�fd��tj|��}tj|��}t|dd�|f|dd�|fdd|�	��tj	t|����}
t
t|����D]}
t|dd�|
f��|
|
<�t|
tj|
j
��|dd�
��|ddd�fdk}|d|f|d|fz}t	||��\}}t||��}||z}||z|z}	||	z
}t
|jd��D]K}
tjt|dd�|
f����rt|dd�|
fddd|����L|t|��}|t|��}t!t#|����}t!t#|����}t||||dd|�	��tj	t|����}
t
t|����D]}
t|dd�|
f��|
|
<�t|
tj|
j
��|���tt%|��t%|tj|������dS)N�
Tr�r}rg�vIh�%<=��rtol�atol�err_msggH�����z>)r�r�r�)r�r�r��r�)rErVrHrBr
rr�r�lexsort�emptyr�r2r7�size�allrFr:rgrC)r�r]�B�B0�msgr�r��wt�val1�val2r��perm�permt�length�beta_nonzero�wh�res�w_fin�wt_fins                   r^�_check_gen_eigzTestEig._check_gen_eig�s*���=��1�:�:�w�q�z�z�q�A��B�B���
�
�A��B����� �A���A�A�q�q�!���A�r�t�4�4�4���2�
�Q���
5�
5�
5���2�v��!�Q�Q�Q�$�����2�v��!�Q�Q�Q�$�����t�z�!�}�%�%�	A�	A�A��D����A��J��Q�Q�Q��T�
�!&�U�C�
A�
A�
A�
A�
A��:��A�a����d�G�Q�'�'�'��B�q�!�!�!�t�H�a�(�(�(��z�!�}�}���
�2������!�!�!�T�'�
�B�q�q�q�%�x�L�t�$� #�	%�	%�	%�	%���#�b�'�'�"�"���s�2�w�w���	'�	'�A��R����1��X���F�1�I�I������� 4� 4�c�!��	.�	.�	.�	.��!�Q�Q�Q�$��1���
�q�,��
�!�A�|�O�"4�
4���A�r�
�
���2�
�Q��^�^���2�v���2�v��z���T�k���s�y��|�$�$�	E�	E�A��v�h�s�1�1�1�a�4�y�)�)�*�*�
E���A�A�A�q�D�	�1�%*���E�E�E�E���(�1�+�+����H�R�L�L�!���z�%�(�(�)�)���
�6�*�*�+�+����$���E��!��c�	;�	;�	;�	;���#�b�'�'�"�"���s�2�w�w���	'�	'�A��R����1��X���F�1�I�I������� 4� 4�c�B�B�B�B�	��R���$�q���Q���'8�"9�"9�:�:�:�:�:r`zSee gh-2254��reasonc��tgd�gd�gd�gd�gd�g��}tgd�gd�gd�gd	�gd
�g��}tjd���5|�||��ddd��dS#1swxYwYdS)
N)��"�r��)�-r��*��)�'�/�1�r�)�r�r���)�&�,r���)�
r��r�r�)r��.�(r��%)r�r�r�r�r�)�r�r���)r��#�r�r��ignore�r�)r5rV�errstater��r�r]r�s   r^�
test_singularzTestEig.test_singular s��
�'�'�'�'�'�'�'�'�'�'�'�'�'�'�'�	)�
*�
*��

�'�'�'�'�'�'�'�'�'�'�'�'�'�'�'�	)�
*�
*���[�X�
&�
&�
&�	&�	&�����1�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&s�A6�6A:�=A:c���ttgd�����}tgd�gd�gd�f��}tgd�gd�gd�f��}td��}td	��}t	j||g||gg��}t	j||g||gg��}t	jd
���5|�||��ddd��dS#1swxYwYdS)N)r}rr�)rTr�r�)r�rTr�)r�r�rT)r}r�r)r�r}r�rrr�r�r�r�rr)r6r5r;rHrV�blockrr�)r��M�K�D�Z�I3r]r�s        r^�test_falkerzTestEig.test_falker2s8����	�	�	�#�#�$�$���;�;�;����[�[�[�9�:�:���:�:�:�z�z�z�9�9�9�5�6�6���&�M�M��
��V�V���H�r�1�g��A�2�w�'�(�(���H�q�"�g��1�v�&�'�'��
�[�X�
&�
&�
&�	&�	&�����1�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&s�7C�C�"Cc���d�}tjd���5td��D]-}||dzdz���\}}|�||���.	ddd��dS#1swxYwYdS)Nc�n�d|dzz}d|z}gd�gd�dd|dgddd|gg}gd�gd�ddd|gdd|dgg}||fS)	N���rT)r}rrr)rr}rrr)rrr}r)rrrr}r}r�)�omega�c1�c2r]r�s     r^�matricesz)TestEig.test_bad_geneig.<locals>.matricesBs}���e�Q�h��B��5��B��������Q��A���Q��2�� �A��������Q��B�3���Q��A�� �A��a�4�Kr`rr�d�@)r)rVrr�r�)r�r�kr]r�s     r^�test_bad_geneigzTestEig.test_bad_geneig?s���	�	�	��[�X�
&�
&�
&�	*�	*��3�Z�Z�
*�
*���x�a��d�3�h�/�/�/���1��#�#�A�q�)�)�)�)�
*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*s�>A%�%A)�,A)c��td��td��}|�|d��td��}|�||��td��dtd��zz}|�|d��td��dtd��zz}|�||��dS)N��r�r
rS)rLr�r�rMr	s   r^�test_make_eigvalszTestEig.test_make_eigvalsVs����T�
�
�
��A�J�J�����A�t�$�$�$��A�J�J�����A�q�!�!�!��6�N�N�R��v���.�.�����A�t�$�$�$��6�N�N�R��v���.�.�����A�q�!�!�!�!�!r`c��gd�gd�gd�g}t|d���\}}dtd��zdzddtd��z
dzg}td	d	d	td��d
zzdzg��}tgd���}td	d	d	td��d
zz
dzg��}|t|��z}|t|��z}|t|��z}t	||��t	||dd�dft|d��z��t	||dd�d	ft|d
��z��t	||dd�dft|d��z��t
d
��D]2}t	||dd�|fz|||dd�|fz���3dS)Nr�r�Fr�r�r�rTrr}r�r�r�r�r�)r
r@r5r2rrDr�r�s	         r^�test_check_finitezTestEig.test_check_finiteds���
�Y�Y�	�	�	�9�9�9�-���1�5�)�)�)���1��d�2�h�h�J��>�1�q��b���z�1�n�5��
�A�q�1�T�"�X�X�a�Z�<��*�+�
,�
,��
�;�;�;�
�
��
�A�q�1�T�"�X�X�a�Z�<��*�+�
,�
,��
�$�r�(�(�]��
�$�r�(�(�]��
�$�r�(�(�]��!�!�W�-�-�-�!�"�a����1��g�d�1�T�7�m�m�&;�<�<�<�!�"�a����1��g�d�1�T�7�m�m�&;�<�<�<�!�"�a����1��g�d�1�T�7�m�m�&;�<�<�<��q���	A�	A�A�%�a�!�A�A�A�q�D�'�k�1�Q�4��!�!�!�Q�$��<�@�@�@�@�	A�	Ar`c��tjd���dd��}ttt
|��dS)z:Check that passing a non-square array raises a ValueError.r�r�rTN)rVr<�reshape�
assert_raises�
ValueErrorr
�r�r]s  r^�test_not_square_errorzTestEig.test_not_square_errorus7���I�a�L�L� � ��A�&�&���j�#�q�)�)�)�)�)r`c���td��}tjd���dd��}t	t
t||��t	t
t||��dS)zOCheck that passing arrays of with different shapes
        raises a ValueError.rT�"@r�N)rHrVr<r&r'r(r
r	s   r^�test_shape_mismatchzTestEig.test_shape_mismatchzsZ��
��F�F���I�c�N�N�"�"�1�a�(�(���j�#�q�!�,�,�,��j�#�q�!�,�,�,�,�,r`N)r�r�r�r�r�r�r�r��pytest�mark�xfailr
rrr"r$r*r-r�r`r^r�r��s�������C�C�C�(<�<�<�<�<�<�
�
�
�@;�@;�@;�D�[���m��,�,�&�&�-�,�&�"&�&�&�*�*�*�."�"�"�A�A�A�"*�*�*�
-�-�-�-�-r`r�c�\�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�ZdS)�
TestEigBandedc�.�|���dS�N)�create_bandmat�r�s r^�setup_methodzTestEigBanded.setup_method�s���������r`c��d}d|_d|_tt|d����tt|dz
d��d��ztt|dz
d��d��ztt|dz
d��d��ztt|dz
d��d��z|_tt|d����d	tt|dz
d��d��zzd	tt|dz
d��d��zz
tt|dz
d��d��ztt|dz
d��d��z|_tt|d����tt|dz
d��d��ztt|dz
d
��d��ztt|dz
d��d��ztt|dz
d��d��z|_d	tt|d����ztt|dz
d��d��zd	tt|dz
d
��d��zztt|dz
d��d��ztt|dz
d��d��z|_tj	|j��\}}|j
}t|��}|||_|dd�|f|_
tj	|j��\}}|j
}t|��}|||_|dd�|f|_|jdz}t!||ft"�
��|_t!||ft&�
��|_t+|��D]P}t|j|��|j||z
dz
||�f<t|j|��|j||z
dz
||�f<�Qd|jz|jzdz}t!||ft"�
��|_t|j��|jd|jzdd�f<t+|j��D]p}t|j|dz��|jd|jzdz
|z
|dz|�f<t|j|dz
��|jd|jzdz|zd|dz
|z
�f<�qt!||ft&�
��|_t|j��|jd|jzdd�f<t+|j��D]p}t|j|dz��|jd|jzdz
|z
|dz|�f<t|j|dz
��|jd|jzdz|zd|dz
|z
�f<�qdt1|��z|_|jdz|_dS)zbCreate the full matrix `self.fullmat` and
           the corresponding band matrix `self.bandmat`.�
rT��?r}��r�g�r�rS��rcN�rIr��?�?)�KL�KUr6r8�sym_mat�herm_mat�real_mat�comp_matr9r
rhr:�	w_sym_lin�evec_sym_lin�
w_herm_lin�
evec_herm_linr;�float�bandmat_sym�complex�bandmat_hermr��bandmat_real�bandmat_compr<r��bc)r��N�ew�ev�args�LDABr�s       r^r5zTestEigBanded.create_bandmat�s���
���������T�!�S�\�\�*�*��t�A�a�C�����3�3�4�6:�4��!��T�?�?�A�6N�6N�O��t�A�a�C�����3�3�4�6:�4��!��T�?�?�A�6N�6N�O���
�d�1�d�m�m�,�,��d�4��!��S�>�>�2�6�6�6�7��d�4��!��S�>�>�1�5�5�5�6� ��Q�q�S�$����4�4�5� ��Q�q�S�$����3�3�	4��
��d�1�c�l�l�+�+���Q�q�S�$����4�4�5�7;�D��1��d�O�O�Q�7O�7O�P���Q�q�S�#����3�3�4�6:�4��!��T�?�?�A�6N�6N�O��
�
�D��a����.�.�.���Q�q�S�$����4�4�5��d�4��!��T�?�?�A�6�6�6�7� ��Q�q�S�#����3�3�4� ��Q�q�S�$����3�3�	4��
���D�L�)�)���B�
�W���r�{�{���D�����q�q�q�$�w�K�����D�M�*�*���B�
�W���r�{�{���T�(�������4��[���
�w��{�� �$���%�8�8�8���!�4��)�7�;�;�;����t���	F�	F�A�.2�4�<��.C�.C�D��T�!�V�A�X�q��s�]�+�/3�D�M�1�/E�/E�D��d�1�f�Q�h��!��m�,�,����y�4�7�"�Q�&��!�4��)�5�9�9�9���*.�t�}�*=�*=���!�D�G�)�Q�Q�Q�,�'��t�w���	C�	C�A�6:�4�=�!�A�#�6N�6N�D��a���i��k�!�m�Q�q�S��U�2�3�8<�T�]�>?�R��T�9C�9C�D��a���i��k�!�m�Q�q��s�1�u�W�4�5�5�"�4��)�7�;�;�;���*.�t�}�*=�*=���!�D�G�)�Q�Q�Q�,�'��t�w���	C�	C�A�6:�4�=�!�A�#�6N�6N�D��a���i��k�!�m�Q�q�S��U�2�3�8<�T�]�>?�R��T�9C�9C�D��a���i��k�!�m�Q�q��s�1�u�W�4�5�5��V�A�Y�Y�����&�F�#����r`c��t|jd���\}}}|dd�t|��f}tt	|��|j��tt
|��t
|j����dS)zTCompare dsbev eigenvalues and eigenvectors with
           the result of linalg.eig.r}��	compute_vN)r,rJr:rrCrE�absrF�r�r��evec�info�evec_s     r^�
test_dsbevzTestEigBanded.test_dsbev�sv���d�.�!�<�<�<�
��4���Q�Q�Q���
�
�]�#��!�$�q�'�'�4�>�:�:�:�!�#�e�*�*�c�$�2C�.D�.D�E�E�E�E�Er`c��t|jd���\}}}|dd�t|��f}tt	|��|j��tt
|��t
|j����dS)zUCompare dsbevd eigenvalues and eigenvectors with
           the result of linalg.eig.r}rVN)r-rJr:rrCrErXrFrYs     r^�test_dsbevdzTestEigBanded.test_dsbevd�sv���t�/�1�=�=�=�
��4���Q�Q�Q���
�
�]�#��!�$�q�'�'�4�>�:�:�:�!�#�e�*�*�c�$�2C�.D�.D�E�E�E�E�Er`c	�J�t|j��\}}t|jddd|dd���\}}}}}|dd�t	|��f}tt
|��|j��tt|��t|j	����dS)zUCompare dsbevx eigenvalues and eigenvectors
           with the result of linalg.eig.�r}rT�rWr�N)
rBrAr.rJr:rrCrErXrF�r�rPr�rZ�num�ifailr[r\s        r^�test_dsbevxzTestEigBanded.test_dsbevx�s����T�\�"�"���1�$*�4�+;�S�#�q�!�56�a�%A�%A�%A�!��4��e�T��Q�Q�Q���
�
�]�#��!�$�q�'�'�4�>�:�:�:�!�#�e�*�*�c�$�2C�.D�.D�E�E�E�E�Er`c��t|jd���\}}}|dd�t|��f}tt	|��|j��tt
|��t
|j����dS)zUCompare zhbevd eigenvalues and eigenvectors
           with the result of linalg.eig.r}rVN)r/rLr:rrCrGrXrHrYs     r^�test_zhbevdzTestEigBanded.test_zhbevd�sv���t�0�A�>�>�>�
��4���Q�Q�Q���
�
�]�#��!�$�q�'�'�4�?�;�;�;�!�#�e�*�*�c�$�2D�.E�.E�F�F�F�F�Fr`c	�J�t|j��\}}t|jddd|dd���\}}}}}|dd�t	|��f}tt
|��|j��tt|��t|j	����dS)zUCompare zhbevx eigenvalues and eigenvectors
           with the result of linalg.eig.rar}rTrbN)
rBrBr0rLr:rrCrGrXrHrcs        r^�test_zhbevxzTestEigBanded.test_zhbevx�s����T�]�#�#���1�$*�4�+<�c�3��1�56�a�%A�%A�%A�!��4��e�T��Q�Q�Q���
�
�]�#��!�$�q�'�'�4�?�;�;�;�!�#�e�*�*�c�$�2D�.E�.E�F�F�F�F�Fr`c�T�t|j��}|j}tt	|��|j��t|j��}|j}tt	|��|j��d}tj	d��}t|jd||f���}tt	|��|j||dz���t|jd||f���}tt	|��|j||dz���|j|dz
}|j|dz}t|jd||f���}	tt	|	��|j||dz���|j|dz
}|j|dz}t|jd||f���}
tt	|
��|j||dz���t|jd�	��}|j}tt	|��|j��d
S)z?Compare eigenvalues of eigvals_banded with those of linalg.eig.rTr�r���select�select_ranger}��h㈵��>r�Fr�N)
rrJrhrrCrErLrGrV�longlong)r��w_sym�w_herm�ind1�ind2�	w_sym_ind�
w_herm_ind�v_lower�v_upper�	w_sym_val�
w_herm_vals           r^�test_eigvals_bandedz!TestEigBanded.test_eigvals_bandedsK���t�/�0�0���
��!�$�u�+�+�t�~�>�>�>��� 1�2�2�����!�$�v�,�,���@�@�@����{�1�~�~��"�4�#3�*-�T�4�L�J�J�J�	�!�$�y�/�/�"&�.��d�1�f��"=�	?�	?�	?�#�D�$5�+.�d�D�\�K�K�K�
�!�$�z�"2�"2�"&�/�$�t�A�v�+�">�	@�	@�	@��.��&��/���.��&��/��"�4�#3�*-�W�g�<N�P�P�P�	�!�$�y�/�/�"&�.��d�1�f��"=�	?�	?�	?��/�$�'�&�0���/�$�'�&�0��#�D�$5�+.�29�7�1C�E�E�E�
�	"�$�z�"2�"2�"&�/�$�t�A�v�+�">�	@�	@�	@��t�/�e�D�D�D���
��!�$�u�+�+�t�~�>�>�>�>�>r`c
���t|j��\}}|dd�t|j��f}t	t|��|j��t	t|��t|j����t|j	��\}}|dd�t|j��f}t	t|��|j
��t	t|��t|j����d}d}t|jd||f���\}	}
t	t|	��|j||dz���t	t|
��t|jdd�||dz�f����t|j	d||f���\}}t	t|��|j
||dz���t	t|��t|jdd�||dz�f����|j|dz
}
|j|dz}t|jd|
|f���\}}t	t|��|j||dz���t	t|��t|jdd�||dz�f����|j
|dz
}
|j
|dz}t|j	d|
|f���\}}t	t|��|j
||dz���t	t|��t|jdd�||dz�f����t|jd	�
��\}}|dd�t|j��f}t	t|��|j��t	t|��t|j����dS)zXCompare eigenvalues and eigenvectors of eig_banded
           with those of linalg.eig. NrTr�r�rlr}ror�Fr�)rrJr:rhrrCrErXrFrLrGrH)r�rq�evec_sym�	evec_sym_rr�	evec_herm�
evec_herm_rsrtru�evec_sym_indrv�
evec_herm_indrwrxry�evec_sym_valrz�
evec_herm_vals                   r^�test_eig_bandedzTestEigBanded.test_eig_banded0s��%�T�%5�6�6���x��Q�Q�Q���
� 3� 3�3�4�	�!�$�u�+�+�t�~�>�>�>�!�#�i�.�.�#�d�6G�2H�2H�I�I�I�&�t�'8�9�9���	��q�q�q�'�&�+�"6�"6�6�7�
�!�$�v�,�,���@�@�@�!�#�j�/�/�3�t�7I�3J�3J�K�K�K�����",�T�-=�47�;?��,�#H�#H�#H��	�<�	"�$�y�/�/�"&�.��d�1�f��"=�	?�	?�	?�!�#�l�"3�"3�"%�d�&7����4��Q��;��&G�"H�"H�	J�	J�	J�%/�t�/@�69�=A�4�L�%J�%J�%J�!�
�M�	"�$�z�"2�"2�"&�/�$�t�A�v�+�">�	@�	@�	@�!�#�m�"4�"4�"%�d�&8����D��a��K��&H�"I�"I�	K�	K�	K��.��&��/���.��&��/��",�T�-=�47�;B�G�:L�#N�#N�#N��	�<�	"�$�y�/�/�"&�.��d�1�f��"=�	?�	?�	?�!�#�l�"3�"3�"%�d�&7����4��Q��;��&G�"H�"H�	J�	J�	J��/�$�'�&�0���/�$�'�&�0��$.�t�/@�69�=D�g�<N�%P�%P�%P�!�
�M�	"�$�z�"2�"2�"&�/�$�t�A�v�+�">�	@�	@�	@�!�#�m�"4�"4�"%�d�&8����D��a��K��&H�"I�"I�	K�	K�	K�%�T�%5�E�J�J�J���x��Q�Q�Q���
� 3� 3�3�4�	�!�$�u�+�+�t�~�>�>�>�!�#�i�.�.�#�d�6G�2H�2H�I�I�I�I�Ir`c��t|j��\}}t|j|j|j��\}}}t
|d|jzdd�f��}t|j|jz��D]3}|t
|d|jzdz
|z
|dz|�f|dz��z
}�4t|jd���\}}	}
t||
��dS)zZCompare dgbtrf  LU factorisation with the LU factorisation result
           of linalg.lu.rTNr}r��	permute_l)
rBrCr(rMr?r@r6r�rr�r�rrP�lu_symm_band�ipivr[�ur��p_lin�l_lin�u_lins           r^�test_dgbtrfzTestEigBanded.test_dgbtrfj�����T�]�#�#���1�#)�$�*;�T�W�d�g�#N�#N� ��d�D�
��a���i����l�+�,�,���t�w���(�)�)�	?�	?�A�
��l�1�T�W�9�Q�;�q�=�!�A�#�a�%�#7�8�!�A�#�>�>�>�A�A� ���!�<�<�<���u�e�!�!�U�+�+�+�+�+r`c��t|j��\}}t|j|j|j��\}}}t
|d|jzdd�f��}t|j|jz��D]3}|t
|d|jzdz
|z
|dz|�f|dz��z
}�4t|jd���\}}	}
t||
��dS)zZCompare zgbtrf  LU factorisation with the LU factorisation result
           of linalg.lu.rTNr}rr�)
rBrDr*rNr?r@r6r�rrr�s           r^�test_zgbtrfzTestEigBanded.test_zgbtrfxr�r`c��t|j|j|j��\}}}t	||j|j|j|��\}}t
j|j|j��}t||��dS)zhCompare dgbtrs  solutions for linear equation system  A*x = b
           with solutions of linalg.solve.N)
r(rMr?r@r)r�r9rrCr�r�r�r�r[�y�y_lins      r^�test_dgbtrszTestEigBanded.test_dgbtrs�sm��$*�$�*;�T�W�d�g�#N�#N� ��d�D���t�w������F�F���4���T�]�D�F�3�3��!�!�U�+�+�+�+�+r`c��t|j|j|j��\}}}t	||j|j|j|��\}}t
j|j|j��}t||��dS)zhCompare zgbtrs  solutions for linear equation system  A*x = b
           with solutions of linalg.solve.N)
r*rNr?r@r+rOr9rrDrr�s      r^�test_zgbtrszTestEigBanded.test_zgbtrs�sm��$*�$�*;�T�W�d�g�#N�#N� ��d�D���t�w�����$�G�G���4���T�]�D�G�4�4��!�!�U�+�+�+�+�+r`N)r�r�r�r7r5r]r_rfrhrjr{r�r�r�r�r�r�r`r^r2r2�s����������M$�M$�M$�bF�F�F�F�F�F�	F�	F�	F�G�G�G�	G�	G�	G�(?�(?�(?�T8J�8J�8J�t,�,�,�,�,�,�,�,�,�,�,�,�,�,r`r2c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�TestEigTridiagonalc�.�|���dSr4)�
create_trimatr6s r^r7zTestEigTridiagonal.setup_method�s���������r`c��d}t|d��|_t|dz
d��|_t|j��t|jd��zt|jd��z|_tj|j��\}}|j}t|��}|||_	|dd�|f|_
dS)z>Create the full matrix `self.fullmat`, `self.d`, and `self.e`.r9r:r}r;r�N)r8r��er6�full_matr9r
rhr:r�rZ)r�rPrQrRrSs     r^r�z TestEigTridiagonal.create_trimat�s������a�������a��c�4������d�f����T�V�R�(8�(8�8�4����?�?�J��
���D�M�*�*���B�
�W���r�{�{���D�����q�q�q�$�w�K��	�	�	r`c��ttt|j|jdd���tt
t|j|jdz��tt
t|j|jd���ttt|j|jd���ttt|j|jdd�	��dS)
zTest error conditions.Nr�rSr:��
lapack_driver�foor��rr�rl)r'r(r#r�r�r�r6s r^�test_degeneratez"TestEigTridiagonal.test_degenerate�s���	�j�"6�����s��s��L�L�L��i�!5�t�v�t�v��{�K�K�K��i�!5�t�v�t�v�$&�	(�	(�	(�	(��j�"6�����$)�	+�	+�	+�	+�	�j�"6����� �w�	8�	8�	8�	8�	8�	8r`c
�"�dD]@}t|j|j|���}tt	|��|j���AdD],}t
tt|j|jddd����-dD�]}t|j|jdd	t|j��d
z
f|���}tt	|��|j��d}d
}t|j|jd||f|���}tt	|��|j||d
z���|j|dz
}|j|dz}t|j|jd||f|���}tt	|��|j||d
z�����dS)z>Compare eigenvalues of eigvalsh_tridiagonal with those of eig.)�sterf�stev�stebz�stemr�autor�)r�r�r�r�r��r�rmrn�r�r�r�rr}�rmrnr�rTr�ror�N)	r#r�r�rrCr�r'r(r�)	r��driverr��w_indrsrtrwrx�w_vals	         r^�test_eigvalsh_tridiagonalz,TestEigTridiagonal.test_eigvalsh_tridiagonal�s���B�	7�	7�F�$�T�V�T�V�6�J�J�J�A�%�d�1�g�g�t�v�6�6�6�6�'�	/�	/�F��*�&:�D�F�D�F�(.�s�'-�
/�
/�
/�
/�
/�1�	H�	H�F�(�����s�!�S���[�[��]�9K�$�&�&�&�E�
&�d�5�k�k�4�6�:�:�:��D��D�(�����s�$���$�&�&�&�E�
&�d�5�k�k�4�6�$�t�A�v�+�3F�G�G�G��f�T�l�V�+�G��f�T�l�V�+�G�(�����s�'�7�9K�$�&�&�&�E�
&�d�5�k�k�4�6�$�t�A�v�+�3F�G�G�G�G�+	H�	Hr`c�n�ttt|j|jd���dD]�}t|j|j|���\}}|dd�t|��f}t
t|��|j��t
t|��t|j
������ttt|j|jddd���d	D�]�}d
}t|j��dz
}t|j|jd||f|���\}}t
t|��|j��t
t|��t|j
����d
}d}t|j|jd||f|���\}}t
t|��|j||dz���t
t|��t|j
dd�||dz�f����|j|dz
}|j|dz}t|j|jd||f|���\}}t
t|��|j||dz���t
t|��t|j
dd�||dz�f�������dS)zWCompare eigenvalues and eigenvectors of eigh_tridiagonal
           with those of eig. r�r�)r�r�r�r�Nr�r�r�r�r�rr}r�rTr�ror�)r'r(r$r�r�r:rrCr�rXrZr�)	r�r�r�rZr\rsrtrwrxs	         r^�test_eigh_tridiagonalz(TestEigTridiagonal.test_eigh_tridiagonal�s���	�j�"2�D�F�D�F�$+�	-�	-�	-�	-�8�	B�	B�F�&�t�v�t�v�V�L�L�L�G�A�t�����G�A�J�J��'�E�%�d�1�g�g�t�v�6�6�6�%�c�%�j�j�#�d�i�.�.�A�A�A�A��j�"2�D�F�D�F�$*�3�V�	M�	M�	M�	M�0�	F�	F�F��D��t�v�;�;�q�=�D�&�����s�$���$�&�&�&�G�A�t�
&�d�1�g�g�t�v�6�6�6�%�c�$�i�i��T�Y���@�@�@��D��D�&�����s�$���$�&�&�&�G�A�t�
&�d�1�g�g�t�v�d�4��6�k�/B�C�C�C�%�c�$�i�i�&)�$�)�A�A�A�t�D��F�{�N�*C�&D�&D�
F�
F�
F��f�T�l�V�+�G��f�T�l�V�+�G�&�����s�'�7�9K�$�&�&�&�G�A�t�
&�d�1�g�g�t�v�d�4��6�k�/B�C�C�C�%�c�$�i�i�&)�$�)�A�A�A�t�D��F�{�N�*C�&D�&D�
F�
F�
F�
F�3	F�	Fr`N)r�r�r�r7r�r�r�r�r�r`r^r�r��sh���������
 �
 �
 �
8�
8�
8� H� H� H�D(F�(F�(F�(F�(Fr`r�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Ze	j
�de��e	j
�dd	��d
�����Z
e	j
�dd��e	j
�dd
��d�����Zd�Ze	j
�deeg��d���Zd�ZdS)�TestEighc�$�td��dS�Nr!�rLr6s r^�setup_classzTestEigh.setup_class����T�
�
�
�
�
r`c
���ttttjddg����ttttjddg��tjddg����ttttjddg��tjddg����ttttjddg��tjddg��d���ttttjddg��tjddg��ddgddg���tj���5}|�td��ttttjddg��tjddg��ddgddg���ddd��n#1swxYwYttttjddg��tjddg��d	dg�
��tj���5}|�td��ttttjddg��tjddg��d	dg���ddd��n#1swxYwYttttjddg��tjddg��ddg�
��tj���5}|�td��ttttjddg��tjddg��ddg���ddd��n#1swxYwYttttjddg��tjddg��dd	g�
��tj���5}|�td��ttttjddg��tjddg��dd	g�
��ddd��n#1swxYwYttttjddg��tjddg��dd	g�
��ttttjddg��d���ttttjddg��dd���ttttjddg��tjddg��dd���ttttjddg��tjddg��dddgd���tj���5}|�td��ttttjddg��tjddg��dddgd���ddd��dS#1swxYwYdS)Nr}rTr��)�type)�subset_by_value�subset_by_indexzKeyword argument 'eigvals)r�rr�r��rr��r��wrong�r��gvx�evrF)r��turbo�gvd)r�r�r�z 'eigh' keyword argument 'eigvals)	r'r(rrVr7�testing�suppress_warnings�filter�DeprecationWarning)r��sups  r^�test_wrong_inputszTestEigh.test_wrong_inputss����j�$����A����8�8�8��j�$����A������!�Q����I�I�I��j�$����A������!�Q����I�I�I��j�$����A������!�Q�����	�	�	�	�	�j�$����A������!�Q����'(�!�f�q�!�f�	F�	F�	F�	F�
�Z�
)�
)�
+�
+�	B�s��J�J�)�+F�G�G�G��*�d�B�G�Q��F�O�O�R�W�a��V�_�_�+,�a�&�1�a�&�
B�
B�
B�
B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�
	�j�$����A������!�Q����'(�!�f�	.�	.�	.�	.�
�Z�
)�
)�
+�
+�	*�s��J�J�)�+F�G�G�G��*�d�B�G�Q��F�O�O�R�W�a��V�_�_�#$�a�&�
*�
*�
*�
*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
	�j�$����A������!�Q����')�1�g�	/�	/�	/�	/�
�Z�
)�
)�
+�
+�	+�s��J�J�)�+F�G�G�G��*�d�B�G�Q��F�O�O�R�W�a��V�_�_�#%�q�'�
+�
+�
+�
+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�
	�j�$����A������!�Q����'(�!�f�	.�	.�	.�	.�
�Z�
)�
)�
+�
+�	2�s��J�J�)�+F�G�G�G��*�d�B�G�Q��F�O�O�R�W�a��V�_�_�+,�a�&�
2�
2�
2�
2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�
	�j�$����A������!�Q����'(�!�f�	.�	.�	.�	.�	�j�$����A�����H�H�H�H��j�$����A�����e�L�L�L�L��j�$����A������!�Q����"�%�	1�	1�	1�	1�	�j�$����A������!�Q����"�Q��F�%�	I�	I�	I�	I�
�Z�
)�
)�
+�
+�	M�s��J�J�)�+M�N�N�N��*�d�B�G�Q��F�O�O�R�W�a��V�_�_�!&��A��e�
M�
M�
M�
M�	M�	M�	M�	M�	M�	M�	M�	M�	M�	M�	M�	M����	M�	M�	M�	M�	M�	Ms_�'A'G�G�!G�A$J;�;J?�J?�,A$N�N �#N �
A$Q=�=R�R�"A&Y�Y�Yc	��ttttjddg��tjddg����dS)Nr�)r'r'rrVr7r6s r^�test_nonpositive_bzTestEigh.test_nonpositive_bFs4���k�4���!�Q����"�'�1�a�&�/�/�J�J�J�J�Jr`c���tt��D]�\}}td|���}t|ddg���\}}t	|jdt
|����t|dk|dkz��sJ�tdd|���}t||ddg���\}}t	|jdt
|����t|dk|dkz��sJ���dS)	N�r=r�rTr�r}T)r\rI)�	enumerate�DTYPESr_rrrBr�r�)r��ind�dtr�r�r�r�s       r^�test_value_subsetszTestEigh.test_value_subsetsJs�� ��(�(�
	+�
	+�G�C��(��2�6�6�6�A���B��7�3�3�3�D�A�q������S��V�V�,�,�,���B��1�q�5�)�*�*�*�*�*�(��D��C�C�C�A���1�r�1�g�6�6�6�D�A�q������S��V�V�,�,�,���B��1�q�5�)�*�*�*�*�*�*�
	+�
	+r`c��tddgddgg��}tddgddgg��}t|��\}}t||��\}}dS)Nr}rTrar�r�)r5r)r�r�r�r��zs     r^�test_eigh_integerzTestEigh.test_eigh_integerWsZ���A�q�6�A�q�6�"�#�#���A�q�6�A�q�6�"�#�#���A�w�w���1��A�q�z�z���1�1�1r`c��ddl}|j�d�����}t	j|��}t
tt|��t
tt|��dS)NrrT)	�scipy.sparse�sparse�identity�tocscrV�
atleast_2dr'r(r)r��scipyr�r�s    r^�test_eigh_of_sparsezTestEigh.test_eigh_of_sparse]sh�������L�!�!�!�$�$�*�*�,�,���M�!�����j�$��*�*�*��j�$��*�*�*�*�*r`�dtype_r�)rR�evdr��evxc��td|���}t||���\}}t||z||zz
ddtj|��jzd���dS)Nr�)r[rIr�ra���r�r�)r_rrrVrj�eps)r�r�r�r�r�r�s      r^�test_various_drivers_standardz&TestEigh.test_various_drivers_standardesu��
%�r��8�8�8���A�f�%�%�%���1���A���Q����!�"�(�6�"2�"2�"6�6��	!�	!�	!�	!�	!�	!r`r�r�)�gvr�r�c�t�tjd��}td��}tdd���}t||||���\}}|dkr!t	||z|||zzz
d|d���dS|d	kr!t	||z|z||zz
d|d���dSt	||z|z||zz
d|d���dS)
Ng��@r�T�r\)r�r�r�r�r}rar�rT)rV�spacingr_rr)r�r�r�r�r�r�r�r�s        r^� test_various_drivers_generalizedz)TestEigh.test_various_drivers_generalizedns����z�%� � ��$�R�(�(��$�R��5�5�5���a�1�V�$�7�7�7���1��1�9�9��A��E�A�q�1�u�I�-�r��2�F�F�F�F�F�F�
�Q�Y�Y��A��E�A�I��A��-�r��2�F�F�F�F�F�F��A��E�A�I��A��-�r��2�F�F�F�F�F�Fr`c���td��}t|ddg���}tt|��d��t|ddg���}tt|��d��t	||��tjgd���}t|ddg���}tt|��d��t	|tjdd	g����dS)
Nr�r}rTr�)r}�333333�?��������?��?rTgffffff�?r�r�r�)r_rrr�rrVr6r5)r�r�r��w2r��w3s      r^�test_eigvalsh_new_argszTestEigh.test_eigvalsh_new_args|s���$�Q�'�'���Q��A��/�/�/���S��V�V�Q����
�a�!�Q��
0�
0�
0���S��W�W�a� � � ���2�����G�)�)�)�*�*��
�a�!�S��
2�
2�
2���S��W�W�a� � � ���B�H�c�3�Z�0�0�1�1�1�1�1r`�methodc�T�tjtd���5|tjd��d���ddd��n#1swxYwYtjtd���5|tjd��ddg�	��ddd��dS#1swxYwYdS)
N�Keyword argument 'turbo')�match�rTrTT�r��Keyword argument 'eigvals'rr}r�)r.�warnsr�rVr;)r�r�s  r^�test_deprecation_warningsz"TestEigh.test_deprecation_warnings�s9��
�\�,� :�<�<�<�	1�	1��F�2�8�F�#�#�4�0�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1��\�,� <�>�>�>�	5�	5��F�2�8�F�#�#�a��V�4�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s#� A�A�A�."B�B!�$B!c��td��}tdd���}tj���5}|�t
d��t
||d���\}}ddd��n#1swxYwYt
||d���\}}t||��t||��tj���5}|�t
d��t
|d	d
g���\}}ddd��n#1swxYwYt
|d	d
g���\}}t||��t||��dS)
Nr�Tr�r�r�r�r�rrr}r�r�)r_rVr�r�r�r�rr)r�r�r�r��w_dep�v_depr�r�s        r^�test_deprecation_resultsz!TestEigh.test_deprecation_results�s���$�Q�'�'��$�Q�t�4�4�4���Z�
)�
)�
+�
+�	2�s��J�J�)�+E�F�F�F���1�D�1�1�1�L�E�5�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2��A�q��'�'�'���1���q�!�!�!���q�!�!�!��Z�
)�
)�
+�
+�	3�s��J�J�)�+G�H�H�H���A�q�6�2�2�2�L�E�5�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3��A��1�v�.�.�.���1���q�!�!�!���q�!�!�!�!�!s#�1A<�<B�B�2D�D�DN)r�r�r�r�r�r�r�r�r�r.r/�parametrizer�r�r�r�rrrrr�r`r^r�r�
sb���������6M�6M�6M�pK�K�K�+�+�+����+�+�+��[���X�v�.�.��[���X�'B�C�C�!�!�D�C�/�.�!��[���V�Y�/�/��[���X�';�<�<�
G�
G�=�<�0�/�
G�2�2�2��[���X��h�'7�8�8�5�5�9�8�5�"�"�"�"�"r`r�c�h�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�ZdS)�TestLUc�d�tgd�gd�gd�g��|_tgd�gd�gd�g��|_tgd�gd�gd�g��|_tgd�gd�gd�g��|_tgd	�gd
�gd�g��|_dtgd	�gd
�gd�g��z|_tgd�gd�gd�gd
�g��|_dtgd�gd�gd�gd
�g��z|_td��|_
td��dtd��zz|_dS)Nr�r�)rT�@r��r�r�r�)ra�r�)rS�@�@)y@ry@)y@y @y"@)r}rTr�r�)r�r�rar
)r�r9�rrS)r9rr)r�r�)r5r��car��cb�hrect�chrect�vrect�cvrectrM�med�cmedr6s r^r7zTestLU.setup_method�sy���	�	�	�9�9�9�i�i�i�8�9�9�������I�I�I�z�z�z�:�;�;����	�	�	�9�9�9�i�i�i�8�9�9�������|�|�|�\�\�\�B�C�C����L�L�L�,�,�,����H�I�I��
��E�<�<�<�#/�<�<�#2�?�?�#4�5�5�5����I�I�I�y�y�y�)�)�)�\�\�\�J�K�K��
��E�9�9�9�#,�9�9�#,�9�9�#/�<�<�#1�2�2�2����(�#�#����8�$�$�s�V�H�-=�-=�'=�=��	�	�	r`c��t|��\}}}t||z|z|��t|d���\}}t||z|��dS)Nr}r�)rr)r��data�p�lr��pls      r^�_test_commonzTestLU._test_common�s[���T�(�(���1�a�!�!�a�%�!�)�T�2�2�2��4�1�%�%�%���A�!�"�q�&�$�/�/�/�/�/r`c��t|��\}}td|f��\}||d���\}}}t||��t||��dS)N)�getrfF��overwrite_a)rr1r)r�r�l_and_u1�piv1r �l_and_u2�piv2�_s        r^�_test_common_lu_factorzTestLU._test_common_lu_factor�se��"�4�����$�#�J���8�8���!�E�$�E�:�:�:���$���8�X�.�.�.��4��&�&�&�&�&r`c�:�|�|j��dSr4)rr�r6s r^r�zTestLU.test_simple�������$�&�!�!�!�!�!r`c�:�|�|j��dSr4)rrr6s r^r�zTestLU.test_simple_complex�������$�'�"�"�"�"�"r`c�:�|�|j��dSr4)rr�r6s r^�test_simple2zTestLU.test_simple2�r*r`c�:�|�|j��dSr4)rrr6s r^�test_simple2_complexzTestLU.test_simple2_complex�r,r`c�n�|�|j��|�|j��dSr4)rrr(r6s r^�test_hrectangularzTestLU.test_hrectangular��4�����$�*�%�%�%��#�#�D�J�/�/�/�/�/r`c�n�|�|j��|�|j��dSr4)rrr(r6s r^�test_vrectangularzTestLU.test_vrectangular�r3r`c�n�|�|j��|�|j��dSr4)rrr(r6s r^�test_hrectangular_complexz TestLU.test_hrectangular_complex��4�����$�+�&�&�&��#�#�D�K�0�0�0�0�0r`c�n�|�|j��|�|j��dSr4)rrr(r6s r^�test_vrectangular_complexz TestLU.test_vrectangular_complex�r8r`c�n�|�|j��|�|j��dS�z:Check lu decomposition on medium size, rectangular matrix.N)rrr(r6s r^�test_medium1zTestLU.test_medium1�s4�����$�(�#�#�#��#�#�D�H�-�-�-�-�-r`c�n�|�|j��|�|j��dSr<)rrr(r6s r^�test_medium1_complexzTestLU.test_medium1_complex�s4�����$�)�$�$�$��#�#�D�I�.�.�.�.�.r`c�p�t|jd���\}}}t||z|z|j��dS)NFr�)rr�r)r�rrr�s    r^r$zTestLU.test_check_finite�s<���T�V�%�0�0�0���1�a�!�!�a�%�!�)�T�V�4�4�4�4�4r`c	��dD]|}tjddgddgg|���}t|��\}}t|tjddgddgg����t	|tjddg�����}dS)N��C�FrTr}rr:��order)rVr5rrr)r�rFr]�LU�Ps     r^�test_simple_knownzTestLU.test_simple_known�s����	4�	4�E���1�a�&�1�b�'�*�%�8�8�8�A��a�L�L�E�B��%�b�"�(�Q��F�Q��F�3C�*D�*D�E�E�E��q�"�(�A�q�6�"2�"2�3�3�3�3�		4�	4r`N)r�r�r�r7rr(r�r�r.r0r2r5r7r:r=r?r$rIr�r`r^r	r	�s�������>�>�>�00�0�0�'�'�'�"�"�"�#�#�#�"�"�"�#�#�#�0�0�0�0�0�0�1�1�1�1�1�1�
.�.�.�
/�/�/�
5�5�5�4�4�4�4�4r`r	c��eZdZdZd�ZdS)�TestLUSinglez0LU testers for single precision, real and doublec�
�t�|��|j�t��|_|j�t��|_|j�t��|_|j�t��|_|j	�t��|_	|j	�t��|_
|j�t��|_|j�t��|_|j�t��|_
|j�t��|_dSr4)r	r7r�rZr=rr>r�rrrrrrrr6s r^r7zTestLUSingle.setup_methods������D�!�!�!�����w�'�'����'�.�.��+�+�������w�'�'����'�.�.��+�+����Z�&�&�w�/�/��
��j�'�'�	�2�2����Z�&�&�w�/�/��
��j�'�'�	�2�2����:�$�$�W�-�-����J�%�%�i�0�0��	�	�	r`N)r�r�r��__doc__r7r�r`r^rKrKs)������:�:�1�1�1�1�1r`rKc� �eZdZd�Zd�Zd�ZdS)�TestLUSolvec�$�td��dSr�r�r6s r^r7zTestLUSolve.setup_methodr�r`c��td��}td��}dD]W}tj||���}t||��}t	|��}t||��}t
||���XdS)N�r9r9�r9rBrE)rMrVr5rrrr)r��a0r�rFr��x1�lu_a�x2s        r^�test_luzTestLUSolve.test_lus���
�H�
�
���5�M�M���	.�	.�E����5�)�)�)�A��q�!���B��Q�<�<�D��$��"�"�B�%�b�"�-�-�-�-�	.�	.r`c���td��}td��}t||��}t|d���}t||d���}t	||��dS)NrRrSFr�)rMrrrr)r�r�r�rUrVrWs      r^r$zTestLUSolve.test_check_finite)sc���8�����5�M�M��
�1�a�[�[�����/�/�/��
�d�A�E�
2�
2�
2��!�"�b�)�)�)�)�)r`N)r�r�r�r7rXr$r�r`r^rOrOsA���������	.�	.�	.�*�*�*�*�*r`rOc���eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zej�ed
���ejjd�����ZdS)�
TestSVD_GESDDc�2�d|_td��dS)N�gesddr!�r�rLr6s r^r7zTestSVD_GESDD.setup_method3���$����T�
�
�
�
�
r`c��tttdggd���tttdggd���dS)Nr:r�r�)r'r�r
r(r6s r^r�zTestSVD_GESDD.test_degenerate7s>���i���t�f�B�?�?�?�?��j�#���v�U�C�C�C�C�C�Cr`c���gd�gd�gd�g}dD]�}t|||j���\}}}t|j|zt	d����t|j|zt	d����t|jd|jdf|jj��}tt|����D]}|||||f<�t||z|z|����dS)Nr��r}r�r�r��TF��
full_matricesr�r�r�r
r�rrYrHr;rBrI�charr�r��r�r�rer��s�vh�sigmar�s        r^r�zTestSVD_GESDD.test_simple;s���
�Y�Y�
�
�
�I�I�I�.��*�	9�	9�M��1�M�)-�);�=�=�=�H�A�q�"�%�a�c�A�g�s�1�v�v�6�6�6�%�b�d�R�i��Q���8�8�8��1�7�1�:�r�x��{�3�Q�W�\�B�B�E��3�q�6�6�]�]�
#�
#����d��a��d���%�a�%�i�"�n�a�8�8�8�8�	9�	9r`c���gd�gd�gd�g}dD]�}t|||j���\}}}t|j|zt	d����t|j|zt	d����t|jd|jdf|jj��}tt|����D]}|||||f<�t||z|z|����dS)Nr�r�rcrdr�rrfrhs        r^�test_simple_singularz"TestSVD_GESDD.test_simple_singularGs���
�Y�Y�	�	�	�9�9�9�-��*�	9�	9�M��1�M�)-�);�=�=�=�H�A�q�"�%�a�c�A�g�s�1�v�v�6�6�6�%�b�d�R�i��Q���8�8�8��1�7�1�:�r�x��{�3�Q�W�\�B�B�E��3�q�6�6�]�]�
#�
#����d��a��d���%�a�%�i�"�n�a�8�8�8�8�	9�	9r`c��gd�gd�g}dD]�}t|||j���\}}}t|j|zt	|jd����t
|jd|jdf|jj��}tt|����D]}|||||f<�t||z|z|����dS)Nr�rrcrdr�r
r�rrYrHrBr;rIrgr�r�rhs        r^�test_simple_underdetz"TestSVD_GESDD.test_simple_underdetSs���
�Y�Y�	�	�	�"��*�	9�	9�M��1�M�)-�);�=�=�=�H�A�q�"�%�a�c�A�g�s�1�7�1�:���?�?�?��1�7�1�:�r�x��{�3�Q�W�\�B�B�E��3�q�6�6�]�]�
#�
#����d��a��d���%�a�%�i�"�n�a�8�8�8�8�	9�	9r`c���ddgddgddgg}dD]�}t|||j���\}}}t|j|zt	|jd����t|j|zt	d����t
|jd|jdf|jj��}tt|����D]}|||||f<�t||z|z|����dS)	Nr}rTr�r�r�rcrdrrorhs        r^�test_simple_overdetz!TestSVD_GESDD.test_simple_overdet^s����V�a��V�a��V�$��*�	9�	9�M��1�M�)-�);�=�=�=�H�A�q�"�%�a�c�A�g�s�1�7�1�:���?�?�?�%�b�d�R�i��Q���8�8�8��1�7�1�:�r�x��{�3�Q�W�\�B�B�E��3�q�6�6�]�]�
#�
#����d��a��d���%�a�%�i�"�n�a�8�8�8�8�	9�	9r`c
�h�d}d}td��D�]}t||g��t||g��fD]�}dD]�}t|||j���\}}}t	|j|zt
|jd����t	||jzt
|jd����t|jd|jdf|j	j
��}	tt|����D]}|||	||f<�t	||	z|z|�����dS)Nr�r�r�rcrdr}r)r�rMr
r�rrYrHrBr;rIrgr�)
r�r[�mr�r�rer�rirjrks
          r^�test_randomzTestSVD_GESDD.test_randomjsP�������q���
	A�
	A�A��a��V�n�n�f�a��V�n�n�5�	
A�	
A��%2�A�A�M�"�1�M�15�1C� E� E� E�H�A�q�"�-�a�c�A�g�s�1�7�1�:���G�G�G�-�b�2�4�i��R�X�a�[�9I�9I�J�J�J�!�1�7�1�:�r�x��{�";�Q�W�\�J�J�E�"�3�q�6�6�]�]�+�+��&'��d��a��d���-�a�%�i�"�n�a�@�@�@�@�A�	
A�
	A�
	Ar`c�P�gd�gd�gd�g}dD�]}t|||j���\}}}t|���j|zt|jd����t|���j|zt|jd����t|jd|jdf|jj	��}tt|����D]}|||||f<�t||z|z|����dS)Nr�)r}rr�r�rcrdr}r)r
r�rrXrYrHrBr;rIrgr�r�rhs        r^r�z!TestSVD_GESDD.test_simple_complexys��
�Y�Y�
�
�
�I�I�I�.��*�	9�	9�M��1�M�)-�);�=�=�=�H�A�q�"�%�a�f�f�h�h�j�1�n�c�!�'�!�*�o�o�F�F�F�%�b�g�g�i�i�k�B�&6��B�H�Q�K�8H�8H�I�I�I��1�7�1�:�r�x��{�3�Q�W�\�B�B�E��3�q�6�6�]�]�
#�
#����d��a��d���%�a�%�i�"�n�a�8�8�8�8�	9�	9r`c
�~�d}d}td��D�]'}dD�] }t||g��t||g��fD]�}|dtt|j����zz}t	|||j���\}}}t
|���j|zt|jd����t|jd|jdf|jj��}	tt|����D]}|||	||f<�t
||	z|z|������"��)dS)	Nr�r�r�rcrSrdr}r)r�rM�listrBr
r�rrXrYrHr;rIrgr�)
r�r[rtr�rer�r�rirjrks
          r^�test_random_complexz!TestSVD_GESDD.test_random_complex�s\�������q���	A�	A�A�!.�

A�

A�
� �!�Q��.�.�&�!�Q��.�.�9�A�A�A��B�v�d�1�7�m�m�4�4�4�4�A�"�1�M�15�1C� E� E� E�H�A�q�"�-�a�f�f�h�h�j�1�n�.1�!�'�!�*�o�o�?�?�?�
"�1�7�1�:�r�x��{�";�Q�W�\�J�J�E�"�3�q�6�6�]�]�+�+��&'��d��a��d���-�a�%�i�"�n�a�@�@�@�@�A�

A�	A�	Ar`c�0�gd�}tj�d��|D]o}tjtjtjtjfD]>}tjj|��|��}t||j
����?�pdS)N))r�r)r��2)�<rr!r�)rVrMrLr=�float64r>�
complex128rWrZr
r�)r��sizes�szr�r�s     r^�test_crash_1580zTestSVD_GESDD.test_crash_1580�s���/�/�/��
�	���t�����	9�	9�B��z�2�:�r�|�R�]�K�
9�
9���I�N�B�'�.�.�r�2�2���A�T�%7�8�8�8�8�8�
9�	9�	9r`c���gd�gd�gd�g}t|d|j���\}}}t|j|zt	d����t|j|zt	d����t|jd|jdf|jj��}tt|����D]}|||||f<�t||z|z|��dS)Nr�rbr�F)r�r�r�rrf)r�r�r�rirjrkr�s       r^r$zTestSVD_GESDD.test_check_finite�s���
�Y�Y�
�
�
�I�I�I�.���q�u�D�<N�O�O�O���1�b�!�!�#��'�3�q�6�6�2�2�2�!�"�$��)�S��V�V�4�4�4��q�w�q�z�2�8�A�;�/����>�>���s�1�v�v���	�	�A��A�$�E�!�Q�$�K�K�!�!�e�)�b�.�!�4�4�4�4�4r`c�r�tjgd�gd�gd�gd�g��}t||j���dS)N)�K�}\UU�?�vWUU�?r�rarara)rar�r�r�rara)rarar�r�r�ra)rararar�r�r�r�)rVr5r
r�)r�r�s  r^�test_gh_5039zTestSVD_GESDD.test_gh_5039�s^��
�H�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
?�
@�
@��
	�A�T�/�0�0�0�0�0�0r`z64-bit LAPACK requiredr�c��td���tjddgtj���}d|d<t	|d���\}}}t|d	d
��t|d|dzd
��dS)NihB)�free_mbr}lr=r�F)rerr:r�)rPrVr;r=r
r)r�r]r�rirjs     r^�test_large_matrixzTestSVD_GESDD.test_large_matrix�s���	�%�(�(�(�(��H�a��Z�r�z�2�2�2����%���q��.�.�.���1�b���!��c�"�"�"���$��"�U�)�+�S�1�1�1�1�1r`N)r�r�r�r7r�r�rmrprrrur�ryr�r$r�r.r/�skipifrQ�slowr�r�r`r^r[r[2s���������D�D�D�
9�
9�
9�
9�
9�
9�	9�	9�	9�
9�
9�
9�
A�
A�
A�
9�
9�
9�A�A�A�&9�9�9�5�5�5�1�1�1�"�[���I�
�.F��G�G��[��2�2���H�G�2�2�2r`r[c��eZdZd�ZdS)�
TestSVD_GESVDc�2�d|_td��dS)N�gesvdr!r^r6s r^r7zTestSVD_GESVD.setup_method�r_r`N)r�r�r�r7r�r`r^r�r��s#����������r`r�c�h�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
ejj
d	���Zd
S)�TestSVDValsc���ggtjd��tjd��fD]3}t|��}t	|tjd�����4dS)N)rTr)rr�r)rVr�r7rr�r�r�ris   r^�
test_emptyzTestSVDVals.test_empty�s\����r�x��'�'������8�	)�	)�A���
�
�A���B�H�Q�K�K�(�(�(�(�	)�	)r`c���gd�gd�gd�g}t|��}tt|��dk��t|d|dcxko|dknc��dS)Nr�r�r�rr}rT�rrr�r�s   r^r�zTestSVDVals.test_simple�sy��
�Y�Y�	�	�	�9�9�9�-���A�J�J����A���!�������!���!��$�$�$�$��!��$�$�$�$�%�%�%�%�%r`c��gd�gd�g}t|��}tt|��dk��t|d|dk��dS)Nr�rrTrr}r�r�s   r^rpz TestSVDVals.test_simple_underdet�sW��
�Y�Y�	�	�	�"���A�J�J����A���!�������!���!�������r`c��ddgddgddgg}t|��}tt|��dk��t|d|dk��dS)Nr}rTr�r�r�rr�r�s   r^rrzTestSVDVals.test_simple_overdet�s]����V�a��V�a��V�$���A�J�J����A���!�������!���!�������r`c���gd�gd�gd�g}t|��}tt|��dk��t|d|dcxko|dknc��dS)Nr�)r}r�rr�r�rr}rTr�r�s   r^r�zTestSVDVals.test_simple_complex�sy��
�Y�Y����Y�Y�Y�/���A�J�J����A���!�������!���!��$�$�$�$��!��$�$�$�$�%�%�%�%�%r`c��gd�gd�g}t|��}tt|��dk��t|d|dk��dS)Nr�)r�rr�rTrr}r�r�s   r^�test_simple_underdet_complexz(TestSVDVals.test_simple_underdet_complex�sW��
�Y�Y�
�
�
�#���A�J�J����A���!�������!���!�������r`c��ddgddgddgg}t|��}tt|��dk��t|d|dk��dS)Nr}rTr�r�rrr�r�s   r^�test_simple_overdet_complexz'TestSVDVals.test_simple_overdet_complex�s]����V�a��V�b�!�W�%���A�J�J����A���!�������!���!�������r`c���gd�gd�gd�g}t|d���}tt|��dk��t|d|dcxko|dknc��dS)	Nr�r�Fr�r�rr}rTr�r�s   r^r$zTestSVDVals.test_check_finite�s���
�Y�Y�	�	�	�9�9�9�-���A�E�*�*�*����A���!�������!���!��$�$�$�$��!��$�$�$�$�%�%�%�%�%r`c��tj�d��tj�dd��}t	|��dS)Nr!i�i�
)rVrMrLrWr�r�r�s  r^�test_crash_2609zTestSVDVals.test_crash_2609�s:��
�	���t�����I�N�N�4��&�&����
�
�
�
�
r`N)r�r�r�r�r�rprrr�r�r�r$r.r/r�r�r�r`r^r�r��s�������)�)�)�
&�&�&�������&�&�&�������&�&�&��[��������r`r�c��eZdZd�ZdS)�TestDiagSVDc�Z�ttgd�dd��gd�gd�gd�g��dS)N�r}rrr�r)rrr6s r^r�zTestDiagSVD.test_simplesK��!�'�)�)�)�Q��":�":�#,�9�9�i�i�i����"C�	E�	E�	E�	E�	Er`N)r�r�r�r�r�r`r^r�r�s(������E�E�E�E�Er`r�c�L�eZdZd�Zd�Zd�Zd�Zd�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�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*d)�Z+d*�Z,d+�Z-d,�Z.d-�Z/d.�Z0d/�Z1d0�Z2d1�Z3d2�Z4d3�Z5d4�Z6d5�Z7d6S)7�TestQRc�$�td��dSr�r�r6s r^r7zTestQR.setup_methodr�r`c��gd�gd�gd�g}t|��\}}t|j|ztd����t||z|��dS�N�r
rTr��rTr�r��r�r�r�r��rrrYrH�r�r��q�rs    r^r�zTestQR.test_simples_��
�Y�Y�	�	�	�9�9�9�-���!�u�u���1�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��+�+�+�+�+r`c��gd�gd�gd�g}t|��\}}gd�}t||d��\}}t||z|��t||��t|td��d��\}}t||��dS)Nr�r�r�r�r�r��rrrrH�r�r�r�r��c�qc�r2s       r^�test_simple_leftzTestQR.test_simple_lefts���
�Y�Y�	�	�	�9�9�9�-���!�u�u���1��I�I���Q��6�*�*���B�!�!�a�%��,�,�,�!�!�R�(�(�(��Q��A����/�/���B�!�!�R�(�(�(�(�(r`c��gd�gd�gd�g}t|��\}}gd�}t||��\}}t||z|��t||��t|td����\}}t||��dS)Nr�r�r�r�r�r�r�s       r^�test_simple_rightzTestQR.test_simple_right"s���
�Y�Y�	�	�	�9�9�9�-���!�u�u���1��I�I���Q��"�"���B�!�!�a�%��,�,�,�!�!�R�(�(�(��A�s�1�v�v�&�&���A�!�!�R�(�(�(�(�(r`c��tjgd�gd�gd�g��}t|d���\}}}tt	|����}ttj|dd�|dd�k����t|j|ztd����t||z|dd�|f��t|dd�|f��\}}t||��t||��dS)	Nr�r�r�T��pivotingr}r�r��
rVrErrXr6rr�rrYrH�r�r�r�r�rr��q2r�s        r^�test_simple_pivotingzTestQR.test_simple_pivoting,s����J�	�	�	�9�9�9�i�i�i�8�9�9���Q��&�&�&���1�a���Q���L�L�����q����u��#�2�#���'�'�(�(�(�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��1�1�1�a�4��1�1�1��A�a�a�a��d�G�����B�!�!�R�(�(�(�!�!�R�(�(�(�(�(r`c��gd�gd�gd�g}t|d���\}}}gd�}t||dd��\}}}t||z|��dS)Nr�r�r�Tr�r�r��rrr�r�r�r�r��jpvtr�r�s       r^�test_simple_left_pivotingz TestQR.test_simple_left_pivoting7sn��
�Y�Y�	�	�	�9�9�9�-����D�)�)�)�
��1�d��I�I��!�!�Q���5�5���A�t�!�!�a�%��,�,�,�,�,r`c��gd�gd�gd�g}t|d���\}}}gd�}t||d���\}}}t||z|��dS)Nr�r�r�Tr�r�r�r�s       r^�test_simple_right_pivotingz!TestQR.test_simple_right_pivoting>so��
�Y�Y�	�	�	�9�9�9�-����D�)�)�)�
��1�d��I�I��!�!�Q��6�6�6���A�t�!�!�a�%��,�,�,�,�,r`c��gd�gd�g}t|��\}}t|j|ztd����t||z|��dS)Nr�r�rTr�r�s    r^�test_simple_trapzTestQR.test_simple_trapE�Y��
�Y�Y�	�	�	�"���!�u�u���1�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��+�+�+�+�+r`c��tjgd�gd�g��}t|d���\}}}tt	|����}ttj|dd�|dd�k����t|j|ztd����t||z|dd�|f��t|dd�|f��\}}t||��t||��dS)Nr�r�Tr�r}r�rTr�r�s        r^�test_simple_trap_pivotingz TestQR.test_simple_trap_pivotingKs����J�	�	�	�9�9�9�-�.�.���Q��&�&�&���1�a���Q���L�L�����q����u��#�2�#���'�'�(�(�(�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��1�1�1�a�4��1�1�1��A�a�a�a��d�G�����B�!�!�R�(�(�(�!�!�R�(�(�(�(�(r`c��ddgddgddgg}t|��\}}t|j|ztd����t||z|��dS�Nr
rTr�r�r�r�r�s    r^�test_simple_tallzTestQR.test_simple_tallVs_����V�a��V�a��V�$���!�u�u���1�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��+�+�+�+�+r`c��tjddgddgddgg��}t|d���\}}}tt	|����}ttj|dd�|dd	�k����t|j|ztd����t||z|dd�|f��t|dd�|f��\}}t||��t||��dS)
Nr
rTr�r�r�Tr�r}r�r�r�s        r^�test_simple_tall_pivotingz TestQR.test_simple_tall_pivoting]s����J��A���A���A��/�0�0���Q��&�&�&���1�a���Q���L�L�����q����u��#�2�#���'�'�(�(�(�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��1�1�1�a�4��1�1�1��A�a�a�a��d�G�����B�!�!�R�(�(�(�!�!�R�(�(�(�(�(r`c��ddgddgddgg}t|d���\}}t|j|ztd����t||z|��t	|jd��t	|jd	��dS)
Nr
rTr�r�r��economic��mode�r�rTr��rrrYrHrrBr�s    r^�test_simple_tall_ezTestQR.test_simple_tall_eis�����V�a��V�a��V�$���!�*�%�%�%���1�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��+�+�+��Q�W�f�%�%�%��Q�W�f�%�%�%�%�%r`c��tjddgddgddgg��}t|dd���\}}}tt	|����}ttj|d	d�|dd
�k����t|j|ztd����t||z|dd�|f��t|dd�|fd���\}}t||��t||��dS)Nr
rTr�r�r�Tr��r�r�r}r�r�r�r�s        r^�test_simple_tall_e_pivotingz"TestQR.test_simple_tall_e_pivotingrs����J��A���A���A��/�0�0���Q��J�7�7�7���1�a���Q���L�L�����q����u��#�2�#���'�'�(�(�(�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��1�1�1�a�4��1�1�1��A�a�a�a��d�G�*�-�-�-���B�!�!�R�(�(�(�!�!�R�(�(�(�(�(r`c��ddgddgddgg}t|d���\}}ddg}t||d	��\}}t||z|��t||��tgd
���}t||d	d���\}}t||dd�z|��t|t	d��d	��\}}t||��dS)
Nr
rTr�r�r�r�r�r}r��r}rTrT��overwrite_c�rrrr5rHr�s       r^�test_simple_tall_leftzTestQR.test_simple_tall_left~s�����V�a��V�a��V�$���!�*�%�%�%���1�
��F���Q��6�*�*���B�!�!�a�%��,�,�,�!�!�R�(�(�(��)�)�)�����Q��6�t�<�<�<���B�!�!�a����e�)�R�0�0�0��A�s�1�v�v�v�.�.���A�!�"�a�(�(�(�(�(r`c�(�ddgddgddgg}t|dd���\}}}d	dg}t||d
d��\}}}t||��t||z|��t|t	d��d
d��\}}}t||��dS)Nr
rTr�r�r�r�T�r�r�r}r�)rrrrrH)r�r�r�r�r�r�r��kpvts        r^�test_simple_tall_left_pivotingz%TestQR.test_simple_tall_left_pivoting�s�����V�a��V�a��V�$����
�T�:�:�:�
��1�d�
��F��!�!�Q���5�5���A�t��4��&�&�&�!�!�a�%��,�,�,�!�!�S��V�V�V�T�:�:���A�t�!�"�a�(�(�(�(�(r`c��ddgddgddgg}t|d���\}}gd�}t||��\}}t||z|��t||��t|td����\}}t||��dS)	Nr
rTr�r�r�r�r�r�r��r�r�r�r�r��cqr�s       r^�test_simple_tall_rightzTestQR.test_simple_tall_right�s�����V�a��V�a��V�$���!�*�%�%�%���1��I�I���Q��"�"���B�!�!�a�%��,�,�,�!�!�R�(�(�(��A�s�1�v�v�&�&���A�!�"�a�(�(�(�(�(r`c��ddgddgddgg}t|dd���\}}}gd	�}t||d�
��\}}}t||z|��t|td��d�
��\}}}t||��dS)Nr
rTr�r�r�Tr�r�r�r�r��r�r�r�r�r�r�r�s       r^�test_simple_tall_right_pivotingz&TestQR.test_simple_tall_right_pivoting�s�����V�a��V�a��V�$����D�z�:�:�:�
��1�d��I�I��!�!�Q��6�6�6���A�t�!�!�a�%��,�,�,�!�!�S��V�V�d�;�;�;���A�t�!�"�a�(�(�(�(�(r`c��gd�gd�g}t|��\}}t|j|ztd����t||z|��t	|jd��t	|jd��dS)N�r
rTr�r�rTr��rTr�r�r�s    r^�test_simple_fatzTestQR.test_simple_fat�s}��
�Y�Y�	�	�	�"���!�u�u���1�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��+�+�+��Q�W�f�%�%�%��Q�W�f�%�%�%�%�%r`c�V�tjgd�gd�g��}t|d���\}}}tt	|����}ttj|dd�|dd�k����t|j|ztd����t||z|dd�|f��t|jd��t|jd	��t|dd�|f��\}}t||��t||��dS)
Nr�r�Tr�r}r�rTr�r��rVrErrXr6rr�rrYrHrrBr�s        r^�test_simple_fat_pivotingzTestQR.test_simple_fat_pivoting�s���J�	�	�	�9�9�9�-�.�.���Q��&�&�&���1�a���Q���L�L�����q����u��#�2�#���'�'�(�(�(�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��1�1�1�a�4��1�1�1��Q�W�f�%�%�%��Q�W�f�%�%�%��A�a�a�a��d�G�����B�!�!�R�(�(�(�!�!�R�(�(�(�(�(r`c��gd�gd�g}t|d���\}}t|j|ztd����t||z|��t	|jd��t	|jd��dS)Nr��rTr�r�r�r�rTr�r�r�r�s    r^�test_simple_fat_ezTestQR.test_simple_fat_e�s���
�Y�Y�	�	�	�"���!�*�%�%�%���1�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��+�+�+��Q�W�f�%�%�%��Q�W�f�%�%�%�%�%r`c�\�tjgd�gd�g��}t|dd���\}}}tt	|����}ttj|dd�|dd�k����t|j|ztd����t||z|dd�|f��t|jd	��t|jd
��t|dd�|fd���\}}t||��t||��dS)Nr�r�Tr�r�r}r�rTr�r�r�r�r�s        r^�test_simple_fat_e_pivotingz!TestQR.test_simple_fat_e_pivoting�s���J�	�	�	�9�9�9�-�.�.���Q��J�7�7�7���1�a���Q���L�L�����q����u��#�2�#���'�'�(�(�(�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��1�1�1�a�4��1�1�1��Q�W�f�%�%�%��Q�W�f�%�%�%��A�a�a�a��d�G�*�-�-�-���B�!�!�R�(�(�(�!�!�R�(�(�(�(�(r`c��gd�gd�g}t|d���\}}ddg}t||d��\}}t||z|��t||��t|td��d��\}}t||��dS)Nr�r�r�r�r}rTr�r�r�s       r^�test_simple_fat_leftzTestQR.test_simple_fat_left�s���
�Y�Y�	�	�	�"���!�*�%�%�%���1�
��F���Q��6�*�*���B�!�!�a�%��,�,�,�!�!�R�(�(�(��A�s�1�v�v�v�.�.���A�!�"�a�(�(�(�(�(r`c��gd�gd�g}t|dd���\}}}ddg}t||dd��\}}}t||z|��t|td��dd��\}}}t||��dS)	Nr�r�r�Tr�r}rTr�r�r�s       r^�test_simple_fat_left_pivotingz$TestQR.test_simple_fat_left_pivoting�s���
�Y�Y�	�	�	�"����
�T�:�:�:�
��1�d�
��F��!�!�Q���5�5���A�t�!�!�a�%��,�,�,�!�!�S��V�V�V�T�:�:���A�t�!�"�a�(�(�(�(�(r`c��gd�gd�g}t|d���\}}ddg}t||��\}}t||z|��t||��t|td����\}}t||��dS)Nr�r�r�r�r}rTr�r�s       r^�test_simple_fat_rightzTestQR.test_simple_fat_right�s���
�Y�Y�	�	�	�"���!�*�%�%�%���1�
��F���Q��"�"���B�!�!�a�%��,�,�,�!�!�R�(�(�(��A�s�1�v�v�&�&���A�!�"�a�(�(�(�(�(r`c��gd�gd�g}t|dd���\}}}ddg}t||d���\}}}t||z|��t|td��d���\}}}t||��dS)	Nr�r�Tr�r�r}rTr�r�r�s       r^�test_simple_fat_right_pivotingz%TestQR.test_simple_fat_right_pivoting�s���
�Y�Y�	�	�	�"����D�z�:�:�:�
��1�d�
��F��!�!�Q��6�6�6���A�t�!�!�a�%��,�,�,�!�!�S��V�V�d�;�;�;���A�t�!�"�a�(�(�(�(�(r`c���gd�gd�gd�g}t|��\}}t|���j|zt	d����t||z|��dS�N�r��@@r��r�rTy@@�r�rTrar�)rrrXrYrHr�s    r^r�zTestQR.test_simple_complex�sg��
�\�\�<�<�<����3���!�u�u���1�!�!�&�&�(�(�*�q�.�#�a�&�&�9�9�9�!�!�a�%��+�+�+�+�+r`c��gd�gd�gd�g}t|��\}}gd�}t||d��\}}t||z|��t|td��d��\}}t||��dS)Nrrr�r}rTrr�r�r��r�r�r�r�r�r�s      r^�test_simple_complex_leftzTestQR.test_simple_complex_lefts���
�\�\�<�<�<����3���!�u�u���1��L�L���A�q�&�)�)���A�!�!�a�%��,�,�,��A�s�1�v�v�v�.�.���A�!�!�R�(�(�(�(�(r`c���gd�gd�gd�g}t|��\}}gd�}t||��\}}t||z|��t|td����\}}t||��dS)Nrrrr	r�r�r
s      r^�test_simple_complex_rightz TestQR.test_simple_complex_rights���
�\�\�<�<�<����3���!�u�u���1��L�L���A�q�!�!���A�!�!�a�%��,�,�,��A�s�1�v�v�&�&���A�!�!�R�(�(�(�(�(r`c��ddgddgddgg}t|d���\}}d	d
g}t||d��\}}t||z|��t||��tgd���}t||dd
���\}}t||dd�z|��t|t	d��d��\}}t||��dS)Nr
y@@rTr�y@@r�r�r�r}�@@r�r�Tr�r�r�s       r^�test_simple_tall_complex_leftz$TestQR.test_simple_tall_complex_lefts�����Y��A���q�	�*���!�*�%�%�%���1�
��I���Q��6�*�*���B�!�!�a�%��,�,�,�!�!�R�(�(�(��)�)�)�����Q��6�t�<�<�<���B�!�!�a����e�)�R�0�0�0��A�s�1�v�v�v�.�.���A�!�"�a�(�(�(�(�(r`c��gd�gd�gd�g}t|��\}}gd�}t||dd���\}}t|���|z|��dS)Nrrrr	r�T��	conjugate�rrrrXr
s      r^�"test_simple_complex_left_conjugatez)TestQR.test_simple_complex_left_conjugate!sn��
�\�\�<�<�<����3���!�u�u���1��L�L���A�q�&�D�9�9�9���A�!�!�&�&�(�(�Q�,��3�3�3�3�3r`c���ddgddgddgg}t|d���\}}ddg}t||d	d
���\}}t|���|z|��dS)Nr�rr�rrTr�r�r}r�Trrr
s      r^�'test_simple_complex_tall_left_conjugatez.TestQR.test_simple_complex_tall_left_conjugate(su����Y��D�	�A�q�6�*���!�*�%�%�%���1�
��I���A�q�&�D�9�9�9���A�!�!�&�&�(�(�Q�,��3�3�3�3�3r`c���gd�gd�gd�g}t|��\}}tjgd���}t||d���\}}t	||���z|��dS)Nrrrr	Tr)rrVr5rrrXr
s      r^�#test_simple_complex_right_conjugatez*TestQR.test_simple_complex_right_conjugate/sv��
�\�\�<�<�<����3���!�u�u���1��H�\�\�\�"�"���A�q�D�1�1�1���A�!�!�a�f�f�h�h�,��3�3�3�3�3r`c�"�tgd�gd�gd�g��}t|d���\}}}tt|����}t	tj|dd�|dd�k����t|���j	|ztd����t||z|dd�|f��t|dd�|f��\}}t||��t||��dS)	NrrrTr�r}r�r�)r5rrXr6rrVr�rrXrYrHr�s        r^�test_simple_complex_pivotingz#TestQR.test_simple_complex_pivoting6s����<�<�<����y�y�y�9�:�:���Q��&�&�&���1�a���Q���L�L�����q����u��#�2�#���'�'�(�(�(�!�!�&�&�(�(�*�q�.�#�a�&�&�9�9�9�!�!�a�%��1�1�1�a�4��1�1�1��A�a�a�a��d�G�����B�!�!�R�(�(�(�!�!�R�(�(�(�(�(r`c��tgd�gd�gd�g��}t|d���\}}}gd�}t||dd��\}}}t||z|��dS)NrrrTr�r	r��r5rrrr�s       r^�!test_simple_complex_left_pivotingz(TestQR.test_simple_complex_left_pivotingAsv���<�<�<����y�y�y�9�:�:����D�)�)�)�
��1�d��L�L��!�!�Q���5�5���A�t�!�!�a�%��,�,�,�,�,r`c��tgd�gd�gd�g��}t|d���\}}}gd�}t||d���\}}}t||z|��dS)NrrrTr�r	rr�s       r^�"test_simple_complex_right_pivotingz)TestQR.test_simple_complex_right_pivotingHsw���<�<�<����y�y�y�9�:�:����D�)�)�)�
��1�d��L�L��!�!�Q��6�6�6���A�t�!�!�a�%��,�,�,�,�,r`c���d}td��D]]}t||g��}t|��\}}t|j|zt|����t||z|���^dS�Nr�rT�r�rMrrrYrH�r�r[rr�r�r�s      r^ruzTestQR.test_randomOsw�����q���	0�	0�A���1�v���A��a�5�5�D�A�q�%�a�c�A�g�s�1�v�v�6�6�6�%�a�!�e�Q�/�/�/�/�		0�	0r`c�D�d}td��D]�}t||g��}t|��\}}t|g��}t||d��\}}t	||z|��t|t|��d��\}}t	||����dS)Nr�rTr��r�rMrrrrH�r�r[rr�r�r�r�r�s        r^�test_random_leftzTestQR.test_random_leftWs������q���	-�	-�A���1�v���A��a�5�5�D�A�q���s���A���1�f�-�-�E�B��%�a�!�e�R�0�0�0���3�q�6�6�6�2�2�E�B��%�a��,�,�,�,�	-�	-r`c�@�d}td��D]�}t||g��}t|��\}}t|g��}t||��\}}t	||z|��t|t|����\}}t	||����dSr"r&�r�r[rr�r�r�r�r�s        r^�test_random_rightzTestQR.test_random_rightbs������q���	-�	-�A���1�v���A��a�5�5�D�A�q���s���A���1�%�%�E�B��%�a�!�e�R�0�0�0���3�q�6�6�*�*�E�B��%�a��,�,�,�,�	-�	-r`c	��d}td��D]�}t||g��}t|d���\}}}tt	|����}tt
j|dd�|dd�k����t|j	|zt|����t||z|dd�|f��t|dd�|f��\}}	t||��t||	����dS)Nr�rTTr�r}r��r�rMrrXr6rrVr�rrYrH�
r�r[rr�r�r�rr�r�r�s
          r^�test_random_pivotingzTestQR.test_random_pivotingms�����q���		-�		-�A���1�v���A���T�*�*�*�G�A�q�!��D��G�G���A��B�F�1�Q�R�R�5�A�c�r�c�F�?�+�+�,�,�,�%�a�c�A�g�s�1�v�v�6�6�6�%�a�!�e�Q�q�q�q�!�t�W�5�5�5���!�!�!�Q�$��[�[�F�B��%�a��,�,�,�%�a��,�,�,�,�		-�		-r`c���d}d}td��D]]}t||g��}t|��\}}t|j|zt|����t||z|���^dS�N��rrTr#�r�rtr[rr�r�r�s       r^�test_random_tallzTestQR.test_random_tallzs|�������q���	0�	0�A���1�v���A��a�5�5�D�A�q�%�a�c�A�g�s�1�v�v�6�6�6�%�a�!�e�Q�/�/�/�/�		0�	0r`c�L�d}d}td��D]�}t||g��}t|d���\}}t|g��}t||d��\}}t	||z|��t|t|��d��\}}t	||����dS)Nr2rrTr�r�r�r&)	r�rtr[rr�r�r�r�r�s	         r^�test_random_tall_leftzTestQR.test_random_tall_left�s��������q���	-�	-�A���1�v���A��a�j�)�)�)�D�A�q���s���A���1�f�-�-�E�B��%�a�!�e�R�0�0�0���3�q�6�6�6�2�2�E�B��%�b�!�,�,�,�,�	-�	-r`c�H�d}d}td��D]�}t||g��}t|d���\}}t|g��}t||��\}}t	||z|��t|t|����\}}t	||����dS�Nr2rrTr�r�r&)	r�rtr[rr�r�r�r�r�s	         r^�test_random_tall_rightzTestQR.test_random_tall_right�s��������q���	-�	-�A���1�v���A��a�j�)�)�)�D�A�q���s���A���1�%�%�E�B��%�a�!�e�R�0�0�0���3�q�6�6�*�*�E�B��%�b�!�,�,�,�,�	-�	-r`c	��d}d}td��D]�}t||g��}t|d���\}}}tt	|����}tt
j|dd�|dd�k����t|j	|zt|����t||z|dd�|f��t|dd�|f��\}	}
t||	��t||
����dS)Nr2rrTTr�r}r�r-�r�rtr[rr�r�r�rr�r�r�s           r^�test_random_tall_pivotingz TestQR.test_random_tall_pivoting�s	�������q���		-�		-�A���1�v���A���T�*�*�*�G�A�q�!��D��G�G���A��B�F�1�Q�R�R�5�A�c�r�c�F�?�+�+�,�,�,�%�a�c�A�g�s�1�v�v�6�6�6�%�a�!�e�Q�q�q�q�!�t�W�5�5�5���!�!�!�Q�$��[�[�F�B��%�a��,�,�,�%�a��,�,�,�,�		-�		-r`c�H�d}d}td��D]�}t||g��}t|d���\}}t|j|zt|����t||z|��t
|j||f��t
|j||f����dSr8)r�rMrrrYrHrrBr3s       r^�test_random_tall_ezTestQR.test_random_tall_e�s��������q���	*�	*�A���1�v���A��a�j�)�)�)�D�A�q�%�a�c�A�g�s�1�v�v�6�6�6�%�a�!�e�Q�/�/�/����1�a�&�)�)�)����1�a�&�)�)�)�)�
	*�	*r`c	��d}d}td��D�])}t||g��}t|dd���\}}}tt	|����}tt
j|dd�|dd�k����t|j	|zt|����t||z|dd�|f��t|j||f��t|j||f��t|dd�|fd�	��\}	}
t||	��t||
����+dS)
Nr2rrTTr�r�r}r�r�)
r�rMrrXr6rrVr�rrYrHrrBr;s           r^�test_random_tall_e_pivotingz"TestQR.test_random_tall_e_pivoting�s>�������q���	-�	-�A���1�v���A���T�
�;�;�;�G�A�q�!��D��G�G���A��B�F�1�Q�R�R�5�A�c�r�c�F�?�+�+�,�,�,�%�a�c�A�g�s�1�v�v�6�6�6�%�a�!�e�Q�q�q�q�!�t�W�5�5�5����1�a�&�)�)�)����1�a�&�)�)�)���!�!�!�Q�$��j�1�1�1�F�B��%�a��,�,�,�%�a��,�,�,�,�	-�	-r`c���d}d}td��D]]}t||g��}t|��\}}t|j|zt|����t||z|���^dS�Nrr2rTr#r3s       r^�test_random_trapzTestQR.test_random_trap�s|�������q���	0�	0�A���1�v���A��a�5�5�D�A�q�%�a�c�A�g�s�1�v�v�6�6�6�%�a�!�e�Q�/�/�/�/�		0�	0r`c	��d}d}td��D]�}t||g��}t|d���\}}}tt	|����}tt
j|dd�|dd�k����t|j	|zt|����t||z|dd�|f��t|dd�|f��\}	}
t||	��t||
����dS)Nrr2rTTr�r}r�r-r;s           r^�test_random_trap_pivotingz TestQR.test_random_trap_pivoting�s	�������q���		-�		-�A���1�v���A���T�*�*�*�G�A�q�!��D��G�G���A��B�F�1�Q�R�R�5�A�c�r�c�F�?�+�+�,�,�,�%�a�c�A�g�s�1�v�v�6�6�6�%�a�!�e�Q�q�q�q�!�t�W�5�5�5���!�!�!�Q�$��[�[�F�B��%�a��,�,�,�%�a��,�,�,�,�		-�		-r`c�2�d}td��D]�}t||g��dt||g��zz}t|��\}}t|���j|zt
|����t||z|����dS�Nr�rTrS)r�rMrrrXrYrHr$s      r^ryzTestQR.test_random_complex�s������q���	0�	0�A���1�v���r�&�!�Q��.�.�0�0�A��a�5�5�D�A�q�%�a�f�f�h�h�j�1�n�c�!�f�f�=�=�=�%�a�!�e�Q�/�/�/�/�		0�	0r`c��d}td��D]�}t||g��dt||g��zz}t|��\}}t|g��dt|g��zz}t||d��\}}t	||z|��t|t|��d��\}}t	||����dS)Nr�rTrSr�r&r's        r^�test_random_complex_leftzTestQR.test_random_complex_left�s������q���	-�	-�A���1�v���r�&�!�Q��.�.�0�0�A��a�5�5�D�A�q���s���B�v�q�c�{�{�N�*�A���1�f�-�-�E�B��%�a�!�e�R�0�0�0���3�q�6�6�6�2�2�E�B��%�a��,�,�,�,�	-�	-r`c��d}td��D]�}t||g��dt||g��zz}t|��\}}t|g��dt|g��zz}t||��\}}t	||z|��t|t|����\}}t	||����dSrGr&r*s        r^�test_random_complex_rightz TestQR.test_random_complex_right�s������q���	-�	-�A���1�v���r�&�!�Q��.�.�0�0�A��a�5�5�D�A�q���s���B�v�q�c�{�{�N�*�A���1�%�%�E�B��%�a�!�e�R�0�0�0���3�q�6�6�*�*�E�B��%�a��,�,�,�,�	-�	-r`c	�j�d}td��D�]}t||g��dt||g��zz}t|d���\}}}tt	|����}tt
j|dd�|dd�k����t|�	��j
|zt|����t||z|dd�|f��t|dd�|f��\}}	t||��t||	����!dS)Nr�rTrSTr�r}r�)r�rMrrXr6rrVr�rrXrYrHr.s
          r^�test_random_complex_pivotingz#TestQR.test_random_complex_pivoting�s �����q���		-�		-�A���1�v���r�&�!�Q��.�.�0�0�A���T�*�*�*�G�A�q�!��D��G�G���A��B�F�1�Q�R�R�5�A�c�r�c�F�?�+�+�,�,�,�%�a�f�f�h�h�j�1�n�c�!�f�f�=�=�=�%�a�!�e�Q�q�q�q�!�t�W�5�5�5���!�!�!�Q�$��[�[�F�B��%�a��,�,�,�%�a��,�,�,�,�		-�		-r`c��gd�gd�gd�g}t|d���\}}t|j|ztd����t||z|��dS�Nr�r�r�Fr�r�r�r�s    r^r$zTestQR.test_check_finitesf��
�Y�Y�	�	�	�9�9�9�-���!�%�(�(�(���1�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��+�+�+�+�+r`c��gd�gd�gd�g}t|d���\}}t|d���\}}t||��t||��t|d���\}}t||��t||��t|d���\}}	t||��t|	|��ttt|fdd	i��ttt|fdd
i��dS)Nr�r�r�)�lworkr�r9r�rQrrT)rrr'�	Exception)
r�r�r�r�r�r��q3�r3�q4�r4s
          r^�
test_lworkzTestQR.test_lworks��
�Y�Y�	�	�	�9�9�9�-���!�4� � � ���1��A�Q������B�!�"�a�(�(�(�!�"�a�(�(�(��A�R������B�!�"�a�(�(�(�!�"�a�(�(�(��A�R������B�!�"�a�(�(�(�!�"�a�(�(�(�	�i��a�T�G�Q�<�8�8�8��i��a�T�G�Q�<�8�8�8�8�8r`N)8r�r�r�r7r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�rr
rrrrrrr rur(r+r/r4r6r9r<r>r@rCrEryrIrKrMr$rWr�r`r^r�r�
s/���������,�,�,�)�)�)�)�)�)�	)�	)�	)�-�-�-�-�-�-�,�,�,�	)�	)�	)�,�,�,�
)�
)�
)�&�&�&�
)�
)�
)�)�)�)�)�)�)�)�)�)�)�)�)�&�&�&�)�)�)�&�&�&�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�,�,�,�)�)�)�)�)�)�)�)�)�4�4�4�4�4�4�4�4�4�	)�	)�	)�-�-�-�-�-�-�0�0�0�	-�	-�	-�	-�	-�	-�-�-�-�0�0�0�-�-�-�-�-�-�
-�
-�
-�
*�
*�
*�-�-�-�"0�0�0�-�-�-�0�0�0�	-�	-�	-�	-�	-�	-�-�-�-�,�,�,�9�9�9�9�9r`r�c�b�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�ZdS)�TestRQc�$�td��dSr�r�r6s r^r7zTestRQ.setup_method-r�r`c��gd�gd�gd�g}t|��\}}t||jztd����t||z|��dSr��rrrYrH�r�r�r�r�s    r^r�zTestRQ.test_simple0s_��
�Y�Y�	�	�	�9�9�9�-���!�u�u���1�!�!�a�c�'�3�q�6�6�2�2�2�!�!�a�%��+�+�+�+�+r`c��gd�gd�gd�g}t|��\}}t|d���}t||��dS)Nr�r�r�r�r�)rr)r�r�r�r�r�s     r^�test_rz
TestRQ.test_r6sN��
�Y�Y�	�	�	�9�9�9�-���!�u�u���1�
���_�_�_��!�!�R�(�(�(�(�(r`c���d}td��D]]}t||g��}t|��\}}t||jzt|����t||z|���^dSr"�r�rMrrrYrH�r�r[rr�r�r�s      r^ruzTestRQ.test_random<sw�����q���	0�	0�A���1�v���A��a�5�5�D�A�q�%�a�!�#�g�s�1�v�v�6�6�6�%�a�!�e�Q�/�/�/�/�		0�	0r`c��gd�gd�g}t|��\}}t|j|ztd����t||z|��dS)Nr�r�r�r\r]s    r^r�zTestRQ.test_simple_trapDr�r`c��ddgddgddgg}t|��\}}t|j|ztd����t||z|��dSr�r\r]s    r^r�zTestRQ.test_simple_tallJs_����V�a��V�a��V�$���!�u�u���1�!�!�#��'�3�q�6�6�2�2�2�!�!�a�%��+�+�+�+�+r`c��gd�gd�g}t|��\}}t||jztd����t||z|��dS)Nr�r�r�r\r]s    r^r�zTestRQ.test_simple_fatPsY��
�Y�Y�	�	�	�"���!�u�u���1�!�!�a�c�'�3�q�6�6�2�2�2�!�!�a�%��+�+�+�+�+r`c���gd�gd�gd�g}t|��\}}t||���jzt	d����t||z|��dSr)rrrXrYrHr]s    r^r�zTestRQ.test_simple_complexVsg��
�\�\�<�<�<����3���!�u�u���1�!�!�a�f�f�h�h�j�.�#�a�&�&�9�9�9�!�!�a�%��+�+�+�+�+r`c���d}d}td��D]]}t||g��}t|��\}}t||jzt|����t||z|���^dSr1ra�r�rtr[rr�r�r�s       r^r4zTestRQ.test_random_tall\�|�������q���	0�	0�A���1�v���A��a�5�5�D�A�q�%�a�!�#�g�s�1�v�v�6�6�6�%�a�!�e�Q�/�/�/�/�		0�	0r`c���d}d}td��D]]}t||g��}t|��\}}t||jzt|����t||z|���^dSrBrarhs       r^rCzTestRQ.test_random_traperir`c�H�d}d}td��D]�}t||g��}t|d���\}}t||jzt|����t||z|��t
|j||f��t
|j||f����dS)Nrr2rTr�r�)r�rMrrrYrHrrBrhs       r^�test_random_trap_economicz TestRQ.test_random_trap_economicns��������q���	*�	*�A���1�v���A��a�j�)�)�)�D�A�q�%�a�!�#�g�s�1�v�v�6�6�6�%�a�!�e�Q�/�/�/����1�a�&�)�)�)����1�a�&�)�)�)�)�
	*�	*r`c�2�d}td��D]�}t||g��dt||g��zz}t|��\}}t||���jzt
|����t||z|����dSrG)r�rMrrrXrYrHrbs      r^ryzTestRQ.test_random_complexys������q���	0�	0�A���1�v���r�&�!�Q��.�.�0�0�A��a�5�5�D�A�q�%�a�!�&�&�(�(�*�n�c�!�f�f�=�=�=�%�a�!�e�Q�/�/�/�/�		0�	0r`c��d}d}td��D]�}t||g��dt||g��zz}t|d���\}}t||���jzt
|����t||z|��t|j||f��t|j||f����dS)Nrr2rTrSr�r�)	r�rMrrrXrYrHrrBrhs       r^�test_random_complex_economicz#TestRQ.test_random_complex_economic�s��������q���	*�	*�A���1�v���r�&�!�Q��.�.�0�0�A��a�j�)�)�)�D�A�q�%�a�!�&�&�(�(�*�n�c�!�f�f�=�=�=�%�a�!�e�Q�/�/�/����1�a�&�)�)�)����1�a�&�)�)�)�)�
	*�	*r`c��gd�gd�gd�g}t|d���\}}t||jztd����t||z|��dSrOr\r]s    r^r$zTestRQ.test_check_finite�sf��
�Y�Y�	�	�	�9�9�9�-���!�%�(�(�(���1�!�!�a�c�'�3�q�6�6�2�2�2�!�!�a�%��+�+�+�+�+r`N)r�r�r�r7r�r_rur�r�r�r�r4rCrlryror$r�r`r^rYrY+s����������,�,�,�)�)�)�0�0�0�,�,�,�,�,�,�,�,�,�,�,�,�0�0�0�0�0�0�	*�	*�	*�0�0�0�	*�	*�	*�,�,�,�,�,r`rYc
���eZdZd�Zd�Zej�ddej	d��dej	d��dgfdej	d��dej	d��dgfd	ddej	d��ej	d��gfd
ej	d��ej	d��ddgfd�ej	d��dej	d��dgfg��d���Z
d
�Zd�ZdS)�	TestSchurc��t||z|���jz|||d���t||���jztjt|����z
dd|d���dS)Nz&Schur decomposition does not match 'a'r�rzu is not unitary)rrXrYrVrHr�)r�r��tr�r�r�s      r^�check_schurzTestSchur.check_schur�s�����A�������
�*�A�D�t� H�	J�	J�	J�	J�	��A�F�F�H�H�J�����A�����7���� 2�	4�	4�	4�	4�	4�	4r`c	��gd�gd�gd�g}t|��\}}|�|||dd���t|d��\}}ttjtt
|������o-tjtt
|��������|�|||dd���t||��\}}|�|||dd���dS)N�r
rr�r��r9r�r��+����=�+�����<�r�r�rK)rrurrV�anyr?rAr)r�r�rtr��tc�zc�tc2�zc2s        r^r�zTestSchur.test_simple�s���
�Z�Z����J�J�J�/���Q�x�x���1�����A�q�u�5��9�9�9��q�)�$�$���B����u�Y�r�]�]�+�+�,�,�M����i��m�m�8L�8L�1M�1M�N�N�N�����B���U��;�;�;��2�r�?�?���S�����C��5�u��=�=�=�=�=r`zsort, expected_diag�lhprT��r~�rhp�iuc�oucc��|dkS)Nrar�)rqs r^�<lambda>zTestSchur.<lambda>�s
��A��H�r`c���gd�gd�gd�gd�g}t||���\}}}|�|||dd���ttj|��|d	�
��td|��dS)N��@r�r:r;�g�g�r;r:�r,�@��g@�r�r�r<�@�rCryrzr{��-���q=�r�rT)rrurrVr6r)r�rC�
expected_diagr�rtr��sdims       r^�	test_sortzTestSchur.test_sort�s����
�
�
"�
"�
"�
�
�
�
�
�
�
!���1�4�(�(�(�
��1�d�����A�q�u�5��9�9�9�����
�
�M��>�>�>�>��Q������r`c��gd�gd�gd�gd�g}ttt|d���ttt|d���dS)Nr�r�r�r��unsupportedr�r})r'r(rr�s  r^�test_sort_errorszTestSchur.test_sort_errors�sc��
�
�
�
"�
"�
"�
�
�
�
�
�
�
!��	�j�%���?�?�?�?��j�%���3�3�3�3�3�3r`c��gd�gd�gd�g}t|d���\}}t||z|���jz|��dS)Nrwr�rxFr�)rrrXrY)r�r�rtr�s    r^r$zTestSchur.test_check_finite�sY��
�Z�Z����J�J�J�/���Q�U�+�+�+���1�!�!�a�%�!�&�&�(�(�*�"4�a�8�8�8�8�8r`N)
r�r�r�rur�r.r/rrVr@r�r�r$r�r`r^rrrr�sO������4�4�4�>�>�>��[����
�7�2�7�1�:�:�+�t�W�R�W�Q�Z�Z��5�	6�
�'�"�'�!�*�*�c�G�B�G�A�J�J�;��5�	6�
�$��W�R�W�Q�Z�Z�'�"�'�!�*�*��5�	6�
�'�"�'�!�*�*�w�r�w�q�z�z�k�4��5�	6�
�
�w�r�w�q�z�z�3��������T�B�	C�		E���
�
���
�4�4�4�9�9�9�9�9r`rrc�>�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�TestHessenbergc��gd�gd�gd�g}gd�gd�gd�g}t|d���\}}t|j|z|z|��t||d	�
��dS)N�ik���i���if�������"�i��r����g�b�g�s�E@g㥛� �c��g�(m̀�gk�w��c@g�f��jW���rg�&S��?g,e�X�@r}��calc_qr���decimal�rrrY�r�r��h1r�r�s     r^r�zTestHessenberg.test_simple�s���
�
�
�
�_�_�
�^�^�
��.�-�-�.�.�.�!�!�!�#���!�A�&�&�&���1�!�!�#��'�A�+�q�1�1�1�!�!�R��3�3�3�3�3�3r`c��gd�gd�gd�g}t|d���\}}t|���j|z|z|��dS)Nr�)r�y�f@r�)y�;�rr�r}r�)rrrXrY�r�r�r�r�s    r^r�z"TestHessenberg.test_simple_complex�sc��
�
�
�
�
�
�
�_�_�
���!�A�&�&�&���1�!�!�&�&�(�(�*�q�.�1�"4�a�8�8�8�8�8r`c��gd�gd�gd�gd�gd�gd�gd�g}t|d�	��\}}t|j|z|z|��dS)
N)r}rTr�r�r�r�ra)rrTr�r�r�rarT)rrTrTr�rr�rT)rrrTr
rrrT)rr�r}rTrr}rT)rr}rTr�rr}r)rrrrrr}rTr}r�r�r�s    r^r.zTestHessenberg.test_simple2�s���
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�

$���!�A�&�&�&���1�!�!�#��'�A�+�q�1�1�1�1�1r`c��tjd��}d|d<t|d���\}}t|j|z|z|��dS)Nr�rT)r�rr}r�)rVrHrrrYr�s    r^�test_simple3zTestHessenberg.test_simple3�sN���F�1�I�I����%���!�A�&�&�&���1�!�!�#��'�A�+�q�1�1�1�1�1r`c��d}td��D]B}t||g��}t|d���\}}t|j|z|z|���CdS)Nr�rTr}r�)r�rMrrrY�r�r[rr�r�r�s      r^ruzTestHessenberg.test_random�sh�����q���	6�	6�A���1�v���A��a��*�*�*�D�A�q�%�a�c�A�g��k�1�5�5�5�5�	6�	6r`c��d}td��D]i}t||g��dt||g��zz}t|d���\}}t|���j|z|z|���jdS)Nr�rTrSr}r�)r�rMrrrXrYr�s      r^ryz"TestHessenberg.test_random_complex�s������q���	=�	=�A���1�v���r�&�!�Q��.�.�0�0�A��a��*�*�*�D�A�q�%�a�f�f�h�h�j�1�n�q�&8�!�<�<�<�<�	=�	=r`c��gd�gd�gd�g}gd�gd�gd�g}t|dd�	��\}}t|j|z|z|��t||d
���dS)Nr�r�r�r�r�r�r}F)r�r�r�r�r�r�s     r^r$z TestHessenberg.test_check_finite�s���
�
�
�
�_�_�
�^�^�
��.�-�-�.�.�.�!�!�!�#���!�A�E�:�:�:���1�!�!�#��'�A�+�q�1�1�1�!�!�R��3�3�3�3�3�3r`c�>�ddgddgg}t|d���\}}t|tjd����t||��ddgdd	gg}t|d���\}}t|tjd����t||��dS)
NrTr}rarr�y@�r�y@@y(@�)rrrVrH)r�r�r�r�r��h2r�s       r^�test_2x2zTestHessenberg.test_2x2s�����V�a��W����!�A�&�&�&���1�!�!�R�V�A�Y�Y�/�/�/�!�!�Q�'�'�'��D�\�D�%�=�)���A�a�(�(�(���B�!�"�b�f�Q�i�i�0�0�0�!�"�a�(�(�(�(�(r`N)r�r�r�r�r�r.r�ruryr$r�r�r`r^r�r��s�������	4�	4�	4�9�9�9�	2�	2�	2�2�2�2�6�6�6�=�=�=�	4�	4�	4�
)�
)�
)�
)�
)r`r�c��eZdZd�Zej�ejdkd���d���Z	d�Z
d�Zd�Zd	�Z
d
�Zd�ZdS)
�TestQZc�$�td��dS�Ni90r�r6s r^r7zTestQZ.setup_method����U�����r`�darwinz8gges[float32] broken for OpenBLAS on macOS, see gh-16949r�c�L�d}t||g���t��}t||g���t��}t||��\}}}}t	||z|jz|d���t	||z|jz|d���t	||jzt
|��d���t	||jzt
|��d���ttj	t|��dk����dS)Nr�r�r)rMrZr=rrrYrHrrVr�r6�r�r[r]r��AA�BB�Qrs        r^�test_qz_singlezTestQZ.test_qz_singles��
���A�q�6�N�N�!�!�'�*�*���A�q�6�N�N�!�!�'�*�*���!�Q�x�x���B��1�!�!�b�&�1�3�,��1�=�=�=�=�!�!�b�&�1�3�,��1�=�=�=�=�!�!�a�c�'�3�q�6�6�1�=�=�=�=�!�!�a�c�'�3�q�6�6�1�=�=�=�=����t�B�x�x�1�}�%�%�&�&�&�&�&r`c���d}t||g��}t||g��}t||��\}}}}t||z|jz|��t||z|jz|��t||jzt	|����t||jzt	|����tt
jt|��dk����dS)Nr�r�	rMrrrYrHrrVr�r6r�s        r^�test_qz_doublezTestQZ.test_qz_double&s���
���A�q�6�N�N���A�q�6�N�N���!�Q�x�x���B��1�!�!�b�&�1�3�,��2�2�2�!�!�b�&�1�3�,��2�2�2�!�!�a�c�'�3�q�6�6�2�2�2�!�!�a�c�'�3�q�6�6�2�2�2����t�B�x�x�1�}�%�%�&�&�&�&�&r`c�.�d}t||g��dt||g��zz}t||g��dt||g��zz}t||��\}}}}t||z|���jz|��t||z|���jz|��t||���jzt|����t||���jzt|����t
tjt|��dk����t
tjt|��j
dk����dS)Nr�rSr)rMrrrXrYrHrrVr�r6rir�s        r^�test_qz_complexzTestQZ.test_qz_complex1s=��
���A�q�6�N�N�R���1�v���.�.���A�q�6�N�N�R���1�v���.�.���!�Q�x�x���B��1�!�!�b�&�1�6�6�8�8�:�"5�q�9�9�9�!�!�b�&�1�6�6�8�8�:�"5�q�9�9�9�!�!�a�f�f�h�h�j�.�#�a�&�&�9�9�9�!�!�a�f�f�h�h�j�.�#�a�&�&�9�9�9����t�B�x�x�1�}�%�%�&�&�&����t�B�x�x�}��)�*�*�+�+�+�+�+r`c��d}t||g��dt||g��zz�t��}t||g��dt||g��zz�t��}t||��\}}}}t	||z|���jz|d���t	||z|���jz|d���t	||���jzt|��d���t	||���jzt|��d���ttj
t|��dk����ttj
t|��jdk����dS)Nr�rSr�r)
rMrZr>rrrXrYrHrrVr�r6rir�s        r^�test_qz_complex64zTestQZ.test_qz_complex64=sm��
��
�Q��F�^�^�b���A����/�
/�7�7�	�B�B��
�Q��F�^�^�b���A����/�
/�7�7�	�B�B���!�Q�x�x���B��1�!�!�b�&�1�6�6�8�8�:�"5�q�!�D�D�D�D�!�!�b�&�1�6�6�8�8�:�"5�q�!�D�D�D�D�!�!�a�f�f�h�h�j�.�#�a�&�&�!�D�D�D�D�!�!�a�f�f�h�h�j�.�#�a�&�&�!�D�D�D�D����t�B�x�x�1�}�%�%�&�&�&����t�B�x�x�}��)�*�*�+�+�+�+�+r`c���d}t||g��}t||g��}t||d���\}}}}||z|���jz}t	|j|��t	|jd��||z|���jz}	t	|	j|��t	|	jd��t	||���jzt|����t	||���jzt|����ttj
t|��dk����dS)Nr�rK)�outputr)rMrrXrYrrhrirHrrVr�r6)
r�r[r]r�r�r�r�r�aa�bbs
          r^�test_qz_double_complexzTestQZ.test_qz_double_complexIs)��
���A�q�6�N�N���A�q�6�N�N���!�Q�y�1�1�1���B��1�
��V�a�f�f�h�h�j�
 ��!�"�'�1�-�-�-�!�"�'�1�-�-�-�
��V�a�f�f�h�h�j�
 ��!�"�'�1�-�-�-�!�"�'�1�-�-�-�!�!�a�f�f�h�h�j�.�#�a�&�&�9�9�9�!�!�a�f�f�h�h�j�.�#�a�&�&�9�9�9����t�B�x�x�1�}�%�%�&�&�&�&�&r`c���tjgd�gd�gd�gd�g��}tjgd�gd�gd�gd�g��}ttt||d	��
��dS)N)�333333@�)@�@A�g@��333333@��5@g�G�g@)r�r���E�r�)皙����@r��G�r�)r:r:r<r:)r:r�g�r�)r:rcr�r:)r�r�r�r�c��|dkS)Nrr�)ro�ai�betas   r^r�z,TestQZ.test_qz_double_sort.<locals>.<lambda>ps
��b�A�g�r`r�)	rVr5r'r(rrrrYrX)r�r]r�r�r�r�rr�s        r^�test_qz_double_sortzTestQZ.test_qz_double_sortXs���
�H�-�-�-�-�-�-�,�,�,�,�,�,�.�
/�
/��

�H�+�+�+�+�+�+�+�+�+�+�+�+�-�
.�
.��
	�j�"�a��1M�1M�N�N�N�N�	F�	Fr`c���d}t||g��}t||g��}t||d���\}}}}t||z|jz|��t||z|jz|��t||jzt	|����t||jzt	|����tt
jt|��dk����dS)Nr�Fr�rr�r�s        r^r$zTestQZ.test_check_finite�s���
���A�q�6�N�N���A�q�6�N�N���!�Q�U�3�3�3���B��1�!�!�b�&�1�3�,��2�2�2�!�!�b�&�1�3�,��2�2�2�!�!�a�c�'�3�q�6�6�2�2�2�!�!�a�c�'�3�q�6�6�2�2�2����t�B�x�x�1�}�%�%�&�&�&�&�&r`N)r�r�r�r7r.r/r0�sys�platformr�r�r�r�r�r�r$r�r`r^r�r�s�����������[���s�|�x�/�I��K�K�	'�	'�K�K�	'�	'�	'�	'�
,�
,�
,�
,�
,�
,�
'�
'�
'�5F�5F�5F�F	'�	'�	'�	'�	'r`r�c�0�tj|��|zSr4)rVrD)�Xs r^�	_make_posr��s��
�7�1�:�:�a�<�r`c�f�eZdZed���Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
S)�	TestOrdQZc�6�tjgd�gd�gd�gd�g��}tjgd�gd�gd�gd�g��}tjgd	�gd
�gd�gd�g��}tjgd
�gd�gd�gd�g��}tjgd�gd�gd�gd�g��}tjgd�gd�gd�gd�g��}tjd��}tjddg��}tjddg��}	|||||	g|_|||||	g|_dS)N)y�����5��6�y�J@@I�y@A��_@y@�?)yq=
ףpݿ��Q��y��B�y/�@M@y%���)y333333@�y������C@�����1�y Q�)@y��)y@������@y������,@fffff�E@y@@�G�y3�@@�)y�?�y�������?333333�?y�y�)y�������?333333�y�y�@y333333�������	�)y�?y333333@������?y��y�)rSy�������333333@y�y@�)r�r�r�r�r�)r�r�r�r�)r�g:@r�r�)r}rT���r})r}r����r�)r}r����r�)r}r�r�r�)rr:r�r�)r�r�rc�@)r�r�r:r�)rar�� @r�)r��$@r�r�)r�r�rcr,)r,r:r�r�)rr:r�r�rTrr})rVr5rHr6r]r�)
�cls�A1�B1�A2�B2�A3�B3�A4�B4�A5s
          r^r�zTestOrdQZ.setup_class�s����X�$�$�$�&�&�&�%�%�%�'�'�'�
(�)�)���X�D�D�D�D�D�D�D�D�D�D�D�D�F�G�G���X�/�/�/�.�.�.�.�.�.�.�.�.�0�1�1��
�X�}�}�}�$�}�}�$�}�}�$�}�}�&�'�'���X�'�'�'�'�'�'�'�'�'�'�'�'�)�*�*���X�)�)�)�'�'�'�'�'�'�'�'�'�)�*�*���V�A�Y�Y��
�W�a��V�_�_���W�a��V�_�_���R��R��$����R��R��$����r`c����tjd���5�fd�t|j|j��D��}ddd��n#1swxYwYt|��S)N�raiserc�:��g|]\}}t||������S)r�)r )�.0�Ai�BirCs   �r^�
<listcomp>z'TestOrdQZ.qz_decomp.<locals>.<listcomp>	s,���N�N�N���B�5��R�d�+�+�+�N�N�Nr`)rVr�zipr]r��tuple)r�rC�rets ` r^�	qz_decompzTestOrdQZ.qz_decomp	s����
�[�W�
%�
%�
%�	O�	O�N�N�N�N�#�d�f�d�f�:M�:M�N�N�N�C�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O����	O�	O�	O�	O��S�z�z�s�'A
�
A�Ac
	�*�tj|j�}
t||j���z|
��t|	|	j���z|
��t||z||	z��t||z||	z��t
tj|d��tj|j����t
tj|d��tj|j����t|jd��D�]{}|dkr|||dz
fdkr�||jddz
kr�||dz|fdkr�t|||dz�||dz�f|||dz�||dz�f��\}}
|djdkr
|ddg}|||dz�|||dz�z}|djdkr
|ddg}t||����||dkr>||dkr2t|||fd��t|||fd����#||dkrt|||fd����It|||f|||fz||||z����}t|��}d}t|jd��D]H}|tj||g��tj||g����}|s|rJ�|}�IdS)Nr�r�rr}rTT)rVrHrBrrYrXrrKr;r�r
rirrr3r5)r�r]r�rCr�r��alphar�r�r�Idr��evalsr'�tmp�sortfun�lastsort�cursorts                  r^�checkzTestOrdQZ.check		s��
�V�Q�W�
��!�!�a�c�h�h�j�j�.�"�5�5�5�!�!�a�c�h�h�j�j�.�"�5�5�5�!�!�b�&�!�a�%�0�0�0�!�!�b�&�!�a�%�0�0�0��2�7�2�r�?�?�B�H�R�X�,>�,>�?�?�?��2�7�2�r�?�?�B�H�R�X�,>�,>�?�?�?��q�w�q�z�"�"�	M�	M�A��1�u�u��1�a�!�e�8���)�)���2�8�A�;��?�"�"�r�!�a�%��(�|�q�'8�'8��r�!�A��E�'�1�Q��U�7�"2�3�R��!�a�%���1�q�5��8H�5I�J�J���q���8�=�1�$�$�!�1�a�&�M�E��A�a�!�e�G�n�T�!�A��E�'�]�2���q�6�;��?�?��q�!�f�+�C�)�%��5�5�5�5���8�q�=�=�T�!�W��\�\� ��A�q�D��1�-�-�-� ��A�q�D��1�-�-�-�-��!�W��\�\� ��A�q�D��1�-�-�-�-�'��1�a�4���A�q�D��(9�5��8�D��G�;K�L�L�L�L�"�4�(�(�����q�w�q�z�"�"�	�	�A��g�b�h��a��z�2�2�B�H�d�1�g�Y�4G�4G�H�H�G��
#�"�"�"�"��H�H�
	�	r`c��|�|��}t||j|j��D]\}}}|j|||g|�R��dSr4)rrr]r�r
)r�rCr�retir�r�s      r^�	check_allzTestOrdQZ.check_all7	sc���n�n�T�"�"����T�V�T�V�4�4�	,�	,�L�D�"�b��D�J�r�2�t�+�d�+�+�+�+�+�	,�	,r`c�0�|�d��dS)Nr��rr6s r^�test_lhpzTestOrdQZ.test_lhp=	������u�����r`c�0�|�d��dS)Nr�rr6s r^�test_rhpzTestOrdQZ.test_rhp@	rr`c�0�|�d��dS)Nr�rr6s r^�test_iuczTestOrdQZ.test_iucC	rr`c�0�|�d��dS)Nr�rr6s r^�test_ouczTestOrdQZ.test_oucF	rr`c�6�d�}|�|��dS)Nc��tj|t���}|dk}d||<||||zjdk||<|S�Nr=rF�rV�
empty_like�boolri�rqr�rd�nonzeros    r^rCz TestOrdQZ.test_ref.<locals>.sortK	�M���-���.�.�.�C��A�v�G�!�C���M��g�J�q��z�1�7�1�<�C��L��Jr`r�r�rCs  r^�test_refzTestOrdQZ.test_refI	�+��	�	�	�	
���t�����r`c�6�d�}|�|��dS)Nc��tj|t���}|dk}d||<||||zjdk||<|Srrr!s    r^rCz TestOrdQZ.test_cef.<locals>.sortV	r#r`rr$s  r^�test_cefzTestOrdQZ.test_cefT	r&r`c�>�t|jd|jdd���}|j|jd|jddg|�R�t|jd|jdd���}|j|jd|jddg|�R�dS)Nr}rTr�r�)r r]r�r
)r�rs  r^�test_diff_input_typeszTestOrdQZ.test_diff_input_types_	s����D�F�1�I�t�v�a�y�u�5�5�5����
�4�6�!�9�d�f�Q�i��5��5�5�5�5��D�F�1�I�t�v�a�y�u�5�5�5����
�4�6�!�9�d�f�Q�i��5��5�5�5�5�5�5r`c�v�tjd��}tjddg��}dddgfdddgfdddgfdddgfg}tjd��}tjd	d
g��}dddgfdddgfdddgfdddgfg}tjd��}tjdd
g��}ddtjgfddtjgfdtjdgfg}	tjd��}
tjdd
g��}ddtjgfddtjgfdtjdgfg}tjd
dg��}
tjd
dg��}ddtjgfddtjgfg}||||
|
g}|||||g}|||	||g}t|||��D]�\}}}|D]�\}}t
|||���\}}}}}}|d
k}|d
k}tj|��}tj|||z<tj|||z<||||z||<t||������dS)NrTr�r~r�r�r�r�r�y��?y�?�?y������ٿ������ɿ��?�rr}r�)	rVrHr6r��nanrr rr)r�r�r��	expected1r�r��	expected2r�r��	expected3r�r��	expected4r��B5�	expected5r]r��expectedr�r��	expectedi�sortstr�expected_eigvalsr'rr��azero�bzerorqs                              r^�test_sort_explicitzTestOrdQZ.test_sort_explicitf	s����V�A�Y�Y��
�W�b�#�Y�
�
���d�A�Y�'��a��Y�'��d�A�Y�'��a��Y�'�)�	��V�A�Y�Y��
�W�g�z�*�
+�
+���k�>�:�;��n�k�:�;��k�>�:�;��n�k�:�;�=�	�
�V�A�Y�Y��
�W�a��V�_�_���c�2�6�]�+��c�2�6�]�+��b�f�c�]�+�-�	��V�A�Y�Y��
�W�b�!�W�
�
���d�B�F�^�,��d�B�F�^�,��b�f�d�^�,�.�	��W�a��V�_�_��
�W�a��X�
�
���a���[�)��a���[�)�+�	���R��R� ��
��R��R� ���y�)�Y�	�J��!$�Q��8�!4�!4�		5�		5��B��I�-6�
5�
5�)��)�*/��B�W�*E�*E�*E�'��1�e�T�1�a��!��������M�%�(�(��#%�6��%�%�-� �$&�F��5�&�5�.�!�!�5�&�M�$��v�,�6��5�&�	�� 0�!�4�4�4�4�
5�		5�		5r`N)r�r�r��classmethodr�rr
rrrrrr%r)r+r;r�r`r^r�r��s��������4%�4%��[�4%�l���
,�,�,�\,�,�,�������������	�	�	�	�	�	�6�6�6�-5�-5�-5�-5�-5r`r�c�D�eZdZd�Zd�Zejjd���ZdS)�TestOrdQZWorkspaceSizec�$�td��dSr�r�r6s r^r7z#TestOrdQZWorkspaceSize.setup_method�	r�r`c���d}tjtjfD]^}t||f���|��}t||f���|��}t||d�d���}�_tjtjfD]^}t||f���|��}t||f���|��}t||d�d���}�_dS)N��c��||kSr4r��rr�s  r^r�z7TestOrdQZWorkspaceSize.test_decompose.<locals>.<lambda>�	�
��U�T�\�r`rh)rCr�c��||kSr4r�rCs  r^r�z7TestOrdQZWorkspaceSize.test_decompose.<locals>.<lambda>�	rDr`rK)rVr=r}rMrZr r~r>)r�rP�ddtyper]r�r's      r^�test_decomposez%TestOrdQZWorkspaceSize.test_decompose�	s������z�2�:�.�	%�	%�F���1�v���%�%�f�-�-�A���1�v���%�%�f�-�-�A��a��!A�!A�#�%�%�%�A�A��}�b�l�3�	(�	(�F���1�v���%�%�f�-�-�A���1�v���%�%�f�-�-�A��a��!A�!A�&�(�(�(�A�A�	(�	(r`c�.�d}tjtjtjtjfD]c}t||f���|��}t||f���|��}t||d���\}}}}}	}
�ddS)NrAr�r�)rVr=r}r~r>rMrZr )r�rPrFr]r��SrYrr��U�Vs           r^�test_decompose_oucz)TestOrdQZWorkspaceSize.test_decompose_ouc�	s���
���z�2�:�r�}�b�l�K�	>�	>�F���1�v���%�%�f�-�-�A���1�v���%�%�f�-�-�A�&+�A�q�u�&=�&=�&=�#�A�q�%��q�!�!�	>�	>r`N)	r�r�r�r7rGr.r/r�rLr�r`r^r>r>�	sS���������(�(�(�$�[��>�>���>�>�>r`r>c��eZdZd�ZdS)�TestDatacopiedc���ddlm}tddgddgg��}t|���|���}|���}G�fd�d��}G�fd�d	��}|��}|��}|d
f�d
f|df|d
f|d
f|d
ffD]=\}	}
t|	��}t
|||	��|
t|	������>dS)
Nr)�_datacopiedr}rTr�c���eZdZ�fd�ZdS)�-TestDatacopied.test_datacopied.<locals>.Fake1c����Sr4r�r)s �r^�	__array__z7TestDatacopied.test_datacopied.<locals>.Fake1.__array__�	s����r`N)r�r�r�rT�r]s�r^�Fake1rR�	s.�������
�
�
�
�
�
�
r`rVc���eZdZ�jZdS)�-TestDatacopied.test_datacopied.<locals>.Fake2N)r�r�r��__array_interface__rUs�r^�Fake2rX�	s�������"#�"7���r`rZFTr�)�scipy.linalg._decomprPrOrE�tolistr�r�repr)
r�rPr�L�M2rVrZ�F1�F2�item�status�arrr]s
            @r^�test_datacopiedzTestDatacopied.test_datacopied�	sV���4�4�4�4�4�4��Q��F�Q��F�#�$�$���A�J�J��
�H�H�J�J��
�V�V�X�X��	�	�	�	�	�	�	�	�	�	�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8��U�W�W��
�U�W�W����Z�!�U��a��Y� �%�[�2�u�+��E�{�D�	-�	-�L�D�&��$�-�-�C����S�$�/�/��!%�d���
-�
-�
-�
-�
-�	-�	-r`N)r�r�r�rer�r`r^rNrN�	s#������-�-�-�-�-r`rNc���tdtj���}tj|jddt
���}d|_t|d���t|jd���d	S)
z4Check linalg works with non-aligned memory (float32)i�r=rTr��offset�countrIrRTr!N)	r<rV�uint8�
frombufferrr=rBr
rY�r�r�s  r^�test_aligned_mem_floatrm�	si��	�s�"�(�#�#�#�A�	�
�a�f�Q�c��A�A�A�A��A�G���t��������������r`�ppc64lezcrashes on ppc64ler�c���tdtj���}tj|jddt
���}d|_t|d���t|jd���d	S)
z4Check linalg works with non-aligned memory (float64)i$r=r�rrgrRTr!N)	r<rVrjrkrrIrBr
rYrls  r^�test_aligned_memrp�	si��
	�s�"�(�#�#�#�A�	�
�a�f�Q�c��?�?�?�A��A�G���t��������������r`c���tdtj���}tj|jddt
���}d|_t|d���t|jd���d	S)
z>Check that complex objects don't need to be completely alignediHr=r
rrgrRTr!N)	r;rVrjrkrrKrBr
rYrls  r^�test_aligned_mem_complexrr�	si��	�d�"�(�#�#�#�A�	�
�a�f�Q�c��A�A�A�A��A�G���t��������������r`c�b�t|��}tt|����D�]}|dd�}t||tj��r�t	j||j||jj	zdztj
���}t	j|jd||j||j���}||j
|_
|||d<|||<||i|��t||j
��dkr||j||<||i|����dS)Nr
r=r�rg.r})rxr�r�rwrVrGr;r�rI�itemsizerjrkrrBrY)�funcrS�kwargsr�r�r�s      r^�check_lapack_misalignedrw�	s)����:�:�D�
�3�t�9�9�
�
�
#�
#������G���a��d�B�J�'�'�	#���!�A�$�)�A�a�D�J�$7�7��9���J�J�J�B���r�w�q��!��	�%&�q�T�Z�1�1�1�B���t�z�B�H���d�B�s�G��A�a�D��D�!��v�����1�Q�4�:����"�"���t�v��!����a�"�6�"�"�"��
#�
#r`z0Ticket #1152, triggers a segfault in rare cases.)�runr�c��tjdt���}tjd��}d|_tjdtj���}tj|jddt���}d|_tjd��}t|��\}}t|ftd�	��ft|ftd�	��ft|ftd�	��ft|ftd�	��ft||f|ftd�
��ft||ftdd���ft |ftd�	��ft |ftd�	��ft |ftd�	��ft"|ft��ft"|ftd�	��ft$|ftd�	��ft&|ftd�	��ft(|ftd�	��ft*|ftd�	��ft,|ftd�	��ffD]\}}}t/|||���dS)Nr9r=rrRi Nr�rgTr!)�overwrite_b)r"rz)rVrHrIr<rBrjrkrr7rr
�dictrrrrr
rrrrrrrw)	r�RrIr�rG�pivrurSrvs	         r^�test_lapack_misalignedr~
s+��	��r�����A�
�	�#���A��A�G�
�	�%�r�x�(�(�(�A�
�
�a�f�Q�c��?�?�?�A��A�G�
�����A���l�l�G�B��
�1�$���.�.�.�/�
�q�d�D�T�2�2�2�3�
�!��t��-�-�-�.�
���d�t�4�4�4�5�
��S�	�1�~�t��'=�'=�'=�>�
�Q��F�D�T�t�D�D�D�E�
�1�$���.�.�.�/�
�1�$���.�.�.�/�
�1�$���.�.�.�/�
�q�d�D�F�F�#�
�q�d�D�T�2�2�2�3�
��t�T�d�3�3�3�4�
�!��t��-�-�-�.�
�!��t��-�-�-�.�
�!��t��5�5�5�6�
�Q�D�$�4�0�0�0�1�!!�4�4���t�V�$	 ��d�F�3�3�3�3�%4�4r`c�n�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�ZdS)�
TestOverwritec�`�ttdg��ttddg��dS�Nr
)rNr
r6s r^�test_eigzTestOverwrite.test_eig3
s/���C�&��*�*�*��C�&�&�!1�2�2�2�2�2r`c�`�ttdg��ttddg��dSr�)rNrr6s r^�	test_eighzTestOverwrite.test_eigh7
s/���D�6�(�+�+�+��D�6�6�"2�3�3�3�3�3r`c�2�ttdg��dS�Nr�)rNrr6s r^r�zTestOverwrite.test_eig_banded;
����J���1�1�1�1�1r`c�2�ttdg��dSr�)rNrr6s r^�test_eigvalszTestOverwrite.test_eigvals>
����G�f�X�.�.�.�.�.r`c�2�ttdg��dSr�)rNrr6s r^�
test_eigvalshzTestOverwrite.test_eigvalshA
s���H�v�h�/�/�/�/�/r`c�2�ttdg��dSr�)rNrr6s r^r{z!TestOverwrite.test_eigvals_bandedD
s���N�V�H�5�5�5�5�5r`c�2�ttdg��dSr�)rNrr6s r^�test_hessenbergzTestOverwrite.test_hessenbergG
r�r`c�2�ttdg��dSr�)rNrr6s r^�test_lu_factorzTestOverwrite.test_lu_factorJ
s���I��x�0�0�0�0�0r`c���tjgd�gd�gd�g��}t|���t�fd�dg��dS)Nr�r)rar
r
c�$��t�|��Sr4)r)r��xlus �r^r�z-TestOverwrite.test_lu_solve.<locals>.<lambda>P
s���h�s�A�&6�&6�r`)r�)rVr5rrN)r�rqr�s  @r^�
test_lu_solvezTestOverwrite.test_lu_solveM
sR����H�i�i�i����I�I�I�6�7�7����l�l���6�6�6�6���?�?�?�?�?r`c�2�ttdg��dSr�)rNrr6s r^rXzTestOverwrite.test_luR
����B���)�)�)�)�)r`c�2�ttdg��dSr�)rNrr6s r^�test_qrzTestOverwrite.test_qrU
r�r`c�2�ttdg��dSr�)rNrr6s r^�test_rqzTestOverwrite.test_rqX
r�r`c�2�ttdg��dSr�)rNrr6s r^�
test_schurzTestOverwrite.test_schur[
s���E�F�8�,�,�,�,�,r`c�Z�td�dgtjtjg���dS)Nc�"�t|d��S)NrK)r�r�s r^r�z2TestOverwrite.test_schur_complex.<locals>.<lambda>_
s��e�A�y�&9�&9�r`r
)�dtypes)rNrVr=r}r6s r^�test_schur_complexz TestOverwrite.test_schur_complex^
s9���9�9�F�8�$&�J��
�#;�	=�	=�	=�	=�	=�	=r`c�V�ttdg��td�dg��dS)Nr
c�$�t|d���S)Nr�r�)r
r�s r^r�z(TestOverwrite.test_svd.<locals>.<lambda>d
s��c�!�7�&C�&C�&C�r`)rNr
r6s r^�test_svdzTestOverwrite.test_svdb
s0���C�&��*�*�*��C�C�f�X�N�N�N�N�Nr`c�2�ttdg��dSr�)rNrr6s r^�test_svdvalszTestOverwrite.test_svdvalsf
r�r`N)r�r�r�r�r�r�r�r�r{r�r�r�rXr�r�r�r�r�r�r�r`r^r�r�2
s
������3�3�3�4�4�4�2�2�2�/�/�/�0�0�0�6�6�6�2�2�2�1�1�1�@�@�@�
*�*�*�*�*�*�*�*�*�-�-�-�=�=�=�O�O�O�/�/�/�/�/r`r�c��tj|dft����|��}tj|��j}d|z}t
|��}t|j|df��t||�
��|���t
|j��}t|jd��t||�
��|���|dk�r|�stj�
d��tj�|d��tj�d|��z}|dtj�|d��ztj�d|��zz}|�|��}t
|d	�
��}t|j|df��t
|d�
��}t|j|df��dSdSdS)
NrTr=r�r}�r��rTr}r��-C��6?���MbP?��rcond���ư>r�)rVr7rIrZrjr�rrrBr�meanrYrMrLrW)r[rI�skip_bigr�r��tol�Ys       r^�_check_orthr�j
s���
���A��e�$�$�$�+�+�E�2�2�A�
�(�5�/�/�
�C�
��*�C��Q���A����1�a�&�!�!�!��A�q�v�v�x�x�c�*�*�*�*��Q�S�	�	�A����&�!�!�!��A�q�v�v�x�x�c�*�*�*�*��1�u�u�X�u�
�	���q�����I�N�N�1�a� � �2�9�>�>�!�Q�#7�#7�7��
��r�y�~�~�a��+�+�+�b�i�n�n�Q��.B�.B�B�B��
�H�H�U�O�O����$������Q�W�q�!�f�%�%�%���$������Q�W�q�%�j�)�)�)�)�)�
�u�u�ur`r
z"test only on 64-bit, else too slowc��d}	t|tjd���dS#t$r}t	d��|�d}~wwxYw)Ni���T)r�z.memory error perhaps caused by orth regression)r�rVr}�MemoryError�AssertionError)r[r�s  r^�test_orth_memory_efficiencyr��
sb��	�A���A�r�z�D�1�1�1�1�1�1�������<�
�
��	��������s�"�
A�<�Ac��tjtjtjtjg}gd�}tj||��D]\}}t||���dS)N�r}rTr�r9r)rVr=r}r>r~�	itertools�productr�)r�rr�r[s    r^�	test_orthr��
s`���j�"�*�b�l�B�M�
B�F����E��"�6�5�1�1�����A��A�r������r`c�V�tj�d��tjtjtjtjg}gd�}tj||��D�]@\}}tj	d|f|���}tj
|��j}d|z}t|��}t|j||dz
f��t||zd|���t|j��}t|jd��t|j|zd|���tj�d|dzz|��}t|��}t|j||dz
|dzz
f��t||zd|���|d	k�rtj�d��tj�|d	��tj�d	|��z}|d
tj�|d��ztj�d|��zz}|�|��}t|d���}t|j||d	z
f��t|d
���}t|j||dz
f����BdS)Nr}r�rTr=r�rr�r�r�r�r�r�r�r�)rVrMrLr=r}r>r~r�r�r7rjr�r%rrBrrY�randnrWrZ)r�rr�r[r�r�r�r�s        r^�test_null_spacer��
sQ���I�N�N�1�����j�"�*�b�l�B�M�
B�F����E��"�6�5�1�1�.�.���A��G�Q��F�"�%�%�%���h�r�l�l����S�j���q�M�M���Q�W�q�!�A�#�h�'�'�'���A��q�s�+�+�+�+��q�s�O�O���Q�W�f�%�%�%����a����-�-�-�-��I�O�O�A��1��H�a�(�(���q�M�M���Q�W�q�!�a�%�!�Q�$�,�/�0�0�0���A��q�s�+�+�+�+��q�5�5��I�N�N�1�����	���q�!�$�$�r�y�~�~�a��';�';�;�A��D�2�9�>�>�!�Q�/�/�/�"�)�.�.��A�2F�2F�F�F�A�������A��1�D�)�)�)�A����1�a�!�e�*�-�-�-��1�D�)�)�)�A����1�a�!�e�*�-�-�-��;.�.r`c	��tdt��}|dd�dd�f}|dd�dd�f}tt||��tjdzgdzd���tt||��tjdzgdzd���||fD]?}tt||��t	j|jd��d����@t	jgd�gd�gd	�gd
�g��}d}tt|dd�dd�f|dd�dd�f��d
|d���tt|dd�dd�f|dd�dd�f��d
|d���d}tt|dd�dd�f|dd�dgf��|d���tt|dd�dgf|dd�dd�f��|d���d}tt|dd�dd�f|dd�dgf��|d���tt|dd�dgf|dd�dd�f��|d���d}tt|dd�dd�f|dd�dd�f��|d
gd���ttt|d
|��ttt||d
��ttt|dd�|��t	jgd�gd�gd�gd�gd�g��}t	jgd�gd�gd�gd�gd�g��}t	jtjdzd
d
g��}tt||��|d���dgd
gg}dd
gd
dgg}tt||��dd���tt||��dd���dS)Nr
r�rcryr�r})g����4�?gV�R�f�?g8�!���@g����6�?)gN�$ЗW�?g���J��g�~���'@g�3:]$��)g�v�M�g���ۿg�PT#���g�e��,��?)g��΀��?g��+���?g�N�G@g��S<ʿg�"�	��?rTrr�r�g��L�0��?g�Ĺ��-�?gy��v�
�?r�r�)rr}r)rrr}rr>r-ra)r"rIrr!rV�pir;rBr5r'r()�Hr]r�rqr5r�r�s       r^�test_subspace_anglesr��
su����E���A�	�!�!�!�R�a�R�%��A�	�!�!�!�Q�R�R�%��A��O�A�q�)�)�B�E�B�J�<�!�+;�%�H�H�H�H��O�A�q�)�)�B�E�B�J�<�!�+;�%�H�H�H�H���V�$�$�����1�-�-�r�x����
�/C�/C�"�	$�	$�	$�	$�	$�	��	U�	U�	U�	W�	W�	W�	X�	X�	X�	V�	V�	V�	X�	Y�	Y�A�
!�H��O�A�a�a�a��!��e�H�a����1�2�2��h�7�7��:�H�� � � � ��O�A�a�a�a����e�H�a����2�A�2��h�7�7��:�H�� � � � � �H��O�A�a�a�a��!��e�H�a����A�3��i�8�8�(��O�O�O�O��O�A�a�a�a�!��f�I�q����B�Q�B��x�8�8�(��O�O�O�O� �H��O�A�a�a�a��!��e�H�a����A�3��i�8�8�(��O�O�O�O��O�A�a�a�a�!��f�I�q����B�Q�B��x�8�8�(��O�O�O�O� �H��O�A�a�a�a��!��e�H�a����1�2�2��h�7�7�(�A��� � � � ��*�o�q��t�Q�7�7�7��*�o�q�!�A�$�7�7�7��*�o�q��"��v�q�9�9�9�	��)�)�)��)�)��)�)��)�)��)�)�	�	�	�A�
	��)�)�)��)�)��)�)��)�)��)�)�	�	�	�A�
�x���q��!�Q��(�(�H��O�A�q�)�)�8�%�@�@�@�@�
��A�3��A�
�!��q�!�f��A��O�A�q�)�)�2�E�:�:�:�:��O�A�q�)�)�2�E�:�:�:�:�:�:r`c�b�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�ZdS)�TestCDF2RDFc�.�tjd||��S)Nz...ij,...jk->...ik)rV�einsum)r�r�r�s   r^�matmulzTestCDF2RDF.matmul�
s���y�-�q�!�4�4�4r`c�v�t|�||��|�||����dSr4)rr�)r�r�r�rqs    r^�assert_eig_validzTestCDF2RDF.assert_eig_valids@��!��K�K��1����K�K��1���	
�	
�	
�	
�	
r`c���tjd��}tjd��tjd��}}t||��\}}|�|||��dS)Nr�r)rVr�r&r��r�r�r�r��wrr�s      r^�test_single_array0x0realz$TestCDF2RDF.test_single_array0x0reals[���H�V�����x��{�{�B�H�V�,�,�1����A�����B����b�"�a�(�(�(�(�(r`c���tjddgddgg��}tj�|��\}}t	||��\}}|�|||��dS)Nr}rTr�r��rVr5r9r
r&r�r�s      r^�test_single_array2x2_realz%TestCDF2RDF.test_single_array2x2_realsd���H�q�!�f�q�"�g�&�'�'���y�}�}�Q�����1���A�����B����b�"�a�(�(�(�(�(r`c���tjddgddgg��}tj�|��\}}t	||��\}}|�|||��dS)Nr}rTr�r�r�s      r^�test_single_array2x2_complexz(TestCDF2RDF.test_single_array2x2_complexsd���H�q�!�f�r�1�g�&�'�'���y�}�}�Q�����1���A�����B����b�"�a�(�(�(�(�(r`c���tjgd�gd�gd�g��}tj�|��\}}t	||��\}}|�|||��dS)Nr�r�r�r�s      r^�test_single_array3x3_realz%TestCDF2RDF.test_single_array3x3_realsj���H�i�i�i����I�I�I�6�7�7���y�}�}�Q�����1���A�����B����b�"�a�(�(�(�(�(r`c���tjgd�gd�gd�g��}tj�|��\}}t	||��\}}|�|||��dS�Nr�)rr�r�)rr�r�r�r�s      r^�test_single_array3x3_complexz(TestCDF2RDF.test_single_array3x3_complex!sj���H�i�i�i����J�J�J�7�8�8���y�}�}�Q�����1���A�����B����b�"�a�(�(�(�(�(r`c�D�tdd��D]�}tj�d��tj�d||��}tj�|��\}}t||��\}}|�|||����dS)Nr}rai�ɚ;r)	r�rVrMrLrWr9r
r&r��r�rr�r�r�r�r�s       r^�test_random_1d_stacked_arraysz)TestCDF2RDF.test_random_1d_stacked_arrays's����q�!���	-�	-�A��I�N�N�9�%�%�%��	���s�A�q�)�)�A��9�=�=��#�#�D�A�q��Q��]�]�F�B���!�!�"�b�!�,�,�,�,�	-�	-r`c��tdd��D]p}tj�dd||��}tj�|��\}}t
||��\}}|�|||���qdS)Nr}rar9)r�rVrMrWr9r
r&r�r�s       r^�test_random_2d_stacked_arraysz)TestCDF2RDF.test_random_2d_stacked_arrays0s���q�!���	-�	-�A��	���r�2�q�!�,�,�A��9�=�=��#�#�D�A�q��Q��]�]�F�B���!�!�"�b�!�,�,�,�,�		-�	-r`c��tjd��tjd��}}ttt
||��dS)Nr�)rT)rVr�r5r'r(r&�r�r�r�s   r^�test_low_dimensionality_errorz)TestCDF2RDF.test_low_dimensionality_error8s5���x��|�|�R�X�d�^�^�1���j�'�1�a�0�0�0�0�0r`c��tjd��tjd���dd��}}ttt
||��dS)Nr�r�rT�rVr<r&r'r(r&r�s   r^r*z!TestCDF2RDF.test_not_square_error<sE���y��|�|�R�Y�q�\�\�1�1�!�Q�7�7�1���j�'�1�a�0�0�0�0�0r`c��tjgd�gd�gd�g��}tj�|��\}}t	t
t||��dSr��rVr5r9r
r'r(r&�r�r�r�r�s    r^�test_swapped_v_w_errorz"TestCDF2RDF.test_swapped_v_w_errorAsU���H�i�i�i����J�J�J�7�8�8���y�}�}�Q�����1��j�'�1�a�0�0�0�0�0r`c��tjd��tjd���dd��}}ttt
||��dS)Nr�rr�r�r�s   r^�test_non_associated_errorz%TestCDF2RDF.test_non_associated_errorGsE���y��|�|�R�Y�r�]�]�2�2�1�a�8�8�1���j�'�1�a�0�0�0�0�0r`c��tjgd�gd�gd�g��}tj�|��\}}t	t
t||��tjgd�gd�gd�ggd�gd�gd�gg��}tj�|��\}}t	t
t||��dS)Nr�r�)rTr�y@�r�r�s    r^�test_not_conjugate_pairsz$TestCDF2RDF.test_not_conjugate_pairsLs����H�i�i�i����L�L�L�9�:�:���y�}�}�Q�����1��j�'�1�a�0�0�0�
�H�
�Y�Y�	�	�	�<�<�<�0�
�Y�Y�	�	�	�<�<�<�0�
�
�
���y�}�}�Q�����1��j�'�1�a�0�0�0�0�0r`N)r�r�r�r�r�r�r�r�r�r�r�r�r�r*r�r�r�r�r`r^r�r��
s�������5�5�5�
�
�
�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�-�-�-�-�-�-�1�1�1�1�1�1�
1�1�1�1�1�1�
1�1�1�1�1r`r�)ra)F)�rM�	__usage__r�r�r��numpyrV�
numpy.testingrrrrrrr.r	r'�scipy.linalgr
rrr
rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'�scipy.linalg.lapackr(r)r*r+r,r-r.r/r0r1�scipy.linalg._miscr2�scipy.linalg._decomp_qzr3�scipy.statsr4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFrGrHrIrJrK�numpy.randomrLrM�scipy.linalg._testutilsrN�scipy.sparse._sputilsrO�scipy._lib._testutilsrP�scipy.linalg.blasrQrIr_r}�REAL_DTYPESr~rUr�rgr{r�r�r�r�r2r�r�r	rKrOr[r�r�r�r�rYrrr�r�r�r�r>rNrmr/r��machinerprrrwr0r~r�r�r��intprtr�r�r�r�r�r�r`r^�<module>r�s`
����
�	���������
�
�
�
�����5�5�5�5�5�5�5�5�5�5�5�5�5�5�5�5��
�
�
�*�*�*�*�*�*�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�N�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�$�#�#�#�#�#�4�4�4�4�4�4�#�#�#�#�#�#�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�&�%�%�%�%�%�%�%�7�7�7�7�7�7�(�(�(�(�(�(�3�3�3�3�3�3�'�'�'�'�'�'�(-�E������z�2�:�&���,��
�.��	�~�	%��
#�
#�
#�
#�"F�F�F�"
�
�
�4���.�.�.�.�.�.�.�.�>W-�W-�W-�W-�W-�W-�W-�W-�tU,�U,�U,�U,�U,�U,�U,�U,�plF�lF�lF�lF�lF�lF�lF�lF�^["�["�["�["�["�["�["�["�|Z4�Z4�Z4�Z4�Z4�Z4�Z4�Z4�z1�1�1�1�1�6�1�1�1�**�*�*�*�*�*�*�*�0R2�R2�R2�R2�R2�R2�R2�R2�j�����M����6�6�6�6�6�6�6�6�rE�E�E�E�E�E�E�E�[9�[9�[9�[9�[9�[9�[9�[9�|e,�e,�e,�e,�e,�e,�e,�e,�P49�49�49�49�49�49�49�49�nH)�H)�H)�H)�H)�H)�H)�H)�Vo'�o'�o'�o'�o'�o'�o'�o'�d���
G5�G5�G5�G5�G5�G5�G5�G5�T >� >� >� >� >� >� >� >�F-�-�-�-�-�-�-�-�6
�
�
�����$�H�$�&�&�)�3�/��1�1�
�
�1�1�
����#�#�#�$����u�L��N�N�4�4�N�N�4�@5/�5/�5/�5/�5/�5/�5/�5/�p*�*�*�*�6�������H�B�H�R�W�%�%�.��2�?��A�A���A�A�������#.�#.�#.�L7;�7;�7;�t[1�[1�[1�[1�[1�[1�[1�[1�[1�[1r`

Youez - 2016 - github.com/yon3zu
LinuXploit