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_lapack.cpython-311.pyc
�

d�c|����"�ddlZddlmZddlmZmZmZmZmZm	Z	ddl
Z
ddl
mZddl
Zddl
mZmZmZmZmZmZmZmZddlmZmZmZddlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'ddl(m)Z)dd	l*m+Z+m,Z,ddl-m.Z/	dd
lm0Z1n
#e2$rdZ1YnwxYwddl(m3Z3ddl4m5Z5ej6ej7gZ8ej9ej:gZ;e8e;zZ<d
�Z=d�Z>Gd�d��Z?Gd�d��Z@Gd�d��ZAe
jB�Cde<��e
jB�Cdgd���d�����ZDGd�d��ZEGd�d��ZFGd�d��ZGGd�d ��ZHd!�ZId"�ZJd#�ZKd$�ZLGd%�d&��ZMGd'�d(��ZNd)�ZOd*�ZPd+�ZQd,�ZRd-�ZSd.�ZTd/�ZUd0�ZVd1�ZWd2�ZXd3�ZYd4�ZZd5�Z[d6�Z\Gd7�d8��Z]d9�Z^d:�Z_d;�Z`d<�Zae
jB�bd=d>�?��d@���ZcdA�Zde
jB�CdBdCdDg��e
jB�Cde8��e
jB�CdEeedF����e
jB�CdGeedH����e
jB�CdIeedH����e
jB�CdJddKg��e
jB�CdLddKg���d)dM���������������Zfe
jB�Cde8��dN���Zge
jB�CdOdEdPidGdPidIdPidJdPidQdPidLdPif��dR���Zhe
jB�CdSejigdT�gdU�gdV�gdW�gdX�gdY�g��ejigdZ���ejigd[�gd\�gd]�gd^�gd_�gd`�g��ejigda�gdb�gdc�gdd�g��fg��de���Zje
jB�Cde<��df���Zke
jB�Cdgejigdh���ejigdi���ejigdj���ejigdk���ejigdl���ejigdm���ejigdn���ejidodpgdqdrgdsdtgdudvgdodwgg��ejidxdygdzdxgd{d|gdxd}gd|dKgg��f	ejigd~���ejigd���ejigd����ejigd����ejigd����ejigd����ejigdn���ejid�d�gd�d�gd�d�gd�d�gd�d�gg��ejid�d�gd�d�gd�d�gd�d�gd�d�gg��f	g��d����Zle
jB�Cde<��e
jB�Cdgd����d������Zme
jB�Cd�ene8e8ze<����d����Zoe
jB�Cd�ene8e8ze<����d����Zpe
jB�Cd�ene8e8ze<����d����Zqe
jB�Cd�ejigd����ejigd����ejigd����ejigd����ejidFd�gdPdHgd�dPgd�d�gdzd�gg��ejid�d�gd�d�gdKd|gd�dFgd{d�gg��fejigd����ejigd����ejigd����ejigd����ejid�d�gd�d�gd�d�gd�d�gg��ejid�d�gd�d�gd�d�gd�d�gg��fg��d����Zrd��Zse
jB�Cd�ene<e8e8z����e
jB�Cd�eed{����d������Zte
jB�Cd�ene<e8e8z����e
jB�Cd�eed{����d������Zue
jB�Cd�ene<e8e8z����e
jB�Cd�eed{����d������Zve
jB�Cd�ene<e8e8z����e
jB�Cd�eed{����d������Zwe
jB�Cd�d�ejigdâ��ejigdĢ��ejigdŢ��ejigdƢgdǢgdȢgdɢg��fg��dʄ��Zxe
jB�Cde<��e
jB�Cd�gd̢��d̈́����Zyd΄Zze
jB�Cd�gd��e
jB�Cd�d�d�g��dԄ����Z{e
jB�Cd�d�d�g��e
jB�Cd�d�d�g��dׄ����Z|e
jB�Cd�e<��e
jB�Cd�gdڢ��dۄ����Z}e
jB�Cd�e<��d܄��Z~e
jB�Cde<��e
jB�Cd�d�d=g��e
jB�Cd�d�d�g��d�������Ze
jB�Cde<��e
jB�Cd�ddKg��e
jB�Cd�d�d�g��d�������Z�e
jB�Cde<d�z��e
jB�Cd�d�d=g��e
jB�Cd�d�d�g��d�������Z�e
jB�Cd�ejigdh���ejigdi���ejigdj���ejidodpgdqdrgdsdtgdudvgdodwgg��ejidxdygdzdxgd{d|gdxd}gd|dKgg��fejigd~���ejigd���ejigd����ejid�d�gd�d�gd�d�gd�d�gd�d�gg��ejid�d�gd�d�gd�d�gd�d�gd�d�gg��fg��d���Z�e
jB�Cd�ene<e8e8z����e
jB�Cd�d�d�fd�d�fg��d�����Z�e
jB�Cd�ene<e8e8z����e
jB�Cd�d�d�fd�d�fg��d�����Z�e
jB�Cd�ene<e8e8z����e
jB�Cd�d�d�fd�d�fg��d�����Z�e
jB�Cd�ejigd����ejigd����ejidFd�gdPdHgd�dPgd�d�gdzd�gg��ejid�d�gd�d�gdKd|gd�dFgd{d�gg��fejigd����ejigd����ejid�d�gd�d�gd�d�gd�d�gg��ejid�d�gd�d�gd�d�gd�d�gg��fg��d���Z�e
jB�Cd�d�d=g��e
jB�Cde<��d�����Z�e
jB�Cde<��d����Z�e
jB�Cd�ejigd��gd��gd��gd��g��ejigd��gd��gd��gd��g��d�dKfejigd��gd��g�d�g�d�g��ejig�d�g�d�g�d�g�d�g��dKdHfg���d���Z�e
jB�Cde<���d���Z�e
jB�Cde<���d���Z�e
jB�C�d	ejig�d
�g�d�g�d�g�d
�g��ejig�d�g�d�g�d�g�d�g��ejig�d�g�d�g�d�g�d�g��ejig�d����d�dfejig�d�g�d�g�d�g�d�g��ejig�d�g�d�g�d�g�d �g��ejig�d!�g�d"�g�d#�g�d$�g��ejig�d����d%�d&fg���d'���Z�e
jB�Cde<���d(���Z�dS(*�N)�reduce)�assert_equal�assert_array_almost_equal�assert_�assert_allclose�assert_almost_equal�assert_array_equal)�raises)�eye�ones�zeros�
zeros_like�triu�tril�tril_indices�triu_indices)�rand�randint�seed)�_flapack�lapack�inv�svd�cholesky�solve�ldl�norm�
block_diag�qr�eigh)�_compute_lwork)�ortho_group�
unitary_group)�_clapack)�get_lapack_funcs)�get_blas_funcsc���|tvr=tjj|�tjj|�dzz�|��Stjj|��|��S)N��?)�COMPLEX_DTYPES�np�randomr�astype)�shape�dtypes  �@/usr/lib/python3/dist-packages/scipy/linalg/tests/test_lapack.py�generate_random_dtype_arrayr0)s\�������	���&��)�.�%�(��-�.�/5�v�e�}�}�	=�
�9�>�5�!�(�(��/�/�/�c��tj�tjd��t	tj�����}t	gd���}t
��}tt��D]4}|�d��s||vr||vr|�	|���5|gks
Jd���dS)z%Test that all entries are in the doc.Nzlapack.__doc__ is None)�absolute_import�clapack�division�find_best_lapack_type�flapack�print_function�	HAS_ILP64�_z2Name(s) missing from lapack.__doc__ or ignore_list)
r�__doc__�pytest�skip�set�split�list�dir�
startswith�append)�names�ignore_list�missing�names    r/�test_lapack_documentedrH1s���
�~����,�-�-�-����$�$�&�&�'�'�E�������K��f�f�G��F���!�!������$�$�	!��[�)@�)@��E�!�!��N�N�4� � � ���b�=�=�=�N�=�=�=�=�=r1c�&�eZdZd�Zd�Zd�Zd�ZdS)�TestFlapackSimplec	��gd�gd�gd�g}gd�gd�gd�gd�g}dD]�}tt|d	zd��}|��||��\}}}}}	t|	t|	����t	||��t||fd
t
|d
��dz
f��t	|tjt
|������||dd���\}}}}}	t|	t|	������dS)
N)���)���)���	)rLrrga2U0*�3?)rOrrg����Mb`?)rRrLrr)rrLrr�sdzc�gebalrrL)�permute�scale)	�getattrr7r�reprrr�lenr*r)
�self�a�a1�p�f�ba�lo�hi�pivscale�infos
          r/�
test_gebalzTestFlapackSimple.test_gebalDs6��
�Y�Y�	�	�	�9�9�9�-���o�o��o�o��l�l��l�l����	*�	*�A����7��D�1�1�A��y��)*��1���&�B��B��$���H�d�4�j�j�)�)�)�%�b�!�,�,�,��"�b��A�s�1�Q�4�y�y��{�#3�4�4�4�%�h����A�����@�@�@�)*��2�q��)B�)B�)B�&�B��B��$���H�d�4�j�j�)�)�)�)�	*�	*r1c��gd�gd�gd�g}dD]K}tt|dzd��}|��||��\}}}t|t|�����LdS)N�ik���i���if����i�i"�i��i����i���d�gehrd)rYr7rrZ)r\r]r_r`�ht�taures       r/�
test_gehrdzTestFlapackSimple.test_gehrdYs���
�
�
�
�_�_�
�^�^�
���	*�	*�A����7��D�1�1�A��y���A�a�D�D�M�B��T���H�d�4�j�j�)�)�)�)�	*�	*r1c	���tjddgddgg��}tjddgddgg��}tjdd	gd
dgg��}d}d
D�]�}|�|��|�|��|�|��}}}td|f��\}	|���r|dxxdz
cc<d}|	|||��\}
}}ttj||
��tj|
|��z||z��|	|||||���\}
}}ttj|���j|
��tj|
|���j��z||zd���|	|||d���\}
}}ttj||
��tj|
|��z
||zd������dS)NrLrMrrOrPrQrSrT�
���T�fdFD)�trsylr(�C)�trana�tranb��decimal���)�isgn)	r*�arrayr,r%�isupperr�dot�	conjugateru)
r\r]�b�c�transr.r^�b1�c1rw�xrXres
             r/�
test_trsylzTestFlapackSimple.test_trsylds���H�q�!�f�q�!�f�%�&�&���H�q�!�f�q�!�f�%�&�&���H�q�"�g��B�x�(�)�)�����	=�	=�E����%���!�(�(�5�/�/�1�8�8�E�?�?�B��B�%�j�2�%�8�8�F�E��}�}���
��1�����������"�U�2�r�2�.�.�N�A�u�d�%�b�f�R��m�m�b�f�Q��m�m�&C�&+�b�j�
2�
2�
2�#�U�2�r�2�U�%�H�H�H�N�A�u�d�%��F�2�<�<�>�>�+�Q�/�/�"�&��B�L�L�N�N�<L�2M�2M�M��B�J��
+�
+�
+�
+�#�U�2�r�2�B�7�7�7�N�A�u�d�%�b�f�R��m�m�b�f�Q��m�m�&C�&+�b�j�!�
=�
=�
=�
=�
=�#	=�	=r1c�N�tjgd�gd�gd�g��}dD�]�}dD�]|}|�|��}|���r|dxxdz
cc<t	d|f��\}|||��}|d	vre|d
vrd}nd}tjtjtjtj|��������}t|||����|d
vr'tj
tj|����}n}|dvr;tj
tjtj|��d�����}n>|dvr:tj
tjtj|��d�����}t||����~���dS)Nrhrirkrv�Mm1OoIiFfEe�rrr()�lange�FfEe�FfrNrR�Mm�1Oor��axis�IirL)r*rr,r�r%�sqrt�sum�square�absr�maxr)	r\r]r.�norm_strr^r��valuer|�refs	         r/�
test_langezTestFlapackSimple.test_lange�s����H�����O�O��N�N��
�
��
�	-�	-�E�)�
-�
-���X�X�e�_�_���=�=�?�?�#��t�H�H�H��N�H�H�H�)�*�r�e�<�<�����h��+�+���v�%�%���}�}�"#���"#���'�"�&���2�6�"�:�:�)>�)>�"?�"?�@�@�C�'��s�G�<�<�<�<��4�'�'� �f�R�V�B�Z�Z�0�0���!�U�*�*� �f�R�V�B�F�2�J�J�Q�%?�%?�%?�@�@���!�T�)�)� �f�R�V�B�F�2�J�J�Q�%?�%?�%?�@�@�� ���,�,�,�,�1
-�	-�	-r1N)�__name__�
__module__�__qualname__rfrpr�r��r1r/rJrJBsP������*�*�*�*	*�	*�	*�=�=�=�8-�-�-�-�-r1rJc��eZdZd�Zd�ZdS)�
TestLapackc�4�ttd��rdSdS�N�empty_module)�hasattrr7�r\s r/�test_flapackzTestLapack.test_flapack��#���7�N�+�+�	��D�	�	r1c�4�ttd��rdSdSr�)r�r4r�s r/�test_clapackzTestLapack.test_clapack�r�r1N)r�r�r�r�r�r�r1r/r�r��s2���������
����r1r�c�&�eZdZd�Zd�Zd�Zd�ZdS)�TestLeastSquaresSolversc	�@�td��tt��D]�\}}d}d}d}t||���|��}t|���|��}td|���\}}	t
|	|||��}
||||
���\}}}t|dk��|||d	||
�
��\}}}t|dk����tD�]}tj
ddgd
dgddgg|���}tj
gd�|���}td||f��\}
}}|j\}}t|j��dkr|jd}nd}t
||||��}
|
|||
���\}}}t|dd�tj
ddg|���dtj|��jz���||��\}}}}t!||����t"D�]}tj
ddgddgddgg|���}tj
gd�|���}td||f��\}
}}|j\}}t|j��dkr|jd}nd}t
||||��}
|
|||
���\}}}t|dd�tj
dd g|���dtj|��jz���||��\}}}}t!||����dS)!N��rr�rL)�gels�
gels_lwork�r.��lworkr�TTCC�r�r���?�@�@�@�@� @��0@g1@g4@)r�r��geqrfrMr}祪����,������-@���rtol��?@�@�?�@��@�� @ffffff�?�r�y1@@y4@��R����?���\�j�����,�?���W�?)r�	enumerate�DTYPESrr,r%r!r�REAL_DTYPESr*rr-r[r�finfo�epsr	r))r\�indr.�m�n�nrhsr^r��gls�glslwr�r:rer�r�r��lqrr��	lqr_truths                   r/�	test_gelsz!TestLeastSquaresSolvers.test_gels�s����T�
�
�
�#�F�+�+�
	�
	�J�C���A��A��D��a����"�"�5�)�)�B��a������&�&�B�)�*@��N�N�N�J�C��#�5�!�Q��5�5�E���R��5�1�1�1�J�A�q�$��D�A�I������R��6�#�;�e�D�D�D�J�A�q�$��D�A�I����� �	/�	/�E���C��:���:���:�'�.3�5�5�5�B���,�,�,�E�:�:�:�B�&6�3�b�"�X�'?�'?�#�D�*�e��8�D�A�q��2�8�}�}��!�!��x��{�����#�:�q�!�T�:�:�E��4��B�e�4�4�4�L�C��D��A�c�r�c�F�B�H�.A�.@�.B�38�%:�%:�%:�"$�B�H�U�O�O�$7�!7�
9�
9�
9�
9�"'��r����I�q�!�Q��s�I�.�.�.�.�#�	/�	/�E���H�c�?�$�h�/�$�h�/�1�8=�?�?�?�B���6�6�6�e�D�D�D�B�&6�3�b�"�X�'?�'?�#�D�*�e��8�D�A�q��2�8�}�}��!�!��x��{�����#�:�q�!�T�:�:�E��4��B�e�4�4�4�L�C��D��A�c�r�c�F��H�&J�&J�&L�+0�2�2�2�8:�2�8�E�?�?�;N�8N�
P�
P�
P�
P�"'��r����I�q�!�Q��s�I�.�.�.�.�/	/�	/r1c��tD�]X}tjddgddgddgg|���}tjgd�|���}td	||f��\}}|j\}}t|j��d
kr|jd}nd}||||d��\}	}
}t
tj|	����}|
}
|||||
dd
d
��\}}}}t|dd�tjddg|���dtj	|��j
z���t|tjddg|���dtj	|��j
z�����ZtD�]i}tjddgddgddgg|���}tjgd�|���}td	||f��\}}|j\}}t|j��d
kr|jd}nd}||||d��\}	}}
}t
tj|	����}t
|��}|
}
||||||
dd
d
��\}}}}t|dd�tjddg|���dtj	|��j
z���t|tjddg|���dtj	|��j
z�����kdS)Nr�r�r�r�r�r�r�r�)�gelsd�gelsd_lworkrMrLr}Fr�r�r�r��YN�))1)@�*@��.��?r�r�r�r�r�r�r�r��U���.*@���_�Y@�r�r*rr%r-r[�int�realrr�r�r))r\r.r^r�r�r�r�r�r��work�iworkrer��
iwork_sizer��s�rank�rwork�
rwork_sizes                   r/�
test_gelsdz"TestLeastSquaresSolvers.test_gelsd�s��� �	9�	9�E���C��:���:���:�'�.3�5�5�5�B���,�,�,�E�:�:�:�B�!1�2J�35�r�(�"<�"<��E�;��8�D�A�q��2�8�}�}��!�!��x��{�����!,��A�q�$�� ;� ;��D�%������
�
�&�&�E��J�$�u�R��U�J�%'��� 7� 7��A�q�$���A�c�r�c�F�B�H�.A�.@�.B�38�%:�%:�%:�"$�B�H�U�O�O�$7�!7�
9�
9�
9�
9�
�A�r�x�);�):�)<�CH� J� J� J�!#�B�H�U�O�O�$7�!7�
9�
9�
9�
9�
9�$�	P�	P�E���H�c�?�$�h�/�$�h�/�1�8=�?�?�?�B���6�6�6�e�D�D�D�B�!1�2J�35�r�(�"<�"<��E�;��8�D�A�q��2�8�}�}��!�!��x��{�����(3�{�1�a��r�'B�'B�$�D�%�������
�
�&�&�E��U���J��J�$�u�R��U�J�
�%'��� 7� 7��A�q�$���A�c�r�c�F��H�&J�&J�&L�+0�2�2�2�8:�2�8�E�?�?�;N�8N�
P�
P�
P�
P�
�A��H�&8�:K�%L�+0�2�2�2�8:�2�8�E�?�?�;N�8N�
P�
P�
P�
P�
P�5	P�	Pr1c	��tD�]V}tjddgddgddgg|���}tjgd�|���}td	||f��\}}|j\}}t|j��d
kr|jd}nd}||||d��\}	}
t
tj|	����}|||d|d
d
��\}}
}}}	}
t|
dd�tjddg|���dtj	|��j
z���t|tjddg|���dtj	|��j
z�����XtD�]V}tjddgddgddgg|���}tjgd�|���}td	||f��\}}|j\}}t|j��d
kr|jd}nd}||||d��\}	}
t
tj|	����}|||d|d
d
��\}}
}}}	}
t|
dd�tjddg|���dtj	|��j
z���t|tjddg|���dtj	|��j
z�����XdS)Nr�r�r�r�r�r�r�r�)�gelss�gelss_lworkrMrLr}Fr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�)r\r.r^r�r�r�r�r�r�r�rer��vr�r�r�s                r/�
test_gelssz"TestLeastSquaresSolvers.test_gelss1sw�� �	9�	9�E���C��:���:���:�'�.3�5�5�5�B���,�,�,�E�:�:�:�B�!1�2J�35�r�(�"<�"<��E�;��8�D�A�q��2�8�}�}��!�!��x��{�����%��Q��4��4�4�J�D�$�����
�
�&�&�E�(-��b�"�b�%���(N�(N�%�A�q�!�T�4���A�c�r�c�F�B�H�.A�.@�.B�38�%:�%:�%:�"$�B�H�U�O�O�$7�!7�
9�
9�
9�
9�
�A�r�x�);�):�)<�CH� J� J� J�!#�B�H�U�O�O�$7�!7�
9�
9�
9�
9�
9�$�	9�	9�E���H�c�?�$�h�/�$�h�/�1�8=�?�?�?�B���6�6�6�e�D�D�D�B�!1�2J�35�r�(�"<�"<��E�;��8�D�A�q��2�8�}�}��!�!��x��{�����%��Q��4��4�4�J�D�$�����
�
�&�&�E�(-��b�"�b�%���(N�(N�%�A�q�!�T�4���A�c�r�c�F��H�&J�&J�&L�+0�2�2�2�"$�B�H�U�O�O�$7�!7�	
9�
9�
9�
9�

�A�r�x�);�):�)<�CH� J� J� J�!#�B�H�U�O�O�$7�!7�
9�
9�
9�
9�
9�1	9�	9r1c
���tD�]r}tjddgddgddgg|���}tjgd�|���}td	||f��\}}|j\}}t|j��d
kr|jd}nd}||||dtj|��jz��\}	}
ttj	|	����}tj
|jddftj���}||||tj|��j|d
d
��\}
}}}}
t|dd�tjddg|���dtj|��jz�����ttD�]r}tjddgddgddgg|���}tjgd�|���}td	||f��\}}|j\}}t|j��d
kr|jd}nd}||||dtj|��jz��\}	}
ttj	|	����}tj
|jddftj���}||||tj|��j|d
d
��\}
}}}}
t|dd�tjddg|���dtj|��jz�����tdS)Nr�r�r�r�r�r�r�r�)�gelsyr�rMrLrrFr}r�r�r�r�r�r�r�r�r�r�r�r�)r�r*rr%r-r[r�r�r�r�r
�int32rr))r\r.r^r�r��gelsy_lworkr�r�r�r�rer��jptvr�r��jr�s                 r/�
test_gelsyz"TestLeastSquaresSolvers.test_gelsyjsU�� �	9�	9�E���C��:���:���:�'�.3�5�5�5�B���,�,�,�E�:�:�:�B�!1�2J�35�r�(�"<�"<��E�;��8�D�A�q��2�8�}�}��!�!��x��{�����%��Q��4��B�H�U�O�O�4G�1G�H�H�J�D�$�����
�
�&�&�E��8�R�X�a�[�!�,�B�H�=�=�=�D�"'�%��B��b�h�u�o�o�6I�(-�u�e�#=�#=��A�q�!�T�4��A�c�r�c�F�B�H�.A�.@�.B�38�%:�%:�%:�"$�B�H�U�O�O�$7�!7�
9�
9�
9�
9�
9�
$�	9�	9�E���H�c�?�$�h�/�$�h�/�1�8=�?�?�?�B���6�6�6�e�D�D�D�B�!1�2J�35�r�(�"<�"<��E�;��8�D�A�q��2�8�}�}��!�!��x��{�����%��Q��4��B�H�U�O�O�4G�1G�H�H�J�D�$�����
�
�&�&�E��8�R�X�a�[�!�,�B�H�=�=�=�D�"'�%��B��b�h�u�o�o�6I�(-�u�e�#=�#=��A�q�!�T�4��A�c�r�c�F��H�&J�&J�&L�+0�2�2�2�"$�B�H�U�O�O�$7�!7�	
9�
9�
9�
9�
9�+	9�	9r1N)r�r�r�r�r�r�r�r�r1r/r�r��sY������B/�B/�B/�H:P�:P�:P�x79�79�79�r59�59�59�59�59r1r�r.r-)�rNrO)rPrM��r�c�r�td|���}|\}}|||���\}}t|d��dS)N�geqrf_lworkr��r�r�r�r%r)r.r-r�r�r�r�res       r/�test_geqrf_lworkr�sM��#�M�%�@�@�@�K��D�A�q��+��Q�'�'�'�K�E�4���q�����r1c��eZdZd�ZdS)�TestRegressionc��tD]�}tjd|���}tdg|g��\}t	t
||d���||��\}}}}|tvrLtdg|g��\}t	t
||dd�|d���||dd�|d�����|tvrKtd	g|g��\}	t	t
|	|dd�|d���|	|dd�|d�����dS)
N)i,rMr��gerqfrMr��orgrq���rL�ungrq)r�r*r
r%�
assert_raises�	Exceptionr�r))
r\r.r]r�rqror�rerr	s
          r/�test_ticket_1645zTestRegression.test_ticket_1645�s5���	-�	-�E�����/�/�/�A�%�w�i�!��5�5�F�E��)�U�A�Q�7�7�7�7�"'�%��(�(��B��T�4���#�#�)�7�)�a�S�9�9����i���2�3�3���A�F�F�F�F���b����g�s�!�,�,�,�,�,��.�(�(�)�7�)�a�S�9�9����i���2�3�3���A�F�F�F�F���b����g�s�!�,�,�,�,��	-�	-r1N)r�r�r�r
r�r1r/rr�s#������-�-�-�-�-r1rc��eZdZd�ZdS)�	TestDpotrc
�L�dD�]}dD�]}tj�d��tj�d���}|�|j��}t
d|f��\}}||||���\}}|||��d}	|rBttj|	��tjt|��������ttj
|	��tj
t|����������!dS)N)TF�*)rNrN)�size)�potrf�potri)�cleanr)r*r+r�normalr�rur%rrrr)
r\�lowerrr�r]�dpotrf�dpotrir�re�dpts
          r/�test_gh_2691zTestDpotr.test_gh_2691�s��"�	C�	C�E�&�

C�

C���	���r�"�"�"��I�$�$�&�$�1�1���E�E�!�#�J�J��!1�2D�q�e�!L�!L���� �&��E��7�7�7���4��f�Q��&�&�q�)���C�#�B�G�C�L�L�"�'�#�a�&�&�/�/�B�B�B�B�#�B�G�C�L�L�"�'�#�a�&�&�/�/�B�B�B�B�

C�	C�	Cr1N)r�r�r�rr�r1r/rr�s(������C�C�C�C�Cr1rc��eZdZd�ZdS)�
TestDlasd4c�~�tjgd���}tjgd���}tjtjtj|dd���tjdt
|��dz
f��f��|dd�tjff��}t|dddd���}t
|��}tj	|ddd�|d|t|��zzgf��}tj	|ddd�df��}td	|f��}g}	td|��D]G}
||
||��}|	�
|d��t|d
dkd|
z���Htj|	��ddd�}	ttjtj|	����df��t#||	d
tjtj��jzd
tjtj��jz���dS)N)r��@r�r)g�(\��@g������@g333333�皙�����rr}rLF)�
full_matrices�
compute_uv�overwrite_a�check_finite�r�lasd4rNzcLAPACK root finding dlasd4 failed to find                                     the singular value %izThere are NaN roots�d��atolr�)r*r�hstack�vstack�diagr
r[�newaxisr�concatenaterr%�rangerCr�any�isnanrr��float64r�)r\�sigmas�m_vec�M�SM�it_len�sgm�mvcr&�roots�i�ress            r/�test_sing_val_updatezTestDlasd4.test_sing_val_update�s9����/�/�/�*�*����0�0�0�1�1���I�r�y�"�'�&��2��,�"7�"7�"$�(�A�s�5�z�z�A�~�+>�"?�"?�"A�B�B��Q�Q�Q��
�]�+�-�
.�
.����%�E�u�#�%�%�%���V�����n�f�T�T�r�T�l�V�A�Y���U���9K�-K�,L�M�N�N���n�e�D�D�b�D�k�4�0�1�1�� ��6�)�4�4�����q�&�!�!�	@�	@�A��%��3��$�$�C��L�L��Q�� � � ��S��V�q�[�$;�=>�$?�
@�
@�
@�
@��������"��%���R�V�B�H�U�O�O�,�,�,�.C�D�E�E�E���E��B�H�R�Z�,@�,@�,D�(D� ���"�*�!5�!5�!9�9�	;�	;�	;�	;�	;�	;r1N)r�r�r�r=r�r1r/rr�s#������;�;�;�;�;r1rc���eZdZej�de��d���Zej�dd�eD����ej�dddg��ej�dd	dg��d
�������Zej�dgd�gd
�gd�g��d���Z	d�Z
ej�dddg��d���ZdS)�	TestTbtrsr.c�d�|tvratjgd�gd�g|���}tjddgddgdd	gd
dgg|���}tjdd
gddgddgddgg|���}n�|tvrdtjgd�gd�gd�g|���}tjddgddgddgddgg|���}tjddgd d!gd"d#gd$d%gg|���}nt	d&|�d'����td(|���}|||d)�*��\}}t
|d+��t||d+d,�-��d.S)/z�Test real (f07vef) and complex (f07vsf) examples from NAG

        Examples available from:
        * https://www.nag.com/numeric/fl/nagdoc_latest/html/f07/f07vef.html
        * https://www.nag.com/numeric/fl/nagdoc_latest/html/f07/f07vsf.html

        )�p=
ף�g��Q�@gH�z�G@g{�G�z�?)g�gq=
ףp@gH�z�G�rr�g�p=
ף0�rAg��(\�+�gףp=
�0�g333333*@g�(\���gH�z�G,�g�Q���#�rOrLr}���rNrMr)y
ףp=
�����Q�@y{�G�z@�G�z�y��Q���?H�z�G�y)\��(�?�������?)y��Q����Q��@yq=
ףp���G�z@yףp=
�?{�G�z��r)y�Q���?q=
ףp
@y)\��(��z�G�rry���Q�!�
ףp=
�yףp=
8��G�z�y�p=
�#/�)\��h7�y\��(�L�H�z�G @y��Q���H�z��6@yףp=
3@�(\��=�y{�G�z-�333333�y�Q��+3@�G�zT5@y@y�?@y�?�y��yt&m����=�#��y�i���6@U�g$B@y[a�^C�?b->���y-@�j�i�&��*�!�z	Datatype z not understood.�tbtrs�L��abr��uplor��h㈵��>�r�r)N)r�r*rr)�
ValueErrorr%rr)r\r.rFr��x_outrCr�res        r/�test_nag_example_f07vef_f07vsfz(TestTbtrs.test_nag_example_f07vef_f07vsf�s����K�����4�4�4�2�2�2�4� %�'�'�'�B���6�5�/�!�6�*� �%�.�!�5�/�+� %�	&�&�&�A�
�H�q�!�f�!�2�h� �!�f� �"�g�'�$)�	*�*�*�E�E�
�n�
$�
$���K�K�K�F�F�F�:�:�:�<�!&�'�'�'�B���=�.�9�*�N�;�)�>�:�)�>�:�<� %�	&�&�&�A�
�H�r�6�l�%�w�/�4�6J�K�3�5J�K�M�$)�	*�*�*�E�E��@��@�@�@�A�A�A� �'�%�8�8�8���%�2���-�-�-���4��T�1������5�q�t�4�4�4�4�4�4r1zdtype,transc�>�g|]}dD]}|dkr	|tv�||f���S))�Nrurxrx)r�)�.0r.r�s   r/�
<listcomp>zTestTbtrs.<listcomp>%sP��N�N�N�"'��N�N�6;�&+�s�l�l�u��7K�7K� %�e�n�7K�7K�7K�7Kr1rG�UrDr,rNc	�^���td��d\�}}td����}|dk}||z}	||	z
}
t|	|
dz
d��}�fd�|D��}�fd	�|D��}
|dkrtj�����|
|	<tj|
|d
���}tj|dz�f���}t|��D]@\}}|�	|��||t|d��t�|z����f<�At�|f���}||||||�
��\}}t|d��|dkrt||z|d���dS|dkrt|j|z|d���dS|dkrt|j|z|d���dSt#d���)Ni�)rOrNrMrCr�rQrLr}c�4��g|]}�t|��z
��Sr�)r�)rOr�r�s  �r/rPz2TestTbtrs.test_random_matrices.<locals>.<listcomp>9s#���8�8�8�a�q�3�q�6�6�z�8�8�8r1c�2��g|]}t|f�����Sr�)r0)rO�widthr.s  �r/rPz2TestTbtrs.test_random_matrices.<locals>.<listcomp>:s5���+�+�+��-�e�X�u�=�=�+�+�+r1�dia)�formatr)rFr�rGr�r,rNg-C��6
?r�rurxzInvalid trans argument)rr%r/r*r�sps�diagsr
r��diagonalr��minr0rrru�HrJ)r\r.r�rGr,r��kdrC�is_upper�ku�kl�band_offsets�band_widths�bandsr]rF�row�kr�r�rer�s `                   @r/�test_random_matriceszTestTbtrs.test_random_matrices$s����	
�T�
�
�
����4�� ���6�6�6���C�K��
�(�]��
�"�W���R�"��q��"�-�-��8�8�8�8�<�8�8�8��+�+�+�+�)�+�+�+���3�;�;�����/�/�/�E�"�I�
�I�e�\�%�8�8�8���X�r�A�v�q�k�5�
)�
)����-�-�	;�	;�F�C��-.�Z�Z��]�]�B�s�C��1�I�I�c�!�A�#�q�k�k�)�)�*�*�
(��D�	�5�9�9���%�2���U��F�F�F���4��T�1�����C�<�<��A��E�1�4�0�0�0�0�0�0�
�c�\�\��A�C�!�G�Q�T�2�2�2�2�2�2�
�c�\�\��A�C�!�G�Q�T�2�2�2�2�2�2��5�6�6�6r1zuplo,trans,diag)rQrN�Invalid)rQrgrN)rgrNrNc	��tdtj���}tdd��}tdd��}t	t
||||||��dS)z?Test if invalid values of uplo, trans and diag raise exceptionsrCr�rOrMN)r%r*r2rr
r)r\rGr�r,rCrFr�s       r/�&test_invalid_argument_raises_exceptionz0TestTbtrs.test_invalid_argument_raises_exceptionWsR��!���
�;�;�;��
�!�Q�Z�Z����A�J�J���i���A�t�U�D�A�A�A�A�Ar1c���tjdt���}tjdt���}tdt���}d|d<|||d���\}}t	|d��d	S)
aHTest if a matrix with a zero diagonal element is singular

        If the i-th diagonal of A is zero, ?tbtrs should return `i` in `info`
        indicating the provided matrix is singular.

        Note that ?tbtrs requires the matrix A to be stored in banded form.
        In this form the diagonal corresponds to the last row.r�r�rOrCr)r}rNrQrEN)r*r�floatr%r)r\rFr�rCr:res      r/�test_zero_element_in_diagonalz'TestTbtrs.test_zero_element_in_diagonaldsw���W�V�5�
)�
)�
)���G�A�U�#�#�#�� ���6�6�6����5�	��%�2���-�-�-���4��T�1�����r1zldab,n,ldb,nrhs)rPrPrrP)rPrPrNrPc���tj||ft���}tj||ft���}tdt���}t	t
|||��dS)z2Test ?tbtrs fails correctly if shapes are invalid.r�rCN�r*rrkr%r
r)r\�ldabr��ldbr�rFr�rCs        r/�test_invalid_matrix_shapesz$TestTbtrs.test_invalid_matrix_shapests`���W�d�A�Y�e�
,�
,�
,���G�S�$�K�u�-�-�-�� ���6�6�6���i���A�.�.�.�.�.r1N)r�r�r�r<�mark�parametrizer�rLrfrirlrqr�r1r/r?r?�s��������[���W�f�-�-�+5�+5�.�-�+5�Z�[���]�N�N�+1�N�N�N�O�O��[���V�c�3�Z�0�0��[���V�c�3�Z�0�0�+7�+7�1�0�1�0�	O�O�+7�Z�[���.�3�3�3�3�3�3�3�3�3�5�6�6�B�B�	6�6�B���� �[���.�*�*�1���/�/�	��/�/�/r1r?c��dD�]}td|���}tjd|��}tjd|��}tj|��r|dz}|||��\}}}t	|d��t	|d��tj|��r[t	|d	��tt
|��tk��tt
|��tk����t	|d
����dS)Nrv�lartgr�rNrOr(�333333�?r�y��������皙�����?)	r%r*r�iscomplexobjrr�type�complexrk)r.rur`�g�cs�sn�rs       r/�
test_lartgr�s	���)�)�� ���6�6�6���H�Q������H�Q�����
�?�1���	�
��G�A��E�!�Q�K�K�	��B����G�$�$�$���3����
�?�1���	)��B�	�*�*�*��D��G�G�w�&�'�'�'��D��H�H��%�&�&�&�&��B��(�(�(�(�')�)r1c��dD�]}d}d}tjdd|��}tjdd|��}dtj|��jdz
z}|dvrt	d	|�
��}d}ntd	|�
��}|dz}|dz}d
}t
|||||��gd�gd�g|���t
|||||d���gd�dd||gg|���t
|||||dd���gd�||ddgg|���t
|||||ddd���gd�||ddgg|���t
|||||ddd���gd�d|d|gg|���t
|||||ddddd��	�	gd�||d|gg|���t
|||||ddd���gd�d|d|gg|���|||||dd���\}}	t||u��t|	|u��t
|gd�|���t
|	gd�|�����dS)NrvrvrwrOrNrrrL�fd�rotr�y��r(y@)rPrPrPrP)rrrr�r)rM)r�)rPrPrNrNr)�offx�offy)rNrNrPrP)�incxr�r�)rPrNrPrN)r��incyr�)r�r�r�r�r�)rNrNrPrNr)r�r�r�)�overwrite_x�overwrite_y)r*�fullr��	precisionr&r%rr)
r.r�r��ur�r)r�r`r]r�s
          r/�test_rotr��s4���$4�$4�������G�A�q�%� � ���G�A�q�%� � ���R�X�e�_�_�.�q�0�1�1���D�=�=� ��e�4�4�4�C��A�A�"�5��6�6�6�C�
��H�A�
��G�A��A����A�q�!�Q���,�,�,�*6�,�,�*8�>B�	D�	D�	D�	D����A�q�!�Q�!�,�,�,�|�|�|�01�1�a��|�/=�CG�	I�	I�	I�	I����A�q�!�Q�Q�Q�7�7�7�%����1�a��|�4�4�	A�	A�	A�	A����A�q�!�Q�Q�Q�!�<�<�<�%����1�a��|�4�4�	A�	A�	A�	A����A�q�!�Q�Q�Q�!�<�<�<�%����1�a��|�4�4�	A�	A�	A�	A����A�q�!�Q�Q�Q�Q�Q�!�L�L�L�%����1�a��|�4�4�	A�	A�	A�	A����A�q�!�Q�R�b�A�>�>�>�%����1�a��|�4�4�	A�	A�	A�	A��s�1�a��A�1�!�<�<�<���1���Q�������Q�������<�<�<�d�3�3�3�3���<�<�<�d�3�3�3�3�3�I$4�$4r1c
���tj�d��tj�d��}|j�|��}tj�d��dtj�d��zz}|j����|��}dD�]�}t
ddg|���\}}|dvr|���}n|���}||jd	d
z
|d|dd�d	f��\}}}tj	|dd�d	f��}	|d
|	d	<||	d
<tj	|d
d�d	f��}
d|
d	<||
d
d�<||
|�
��|d
d�dd�ftj|jd
����|d
d�dd�f<||
||dd�d
d�ftj|jd	��d���|dd�d
d�f<t|dd�d	f|	d���t|d	dd�f|	d������dS)Nr�)rOrOr(rv�larfg�larfr��FDrrL�rLrrMr�r��R��siderHr�)
r*r+rrur��conjr%�copyr-rr�r
r)�a0�a0jr.r�r�r]�alphar�ro�expectedr�s           r/�test_larfg_larfr��s^���I�N�N�4����	��	�	�&�	!�	!�B�	����"���B�
�)�
�
�6�
"�
"�R��	�(8�(8��(@�(@�%@�
@�C�

�%�*�*�,�,�
�
�3�
�
�C�
�6�6��&���'8��F�F�F���t��D�=�=����
�
�A�A����	�	�A���a�g�a�j��l�A�d�G�Q�q�r�r�1�u�X�>�>�
��q�#��=��1�1�1�a�4��)�)����g��������
�M�!�A�B�B��E�(�#�#����!����!�"�"���4��3�=�=�?�?�A�a�b�b�!�!�!�e�H�b�h�q�w�q�z�6J�6J�K�K��!�"�"�a�a�a�%���4��3��!�!�!�Q�R�R�%��"�(�1�7�1�:�*>�*>�S�I�I�I��!�!�!�Q�R�R�%����!�!�!�Q�$����5�5�5�5���!�Q�Q�Q�$����5�5�5�5�5�96�6r1c��tdtjd���}d}t|||dd���}|dks|dksJ�dSdS)	N�gesdd_lwork�	preferred�r.�ilp64iA%T)r"r!i`�Di��D)r%r*�float32r!)�sgesdd_lworkr�r�s   r/� test_sgesdd_lwork_bug_workaroundr��sq��$�M���*5�7�7�7�L��A��<��A�&*�$�
@�
@�
@�E� �I����)�!3�!3�!3�!3���!3�!3r1c���eZdZej�de��d���Zej�de��ej�dd��d�����ZdS)�	TestSytrdr.c��tjd|���}td|f��}tt||��dS)Nr�r��sytrd�r*r
r%r
rJ)r\r.�Ar�s    r/�test_sytrd_with_zero_dim_arrayz(TestSytrd.test_sytrd_with_zero_dim_arraysA��
�H�V�5�)�)�)�� ��1�$�/�/���j�%��+�+�+�+�+r1r��rLrNc��tj||f|���}td|f��\}}tjd||dzzdzdz|���|tj|��<||��\}}t|d��||d|���\}}	}
}}t|d��t
||dtj|��jzd�	��t
|	tj	|����t
|
d
��t
|d
��|||���\}}	}
}}t|d��tj
||���}tj|jd��}
|	||
|
f<tj|jddz
��}|
||dz|f<|
|||dzf<tj|||���}t|dz
��D]|}tj||���}|d|�|dzf|d|�<d||<tj|||���||tj||��zz
}tj||��}�}tj|d��}|j|||<tj|jtj||����}t
||dtj|��jzd�	��dS)
Nr�)r��sytrd_lworkrLrMr�rr�rPr�r(�r�r})r*r
r%�arange�triu_indices_fromrrr�r�r,rr-rr/�outerr�rru)r\r.r�r�r�r�r�re�datarl�erorure�k2�Qr;r�r\�i_lower�QTAQs                     r/�
test_sytrdzTestSytrd.test_sytrds���
�H�a��V�5�)�)�)��
�5��t�<�<�	��{�

�I�a��A�a�C��!��A��U�3�3�3�	
�"�
�q�
!�
!�"�"�k�!�n�n���t��T�1����!&��a�q�� >� >� >���a��C���T�1������a�a������(;�&;�#�F�F�F�F���2�7�1�:�:�&�&�&���3������S�!�!�!�!&��a�u� 5� 5� 5���a��C���T�1����

�M�!�5�)�)�)���I�a�g�a�j�!�!����!�Q�$��
�Y�q�w�q�z�!�|�
$�
$����"�Q�$��(����"�b��d�(��
�F�1�a�u�%�%�%���q��s���	�	�A����%�(�(�(�A���!��Q�q�S��M�A�b�q�b�E��A�a�D���q�!�5�)�)�)�C��F�R�X�a��^�^�,C�C�A���q�!���A�A��/�!�R�(�(���S��\��'�
��v�a�c�2�6�!�Q�<�<�(�(��	��a�a������(;�&;�#�F�F�F�F�F�Fr1N)	r�r�r�r<rrrsr�r�r�r�r1r/r�r�s��������[���W�k�2�2�,�,�3�2�,��[���W�k�2�2��[���S�&�)�)�7G�7G�*�)�3�2�7G�7G�7Gr1r�c���eZdZej�de��d���Zej�dee	e����ej�dd��d�����Z
dS)�	TestHetrd�
complex_dtypec��tjd|���}td|f��}tt||��dS)Nr�r��hetrdr�)r\r�r�r�s    r/�test_hetrd_with_zero_dim_arrayz(TestHetrd.test_hetrd_with_zero_dim_arrayLsA��
�H�V�=�1�1�1�� ��1�$�/�/���j�%��+�+�+�+�+r1zreal_dtype,complex_dtyper�r�c	�>�tj||f|���}td|f��\}}tjd||dzzdzdz|���dtjd||dzzdzdz|���zz|tj|��<tj|tjtj|������dD]"}|||���\}}	t|	d���#t||��}
||d|
�	��\}}}
}}	t|	d��t||d
tj|��jzd���t|tjtj|������t|
d
��t|d
��|||
���\}}}
}}	t|	d��tj
||���}tj|jdt���}||||f<tj|jddz
t���}|
||dz|f<|
|||dzf<tj|||���}t#|dz
��D]�}tj||���}|d|�|dzf|d|�<d||<tj|||���||tj|tj|����zz
}tj||��}��tj|d��}tj|j|��||<tjtj|j��tj||����}t||dtj|��jzd���dS)Nr�)r��hetrd_lworkrLrMr()rrL�rrr�rPr�r(r�r�r}rr)r*r
r%r�r��
fill_diagonalr�r,rr!rr�r�rr-r�rr/r�r�r�rru)r\r��
real_dtyper�r�r�r�r�r:rer�r�rlr�rorurer�r�r;r�r\r��QHAQs                        r/�
test_hetrdzTestHetrd.test_hetrdSs���
�H�a��V�=�1�1�1���5��t�<�<�	��{�

�I�a��A�a�C��!��A��Z�8�8�8��2�9�Q��1�Q�3���
�1��J�?�?�?�?�
@�	
�"�
�q�
!�
!�"�	���B�G�B�G�A�J�J�/�/�0�0�0��	"�	"�A�!�k�!�1�-�-�-�G�A�t���q�!�!�!�!��{�A�.�.��!&��a�q�� >� >� >���a��C���T�1������a�a����(<�(<�(@�&@�s�K�K�K�K���2�7�2�7�1�:�:�.�.�/�/�/���3������S�!�!�!�!&��a�u� 5� 5� 5���a��C���T�1����

�M�!�:�.�.�.���I�a�g�a�j��,�,�,����!�Q�$��
�Y�q�w�q�z�!�|�3�
/�
/�
/����"�Q�$��(����"�b��d�(��
�F�1�a�}�-�-�-���q��s���	�	�A����-�0�0�0�A���!��Q�q�S��M�A�b�q�b�E��A�a�D���q�!�=�1�1�1��a�&�2�8�A�r�w�q�z�z�2�2�2�3�A���q�!���A�A��/�!�R�(�(���W�Q�S��\�*�*��'�
��v�b�g�a�c�l�l�B�F�1�a�L�L�1�1��	��!�"�R�X�j�1�1�5�5�C�	�	�	�	�	�	r1N)r�r�r�r<rrrsr)r��zipr�r�r�r1r/r�r�Ks��������[���_�n�=�=�,�,�>�=�,��[���7� �S��n�=�=�?�?��[���S�&�)�)�A�A�*�)�?�?�A�A�Ar1r�c
���tt��D�]_\}}td|���\}}t|ddd���}|dkrYt	jgd�gd�gd	�gd
�gd�gd�g|���}t	jgd
�|���}t	jddg|���}n\t	jgd�gd�gd�gd�gd�gd�g��}t	jdgdgdgdgdgdgg��}t	jd|���}t	jgd�gd�g|���}||||||���\}	}	}	}
}	|dkrt	jgd���}nt	jgd���}t|
|d� ����adS)!N)�gglse�gglse_lworkr�rQrOrM)r�r�r_)g=
ףp=�g{�G�z�g�(\��ؿ��?)��z�G�gH�z�G�?gףp=
�ӿ���Q��)�ffffff@g���Q��?g�������?gffffffֿ)r�g{�G�z�?���Q��g{�G�z�?)�333333�?g333333�?r�g
ףp=
�)g{�G�z���{�G�z�?g�z�G���?)g��r�g�G�z��?gH�z�G�g�z�G�g=
ףp=�?r�)y���Q��?�Q����y���Q������Q��?y��Q��{�G�z@y��������=
ףp=�?)y\��(\○G�z��?y333333�R���Q�?y��Q���z�G��?y�Q�����Q����?)yףp=
��?q=
ףpݿy)\��(�?{�G�z�?y)\��(�?�(\��ſy�(\���333333�?)y�G�z��?R���Q�?yR���Q�?H�z�G�y\��(\�
ףp=
׿y)\��(�?������ɿ)y��(\��?R���Q�?y�������?{�G�z�?y�(\��ſq=
ףpݿy��Q���?q=
ףp�?)yH�z�G�?�Q���ѿy�������?���Q���y�Q��뱿�G�z��?y�p=
ף�?�p=
ף�?yR���Q�
ףp=
�?yffffff�?�G�z�y�z�G���G�z��y��Q��?ffffff
@y�p=
ף�)\��(@y��(\�@��Q��?)r�r���r�)r�r�r�r�r�)��^"��L�?��\}���?r�r�)y��!f�?$_K��d��y�^g�ŵ翸F���
@y��!f�?}���d��y61�ŵ�e��_��
@r{)r�r�r%r!r*rr
r)r�r.�func�
func_lworkr�r]r�rlr�r:�resultr�s            r/�
test_gglser��sF����'�'�,?�,?�
��U�+�,D�27�9�9�9���j��z�Q�!�q�9�9�9����7�7���5�5�5�5�5�5�3�3�3�4�4�4�3�3�3�4�4�4�6�
>C�D�D�D�A���A�A�A��O�O�O�A���"�b���/�/�/�A�A���M�M�M�N�N�N�K�K�K�K�K�K�K�K�K�K�K�K�M�N�N�A���;�-�%�,�&�-�%�,�&�-�%�,�(�)�)�A����%�(�(�(�A��H�'�'�'�):�):�):�;�5�I�I�I��!�T�!�Q��1�E�:�:�:���1�a�����7�7��x�!-�!-�!-�.�.�H�H�
�x�!:�!:�!:�;�;�H�	"�&�(�A�>�>�>�>�>�Y,?�,?r1c
�P�td��tttz��D�]x\}}d}|dkrIt	d|���}t	d|���\}}t||���|��}n\t	d|���}t	d|���\}}t||��t||��d	zz�|��}||���jzd
zd
tj
||���zz}t|d��}t||��}|||d���\}	}
}||	|
|d�
��\}}ttd|ztj�|d���z
��|zdk����zdS)Nr�rrrO�sytrf_lworkr�)�sycon�sytrf�hetrf_lwork)�hecon�hetrfr(rMrL)r�r)r]�ipiv�anormr�r_)rr�r�r)r%rr,r�rur*rrr!rr��linalg�cond)
r�r.r�r��funcon�functrfr�r�r��ldur�r:�rconds
             r/�test_sycon_heconr��s�����J�J�J���~� 5�6�6�A�A�
��U�����7�7�)�-�u�E�E�E�J�.�/A��O�O�O�O�F�G��a����#�#�E�*�*�A�A�*�-�u�E�E�E�J�.�/A��O�O�O�O�F�G��a����d�1�a�j�j��m�+�3�3�E�:�:�A��������^�Q���2�6�!�5�#9�#9�#9�!9�9���Q��
�
���z�1�-�-���w�q��Q�7�7�7���T�1��6�C�d�%�q�A�A�A���q���A�e�G�b�i�n�n�Q�!�n�4�4�4�5�5�e�;�a�?�@�@�@�@�-A�Ar1c��td��tt��D�]2\}}d}td|���\}}}}t	||���|��}||jzdz}t	||���|��}||jzdzdtj||���zz}|||��\}	}
}t|dk��||��\}}t|dk��|||��\}
}t|dk��||
��\}}
}t|dk��t||	d�����4dS)	Nr�rr)r�sygst�syevd�sygvdr�rMrg-C��6*?r�)rr�r�r%rr,rur*rrr)r�r.r�rr�r�r�r��B�eig_gvdr:rer�r]�eigs               r/�
test_sygstr��s�����J�J�J���,�,�1�1�
��U���%5�7I�<A�&C�&C�&C�"��u�e�U�
��A�J�J���e�$�$��
���W�a�K����A�J�J���e�$�$��
���W�a�K�!�b�f�Q�e�4�4�4�4�4��!�5��A�;�;����D����	�����%��(�(���4����	�����%��1�+�+���4����	�����u�Q�x�x���Q�����	������W�4�0�0�0�0�0�51�1r1c��td��tt��D�]�\}}d}td|���\}}}}t	||���|��dt	||���|��zz}||���jzdz}t	||���|��dt	||���|��zz}||���jzdzdtj	||���zz}|||��\}	}
}t|dk��||��\}}t|dk��|||��\}
}t|dk��||
��\}}
}t|dk��t||	d�	�����dS)
Nr�rr)r�hegst�heevd�hegvdr�r(rMr�-C��6?r�)rr�r)r%rr,r�rur*rrr)r�r.r�rr�r�r�r�r�r�r:rer�r]r�s               r/�
test_hegstr�s�����J�J�J���/�/�1�1�
��U���%5�7I�<A�&C�&C�&C�"��u�e�U�
��A�J�J���e�$�$�r�D��A�J�J�,=�,=�e�,D�,D�'D�D��
�������^�Q�����A�J�J���e�$�$�r�D��A�J�J�,=�,=�e�,D�,D�'D�D��
�������^�Q���R�V�A�U�%;�%;�%;�!;�;��!�5��A�;�;����D����	�����%��(�(���4����	�����%��1�+�+���4����	�����u�Q�x�x���Q�����	������W�4�0�0�0�0�0�51�1r1c�\�
���td��d\}}tt��D�]�\}}td|���\}}t	|||��}|dkr1tt
||���|����}nDtt
||��t
||��dzz�|����}tt||j
��|||���\}�}	t|	dk��tj
|d	d	�d	|�ftj|||z
f|���f��}
tj
tj||���|d	d	�|d	�ff���tj||����
�
��fd
�t!|��D��}t#tj|��}t'|
�|��|z
t)||���dtj|d��j��zd
�����d	S)z�
    This test performs an RZ decomposition in which an m x n upper trapezoidal
    array M (m <= n) is factorized as M = [R 0] * Z where R is upper triangular
    and Z is unitary.
    r�)rr���tzrzf�tzrzf_lworkr�rMr(r�rNc
���g|]P}��|�|gdd�fj��|gdd�f�����zz
��QS�N�rur�r��rOr��Id�Vros  ���r/rPztest_tzrzf.<locals>.<listcomp>@s[���M�M�M�q�r�#�a�&��A�3����6������A�3����6����)9�)9�:�:�:�:�M�M�Mr1rrr�r�r()rr�r�r%r!rrr,r
rrurr*r*r
rr/rr�rr�spacingr�)r�r�r�r.r��tzrzf_lwr�r��rzrer�r��Zrrros             @@@r/�
test_tzrzfr	$s/�����	��J�J�J��D�A�q���'�'�F�F�
��U�*�+C�16�8�8�8���x��x��A�.�.����7�7��T�!�Q�Z�Z�&�&�u�-�-�.�.�A�A��d�1�a�j�j�4��1�:�:�b�=�0�8�8��?�?�@�@�A�	�i����,�,�,���a�u�-�-�-�
��C�����	����
�I�r�!�!�!�R�a�R�%�y�"�(�A�q��s�8�5�"A�"A�"A�B�C�C���I�r�v�a�u�-�-�-�r�!�!�!�Q�R�R�%�y�9�:�:��
�V�A�U�
#�
#�
#��M�M�M�M�M�M�E�!�H�H�M�M�M���2�6�3��������a���1��j��%�&@�&@�&@���
�5�5��:�:�?� ;� ;�;�"�	F�	F�	F�	F�	F�-F�Fr1c	�F�td��tt��D�]{\}}d}|dkrWtt	||��t	||��dzzt|��z���|��}d}nBtt	||��t|��z���|��}d}td|���\}}}||��\}}	t	|d	���|��}
|d
||
��}t|t||
��|d	zdkrdnd
���|d
||
|���}t|t|�
��j|
��|d	zdkrdnd
���|d��|tj
|��tj
|��f<|d
||
|d���}t|t|�
��j|
��|d	zdkrdnd
���t	d|���|��}|d
|||dd���}t|t||j���
��j|d	zdkrdnd
�����}dS)z�
    Test for solving a linear system with the coefficient matrix is a
    triangular array stored in Full Packed (RFP) format.
    r�r�rLr(rxru)�trttf�tfttr�tfsmr�rMr}rrOrQr{�r�r�rQ)r�r,rNr�)r�r,r�N)rr�r�rrrr,r%rrr�rur*r�)
r�r.r�r�r�rrr
�Afpr:r��soln�B2s
             r/�	test_tfsmrFs���
	��J�J�J���'�'� D� D�
��U�����7�7��T�!�Q�Z�Z�$�q�!�*�*�R�-�/�#�a�&�&�8�9�9�@�@��G�G�A��E�E��T�!�Q�Z�Z�#�a�&�&�(�)�)�0�0��7�7�A��E�-�.H�49�;�;�;���u�d���q�����Q���A�J�J���e�$�$���t�B��Q����!�$��q�b�!���/2�Q�w�!�|�|�!�!��	D�	D�	D�	D��t�B��Q�e�,�,�,��!�$��q�v�v�x�x�z�k�1�(=�(=�/2�Q�w�!�|�|�!�!��	D�	D�	D�	D�).��b�	�	��"�)�A�,�,��	�!���
$�%��t�B��Q�e�#�6�6�6��!�$��q�v�v�x�x�z�k�1�(=�(=�/2�Q�w�!�|�|�!�!��	D�	D�	D�	D��!�Q�Z�Z�
�
�u�
%�
%���t�B��R�u�3�S�A�A�A��!�$��q�b�"�$���(<�(<�(>�(>�(@�/2�Q�w�!�|�|�!�!��	D�	D�	D�	D�	D�? D� Dr1c	�����td��d\}}}tt��D�]�\}}td|���\}}t	|||��}|dkrhtt
||���|����}t
||���|��}	td|���\}
}n�tt
||��t
||��dzz�|����}t
||��t
||��dzz�|��}	td|���\}
}t	|||��}|||�	��\}
�}tj	tj
||���|
d
d
�|d
�ff���tj
||�������fd�t|��D��}ttj
|��}|dkrdnd
}dtj|d��j��z}|
|
�|	|�	��\}}t!|dk��t#||�
|	��z
t%|	��|d���|
|
�|	||���\}}t!|dk��t#||���j�
|	��z
t%|	��|d���|
|
�|	d|���\}}t!|dk��t#||	�
|��z
t%|	��|d���|
|
�|	d||���\}}t!|dk��t#||	�
|���j��z
t%|	��|d������d
S)a
    This test performs a matrix multiplication with an arbitrary m x n matric C
    and a unitary matrix Q without explicitly forming the array. The array data
    is encoded in the rectangular part of A which is obtained from ?TZRZF. Q
    size is inferred by m, n, side keywords.
    r�)rrr�r�r�r�rM)�ormrz�ormrz_lworkr()�unmrz�unmrz_lworkr�Nc
���g|]P}��|�|gdd�fj��|gdd�f�����zz
��QSrrrs  ���r/rPz$test_ormrz_unmrz.<locals>.<listcomp>�s[���N�N�N�q�r�#�a�&��A�3����6������A�3����6����)9�)9�:�:�:�:�N�N�Nr1rurxrrr�rr�r(r�r�)r�r�)r�r�r�)rr�r�r%r!rrr,r*r*rr/rr�rr�rrrr�ru)�qm�qn�cnr�r.r�r�lwork_rzr�rx�orun_mrz�orun_mrz_lw�	lwork_mrzrrer�r�r��tol�cqrrros                    @@@r/�test_ormrz_unmrzr"os������	��J�J�J��J�B��B���'�'�.!�.!�
��U�*�+C�16�8�8�8���x�!�(�B��3�3����7�7��T�"�b�\�\�(�(��/�/�0�0�A��R����#�#�E�*�*�A�$4�5M�;@�%B�%B�%B�!�H�k�k��d�2�r�l�l�T�"�b�\�\�"�_�4�<�<�U�C�C�D�D�A��b�"����R����R��/�7�7��>�>�A�$4�5M�;@�%B�%B�%B�!�H�k�#�;��B�7�7�	���a�x�0�0�0�
��C��
�I�r�v�b��.�.�.��1�1�1�b�c�c�6�
�;�<�<��
�V�B�e�
$�
$�
$��N�N�N�N�N�N�E�"�I�I�N�N�N���2�6�3�����Q�w�w���C�����E�E�#�J�J�O�,�,�,���8�B��Q�i�8�8�8���D����	������Q�U�U�1�X�X�
�z�!�}�}�3�R�H�H�H�H��8�B��Q�e�9�E�E�E���D����	������Q�V�V�X�X�Z�^�^�A�.�.�.�
�1�
�
�C��	!�	!�	!�	!��8�B��Q�S�	�B�B�B���D����	������Q�U�U�1�X�X�
�z�!�}�}�3�R�H�H�H�H��8�B��Q�S��Y�O�O�O���D����	������Q�U�U�1�6�6�8�8�:�.�.�.�
�1�
�
�C��	!�	!�	!�	!�	!�[.!�.!r1c	�8�td��tt��D�]�\}}d}|dkr:t||��t||��dzz�|��}d}n%t||���|��}d}td|���\}}||��\}}t
|d	k��||d
���\}	}t
|d	k��|||d�
��\}
}t
|d	k��|||d
�
��\}}t
|d	k��t|dz|dzf|���}t|��dd�|dzd�f|dd�dd�f<||dzdzd�dd�fxxt|��d|dz�d|dz�f�	��j
z
cc<t|dz|dzf|���}
t|��dd�d|dz�f|
dd�dd�f<|
d|dz�dd�fxxt|��|dzd�|dzd�f�	��j
z
cc<t||�
dd�����t|
|�	��j
�
dd�����t|	|
�
dd�����t||
�	��j
�
dd�����|||��\}}t
|d	k��|||	d
���\}}t
|d	k��|||
|d�
��\}}t
|d	k��||||d
�
��\}}t
|d	k��t|t|����t|t|����t|t|����t|t|�������dS)�z
    Test conversion routines between the Rectengular Full Packed (RFP) format
    and Standard Triangular Array (TR)
    r�r�rLr(rxru)rrr�rrD�rGrQ)�transrrGrMNr}�F)�order)rr�r�rr,r%rr
rr�rurr�reshape)r�r.r��A_fullr&rr�A_tf_Ure�A_tf_L�A_tf_U_T�A_tf_L_T�A_tf_U_m�A_tf_L_m�A_tr_U�A_tr_L�A_tr_U_T�A_tr_L_Ts                  r/�test_tfttr_trttfr5�sm��
	��J�J�J���'�'�1:�1:�
��U�����7�7��1�a�j�j�4��1�:�:�b�=�0�8�8��?�?�F��F�F��1�a�j�j�(�(��/�/�F��F�'�(:�%�H�H�H���u��u�V�}�}�������	�����u�V�#�.�.�.�������	������v�f�3�?�?�?���$����	������v�f�3�?�?�?���$����	�����!�A�#�q�!�t��E�2�2�2����<�<����1�a�4�5�5��1���"��a�a�a�����A��a����!�!�!������V���U�a��d�U�E�Q��T�E�\� :� ?� ?� A� A� C�C�����!�A�#�q�!�t��E�2�2�2���v�,�,�q�q�q�%�1�a�4�%�x�0�����Q�Q�Q�����!�Q�$���������d�6�l�l�1�a�4�5�5�!�Q�$�%�%�<�8�=�=�?�?�A�A����!�&�(�*:�*:�2�S�*:�*I�*I�J�J�J�!�(�"*�-�-�/�/�"3�";�";�B�c�";�"J�"J�	L�	L�	L�	"�&�(�*:�*:�2�S�*:�*I�*I�J�J�J�!�(�"*�-�-�/�/�"3�";�";�B�c�";�"J�"J�	L�	L�	L��u�Q��'�'�������	�����u�Q��S�1�1�1�������	������q�(�6��D�D�D���$����	������q�(�6��D�D�D���$����	����!�&�$�v�,�,�7�7�7�!�(�D��L�L�9�9�9�!�&�$�v�,�,�7�7�7�!�(�D��L�L�9�9�9�9�c1:�1:r1c�2�td��tt��D�]�\}}d}|dkr8t||��t||��dzz�|��}n#t||���|��}td|���\}}||��\}}t
|dk��||d�	��\}}t
|dk��t|��}	t||dzzd
z|���}
t|��j
|	|
dd�<t|��}	t||dzzd
z|���}t|��j
|	|dd�<t||
��t||��|||��\}}t
|dk��|||d�	��\}
}t
|dk��t|t|����t|
t|�������dS)r$r�r�rLr()�trttp�tpttrr�rrDr%rMN)rr�r�rr,r%rrr
rrurrr)r�r.r�r*r7r8�A_tp_Ure�A_tp_L�inds�A_tp_U_m�A_tp_L_mr1r2s              r/�test_tpttr_trttpr>�s��
	��J�J�J���'�'� 8� 8�
��U�����7�7��1�a�j�j�4��1�:�:�b�=�0�8�8��?�?�F�F��1�a�j�j�(�(��/�/�F�'�(:�%�H�H�H���u��u�V�}�}�������	�����u�V�#�.�.�.�������	�����A������A�a�C��!��5�1�1�1���F�|�|�~�t�,�������A������A�a�C��!��5�1�1�1���F�|�|�~�t�,������!�&�(�3�3�3�!�&�(�3�3�3��u�Q��'�'�������	�����u�Q��S�1�1�1�������	����!�&�$�v�,�,�7�7�7�!�&�$�v�,�,�7�7�7�7�A 8� 8r1c��td��tt��D�](\}}d}|dkrgt||��t||��dzz�|��}||���jz|t|��zz}n@t||���|��}||jz|t|��zz}td|���\}}}||��\}}|||��\}	}t|dk��|||	��\}
}t|��}t|
|����*dS)	zk
    Test Cholesky factorization of a positive definite Rectengular Full
    Packed (RFP) format array
    r�r�rLr()�pftrfrrr�rN)rr�r�rr,r�rurr%rrr)
r�r.r�r�r@rrrre�	Achol_rfp�A_chol_rr:�Achols
             r/�
test_pftrfrDsS��
	��J�J�J���'�'�3�3�
��U�����7�7��a����d�1�a�j�j��m�+�3�3�E�:�:�A��A�F�F�H�H�J���3�q�6�6��)�A�A��a����#�#�E�*�*�A��A�C��!�C��F�F�(�"�A�.�/J�5:�<�<�<���u�e��E�!�H�H�	��T��%��3�-�-��	�4����	�����e�A�y�)�)���!������!�(�E�2�2�2�2�%3�3r1c���td��tt��D�]R\}}d}|dkrgt||��t||��dzz�|��}||���jz|t|��zz}n@t||���|��}||jz|t|��zz}td|���\}}}}||��\}}	|||��\}
}	|||
��\}}	t|	dk��|||��\}}
t|��}t|t|��|dzdkrd	nd
�����TdS)
z
    Test Cholesky factorization of a positive definite Rectengular Full
    Packed (RFP) format array to find its inverse
    r�r�rLr()�pftrir@rrr�rrMrOrQr{N)
rr�r�rr,r�rurr%rrrr)r�r.r�r�rFr@rrrre�
A_chol_rfp�	A_inv_rfp�A_inv_rr:�Ainvs               r/�
test_pftrirK's���
	��J�J�J���'�'�D�D�
��U�����7�7��a����d�1�a�j�j��m�+�3�3�E�:�:�A��A�F�F�H�H�J���3�q�6�6��)�A�A��a����#�#�E�*�*�A��A�C��!�C��F�F�(�"�A�%5�7@�=B�	&C�&C�&C�"��u�e�U��E�!�H�H�	��T� �5��C�=�=��
�D��%��:�.�.��	�4����	�����U�1�i�(�(�
����1�v�v��!�'�4��:�:�/2�Q�w�!�|�|�!�!��	D�	D�	D�	D�	D�-D�Dr1c��td��tt��D�]�\}}d}|dkrgt||��t||��dzz�|��}||���jz|t|��zz}n@t||���|��}||jz|t|��zz}t|df|���}t|dzdf|���}t|dz
df|���}td|���\}}}	}
|	|��\}}|||��\}
}|||
|��\}}t|d	k��tt|||
|��|||
|��\}}t|d	k��tt||��||dzd	krd
nd������d
S)z�
    Test Cholesky factorization of a positive definite Rectengular Full
    Packed (RFP) format array and solve a linear system
    r�r�rLr(rNr�rM)�pftrsr@rrrrOrQr{N)rr�r�rr,r�rurrr%rr
rrr)r�r.r�r�r��Bf1�Bf2rMr@rrrrerGrs               r/�
test_pftrsrPGs��
	��J�J�J���'�'�D�D�
��U�����7�7��a����d�1�a�j�j��m�+�3�3�E�:�:�A��A�F�F�H�H�J���3�q�6�6��)�A�A��a����#�#�E�*�*�A��A�C��!�C��F�F�(�"�A��!�Q��u�%�%�%���A�a�C��8�5�)�)�)���A�a�C��8�5�)�)�)��%5�7@�=B�	&C�&C�&C�"��u�e�U��E�!�H�H�	��T� �5��C�=�=��
�D��U�1�j�#�.�.�
��d����	�����i���:�s�;�;�;��U�1�j�!�,�,�
��d����	����!�%��1�+�+�t�/2�Q�w�!�|�|�!�!��	D�	D�	D�	D�	D�7D�Dr1c
��td��tt��D�]�\}}d}|dkrgt||��t||��dzz�|��}||���jz|t|��zz}n@t||���|��}||jz|t|��zz}|dkrdnd}tdd	d
�	|��f|���\}}}||��\}}	tj�|d���|��}
||dd|
d|��}|||��\}}	t|t|
�|
���j��d|zz��|dzd
krdnd������dS)zT
    Test for performing a symmetric rank-k operation for matrix in RFP format.
    r�r�rLr(rMr��hrrz{}frkr�r}rrOrQr{N)rr�r�rr,r�rurr%rWr*r+rrr�)
r�r.r�r��prefixrr�shfrkrr:rx�Afp_out�A_outs
             r/�test_sfrk_hfrkrWls���	��J�J�J���'�'�D�D�
��U�����7�7��a����d�1�a�j�j��m�+�3�3�E�:�:�A��A�F�F�H�H�J���3�q�6�6��)�A�A��a����#�#�E�*�*�A��A�C��!�C��F�F�(�"�A��Q�w�w���C��.���C3�39�6�&�>�>�0C�5:�<�<�<���u�e���q�����Q��I�N�N�1�a� � �'�'��.�.���%��1�b�!�Q��,�,���5��G�$�$���q�!�%��q�u�u�Q�V�V�X�X�Z�/@�/@�.@�1�Q�3�.F�)G�)G�/2�Q�w�!�|�|�!�!��	D�	D�	D�	D�	D�%D�Dr1c
�,�td��tt��D�]�\}}d}|dkrZtdd||f��tdd||f��dzz�|��}||���jz}nCtdd||f���|��}||jz|t|��zz}dtj	|d��j
��z}td	|�
��\}}}t||d���}t|dd�
��\}	}
}t||d���}||d|���\}}
}|||
d���\}}}tt|d��t|	|dd�fd��|d���t|dd�
��\}}
}||d���\}}
}|||
d���\}}}tt!|d��t!||dd�fd��|d������dS)zt
    Test for going back and forth between the returned format of he/sytrf to
    L and D factors/permutations.
    r�rrrLi���r(r'r�)�syconvr�r�r�r�F)r�	hermitianr�r}Nr�r(r)rr�r�rr,r�rurr*rr�r%r!rrrr)r�r.r�r�r rZ�trf�	trf_lwork�lwrD�D�permr�r�rer]r�rQs                  r/�test_syconvra�sU��
	��J�J�J���'�'�L�L�
��U�����7�7���b�1�a�&�)�)���b�1�a�&�)�)�"�,�-�.4�f�U�m�m�
��A�F�F�H�H�J��A�A���R�!�Q��(�(�/�/��6�6�A��A�C��!�C��F�F�(�"�A��"�*�U�U�3�Z�Z�_�-�-�-��!1�3B�IN�"P�"P�"P����Y�
�I�q��
2�
2�
2����!�u�5�5�5�
��1�d�
�I�q��
2�
2�
2���#�a�q��3�3�3���T�4��V�C��Q�/�/�/�
��1�d���Q����d�1�T�1�1�1�W�:�r�&:�&:��2�N�N�N�N���!�u�5�5�5�
��1�d��#�a�q�/�/�/���T�4��V�C��Q�/�/�/�
��1�d���Q��
�
�D��4����7��Q�$7�$7�c��K�K�K�K�K�5L�Lr1c��eZdZdZd�Zd�ZdS)�
TestBlockedQRzd
    Tests for the blocked QR factorization, namely through geqrt, gemqrt, tpqrt
    and tpmqr.
    c
���td��tt��D�]�\}}d}|dkr8t||��t||��dzz�|��}n#t||���|��}dtj|d��j��z}td|���\}}|||��\}}	}
|
d	ksJ�tj	|d
��tj
||���z}tj
||���||	z|j���zz
}tj
|��}
t|j���|ztj
||���|d���t||
z||d���|dkr:t||��t||��dzz�|��}d
}n%t||���|��}d}dD]�}d|fD]�}|||	|||���\}}
|
d	ksJ�||kr|j���}n|}|dkr||z}n||z}t|||d���||fdkr(|||	|��\}}
|
d	ksJ�t||������t!t"|||	|d���t!t"|||	|d������dS)Nr�r�rLr(r'r�)�geqrt�gemqrtr�rr}r�r(rxru�rDr�rN�r�r�rD�rDrNr�r�r)rr�r�rr,r*rr�r%rrrur�rrrr
r)r\r�r.r�r�r rerfr]�trer�r�r�rx�	transposer�r�r��q�qC�	c_defaults                      r/�test_geqrt_gemqrtzTestBlockedQR.test_geqrt_gemqrt�s ���T�
�
�
�#�F�+�+�:	A�:	A�J�C���A��Q�w�w��!�Q�Z�Z�$�q�!�*�*�R�-�/�7�7��>�>����!�Q�Z�Z�'�'��.�.���b�j���s����1�1�1�C�,�-@��N�N�N�M�E�6���q�!���J�A�q�$��1�9�9�9�9����2�������!7�!7�!7�7�A���q��&�&�&��Q��������);�;�A����
�
�A�
�A�C�H�H�J�J��N�B�F�1�E�,B�,B�,B��!#�
%�
%�
%�
%��A��E�1�3�R�8�8�8�8��Q�w�w��!�Q�Z�Z�$�q�!�*�*�R�-�/�7�7��>�>���	�	��!�Q�Z�Z�'�'��.�.���	�"�
3�
3��!�9�-�3�3�E�$�f�Q��1�4�u�E�E�E�G�A�t��1�9�9�9�9��	�)�)��C�H�H�J�J������s�{�{���U�����U��#�A�r��"�=�=�=�=��e�}�
�2�2�*0�&��A�q�/�/��	�4�#�q�y�y�y�y�$�Y��2�2�2��)3�.
�)�V�Q��1�3�?�?�?�?��)�V�Q��1�C�@�@�@�@�@�u:	A�:	Ar1c
�>
�td��tt��D�]�\}}d}|dkrot||��t||��dzz�|��}t||��t||��dzz�|��}nFt||���|��}t||���|��}dtj|d��j��z}td|���\}}d	|d
z|fD�]�}	||	|||��\}
}}}
|
d	ksJ�ttj
|
d��tj
|d����ttj
||	|z
dz
��tj
||	|z
dz
����tj||	|z
��tj||	|z
��}}tjtj
||���|f��}tj
d
|z|���||z|j���zz
}tjtj|
��tj|
��f��}t#|j���|ztj
d
|z|���|d�
��t#||ztjtj|��|f��|d�
��|dkrqt||��t||��dzz�|��}t||��t||��dzz�|��}d}nHt||���|��}t||���|��}d}dD�]}d|fD�]
}||	||||||���\}}}
|
d	ksJ�||kr|j���}n|}|dkr6tj||fd	���}tj||fd	���}||z}n5tj||fd���}tj||fd���}||z}t#|||d�
��||fdkr;||	||||��\}}}
|
d	ksJ�t||��t||������t%t&||	||||d���t%t&||	||||d��������dS)Nr�r�rLr(r'r�)�tpqrt�tpmqrtr�rrMr}r�r(rxrurgrNrhrDr�rir�r�r)rr�r�rr,r*rr�r%rrrr.rrur�rrr
r) r\r�r.r�r�r�r rqrr�lr]r�rjre�B_pent�b_pentr�r�r�rxr_rkr�r�r�rlrl�cd�CD�qCDrn�	d_defaults                                 r/�test_tpqrt_tpmqrtzTestBlockedQR.test_tpqrt_tpmqrt�s:���T�
�
�
�#�F�+�+�O	K�O	K�J�C���A��Q�w�w��!�Q�Z�Z�$�q�!�*�*�R�-�/�7�7��>�>���!�Q�Z�Z�$�q�!�*�*�R�-�/�7�7��>�>����!�Q�Z�Z�'�'��.�.���!�Q�Z�Z�'�'��.�.���b�j���s����1�1�1�C�,�-@��N�N�N�M�E�6���a���^�@
K�@
K�� %��a��A�q� 1� 1�
��1�a���q�y�y�y�y��R�W�Q��^�^�R�W�Q��^�^�<�<�<��R�W�Q��A���	�2�2�B�G�A�q�1�u�q�y�4I�4I�J�J�J�"$���A��E�!2�!2�B�G�A�q�1�u�4E�4E����N�B�F�1�E�$:�$:�$:�F�#C�D�D���F�1�q�5��.�.�.��Q��������1C�C���N�B�G�A�J�J��
�a�0@�0@�#A�B�B�� �����
�
�Q����q�1�u�E�0J�0J�0J�%(�r�3�3�3�3���A��r�~�r�w�q�z�z�6�6J�'K�'K�%(�r�3�3�3�3���7�7��a����d�1�a�j�j��m�3�;�;�E�B�B�A��a����d�1�a�j�j��m�3�;�;�E�B�B�A� #�I�I��a����+�+�E�2�2�A��a����+�+�E�2�2�A� #�I�&�7�7�D�"%�y�!1�7�7��%+�V�A�q�!�Q���27�&9�&9�&9�
��1�d�#�q�y�y�y�y� �I�-�-� !����
�
�A�A� !�A��3�;�;�!#���A��Q�!?�!?�!?�B�!#���A��Q�!?�!?�!?�B�"#�b�&�C�C�!#���A��Q�!?�!?�!?�B�!#���A��Q�!?�!?�!?�B�"$�q�&�C�'��C�c��C�C�C�C� �%�=�J�6�6�9?���1�a��A�9N�9N�6�I�y�$�#'�1�9�9�9�9�(��A�6�6�6�(��A�6�6�6��37�8�i���A�q�!�Q�S�I�I�I�I��i���A�q�!�Q�c�J�J�J�J�J�A@
K�O	K�O	Kr1N)r�r�r�r;rorzr�r1r/rcrc�sJ��������
<A�<A�<A�|QK�QK�QK�QK�QKr1rcc�,�td��tt��D�]n\}}d}d}td|���}|dkrmt	|||z
���|��dt	|||z
���|��zz}||���jz}n0t	|||z
���|��}||jz}||��\}}}}	t|��}
d|
||z
d�||z
d�f<t|	d��d	tjtj��j
z}d	tjtj��j
z}|d
vr|n|}
t||dz
dd�|dz
f|
���j|
zd|
���||d���\}}}}	t!|��}d|||z
d�||z
d�f<t|	d��d	tjtj��j
z}d	tjtj��j
z}|d
vr|n|}
t||dz
dd�|dz
f||���jzd|
�����pdS)
Nr�rrrM�pstrfr�rLr(r����rrMrIr��rr�r�r%rr,r�rurrr*r�r�r�r2rr)r�r.r�r~r|r�r��piv�r_crerQ�single_atol�double_atolr)rDs               r/�
test_pstrfr�B�����J�J�J���'�'�#P�#P�
��U���
�� ���6�6�6����7�7��Q��!����#�#�E�*�*�R�$�q�!�A�#�,�,�2E�2E�e�2L�2L�-L�L�A��A�F�F�H�H�J��A�A��Q��!����#�#�E�*�*�A��A�C��A�!�E�!�H�H���3��T���G�G�� "��#��'�(�(�C�!�G�H�H�
���T�1�����R�X�b�j�1�1�5�5���R�X�b�j�1�1�5�5��!�V�m�m�{�{�����#�a�%�����C��E��*�A�F�F�H�H�J��N��$�O�O�O�O�!�E�!�1�-�-�-���3��T���G�G�� "��#��'�(�(�C�!�G�H�H�
���T�1�����R�X�b�j�1�1�5�5���R�X�b�j�1�1�5�5��!�V�m�m�{�{�����#�a�%�����C��E��*�A������
�N��$�O�O�O�O�O�G#P�#Pr1c�,�td��tt��D�]n\}}d}d}td|���}|dkrmt	|||z
���|��dt	|||z
���|��zz}||���jz}n0t	|||z
���|��}||jz}||��\}}}}	t|��}
d|
||z
d�||z
d�f<t|	d��d	tjtj��j
z}d	tjtj��j
z}|d
vr|n|}
t||dz
dd�|dz
f|
���j|
zd|
���||d���\}}}}	t!|��}d|||z
d�||z
d�f<t|	d��d	tjtj��j
z}d	tjtj��j
z}|d
vr|n|}
t||dz
dd�|dz
f||���jzd|
�����pdS)
Nr�rrrM�pstf2r�rLr(r�r}r~rIr�r)r�r.r�r~r�r�r�r�r�rerQr�r�r)rDs               r/�
test_pstf2r�jr�r1c�
�tjgd�gd�gd�gd�g��}tjgd�gd�gd�g��}tt��D�]/\}}|dkr6tjgd	�gd
�gd�gd�g��}|�|��}nWtjgd
�gd�gd�g|���}|tjgd�gd�gd�g��dzz
}|�|��}td|���}||��\}}}}	}
}|dkr7t
|�|��|dd�df|z|zdd�����t
|�|��|dd�df|z|zdd�����1dS)N)g�?r�g�1w-!�?g�d�`TRۿ)r�g��s���r�r�)g�s����?r�g2�%䃮�g,e�X�)r�g�sF���g%u���g?���?)y/n��ҿ���&�?yDio�ɴ?��A�f�?y �o_��[ A�cп)y�s���ֿ�A�f��ҿy�Pk�w��?��JY�8��y�5�;Nё���C�l��?)y�Y��ڊ�?1�*��?y�=yX�ѿ@a��+�?y�ho�ſF���x��rM)gЈ�Bg�t�Bgffffff@g�ٓ�)�@g�������g��#�fD�gffffff�)gH�z�G�?g��Q���g'V���g�p=
ף�)g�(\���r�g�S��7нrw)gq=
ףp��g����Ag��(\��)g333333��g���Bg333333ÿ)gZ9�����=g�Q����g�����ֽr�)gffffff@gtޅBr )g��(\���g�Z�gq=
ףp�?)gE�o�p�=g��Q���?gZ�Eq�ҽr(�geequrr�rI)r*rr�r�r,r%r)�desired_real�desired_cplxr�r.r�r�r~r��rowcnd�colcnd�amaxres            r/�
test_geequr��sZ���8�>�>�>�@�@�@�@�@�@�@�@�@�B�C�C�L�
�8�1�1�1�1�1�1�1�1�1�
2�3�3�L� ��'�'�/�/�
��U���7�7���C�C�C�E�E�E�E�E�E�E�E�E�G�H�H�A�������A�A���:�:�:�:�:�:�:�:�:�<�CH�J�J�J�A�
���:�:�:�;�;�;�:�:�:�<�=�=�=?�@�
@�A�������A� ���6�6�6��+0�5��8�8�(��1�f�f�d�D���7�7��L�/�/��6�6��!�!�!�T�'�
�1��Q��!"��
/�
/�
/�
/�
/�
�L�/�/��6�6��!�!�!�T�'�
�1��Q��!"��
/�
/�
/�
/�
/�3/�/r1c�"�
�tjgd���}tt��D]�\}}tjd|���}||dkrdnd���
tj�
fd�tdd	��D��|���}|tjtj|����z
}td
|���}||��\}}}}	ttj
|���t��|����dS)N)
rrrrrrr}r}rrBrrr�rMr�r(c� ��g|]
}�d|zz��S)r�r�)rOr�r�s  �r/rPztest_syequb.<locals>.<listcomp>�s!���:�:�:��e�b�!�e�m�:�:�:r1���rP�syequb)
r*rr�r�rr/�rot90r,r%r�log2r,r�)�
desired_log2sr�r.r�rlr�r��scondr�rer�s          @r/�test_syequbr��s����H�?�?�?�@�@�M���'�'�	<�	<�
��U��F�2�U�#�#�#����C�!�G�G�b�b��-�-���H�:�:�:�:�U�2�q�\�\�:�:�:�%�H�H�H��	�R�X�b�g�a�j�j�
!�
!�!��!�(�%�8�8�8��%�v�a�y�y���5�$���R�W�Q�Z�Z�&�&�s�+�+�]�;�;�;�;�	<�	<r1Tz.Failing on some OpenBLAS version, see gh-12276)�reasonc	��tjdgdzdgdzz��tjtjd��d���dzz}tj|��\}}}}t|d��t
tj|��d	d
gdzd	gzdgdzz��tjdtjtj	dd
����zdz��}d|d<d|d<tj
|�tj��d���\}}}}t|d��t
tj|��gd���dS)NrMrPi�rTrL)rer(rr�r����r�rQ�i�rPrPy0@)rPrr�)rr}r}rrr�rr}r}rr)
r*r,rr�zheequbrrr�r�r��cheequbr,�	complex64)r�r�r�r�res     r/�test_heequbr��s@��	����A����q�� �!�!�B�G�B�G�A�J�J�!�$<�$<�$<�R�$?�?�A�!�>�!�,�,��A�u�d�D���q�����B�G�A�J�J��S�	�!��r�d� 2�b�T�!�V� ;�<�<�<�
���2�6�"�)�B��*�*�+�+�+�b�0�1�1�A��A�d�G��A�d�G�!�>�!�(�(�2�<�*@�*@��J�J�J��A�u�d�D���q�����B�G�A�J�J� I� I� I�J�J�J�J�Jr1c��tj�d��d}tj�|��}tj�|��tj�|��dzz}t	t
��D�]n\}}|dkrPtj�||��}|�|��}||z}|�|��}nstj�||��tj�||��dzz}|�|��}||z}|�|��}td|���}td|���}||d�	��\}	}
}}||	||
|d�
��\}
}|dkr*t|�|��|
|zd�����Ft|�|��|
|zd�����pdS)
Nrrrr(rM�getc2r��gesc2r�r#)�
overwrite_rhsrOr{)	r*r+rrr�r�r,r%r)r�r�r�r�r.r�r�r�r��lur��jpivrer�rXs               r/�test_getc2_gesc2r��s����I�N�N�2����
�A��9�>�>�!�$�$�L��9�>�>�!�$�$�r�y�~�~�a�'8�'8��';�;�L���'�'�:�:�
��U���7�7��	���q�!�$�$�A�������A��L� �A�������A�A��	���q�!�$�$�r�y�~�~�a��';�';�B�'>�>�A�������A��L� �A�������A� ���6�6�6�� ���6�6�6��$�u�Q�A�6�6�6���D�$���5��Q��d�!�<�<�<���5���7�7�%�l�&9�&9�%�&@�&@�&'��g�q�
:�
:�
:�
:�
:�
&�l�&9�&9�%�&@�&@�&'��g�q�
:�
:�
:�
:�
:�+:�:r1r)rQrPr��jobarQ�joburO�jobv�jobrrL�jobpc�&�td��|\}}	dtj|��jz}
t	||��}td|���}|dk}
|dk}|dko||	k}tj|��}|dko|
o|}|dko|o|o|}|dko|
o|o|}|rd}n	|s|rd}nd	}|dkr$|dkrtt||||||||�	�	dS||||||||�
��\}}}}}}t||��|�s�|d	|dz|d|	�z}t|t|d�
��|
���|dkr|dd�d|	�f}|
rC|rAt|tj|��z|�
��jz||
���|
r>t|�
��j|ztj|	��|
���|r>t|�
��j|ztj|	��|
���t|d	tj�|����t|dtj|����t|dd	��dSdS)a�Test the lapack routine ?gejsv.

    This function tests that a singular value decomposition can be performed
    on the random M-by-N matrix A. The test performs the SVD using ?gejsv
    then performs the following checks:

    * ?gejsv exist successfully (info == 0)
    * The returned singular values are correct
    * `A` can be reconstructed from `u`, `SIGMA`, `v`
    * Ensure that u.T @ u is the identity matrix
    * Ensure that v.T @ v is the identity matrix
    * The reported matrix rank
    * The reported number of singular values
    * If denormalized floats are required

    Notes
    -----
    joba specifies several choices effecting the calculation's accuracy
    Although all arguments are tested, the tests only check that the correct
    solution is returned - NOT that the prescribed actions are performed
    internally.

    jobt is, as of v3.9.0, still experimental and removed to cut down number of
    test cases. However keyword itself is tested externally.
    rr'�gejsvr�rMrLrrBr)r�r�r�r��jobtr�NF)r"r�)rr*r�r�r0r%rxr
rrrrr,r�ru�identityr��matrix_rank�
count_nonzero)rr.r�r�r�r�r�r�r�r�r)r�r��lsvec�rsvec�l2tran�
is_complex�invalid_real_jobv�invalid_cplx_jobu�invalid_cplx_jobv�exit_status�svar�r�r�r�re�sigmas                            r/�test_gejsv_generalr�s��B	��H�H�H��D�A�q����%���$�$�D�#�D�%�0�0�A��W�E�2�2�2�E�

�1�H�E��1�H�E��a�i�
%�a�1�f�F����#�#�J����H�U��H�Z������M�U�-=�v�(>�M�:�����M�U�-=�v�(>�M�:��
�����	��/��������q���t�q�y�y��i���4��t�T�4��N�N�N�N�N�',�u�Q�26�26�26�26�26�26�
(8�(8�(8�$��Q��4���	�T�;�'�'�'��	&��!�W�t�A�w�&�#�b�q�b�'�1�E��E�3�q�U�#;�#;�#;�$�G�G�G�G��q�y�y��a�a�a��!��e�H���
O��
O���B�G�E�N�N� 2�Q�V�V�X�X�Z� ?���N�N�N�N��
K�������
�Q����A���T�J�J�J�J��
K�������
�Q����A���T�J�J�J�J���q��2�9�#8�#8��#;�#;�<�<�<���q��2�#3�E�#:�#:�;�;�;�
��q��1�%�%�%�%�%�5	&�	&r1c�V�td|���}|d��\}}}}}}t|d��t|jd��t|jd��t|tjdg|�����tjd|���}||��\}}}}}}t|d��t|jd��t|jd��t|tjdg|�����tjd|���}||��\}}}}}}t|d��t|jd��t|jd��t|tjg|�����tjtjd���d	d	�����	|��}tj
||jz��}|�d
��}	||��}
t||	��dS)z*Test edge arguments return expected statusr�r�r�r�rLrL�rLr�r'rrr�N)r%rr-r*rr�sinr�r)r,�asfortranarrayrur�r)r.r�r�r�r�r�r�rer��Acr:s           r/�test_gejsv_edge_argumentsr�ms��
�W�E�2�2�2�E�$)�5��9�9� �C��A�t�U�D���q�������&�!�!�!����&�!�!�!���b�h��t�5�1�1�1�2�2�2�	���E�"�"�"�A�#(�5��8�8� �C��A�t�U�D���q�������&�!�!�!����&�!�!�!���b�h��t�5�1�1�1�2�2�2�	���e�$�$�$�A�#(�5��8�8� �C��A�t�U�D���q�������&�!�!�!����&�!�!�!���b�h�r��/�/�/�0�0�0�	��r�y��~�~�%�%�b�"�-�-�.�.�5�5�e�<�<�A�
��!�a�c�'�"�"�A�	
������B�
��a���A��A�r�����r1�kwargsrTr�c��tjdt���}tdt���}t	t
||fi|��dS)z-Test invalid job arguments raise an Exception)rMrMr�r�Nrn)r�r�r�s   r/� test_gejsv_invalid_job_argumentsr��sJ��	���e�$�$�$�A��W�E�2�2�2�E��)�U�A�0�0��0�0�0�0�0r1zA,sva_expect,u_expect,v_expect)g)\��(@g�p=
ף��gffffff�?g
ףp=
��)g�Q����?g���Q���g�G�z�?g�(\���)g���Q�޿g���Q��g�G�z��?g�z�G�ʿ)g��Q��?g��Q���?gH�z�G�?g)\��(�?)g�������gq=
ףp@g333333��r�)�ףp=
��?g��(\��r�g��(\��)g c�ZB�#@gI.�!�v
@g?�ܵ�?r�)g�C����?g�=yX�5�gc�=yX��g�a��4�?)gB`��"��?g�:pΈҞ�g�ʡE���?gn4��@��?)g[B>�٬�?g�٬�\m�?gJ{�/L��?g�
O��e�?)g�c]�F��gꕲq�׿g�\m���?�f�c]�F�)g؁sF��ڿg�ZB>���?g0L�
F%�?gq=
ףp��)g����?g�R�!�u�?gu�Vſg���&Sٿ)g��ǘ���?gV-��g	�^)�p?g�(�
�)g�Fx$�g�6�[ ٿgU���N@��g�i�q���?)g1�Zd�?g�O��nӿgΈ����?g�_vO�?)g}?5^�Iؿg5�8EGr�?gio���?g7�[ A�c���d}td|j���}||��\}}}}	}
}t|||���t|||���t|||���dS)z~
    This test implements the example found in the NAG manual, f08khf.
    An example was not found for the complex case.
    r�r�r�r�N)r%r.r)r��
sva_expect�u_expect�v_expectr)r�r�r�r�r�r�res            r/�test_gejsv_NAGr��s|��0�D��W�A�G�4�4�4�E�#(�5��8�8� �C��A�t�U�D��J��$�/�/�/�/��H�a�d�+�+�+�+��H�a�d�+�+�+�+�+�+r1c	��td��d}dtj|��jz}t	|dz
f|���}t	|f|���}t	|dz
f|���}|���|���|���g}tj|��tj|d��ztj|d��z}tj�|��}||z}	td|���\}
}|
|||��\}}
}}}}t||d��t||d��t||d	��tj|
d��tj|d��ztj|d	��z}tj||���}t|��D]K\}}||dz
}|dd�||gf|dd�||gf<|dd�|fxx|dd�|dzf|zz
cc<�Ld|ddz
}}|dd�||gf|dd�||gf<t|||z|�
��|	���}|||
||||	��\}}t|	|��t|||�
��|tvr
d}|j|z}nd}|���j|z}|||
|||||�
��\}}t|||�
��t#t$��5|
|dd�||��ddd��n#1swxYwYt#t$��5|
||dd�|��ddd��n#1swxYwYt#t$��5|
|||dd���ddd��n#1swxYwYt#t&��5|
|d|dd�|d��ddd��n#1swxYwYd|d<d|d<|
|||��\}}}}}} tj�||dz
dkd�||dz
����dS)Nrrrr'rLr�r}��gttrf�gttrsrrMr�rurxrz3?gttrf: _d[info-1] is {}, not the illegal value :0.)rr*r�r�r0r�r,r+rr%r	rr�rr�rur�r
rJr�testingrrW)!r.r�r)�durl�dl�diag_cpyr�r�r�r�r��_dl�_d�_du�du2r�rerQrDr;r�r��b_cpy�x_gttrsr��b_trans�__dl�__d�__du�_du2�_ipiv�_infos!                                 r/�test_gttrf_gttrsr��s���	��H�H�H�
�A����%���$�$�D�
%�a��c�V�5�	9�	9�	9�B�#�Q�D��6�6�6�A�	$�a��c�V�5�	9�	9�	9�B����	�	�1�6�6�8�8�R�W�W�Y�Y�/�H�
���
�
�R�W�R��_�_�$�r�w�r�1�~�~�5�A�
�	���q���A�	�A��A�#�$6�e�D�D�D�L�E�5�$)�E�"�a��$4�$4�!�C��S�#�t�T��r�8�A�;�'�'�'��q�(�1�+�&�&�&��r�8�A�;�'�'�'�	���A������a���(�2�7�3��?�?�:�A�
��q�����A��#�������1��1�g��k���1�1�1�s�A�h�;���!�!�!�a��X�+��	�!�!�!�Q�$����1�Q�Q�Q��!��V�9�Q�;��������b��A��s�A��q�q�q�3��(�{�^�A�a�a�a�!�S��k�N��A�q�1�u�4�(�(�(�(�
�F�F�H�H�E��E�#�r�3��T�1�5�5�M�G�T��q�%� � � ��A�w�T�*�*�*�*�
�������#��'������&�&�(�(�*�q�.���E�#�r�3��T�7�%�H�H�H�M�G�T��A�w�T�*�*�*�*�
�z�	"�	"���
��b��"��g�q�"����������������������	�z�	"�	"���
��b�!�C�R�C�&�"����������������������	�z�	"�	"���
��b�!�R����W����������������������
�y�	!�	!�#�#�
��b��e�Q�r��r�U�B�q�E�"�"�"�#�#�#�#�#�#�#�#�#�#�#����#�#�#�#�
�B�q�E��A�a�D�*/�%��A�r�*:�*:�'�D�#�t�T�5�%��J���s�4�!�8�}��)�L���s�4�!�8�}�-�-�/�/�/�/�/sH�L8�8L<�?L<�M9�9M=�M=�N:�:N>�N>�"P�P�Pz1du, d, dl, du_exp, d_exp, du2_exp, ipiv_exp, b, x)g������@r��ffffff�?r�)rr�g����������ffffff@)�333333@�������@r�g�)r�r�r�r�)r�r�rR���g��C�>�)r}r�rS)rMrNrOrPrPg������@gffffff@��g������%@g������@g������	�rvgffffff&�g�����3@r�rPrRrNrBr)�@�@�?���?��?�)���������������?r���������ffffff
@�333333ӿ333333@�ffffff
��������?)��?���?�?�@�r�)r�r�r�r�)r�r�r�r�y�~�:p��ffffff�?)r�r�r�y333333@�y������@������@y333333@3333332@y�������333333�yffffff-�ffffff#@y�333333�yfffff�?@�������y333333�������"@y𿚙�����?y�ffffff(@r�r�y@�y�?@y@@r�y��r�r�y@�c	�:�td|d|df��\}	}
|	|||��\}}}
}}}t||��t|
|��t||d���t||��|
|||
|||��\}}t||��dS)Nr�rr�r�)r%r)r�rlr��du_exp�d_exp�du2_exp�ipiv_expr�r�r�r�r�r�r�r�r�rer�s                  r/�0test_gttrf_gttrs_NAG_f07cdf_f07cef_f07crf_f07csfrs���d$�$6��A���1���G�G�L�E�5�$)�E�"�a��$4�$4�!�C��S�#�t�T��C��!�!�!��C�� � � ��B��D�)�)�)�)��D�(�#�#�#��E�#�r�3��T�1�5�5�M�G�T��G�Q�����r1))rNrR)rRrNr�c�r�td|���}|\}}|||���\}}t|d��dS)N�geqrfp_lworkr�rrr)r.r-rr�r�r�res       r/�test_geqrfp_lworkr^sM��$�^�E�B�B�B�L��D�A�q��,��a�(�(�(�K�E�4���q�����r1zddtype,dtypec��td��dtj|��jz}d}t	|f|��dz}t	|dz
f|��}tj|��tj|d��ztjtj|��d��z}|���|���g}td|���}|||��\}	}
}t||d	��t||d��t|d	d
�|�����tj|
d��tjtj|����z}tj|	��}
t|||
z|���jz|���t	|f|��}||z}td
|���}||	|
���|��\}}t|d	d�|�����t|||���dS)Nrr'rrrOrLr}�pttrfr�rzpttrf: info = {}, should be 0)�err_msgr��pttrszpttrs: info = {}, should be 0)rr*r�r�r0r,r�r�r%r	rrWrrr�ru)�ddtyper.r)r�rlr�r�r�rr��_ererDr_r�r�r�_xs                  r/�test_pttrf_pttrsrgs��	��H�H�H��r�x����"�"�D�
�A�
	$�Q�D�&�1�1�A�5�A�#�Q�q�S�F�E�2�2�A�	���
�
�R�W�Q��^�^�#�b�g�b�g�a�j�j�!�&<�&<�<�A������!�&�&�(�(�#�H��W�E�2�2�2�E��5��A�;�;�L�B��D��q�(�1�+�&�&�&��q�(�1�+�&�&�&���q�"A�"H�"H��"N�"N�O�O�O�O�	���B���"�'�"�'�!�*�*�-�-�-�A�
�����A��A�q��s�1�;�;�=�=�?�*��6�6�6�6�	$�Q�D�%�0�0�A�	�!��A�
�W�E�2�2�2�E��u�R������A�&�&�H�B����q�"A�"H�"H��"N�"N�O�O�O�O��A�r��%�%�%�%�%�%r1c��d}td|���}t|f|��dz}t|dz
f|��}tt||dd�|��tt|||dd���dS)Nrrrr�rMrLr})r%r0r
rJ)rr.r�rrlr�s      r/�*test_pttrf_pttrs_errors_incompatible_shaper
�s���	�A��W�E�2�2�2�E�#�Q�D�&�1�1�A�5�A�#�Q�q�S�F�E�2�2�A��*�e�Q�s��s�V�Q�/�/�/��*�e�Q��#�2�#��/�/�/�/�/r1c	��d}td|���}t|f|��dz}t|dz
f|��}d|d<d|d<|||��\}}}t||dz
dd�||dz
����t|f|��}|||��\}}}t	|dkd��dS)	Nrrrr�rMrLrz3?pttrf: _d[info-1] is {}, not the illegal value :0.z2?pttrf should fail with non-spd matrix, but didn't)r%r0rrWr)	rr.r�rrlr�r�r	res	         r/�'test_pttrf_pttrs_errors_singular_nonSPDr�s���	�A��W�E�2�2�2�E�#�Q�D�&�1�1�A�5�A�#�Q�q�S�F�E�2�2�A��A�a�D��A�a�D��5��A�;�;�L�B��D���D�1�H��q�F��&��D�1�H��&�&�(�(�(�
	$�Q�D�&�1�1�A��5��A�;�;�L�B��D��D�A�I�K�L�L�L�L�Lr1z%d, e, d_expect, e_expect, b, x_expect)rOrr�r�rP)rr�r�rS)rOrTr��rL)r�gK�=�U�rvr�rrrM��A�g@r}r�)r�)�.�)y0@0@y2@"���?�)rrTrLrO)r�r�ryP@0@y0�@�y@W@O@y�N@�P�y�S@T�y�Q@�R�y,@;�y�A@.@y��r�c��d}td|d���}|||��\}}	}
t|||���t|	||���td|d���}|||	���|��\}}
t|||���|jtvr&|||	|d���\}}
t|||���dSdS)	Nr�rrr�r�rrLr�)r%rr�r.r))
rlr��d_expect�e_expectr��x_expectr)rr�r	rerr
s
             r/�test_pttrf_pttrs_NAGr�s���4�D��W�A�a�D�1�1�1�E��5��A�;�;�L�B��D��B��t�,�,�,�,��B��t�,�,�,�,��W�A�a�D�1�1�1�E��u�R������A�&�&�H�B���B��t�,�,�,�,�	�w�.� � ��5��R��!�,�,�,���D���H�4�0�0�0�0�0�0�!� r1c�l�|dkr�t||f|��}|tjtj|��d|zz��z}||���jzdz}t
|��d}t|f|��dz}t|dz
f|��}tj|��tj|d��ztj|d��z}||z|���jz}	|}
n�t|f|��}t|dz
f|��}|dz}tj|��tj|d��ztj|d��z}	tj|��tj|d��ztj|d��z}
|||	|
fS)NrLrOrMr})r0r*r,r
r�rur )r.�realtyper��	compute_z�A_eig�vrrlr��trir��zs           r/�pteqr_get_d_e_A_zr%�sy���A�~�~�+�Q��F�E�:�:����������a��c� 1�2�2�2���������'�1�,��
�%�[�[��^��'���h�7�7�!�;��'��1����9�9���g�a�j�j�2�7�1�a�=�=�(�2�7�1�b�>�>�9����H�r�w�w�y�y�{�"�����
(���h�7�7��'��1����9�9��
��E���G�A�J�J����A���&����B���7���G�A�J�J����B���'�"�'�!�Q�-�-�7��
�q�!�Q�<�r1zdtype,realtyper c��td��dtj|��jz}t	d|���}d}t||||��\}}}}	||||	|���\}
}}}
t
|
dd�|
����ttj	t|��d��tj	|
��|�	��|r�t|tj|��jztj
|��|�	��t|tj|
��ztj|��jz||�	��d
Sd
S)a
    Tests the ?pteqr lapack routine for all dtypes and compute_z parameters.
    It generates random SPD matrix diagonals d and e, and then confirms
    correct eigenvalues with scipy.linalg.eig. With applicable compute_z=2 it
    tests that z can reform A.
    rr}�pteqrr�rr�rlr�r$r rzinfo = {}, should be 0.r�N)rr*r�r�r%r%rrWr�sortr r�rur�r,)r.rr r)r'r�rlr�r�r$�d_pteqr�e_pteqr�z_pteqrres              r/�
test_pteqrr-	sb��	��H�H�H�������#�#�D��g�e�4�4�4�E�
�A�"�5�(�A�y�A�A�J�A�q�!�Q�&+�e�a�1��Y�&O�&O�&O�#�G�W�g�t���q�3�:�:�4�@�@�A�A�A��B�G�D��G�G�A�J�'�'����)9�)9��E�E�E�E��&���"�'�'�"2�"2�"4�4�b�k�!�n�n�!�	#�	#�	#�	#�	��"�'�'�"2�"2�2�R�W�W�5E�5E�5G�G���	&�	&�	&�	&�	&�	&�&�&r1c��td��td|���}d}t||||��\}}}}||dz
|||���\}	}
}}|dksJ�dS)Nrr'r�rrrO�r$r r�rr%r%�
r.rr r'r�rlr�r�r$r*r+r,res
             r/�test_pteqr_error_non_spdr2#	sy��	��H�H�H��g�e�4�4�4�E�
�A�"�5�(�A�y�A�A�J�A�q�!�Q�',�e�A��E�1��Y�&O�&O�&O�#�G�W�g�t��!�8�8�8�8�8�8r1c	�L�td��td|���}d}t||||��\}}}}tt||dd�|||���tt|||dd�||���|r$tt||||dd�|���dSdS)Nrr'r�rrr}r/)rr%r%r
rJ)	r.rr r'r�rlr�r�r$s	         r/�"test_pteqr_raise_error_wrong_shaper42	s���	��H�H�H��g�e�4�4�4�E�
�A�"�5�(�A�y�A�A�J�A�q�!�Q��*�e�Q�s��s�V�Q�!�y�I�I�I�I��*�e�Q��#�2�#��!�y�I�I�I�I��N��j�%��A��3�B�3��9�M�M�M�M�M�M�N�Nr1c���td��td|���}d}t||||��\}}}}d|d<d|d<|||||���\}	}
}}|dksJ�dS)Nrr'r�rrrr/r0r1s
             r/�test_pteqr_error_singularr6A	s���	��H�H�H��g�e�4�4�4�E�
�A�"�5�(�A�y�A�A�J�A�q�!�Q��A�a�D��A�a�D�&+�e�A�q�A��&K�&K�&K�#�G�W�g�t��!�8�8�8�8�8�8r1zcompute_z,d,e,d_expect,z_expect)g�p=
ף@r�gq=
ףp�?r�)g\��(\	@g
ףp=
�g�������?)gŏ1w- @gR'����?g/n���?g&䃞ͪ�?)g c�ZB>�?g�C�l��?g�:pΈ�ڿg��?��?)gaTR'���?g���Sۿg}гY���?g%u�ο)g�\m����g�٬�\m�?g��A�f�?gL�
F%u�)g��ǘ����gŏ1w-!�?g333333�?g��z6��?c�n�d}td|j���}tj|��tj|d��ztj|d��z}|||||���\}}	}
}t	|||���t	tj|
��tj|��|���dS)	zb
    Implements real (f08jgf) example from NAG Manual Mark 26.
    Tests for correct outputs.
    r�r'r�rLr}r(r�N)r%r.r*r,rr�)r rlr�r�z_expectr)r'r$r�r	�_zres            r/�test_pteqr_NAG_f08jgfr:P	s��� �D��g�a�g�6�6�6�E�
���
�
�R�W�Q��]�]�"�R�W�Q��^�^�3�A��u�q�A��i�@�@�@��B��B���B��t�,�,�,�,��B�F�2�J�J���x� 0� 0�t�<�<�<�<�<�<r1�matrix_size)r�)rRrQ�rQrQc�V�tj�d��dtj|��jz}dtj|��jz}td|���}td|���}|\}}t
||f|���}||��\}	}
}tj|	��}||kr8tj||f|���}
|	|
dd�d|�f<||
|
|���d}n ||	dd�d|�f|
|���d}t||z||�	��ttj
|jd��||���j
z||�
��t|tj|��|�	��ttjtj|��tjt#tj|������k����t|dk��t
||f|���dz}t%|��\}}||��\}}}ttjtj|��dk��o)tjtj|��dk����dS)Nr�r'�geqrfpr��orgqr)ror�rr�rIr})r*r+rr�r�r%r0rr
rrr-r�rur�allr,r[rr0)r.r;r�r)r?�gqrr�r�r��qr_Arorer~�qqrrl�
A_negative�r_rq_neg�q_rq_neg�rq_A_neg�tau_neg�info_negs                     r/�test_geqrfprKi	s����I�N�N�2�����r�x����"�"�D��r�x����"�"�D�
�x��
6�
6�
6�F�
�G�E�
2�
2�
2�C��D�A�q�	$�Q��F�%�8�8�8�A��f�Q�i�i�O�D�#�t�	���
�
�A�
	�1�u�u��h��1�v�U�+�+�+����A�A�A�r��r�E�
�
�C���A�&�&�&�q�)����C��Q�Q�Q����U���A�.�.�.�q�1���A�a�C���&�&�&�&��B�F�1�7�1�:�&�&��1�6�6�8�8�:��T�������A�r�w�q�z�z��-�-�-�-��B�F�2�7�1�:�:����R�W�Q�Z�Z��� 9� 9�9�:�:�;�;�;��D�A�I����-�a��V�5�A�A�A�B�F�J��J����H�h�"(�&��"4�"4��H�g�x��B�F�2�7�8�$�$�q�(�)�)�
#��F�2�7�1�:�:��>�"�"�$�$�$�$�$r1c��tjg��}td|j���}t	t
||��dS)Nr?r�)r*rr%r.r
r)�A_emptyr?s  r/�#test_geqrfp_errors_with_empty_arrayrN�	s;���h�r�l�l�G�
�h�g�m�
<�
<�
<�F��)�V�W�-�-�-�-�-r1�driver)�ev�evd�evr�evx�pfx�sy�hec�v�d}|dkrtnt}t||zdz|d���}t||zdz|d���}	t||d���t||d���dS#t$r6}tjd�||z|����Yd}~dSd}~wwxYw)	N�rU�_lworkrr�rLr��({}_lwork raised unexpected exception: {}�r�r)r%r!rr<�failrW�rTrOr�r.�sc_dlw�dz_dlwr�s       r/�test_standard_eigh_lworksr`�	s���	
�A��$�;�;�K�K�N�E�
�c�&�j��1��q��
B�
B�
B�F�
�c�&�j��1��q��
B�
B�
B�F�.��v�q��*�*�*�*��v�q��*�*�*�*�*�*���.�.�.�����v�c�&�j�!�,�,�	.�	.�	.�	.�	.�	.�	.�	.�	.�����.�����$A8�8
B8�+B3�3B8�gv�gvxc�v�d}|dkrtnt}t||zdz|d���}t||zdz|d���}	t||d���t||d���dS#t$r6}tjd	�||z|����Yd}~dSd}~wwxYw)
NrXrUrYrr�rLrDr%rZr[r]s       r/�test_generalized_eigh_lworksre�	s���	
�A��$�;�;�K�K�N�E�
�c�&�j��1��q��
B�
B�
B�F�
�c�&�j��1��q��
B�
B�
B�F�.��v�q�s�+�+�+�+��v�q�s�+�+�+�+�+�+���.�.�.�����v�c�&�j�!�,�,�	.�	.�	.�	.�	.�	.�	.�	.�	.�����.���ra�dtype_r�)rLrrr'r}c��td��td|��}||z
}|tvrdnd}|dz}t||���}t	||||��}|dkr|n|f}td�|D����sJ�dS)Nr�r�or�un�	csd_lworkr�c��g|]}|dk��	Sr%r�)rOr�s  r/rPz*test_orcsd_uncsd_lwork.<locals>.<listcomp>�	s��%�%�%�!��A��%�%�%r1)rrr�r%r!rA)rfr�r_rlrT�dlwr^�lwvals        r/�test_orcsd_uncsd_lworkrn�	s���	��J�J�J���1�
�
�A�	�A��A��K�'�'�$�$�T�C�

��
�C�	�#�V�	,�	,�	,�B��2�q�!�Q�'�'�E��D�[�[�E�E�u�h�E��%�%�u�%�%�%�&�&�&�&�&�&�&r1c
�n�d\}}}|tvrdnd}|dkrtj|��ntj|��}t	|dz|dzf|���\}}t||||��}|dkrd|int
tddg|����}	||d|�d|�f|d|�|d�f||d�d|�f||d�|d�ffi|	��\
}
}}}
}}}}}}|d	ksJ�t||��}t||��}tt||��t||z
||z
����}t||��|z
}t|||z
��|z
}t||z
|��|z
}t||z
||z
��|z
}tj||f|���}|d
��}t|��D]	}||||f<�
t|��D]}||||z||zf<�t|��D]}||||z|z||z|z|z|z|zf<� t|��D]}||||z|z|z||z|zf<�t|��D]�}tj
||��|||z||zf<tj
||��|||z|z||z|z|zf<tj||��|||z||z|z|z|zf<tj||��|||z|z||zf<��||z|z}t||ddtj|��jz�
��dS)N)r>�P�rhri�csdrjr�r��lrworkrr�r�g��@rI)r�r"�rvsr#r%r!�dictr�rr[r*r
r/�cosr�rr�r�)rfr�r_rlrT�X�drvrlrm�lwvals�cs11�cs12�cs21�cs22�theta�u1�u2�v1t�v2trerQ�VHr~�n11�n12�n21�n22�S�oner;�Xcs                               r/�test_orcsd_uncsdr��	s����G�A�q�!��K�'�'�$�$�T�C�!�T�k�k�������}�/@��/C�/C�A���u��c�K�.?� @��O�O�O�H�C���3��1�a�(�(�E�!$����g�u�
�
�$�s�G�<D�<F�GL�8N�8N�3O�3O�F�	��A�b�q�b�"�1�"�f�I�q��!��Q�R�R��y�!�A�B�B����F�)�Q�q�r�r�1�2�2�v�Y�A�A�&�A�A�:�D�$��d�E�2�r�3��T��1�9�9�9�9��2�r���A�	�C��	�	�B��C��1�I�I�s�1�Q�3��!��}�}�%�%�A�

�a��)�)�a�-�C�

�a��1��+�+��/�C�

�a��c�1�+�+��/�C�

�a��c�1�Q�3�-�-�!�
�C�
��!�Q��v�&�&�&�A�
�&��*�*�C�
�3�Z�Z������!�Q�$���
�3�Z�Z������!�A�#�q��s�(���
�3�Z�Z�-�-��),���!�C�%��'�1�S�5��7�3�;�s�?�1�$�
$�%�%�
�3�Z�Z�$�$�� #��!�C�%��'�!�)�S��U�1�W�
���
�1�X�X�-�-���&��q��*�*��!�C�%��3��,��"$�&��q��"2�"2��!�C�%��'�1�Q�3�s�7�3�;�
��%'�V�E�!�H�%5�%5�$5��!�C�%��3��s��3��q��
 �!��F�5��8�,�,��!�C�%��'�1�S�5�.���	
�Q����B��A�r���R�X�f�-=�-=�-A�)A�B�B�B�B�B�Br1�
trans_boolF�factr'rNc
��td��dtj|��jz}t	d|���\}}d}t|dz
f|���}t|f|���}t|dz
f|���}	tj|d��tj|��ztj|	d��z}
t|df|���}|r
|tvrd	nd
nd}|r|
���j	n|
|z}
|�
��|�
��|	�
��|
�
��g}|dkr
||||	��nd
gdz\}}}}}}||||	|
|||||||���}|\
}}}}}}}}}}t|dkd�|����t||d��t||d��t|	|d��t|
|d��t|||���tt|d��dud�|����t|jd|
jdkd�|jd|
jd����t|jd|
jdkd�|jd|
jd����d
S)aS
    These tests uses ?gtsvx to solve a random Ax=b system for each dtype.
    It tests that the outputs define an LU matrix, that inputs are unmodified,
    transposal options, incompatible shapes, singular matrices, and
    singular factorizations. It parametrizes DTYPES and the 'fact' value along
    with the fact related inputs.
    rr'��gtsvxr�r�rrrLr}rMrurxrNr'NrQ�r�r��dlf�df�dufr�r�rz ?gtsvx info = {}, should be zerorNr��__len__T� rcond should be scalar but is {}z!ferr.shape is {} but shoud be {},z!berr.shape is {} but shoud be {},)rr*r�r�r%r0r,r�r�rur�rrWr	rr�r-) r.r�r�r)r�r�r�r�rlr�r�r�r�r��
inputs_cpy�dlf_�df_�duf_�du2f_�ipiv_�info_�	gtsvx_outr�r�r��du2fr��x_solnr��ferr�berrres                                 r/�
test_gtsvxr�
s��	��H�H�H����%���$�$�D�#�$6�e�D�D�D�L�E�5�
�A�	$�a��c�V�5�	9�	9�	9�B�#�Q�D��6�6�6�A�	$�a��c�V�5�	9�	9�	9�B�
���B���"�'�!�*�*�$�r�w�r�1�~�~�5�A�#�Q��F�%�8�8�8�A�6@�I�E�[�(�(�S�S�c�c�c�E�!�	(��������q�A�-�A��'�'�)�)�Q�V�V�X�X�r�w�w�y�y�!�&�&�(�(�;�J�!�C�K�K���b�!�R����d�V�A�X�)�D�#�t�U�E�5���b�!�R���U����E��7�7�7�I�@I�=�C��S�$��f�e�T�4���D�A�I�9�@�@��F�F�G�G�G��r�:�a�=�)�)�)��q�*�Q�-�(�(�(��r�:�a�=�)�)�)��q�*�Q�-�(�(�(��A�v�D�)�)�)�)��G�E�9�%�%�T�1�.�5�5�e�<�<�>�>�>��D�J�q�M�Q�W�Q�Z�'�)L�
�V�D�J�q�M�1�7�1�:�
.�
.�0�0�0��D�J�q�M�Q�W�Q�Z�'�)L�
�V�D�J�q�M�1�7�1�:�
.�
.�0�0�0�0�0r1c
�Z�td��td|���\}}d}t|dz
f|���}t|f|���}t|dz
f|���}tj|d��tj|��ztj|d��z}	t|df|���}
|t
vrdnd	}|r|	���jn|	|
z}|d
kr
||||��ndgdz\}
}}}}}||||||||
||||���}|\
}}}}}}}}}}|d
kr7d|d<d|d<|||||��}|\
}}}}}}}}}}|dks
Jd���dS|d
krAd|d<d|d<d|d<|||||||
||||��
�
}|\
}}}}}}}}}}|dksJd���dSdS)Nrr�r�rrrLr}rMrurxr'rQr�rNrz&info should be > 0 for singular matrix)r�r�r�r�r�r�)rr%r0r*r,r�r�ru)r.r�r�r�r�r�r�rlr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�res                              r/�test_gtsvx_error_singularr�K
sO��	��H�H�H�#�$6�e�D�D�D�L�E�5�
�A�	$�a��c�V�5�	9�	9�	9�B�#�Q�D��6�6�6�A�	$�a��c�V�5�	9�	9�	9�B�
���B���"�'�!�*�*�$�r�w�r�1�~�~�5�A�#�Q��F�%�8�8�8�A��K�'�'�C�C�S�E�!�	(��������q�A�-�A�!�C�K�K���b�!�R����d�V�A�X�)�D�#�t�U�E�5���b�!�R���U����E��7�7�7�I�@I�=�C��S�$��f�e�T�4���s�{�{���"����2���E�"�a��Q�'�'�	�DM�A��R��d�D�&�%��t�T��a�x�x�x�A�x�x�x�x�x�	
������B����R����b�	��E�"�a��Q�T�t���#�%�1�1�1�	�DM�A��R��d�D�&�%��t�T��a�x�x�x�A�x�x�x�
���xr1c��td��td|���\}}d}t|dz
f|���}t|f|���}t|dz
f|���}tj|d��tj|��ztj|d��z}	t|df|���}
|t
vrdnd	}|r|	���jn|	|
z}|d
kr
||||��ndgdz\}
}}}}}|dkr�tt||dd�||||||
||||�
�
�
tt|||dd�|||||
||||�
�
�
tt||||dd�||||
||||�
�
�
tt|||||dd�|||
||||�
�
�
dStt||||||||
dd�||||�
�
�
tt||||||||
|dd�|||�
�
�
tt||||||||
||dd�||�
�
�
tt||||||||
|||dd�|�
�
�
dS)Nrr�r�rrrLr}rMrurxr'rQrNr�)rr%r0r*r,r�r�rur
rJr)r.r�r�r�r�r�r�rlr�r�r�r�r�r�r�r�r�r�r�s                   r/�"test_gtsvx_error_incompatible_sizer�~
s��	��H�H�H�#�$6�e�D�D�D�L�E�5�
�A�	$�a��c�V�5�	9�	9�	9�B�#�Q�D��6�6�6�A�	$�a��c�V�5�	9�	9�	9�B�
���B���"�'�!�*�*�$�r�w�r�1�~�~�5�A�#�Q��F�%�8�8�8�A��K�'�'�C�C�S�E�!�	(��������q�A�-�A�!�C�K�K���b�!�R����d�V�A�X�)�D�#�t�U�E�5��s�{�{��j�%��C�R�C��!�R���u�$�3��E��	7�	7�	7�	7�	�j�%��Q�s��s�V�R���u�$�3��E��	7�	7�	7�	7�	�j�%��Q��3�B�3����u�$�3��E��	7�	7�	7�	7�	�i���A�r�1�S�b�S�6��u�$�3��E��	7�	7�	7�	7�	7�	7�	�j�%��Q��A��u�$�s��s�)���E��	7�	7�	7�	7�	�j�%��Q��A��u�$�3�s��s�8��E��	7�	7�	7�	7�	�j�%��Q��A��u�$�3��s��s�)��U�	<�	<�	<�	<�	�j�%��Q��A��u�$�3��E�#�2�#�J�U�	<�	<�	<�	<�	<�	<r1zdu,d,dl,b,xc
��td|j���}|||||��}|\
}}}	}
}}}
}}}t||��dS)Nr�r��r%r.r)r�rlr�r�r�r�r�r�r�r�r�r�r�r�r�r�res                 r/�test_gtsvx_NAGr��
s]��.
�W�A�G�4�4�4�E���b�!�R��#�#�I�@I�=�C��S�$��f�e�T�4���a��(�(�(�(�(r1zfact,df_de_lambdac�B�td|j���||��S�Nrr��r%r.�rlr�s  r/�<lambda>r��
�7��(G�'7��>?�g�(G�(G�(G�GH�!�(M�(M�r1c��dS�N)NNNr�r�s  r/r�r��
���-?�r1c��td��dtj|��jz}t	d|���}d}t|f|��dz}t|dz
f|��}tj|��tj|d��ztjtj|��d��z}	t|d	f|���}
|	|
z}|||��\}}
}|���|���|���g}|||||||
�
��\}}
}}}}}t||d��t||d��t||d	��t|dkd�|����t|
|��tj|
d��tjtj
|����z}tj|��}t|	||ztj|��jz|�
��t!|d��rJd�|�����t|jdkd�|j|
jd����t|jdkd�|j|
jd����dS)a
    This tests the ?ptsvx lapack routine wrapper to solve a random system
    Ax = b for all dtypes and input variations. Tests for: unmodified
    input parameters, fact options, incompatible matrix shapes raise an error,
    and singular matrices return info of illegal value.
    rr'�ptsvxr�rPrOrLr}rM�r�r��efrzinfo should be 0 but is {}.r�r�r�)rMz#ferr.shape is {} but shoud be ({},)z#berr.shape is {} but shoud be ({},)N)rr*r�r�r%r0r,r�r�r	rrWrrrrur�r-)r.rr��df_de_lambdar)r�r�rlr�r�r�r�r�r�rer�r�r�r�r�rDr_s                      r/�
test_ptsvxr��
s���	��H�H�H����%���$�$�D��W�E�2�2�2�E�	�A�#�Q�D�(�3�3�a�7�A�#�Q�q�S�F�E�2�2�A�
���
�
�R�W�Q��^�^�#�b�g�b�g�a�j�j�!�&<�&<�<�A�
(�!�Q��u�
=�
=�
=�F�	�F�
�A� �<��1�%�%�L�B��D������!�&�&�(�(�A�F�F�H�H�-�H�*/��q�!�Q�T�24��*=�*=�*=�&�B��A�u�d�D�$��q�(�1�+�&�&�&��q�(�1�+�&�&�&��q�(�1�+�&�&�&��D�A�I�4�;�;�D�A�A�B�B�B��f�a�(�(�(�	���B���"�'�"�'�!�*�*�-�-�-�A�
�����A��A�q��s�B�G�A�J�J�L�)��5�5�5�5��u�i�(�(�9�9�*�1�1�%�8�8�9�9�9��D�J�$�� E�
�V�D�J���Q��
0�
0�2�2�2��D�J�$�� E�
�V�D�J���Q��
0�
0�2�2�2�2�2r1c�B�td|j���||��Sr�r�r�s  r/r�r�r�r1c��dSr�r�r�s  r/r�r�r�r1c
�f�td��td|���}d}t|f|��dz}t|dz
f|��}tj|��tj|d��ztjtj|��d��z}t|df|���}	||	z}
|||��\}}}
t
t||dd�||
|||�	��t
t|||dd�|
|||�	��t
t||||
dd�|||�	��dS)
Nrr�r�rPrOrLr}rMr�)	rr%r0r*r,r�r
rJr)r.rr�r�r�r�rlr�r�r�r�r�r�res              r/�test_ptsvx_error_raise_errorsr�s;��	��H�H�H��W�E�2�2�2�E�	�A�#�Q�D�(�3�3�a�7�A�#�Q�q�S�F�E�2�2�A�
���
�
�R�W�Q��^�^�#�b�g�b�g�a�j�j�!�&<�&<�<�A�
(�!�Q��u�
=�
=�
=�F�	�F�
�A� �<��1�%�%�L�B��D��*�e�Q�s��s�V�Q�����K�K�K�K��*�e�Q��#�2�#������K�K�K�K��)�U�A�q�!�C�R�C�&�t��r�J�J�J�J�J�Jr1c�B�td|j���||��Sr�r�r�s  r/r�r�*r�r1c��dSr�r�r�s  r/r�r�,r�r1c���td��td|���}d}t|f|��dz}t|dz
f|��}tj|��tj|d��ztjtj|��d��z}t|df|���}	||	z}
|||��\}}}
|d	krnd
|d<|||��\}}}
||||
��\}}}}}}}
|
d
kr|
|ksJ�t|f|��}||||
��\}}}}}}}
|
d
kr|
|ksJ�dS|||��\}}}
d
|d
<d
|d
<||||
|||���\}}}}}}}
|
d
ksJ�dS)
Nrr�r�rPrOrLr}rMrNrrNr�)rr%r0r*r,r�)r.rr�r�r�r�rlr�r�r�r�r�r�rer�r�r�r�s                  r/�test_ptsvx_non_SPD_singularr�&s���	��H�H�H��W�E�2�2�2�E�	�A�#�Q�D�(�3�3�a�7�A�#�Q�q�S�F�E�2�2�A�
���
�
�R�W�Q��^�^�#�b�g�b�g�a�j�j�!�&<�&<�<�A�
(�!�Q��u�
=�
=�
=�F�	�F�
�A� �<��1�%�%�L�B��D��s�{�{���!��#�|�A�q�)�)���B��-2�U�1�a��^�^�*��B��5�$��d��a�x�x�D�A�I�I�I�I�
(���h�7�7��-2�U�1�a��^�^�*��B��5�$��d��a�x�x�D�A�I�I�I�I�I�I�$�|�A�q�)�)���B����1����1��-2�U�1�a���68�R�.A�.A�.A�*��B��5�$��d��a�x�x�x�x�x�xr1zd,e,b,xc�|�td|j���}||||��\}}}}}	}
}t||��dS)Nr�r�r�)rlr�r�r�r�r�r��x_ptsvxr�r�r�res            r/�test_ptsvx_NAGr�RsN��.
�W�A�G�4�4�4�E�/4�u�Q��1�~�~�,�B��G�U�D�$���a��)�)�)�)�)r1rc	���td��tj|��jdz}d\�}t	��g|���}t	�|g|���}|���j|ztj�|���|d��zz}|r7�fd�t���D���fd�t���D��f}n:d�td	�d	z��D��d
�td	�d	z��D��f}||}td|d�
��\}}	}
}}|	�||���\}
}t|d��t||���|}t|
|d|���|�|
|���\}}t|d��t|��|}t||d|���|
�|
||���\}}t|d��t||��}t||d|���|�|||���\}}t|d��t||d|���tj�|d	��}|�|||���\}}t|d��t#t%d	|ztj�|d	���z
��|zd	k��dS)Nr�r')rrrOr�r�c�:��g|]}t|���D]}|���Sr��r/�rO�yr�r�s   �r/rPz5test_pptrs_pptri_pptrf_ppsv_ppcon.<locals>.<listcomp>|�.���:�:�:�q�e�A�q�k�k�:�:���:�:�:�:r1c�:��g|]}t|���D]}|���Sr�r�r�s   �r/rPz5test_pptrs_pptri_pptrf_ppsv_ppcon.<locals>.<listcomp>}r�r1c�6�g|]}t|��D]}|���Sr�r��rOr�r�s   r/rPz5test_pptrs_pptri_pptrf_ppsv_ppcon.<locals>.<listcomp>s+��<�<�<�q�5��8�8�<�<�a��<�<�<�<r1rLc�<�g|]}t|��D]}|dz
���Sr�r�r�s   r/rPz5test_pptrs_pptri_pptrf_ppsv_ppcon.<locals>.<listcomp>�s/��>�>�>��U�1�X�X�>�>���1��>�>�>�>r1)�ppsv�pptrf�pptrs�pptri�ppconr�r�r�rrI)r�rr�)rr*r�r�r0r�rurr/r%rrrrrr�rrr�r�)r.rr)r�r]r�r;�apr�r�r�r�r��ulre�aul�uli�aulir��bx�xvr�r�r�s                       @r/�!test_pptrs_pptri_pptrf_ppsv_ppconr�ps���	��J�J�J�
�8�E�?�?��s�"�D��G�A�t�#�Q��F�%�8�8�8�A�#�Q��I�U�;�;�;�A�	�����
�Q������/�/�/�%�%��)�)�;�;�A��@�:�:�:�:�E�!�H�H�:�:�:�:�:�:�:�E�!�H�H�:�:�:�<���=�<�E�!�Q�q�S�M�M�<�<�<�>�>�e�A�q��s�m�m�>�>�>�@��	
�4��B�'7�4���(�(�(�$�D�%���u�
�u�Q��%�(�(�(�H�B����q����
�1�E�
"�
"�
"�4�
(�C��B��!�$�/�/�/�/���a��5�)�)�)�I�C����q�����q�6�6�$�<�D��C��A�D�1�1�1�1��e�A�r�1�E�*�*�*�G�A�t���q����	�q�!���B��A�r���-�-�-�-��t�A�r�1�E�*�*�*�H�B����q�����B����.�.�.�.��I�N�N�1�a� � �E��%��2�U�%�8�8�8�K�E�4���q�����C��%��"�)�.�.��a�.�0�0�0�1�1�%�7�!�;�<�<�<�<�<r1c�:�td��tj|��jdz}d}t	||g|���}td|���\}}|d�|d���}t
|d	d
��|d
}|d}|d}	|tvr%t|tj	|��d
|�
��t||z|�
��jz|d
|�
��|||dd��}t
|d	d
��|d
}|d}|tvr%t|tj	|��d
|�
��t||z|�
��jz|d
|�
��t|d|	d
|�
��dS)Nr�r'rrr�)�gees�trexcc��dSrr��r�s r/r�z!test_gees_trexc.<locals>.<lambda>����D�r1Fr�r}rrBr<rIrRrLrr�)rr*r�r�r0r%rr)rrr�ru)
r.r)r�r]r�r�r�rjr$�d2s
          r/�test_gees_trexcr��s�����J�J�J�
�8�E�?�?��s�"�D�
�A�#�Q��F�%�8�8�8�A�"�#4�E�B�B�B�K�D�%�
�T�.�.�!��
7�
7�
7�F�����Q�����q�	�A��r�
�A�	
�4��B�������2�7�1�:�:�A�D�9�9�9�9��A��E�A�F�F�H�H�J�&����=�=�=�=�
�U�1�a��A�
�
�F�����Q�����q�	�A��r�
�A�������2�7�1�:�:�A�D�9�9�9�9��A��E�A�F�F�H�H�J�&����=�=�=�=��A�d�G�R�a�d�3�3�3�3�3�3r1zt, expect, ifst, ilst)rwg)\��(���{�G�z�?g���Q��?)r�皙������r��ffffff�?)r�g�������r�g�������?)r�r�r�r�)r���lV}��gV����_�?g�|?5^��?)g�����?r�g��V�/��?g;�O��n�?)r�r�rwgg��j+���)���y
ףp=
�?
ףp=
׿yR���Qȿ���Q��?y)\��(�?п)r���@y���Q���
ףp=
�yq=
ףpͿ�p=
ף�?)r�r�� @�y�G�z�?�(\���?)r�r�r��@�)r�y��1�%Ŀ�q����?y�s����??�ܵ�|ȿyH�z�G�??�ܵ�?)r�r�y���V�/�?��ݓ���?yj�t��?v���տ)r�r�r�yB>�٬��?=�U����?)r�r�r�r�c��d}td|j���}|||||d���}t|dd��|d}t|||���dS)	zg
    This test implements the example found in the NAG manual,
    f08qfc, f08qtc, f08qgc, f08quc.
    r�r�r�r)�wantqr}r�N)r%r.rr)rj�ifst�ilst�expectr)r�r�s       r/�test_trexc_NAGr��so��<�D��W�A�G�4�4�4�E�
�U�1�a��t�1�
-�
-�
-�F�����Q�����q�	�A��F�A�D�)�)�)�)�)�)r1c���|tjkr$tjdkrt	jd��t
d��tj|��jdz}d}t||g|���}t||g|���}td|���\}}|d�||d	d	�
��}t|dd��|d}|d
}	|d}
|d}|d|	dz}|d|	dz}
|tvrJt|tj|��d|���t|	tj|	��d|���t|
|z|���jz|d|���t|
|	z|���jz|d|���|||	|
|dd
��}t|dd��|d}|d
}	|d}
|d}|tvrJt|tj|��d|���t|	tj|	��d|���t|
|z|���jz|d|���t|
|	z|���jz|d|���t|d|	dz|
d|���t|d|	dz|d|���dS)N�darwin�8gges[float32] broken for OpenBLAS on macOS, see gh-16949r�r'rrr�)�gges�tgexcc��dSrr�r�s r/r�z!test_gges_tgexc.<locals>.<lambda>�r�r1F�r#�overwrite_br}rrLr�rBr�r<rIrRrMrNr�)r*r��sys�platformr<�xfailrr�r�r0r%rr)rrr�ru)r.r)r�r]r�r�r�r�r�rjrlr$�d1r�s              r/�test_gges_tgexcr��s�����
���s�|�x�7�7���O�P�P�P���J�J�J�
�8�E�?�?��s�"�D�
�A�#�Q��F�%�8�8�8�A�#�Q��F�%�8�8�8�A�"�#4�E�B�B�B�K�D�%�
�T�.�.�!�Q�E�u�
M�
M�
M�F�����Q�����q�	�A��q�	�A��r�
�A��r�
�A�	
�4��1�T�7�	�B�	
�4��1�T�7�	�B�������2�7�1�:�:�A�D�9�9�9�9���2�7�1�:�:�A�D�9�9�9�9��A��E�A�F�F�H�H�J�&����=�=�=�=��A��E�A�F�F�H�H�J�&����=�=�=�=�
�U�1�a��A�q�!�
$�
$�F�����Q�����q�	�A��q�	�A��q�	�A��q�	�A�������2�7�1�:�:�A�D�9�9�9�9���2�7�1�:�:�A�D�9�9�9�9��A��E�A�F�F�H�H�J�&����=�=�=�=��A��E�A�F�F�H�H�J�&����=�=�=�=��A�d�G�a��g�%�r���=�=�=�=��A�d�G�a��g�%�r���=�=�=�=�=�=r1c���td��tj|��jdz}d}t	||g|���}td|���\}}}|d�|d���}t
|d	d
��|d
}|d}	|d}
|tvr%t|tj	|��d
|�
��t|	|z|	�
��jz|d
|�
��tj|��}d|d<t|||��}|tvr||||	|���}n||||	||d���}t
|d	d
��|d
}|d}	|tvr%t|tj	|��d
|�
��t|	|z|	�
��jz|d
|�
��t|d|
d
|�
��dS)Nr�r'rrr�)r��trsen�trsen_lworkc��dSrr�r�s r/r�z!test_gees_trsen.<locals>.<lambda>+r�r1Fr�r}rrBr<rIrLrQr��r��liworkr�)rr*r�r�r0r%rr)rrr�rur
r!)
r.r)r�r]r�rrr�rjr$r��selectr�s
             r/�test_gees_trsenr s�����J�J�J�
�8�E�?�?��s�"�D�
�A�#�Q��F�%�8�8�8�A�/�(�� 7� 7� 7��D�%���T�.�.�!��
7�
7�
7�F�����Q�����q�	�A��r�
�A�	
�4��B�������2�7�1�:�:�A�D�9�9�9�9��A��E�A�F�F�H�H�J�&����=�=�=�=�
�X�a�[�[�F��F�1�I��;���2�2�E�������v�q�!�5�1�1�1�����v�q�!�5��q��B�B�B������Q�����q�	�A��q�	�A�������2�7�1�:�:�A�D�9�9�9�9��A��E�A�F�F�H�H�J�&����=�=�=�=��A�d�G�R�a�d�3�3�3�3�3�3r1z*t, q, expect, select, expect_s, expect_sep)g/�$���?g���QI��g�~j�t�x?g�J�4�?)r��5�8EGr��gGr���?gyX�5�;�?)r�g��?�߾�rgt�����?)r�r�r�g��yǹ�)g؁sF���?g_�L��?g�G�z�?gU���N@�?)go��T��?g�0�*��g�'���gz6�>W��)g���(�g&䃞ͪӿgbX9��ҿg-!�lV�?)g�b�=y�?gۊ�e���?r�g�8EGr��?)r�g�������?g�Q���g�(\��ſ)g
ףp=
�?g�Q���?r�r�)g)\��(ܿg��Q�տg���Q���g�(\���?)r�g{�G�zԿg�p=
ף��g)\��(�?)rLrrrLg�?g�(\��	@)yq���h�����yf�c]�F�?��ڊ�e׿y���Mbȿ�&S��?y�&1��?���?п)r�y�?5^�I@y����o���0�*�yZd;�OͿ�~�:p�?)r�r�yx$(�@4��@���y�[ A��?���&�?)r�r�r�y?�ܵ@�St$���)y?�ܵ꿽R�!�u��y2U0*�����6�[�?yV-��?�=yX���y�8��m4�?��1�%̿)y�St$���?��\m�ҿy��ʡE�?�S㥛��?y�~�:p��	�c�ڿy�K7�A`�?�[ A��?)y�:pΈ���~j�t�Կy�H�}�?�9#J{��y��H�}�?	�c�Z�y�+e�Xw?
�-���ٿ)y"��u�?	�c��?y?��տ��N@a��yR���Qȿ{�G�zĿyh"lxz��?EGr��ǿ)y4��7�������)�yS�!�uq�F%u�
@y��y�տGx$(�?y3ı.n��?�rh��|�)yv����?�
F%u��y�d�`TR�?I��&†ۿy���N@�?��ݓ���y4��@��
@	�^)��?)y��s�{
@ �o_��y��H.�@|�Pk�@y�
�0�*�?*:��H�y]m��{�?�G�z���)y)�
�0��[���<�?yI.�!���?��� �r��yq���h
@��ׁsF�?y�1w-!�?�ho���gR���Q�?g����K�?c�&�d}d}td|j���\}}	t|	||��}
|jtvr|||||
���}n|||||
|
d���}t	|dd	��|d	}|d}|jtvr|d
}|d}
n|d}|d}
t|||z|���jz|�
��t|d|z|�
��t|d|
z|�
��dS)zW
    This test implements the example found in the NAG manual,
    f08qgc, f08quc.
    r�r�)rrr�r�rLrr}rrOrPrQr�N)r%r.r!r)rrr�ru)rjrlrr��expect_s�
expect_sepr)�atol2rrr�r�r��seps              r/�test_trsen_NAGr
Ns@��`�D��E�)� ���1�1�1��E�;�
�;���2�2�E��w�.� � ���v�q�!�5�1�1�1�����v�q�!�5��q��B�B�B������Q�����q�	�A��q�	�A��w�.� � ��1�I���Q�i����1�I���Q�i���F�A��E�A�F�F�H�H�J�.�T�:�:�:�:��H�a�!�e�%�0�0�0�0��J��C��e�4�4�4�4�4�4r1c�n�|tjkr$tjdkrt	jd��t
d��tj|��jdz}d}t||g|���}t||g|���}td|���\}}}|d�||d	d	�
��}t|dd��|d}	|d
}
|d}|d}|	d|
dz}
|	d|
dz}|tvrJt|	tj|	��d|���t|
tj|
��d|���t||	z|���jz|d|���t||
z|���jz|d|���tj|��}d
|d<t%|||	|
��}|dd
z|d
f}|||	|
|||���}t|dd��|d}	|d
}
|d}|d}|tvrJt|	tj|	��d|���t|
tj|
��d|���t||	z|���jz|d|���t||
z|���jz|d|���t|	d|
dz|d|���t|	d|
dz|
d|���dS)Nr�r�r�r'rrr�)r��tgsen�tgsen_lworkc��dSrr�r�s r/r�z!test_gges_tgsen.<locals>.<lambda>�r�r1Fr�r}rrLr�rBr�r<rIrQr�i����r�r�)r*r�r�r�r<r�rr�r�r0r%rr)rrr�rur
r!)r.r)r�r]r�r�rrr�r�rjrlr$r�r�rr�s                 r/�test_gges_tgsenr�s4����
���s�|�x�7�7���O�P�P�P���J�J�J�
�8�E�?�?��s�"�D�
�A�#�Q��F�%�8�8�8�A�#�Q��F�%�8�8�8�A�/�(�� 7� 7� 7��D�%���T�.�.�!�Q�E�u�
M�
M�
M�F�����Q�����q�	�A��q�	�A��r�
�A��r�
�A�	
�4��1�T�7�	�B�	
�4��1�T�7�	�B�������2�7�1�:�:�A�D�9�9�9�9���2�7�1�:�:�A�D�9�9�9�9��A��E�A�F�F�H�H�J�&����=�=�=�=��A��E�A�F�F�H�H�J�&����=�=�=�=�
�X�a�[�[�F��F�1�I��;���1�5�5�E��1�X�a�Z��q��"�E�
�U�6�1�a��A�U�
3�
3�
3�F�����Q�����q�	�A��q�	�A��r�
�A��r�
�A�������2�7�1�:�:�A�D�9�9�9�9���2�7�1�:�:�A�D�9�9�9�9��A��E�A�F�F�H�H�J�&����=�=�=�=��A��E�A�F�F�H�H�J�&����=�=�=�=��A�d�G�a��g�%�r���=�=�=�=��A�d�G�a��g�%�r���=�=�=�=�=�=r1r%)�r��	functoolsr�
numpy.testingrrrrrr	r<r
r
�numpyr*rrr
rrrrr�numpy.randomrrr�scipy.linalgrr7rrrrrrrrrr �scipy.linalg.lapackr!�scipy.statsr"r#�scipy.sparse�sparserXr$r4�ImportErrorr%�scipy.linalg.blasr&r�r2r�r��
complex128r)r�r0rHrJr�r�rrrsrrrrr?rr�r�r�r�r�r�r�r�r�r	rr"r5r>rDrKrPrWrarcr�r�r�r��skipifr�r�r/r�r�r�rr�r�rrr�rr
rrr%r-r2r4r6r:rKrNr`rernr�r�r�r�r�r�r�r�r�r�r�r�r�rr
rr�r1r/�<module>r s*��
�
�
�
�������/�/�/�/�/�/�/�/�/�/�/�/�/�/�/�/��
�
�
�*�*�*�*�*�*�����!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�-�,�,�,�,�,�,�,�,�,�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�/�.�.�.�.�.�2�2�2�2�2�2�2�2��������0�0�0�0�0�0�0�������G�G�G�����0�0�0�0�0�0�,�,�,�,�,�,��z�2�:�&���,��
�.��	�~�	%��0�0�0�O�O�O�"]-�]-�]-�]-�]-�]-�]-�]-�@
�
�
�
�
�
�
�
�p9�p9�p9�p9�p9�p9�p9�p9�f�����&�)�)������"B�"B�"B�C�C���D�C�*�)��-�-�-�-�-�-�-�-�*C�C�C�C�C�C�C�C�(;�;�;�;�;�;�;�;�@I/�I/�I/�I/�I/�I/�I/�I/�X)�)�)�.'4�'4�'4�T'6�'6�'6�T4�4�4�8AG�AG�AG�AG�AG�AG�AG�AG�HL�L�L�L�L�L�L�L�^.?�.?�.?�bA�A�A�61�1�1�>1�1�1�>F�F�F�D&D�&D�&D�R7!�7!�7!�t7:�7:�7:�t&8�&8�&8�R3�3�3�6D�D�D�@"D�"D�"D�JD�D�D�6 L� L� L�FUK�UK�UK�UK�UK�UK�UK�UK�p%P�%P�%P�P%P�%P�%P�P*/�*/�*/�Z<�<�<�����D�K��M�M�K�K�M�M�K�$:�:�:�>�����&�&�!1�2�2������+�.�.��������q���*�*��������q���*�*��������q���*�*������!�Q��(�(������!�Q��(�(�b&�b&�b&�)�(�)�(�+�*�+�*�+�*�/�.�3�2�b&�J�����+�.�.� � �/�.� �F����(�!�1�+�!�1�+�!�1�+�!�1�+�!�1�+�!�1�+�'���1�1���1�����9�#�2�8�%?�%?�%?�%?�%?�%?�%@�%@�%@�%=�%=�%=�%?�%?�%?�%?�%?�%?�%A�B�B�$�2�8�$D�$D�$D�E�E�#�2�8�%G�%G�%G�%F�%F�%F�%E�%E�%E�%H�%H�%H�%G�%G�%G�%G�%G�%G�%I�J�J�$�2�8�%G�%G�%G�%H�%H�%H�%F�%F�%F�%G�%G�%G�%I�J�J�K�L�M�M�$
,�
,�%M�M�$
,� �����&�)�)�Y/�Y/�*�)�Y/�x����L�#�2�8�$9�$9�$9�:�:�%�R�X�&@�&@�&@�A�A�%�R�X�&;�&;�&;�<�<�%�R�X�&9�&9�&9�:�:�%�R�X�&B�&B�&B�C�C�%�R�X�l�l�l�3�3�%�R�X�o�o�o�6�6�%�R�X��S�z�(,�d�|�(+�T�{�(+�U�|�(+�T�{�	')�*�*�&�R�X��A�w�()�2�w�()�2�w�(*�B�x�(*�A�w�	'0�1�1�2�&&�R�X�&G�&G�&G�H�H�%�R�X�'4�'4�'4�5�5�&�R�X�&F�&F�&F�G�G�%�R�X�'A�'A�'A�B�B�%�R�X�':�':�':�;�;�%�R�X�&?�&?�&?�@�@�%�R�X�o�o�o�6�6�%�R�X��*�'=�(3�\�'B�(4�i�'@�(3�[�'A�(1�:�'>�	'@�A�A�
&�R�X���'7�(.��'7�(.��'8�(/��'8�(.��'7�	'9�:�:�%�%)�* �* �V � �W* �* �V �(�����&�)�)������"B�"B�"B�C�C���D�C�*�)���������[�;�6��?�?�A�A�,&�,&�A�A�,&�^�������[�;�6��?�?�A�A�0�0�A�A�0��������[�;�6��?�?�A�A�M�M�A�A�M�&����A�"�"�(�#5�#5�#5�6�6�"�"�(�?�?�?�3�3�"�"�(�#4�#4�#4�5�5�"�"�(�#8�#8�#8�9�9�"�"�(�Q��G�a��V�a��V�b�"�X�%&��G�$-�.�.�"�"�(�S�!�H�q�"�g��2�w��Q��%&��G�$-�.�.�
�#�"�(�#3�#3�#3�4�4�"�"�(�#>�#>�#>�?�?�"�"�(�=�=�=�1�1�"�"�(�#5�#5�#5�6�6�"�"�(�V�W�$5���7G�%+�V�$4�v�v�6F�$H�I�I�"�"�(�T�5�M�D�$�<�$���%)�4�L�$2�3�3�	�E���&1�1�'��&1�.���>����)���V�[�;�%>�?�?�A�A������e�e�A�h�h�/�/�&�&�0�/�A�A�&�<����)���V�[�;�%>�?�?�A�A������e�e�A�h�h�/�/�	�	�0�/�A�A�	�����)���V�[�;�%>�?�?�A�A������e�e�A�h�h�/�/�	N�	N�0�/�A�A�	N�����)���V�[�;�%>�?�?�A�A������e�e�A�h�h�/�/�	�	�0�/�A�A�	�����:��#�2�8�$;�$;�$;�<�<�#�2�8�$5�$5�$5�6�6�#�2�8�$D�$D�$D�E�E�#�2�8�%F�%F�%F�%G�%G�%G�%G�%G�%G�%F�%F�%F�%H�I�I�	J��	�	�=�=�	�	�=������&�)�)������(@�(@�(@�A�A�=$�=$�B�A�*�)�=$�@.�.�.������#>�#>�#>�?�?�������t��-�-�
.�
.�.�-�@�?�
.������D�%�=�1�1�������t��-�-�.�.�.�-�2�1�.������6�*�*������0�0�0�1�1�	'�	'�2�1�+�*�	'������6�*�*�+C�+C�+�*�+C�\�����&�)�)�������t�}�5�5������#�s��,�,�70�70�-�,�6�5�*�)�70�t�����&�)�)�������1�v�.�.������#�s��,�,�-B�-B�-�,�/�.�*�)�-B�`�����&��(�+�+�������t�}�5�5������#�s��,�,�-<�-<�-�,�6�5�,�+�-<�`�����#�2�8�$9�$9�$9�:�:�#�2�8�$?�$?�$?�@�@�#�2�8�$9�$9�$9�:�:�#�2�8�c�3�Z�#�t��s�D�k�&(�%�[�3��+�%?�@�@�#�2�8�b�!�W�q�"�g��2�w��R��&(�!�W�%.�/�/�0�$�2�8�$E�$E�$E�F�F�#�2�8�%>�%>�%>�?�?�#�2�8�$D�$D�$D�E�E�#�2�8�h�
�%;�&1�;�%?�&2�H�%=�&1�;�%?�&/��%<�	%>�?�?�
$�2�8�f�f�%5���7G�&,�g�%6��&�8I�&,�f�%5�%7�8�8�9�:�;�;�()�)�);�;�()�����)�3�3�v�{�1<�8=�,>�,>�?�?�����,��M�M�N�� ?� ?�@�B�C�C�
12�12�C�C�?�?�12�h����)�3�3�v�{�1<�8=�,>�,>�?�?�����,��M�M�N�� ?� ?�@�B�C�C�
K�K�C�C�?�?�K�(����)�3�3�v�{�1<�8=�,>�,>�?�?�����,��M�M�N�� ?� ?�@�B�C�C�
"�"�C�C�?�?�"�J�����#�2�8�$6�$6�$6�7�7�#�2�8�O�O�O�4�4�#�2�8�a��W�q�!�f�q�!�f�r�2�h�&'��W�%.�/�/�#�2�8�c�1�X��2�w��B��&(�!�W�q�"�g�%7�8�8�	9�$�2�8�$4�$4�$4�5�5�#�2�8�$?�$?�$?�@�@�#�2�8�h�	�%:�&.��%9�&.��%9�&.��%9�%;�<�<�$�2�8�f�g�%6�&,�f�%5�&,�f�%5�&,�f�%5�%7�8�8�
	9�
:�;�;�"
*�
*�#;�;�"
*������5�$�-�0�0������&�)�)�+=�+=�*�)�1�0�+=�\�����&�)�)�!4�!4�*�)�!4�H������b�h�)�)�)�)�)�)�*�*�*�)�)�)�+�,�,��b�h�2�2�2�1�1�1�1�1�1�1�1�1�3�4�4�����b�h�J�J�J�K�K�K�H�H�H�H�H�H�J�K�K��b�h�5�5�5�5�5�5�5�5�5�6�6�6�
7�8�8����
���0
*�
*�1��0
*� �����&�)�)�/>�/>�*�)�/>�d�����&�)�)�*4�*4�*�)�*4�Z����0��b�h�1�1�1�1�1�1�2�2�2�1�1�1�3�4�4��b�h�0�0�0�3�3�3�3�3�3�1�1�1�3�4�4��b�h�2�2�2�1�1�1�3�3�3�2�2�2�4�5�5��b�h�|�|�|�����
��b�h�6�6�6�7�7�7�5�5�5�5�5�5�
6�7�7��b�h�5�5�5�6�6�6�5�5�5�6�6�6�
7�8�8��b�h�6�6�6�5�5�5�5�5�5�5�5�5�
6�7�7��b�h�|�|�|�����3�'�)�)�T5�5�U)�)�T5�B�����&�)�)�8>�8>�*�)�8>�8>�8>s�6A=�=B�B

Youez - 2016 - github.com/yon3zu
LinuXploit