HOME


sh-3ll 1.0
DIR:/usr/local/lib64/python3.6/site-packages/numpy/linalg/tests/__pycache__/
Upload File :
Current File : //usr/local/lib64/python3.6/site-packages/numpy/linalg/tests/__pycache__/test_linalg.cpython-36.pyc
3

���h"�@s�
dZddlZddlZddlZddlZddlZddlZddlZddlZ	ddlm
Z
mZmZm
Z
mZmZmZmZddlmZmZmZmZddlmZddlmZmZmZmZmZddlmZddlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(dd	l)m*Z*d
d�Z+e$Z,d�dd�Z$dd�Z-dd�Z.dd�Z/ddddddhZ0Gdd�d�Z1dd�Z2e	j3j4d �gZ5e5e2de1d!e
d"d#gd$d%gged&�e
d#d"ged&��e1d'e
d"d#gd$d%gged&�e
d#d"ged&��e1d(e
d"d#gd$d%gged&�e
d#d"d%gd$d%d)gged&��e1d*e
d�d�gd�d�gge
d&�e
d�d�ge
d&��e1d3e
d�d�gd�d�gged&�e
d�d�ged&��e1d4e
d�d�gd�d�gged&�e
d�d�d�gd�d�d�gged&��e1d7e	j6d�ed&�e	j6d�ed&�dhd8�e1d9e	j3j7d:d:�e	j3j7d:��e1d;e	j3j7d5d5�e	j3j7d5��e1d<d5d,gd.d0ggd,d5g�g
�7Z5e5e2de1d=e
d"d#d$gd$d%d)gged&�e
d#d"ged&��e1d>e
d"d#gd$d%gd?d)gged&�e
d#d"d$ged&��e1d@e
d"d#d$gd$d%d)gged&�e
d#d"ged&��e1dAe
d"d#gd$d%gd?d)gged&�e
d#d"d$ged&��e1dBe
d�d�d�gd��d�dgge
d&�e
�d�dge
d&��e1dDe
�d�dg�d�dg�d�d	gge
d&�e
�d
�d�dge
d&��e1dFe
�d
�d�dg�d�d�dgged&�e
�d�dged&��e1dGe
�d�dg�d�dg�d�dgged&�e
�d�d�dged&��e1dHe
�d�d�d g�d!�d"�d#gged&�e
�d$�d%g�d&�d'gged&��e1dIe
�d(�d)g�d*�d+g�d,�d-gged&�e
�d.�d/g�d0�d1g�d2�d3gged&��e1dJe	j3j7d:dK�e	j3j7d:��e1dLe	j3j7d5dM�e	j3j7d5��e1dNe	j3j7dMd5�e	j3j7dM��e1dOe	j3j7dd0�e	j3j7d�dhd8�e1dPe	j3j7d0d�e	j3j7d0�dhd8�g�7Z5e5e2de1dQe
d"d#gd#d"gged&�d�e1dRe
d"d#gd#d"gged&�d�e1dSe
d"�d4g�d5d5gge
d&�d�e1dTe
d"�d6g�d7d5gged&�d�e1dUe	j6�d8ed&�ddhd8�e1dVd5d,gd,d5ggd�e1dWe
d"d#gd#d"gg�d�e1dXe	j3j7d5d5�d�g�7Z5dYdZ�Z8e5e8�7Z5d[d\�Z9d]d^�Z:e5e:�7Z5Gd_d`�d`�Z;Gdadb�dbe;�Z<Gdcdd�dde;�Z=Gdedf�dfe;�Z>Gdgdh�dhe;�Z?Gdidj�dje;�Z@Gdkdl�dle;�ZAdmdn�ZBdodp�ZCGdqdr�dre<e?�ZDGdsdt�dteD�ZEGdudv�dve<e?�ZFGdwdx�dxeF�ZGGdydz�dze<e?�ZHGd{d|�d|eH�ZIGd}d~�d~e<e?�ZJGdd��d�eJ�ZKGd�d��d��ZLGd�d��d�e<e?�ZMGd�d��d�eMeL�ZNGd�d��d�e>eA�ZOGd�d��d�eOeL�ZPGd�d��d�e<e?�ZQGd�d��d�eQ�ZRGd�d��d�e<e=e?e@�ZSGd�d��d�eS�ZTGd�d��d�e>eA�ZUGd�d��d�eU�ZVGd�d��d�e<e?�ZWGd�d��d�eW�ZXGd�d��d�e<e=�ZYGd�d��d�eY�ZZej[j\d�d�d��d�D��Gd�d��d���Z]Gd�d��d�e>eA�Z^Gd�d��d��Z_Gd�d��d�e>eA�Z`Gd�d��d��ZaGd�d��d��ZbGd�d��d�eb�ZcGd�d��d�eb�ZdGd�d��d�edec�ZeGd�d��d��ZfGd�d��d�eb�ZgGd�d��d�eb�ZhGd�d��d�eb�ZiGd�d��d�eeeg�ZjGd�d��d�eeeh�ZkGd�d„d�eeei�ZlGd�dĄdăZmd�dƄZnGd�dȄdȃZoGd�dʄdʃZpd�d̄Zqd�d΄Zrd�dЄZsej[jtd�d҄�ZuGd�dԄdԃZvGd�dքdփZwd�d؄Zxej[jtej[jye(d�d�dۍe*d�dݍd�d߄���Zzej[jye(d�d�d�d��Z{dS(9z# Test functions for linalg module

�N)�array�single�double�csingle�cdouble�dot�identity�matmul)�multiply�
atleast_2d�inf�asarray)�linalg)�matrix_power�norm�matrix_rank�	multi_dot�LinAlgError)�_multi_dot_matrix_chain_order)	�assert_�assert_equal�
assert_raises�assert_array_equal�assert_almost_equal�assert_allclose�suppress_warnings�assert_raises_regex�HAS_LAPACK64)�requires_memorycCs"t|�t|tj�rt|�ntjkS)N)�type�
isinstance�np�ndarray)�outZin_�r$�?/tmp/pip-build-5_djhm0z/numpy/numpy/linalg/tests/test_linalg.py�consistent_subclasssr&��cKs8t|�jjttfkr|}n|}t||fd|i|��dS)N�decimal)r
�dtyperrr�old_assert_almost_equal)�a�b�single_decimal�double_decimal�kwr)r$r$r%r$srcCstttttttti|S)N)rrrr)r*r$r$r%�get_real_dtype,sr1cCstttttttti|S)N)rrrr)r*r$r$r%�get_complex_dtype1sr2cCs|ttfkrdSdSdS)Ng�h㈵��>g�dy���=)rr)r*r$r$r%�get_rtol6sr3�square�	nonsquare�	hermitian�generalizedzsize-0�stridedc@s*eZdZe�fdd�Zdd�Zdd�ZdS)�
LinalgCasecCs.tt|t��||_||_||_t|�|_dS)z�
        A bundle of arguments to be passed to a test case, with an identifying
        name, the operands a and b, and a set of tags to filter the tests
        N)rr �str�namer,r-�	frozenset�tags)�selfr;r,r-r=r$r$r%�__init__Fs
zLinalgCase.__init__cCs||j|j|jd�dS)zN
        Run the function `do` on this test case, expanding arguments
        )r=N)r,r-r=)r>�dor$r$r%�checkQszLinalgCase.checkcCsd|jfS)Nz<LinalgCase: %s>)r;)r>r$r$r%�__repr__WszLinalgCase.__repr__N)�__name__�
__module__�__qualname__�setr?rArBr$r$r$r%r9Esr9cCs0|tkstd��x|D]}|j|hB|_qW|S)z^
    Add the given tag (a string) to each of the cases (a list of LinalgCase
    objects)
    zInvalid tag)�all_tags�AssertionErrorr=)�tagZcases�caser$r$r%�	apply_tag[s
rKi�rg�?g@g@g@)r*rZdouble_2g@ry@�y@�y@�y@y�?rZ	cdouble_2�y@Z0x0)r=Z8x8�Z1x1ZnonarrayZsingle_nsq_1Zsingle_nsq_2g@Zdouble_nsq_1Zdouble_nsq_2Z
csingle_nsq_1y"@Z
csingle_nsq_2y @Z
cdouble_nsq_1Z
cdouble_nsq_2Zcdouble_nsq_1_2Zcdouble_nsq_2_2Z8x11�Z1x5�Z5x1Z0x4Z4x0ZhsingleZhdoubleZhcsingleZhcdoubleZhemptyZ	hnonarrayZ
matrix_b_onlyZhmatrix_1x1cCsg}�xtD�]}t|jtj�s"qtj|jd|jd|jg�}|jdkrPd}ntj|jd|jd|jg�}t|jd|||j	dhBd�}|j
|�tj|jgdd�jd	|jj�}|jdkr�d}n$tj|jgdd�jd
|jj�}t|jd|||j	dhBd�}|j
|�qW|S)NrLrM�r'Z_tile3r7)r=Z_tile213)rMrL)rMrL)
�CASESr r,r!r"rr-r9r;r=�append�reshape�shape)�	new_casesrJr,r-�new_caser$r$r%�_make_generalized_cases�s&

$
$rZccs�t|tj�s|dfVdSdg|j}d|d<|jdkr@d|d<|jdkrRd|d<�x�tjt|��D�]�}dd�t|j|�D�}td	d�|D��}tj	||j
d
�}|jtj�j
d�||}||d<|j|j�}ttj||k��|d
djdd�|D��fV|jdk�rJ|jddk�rJt|j�}d|d <tjjj||d�}|dfV|jdk�r�|jd!dk�r�t|j�}d|d"<tjjj||d�}|dfV|jdkrd|jdd#�d$krdt|j�}d|d%<d|d&<tjjj||d�}|dfVqdWdS)'z<
    Generate cartesian product of strides for all axes
    ZnopNrOrMrNrLcSsg|]\}}t||��qSr$)�abs)�.0r,r-r$r$r%�
<listcomp>sz%_stride_comb_iter.<locals>.<listcomp>cSsg|]}tdd|��qS)N)�slice)r\�repeatr$r$r%r]s)r*l�>[=.Zstride_�_cSsg|]}d|�qS)z%+dr$)r\�jr$r$r%r](sr)�stridesZstride_xxx_0Zstride_xxx_0_xZstride_xxx_0_0)rO���)rOrMrc���rc)rOrMrc���rc)rOrc���rdrdrerere)rOrOrdre)r r!r"�ndim�	itertools�product�tuple�ziprW�emptyr*�viewZuint32�fill�	__class__r�all�join�listrb�libZ
stride_tricksZ
as_strided)�xZ
stride_setZrepeats�	new_shapeZslices�xi�sr$r$r%�_stride_comb_iter
sF







rxc	Cszg}xptD]h}xbt|j�D]T\}}xJt|j�D]<\}}t|jd|d||||jdhBd�}|j|�q.WqWq
W|S)Nr`r8)r=)rTrxr,r-r9r;r=rU)rXrJr,Za_labelr-Zb_labelrYr$r$r%�_make_strided_cases=s
ryc@s"eZdZeZe�e�fdd�ZdS)�LinalgTestCasecCsrxl|jD]b}|j|@|krq|j|@r(qy|j|j�Wqtk
rhd|}|tj�7}t|��YqXqWdS)zx
        Run func on each of the cases with all of the tags in require, and none
        of the tags in exclude
        zIn test case: %r

N)�
TEST_CASESr=rAr@�	Exception�	traceback�
format_excrH)r>�require�excluderJ�msgr$r$r%�check_casesQs
zLinalgTestCase.check_casesN)rCrDrErTr{rFr�r$r$r$r%rzNsrzc@seZdZdd�Zdd�ZdS)�LinalgSquareTestCasecCs|jdhddhd�dS)Nr4r7zsize-0)rr�)r�)r>r$r$r%�
test_sq_casesgsz"LinalgSquareTestCase.test_sq_casescCs|jddhdhd�dS)Nr4zsize-0r7)rr�)r�)r>r$r$r%�test_empty_sq_casesks
z(LinalgSquareTestCase.test_empty_sq_casesN)rCrDrEr�r�r$r$r$r%r�esr�c@seZdZdd�Zdd�ZdS)�LinalgNonsquareTestCasecCs|jdhddhd�dS)Nr5r7zsize-0)rr�)r�)r>r$r$r%�test_nonsq_casesrsz(LinalgNonsquareTestCase.test_nonsq_casescCs|jddhdhd�dS)Nr5zsize-0r7)rr�)r�)r>r$r$r%�test_empty_nonsq_casesvs
z.LinalgNonsquareTestCase.test_empty_nonsq_casesN)rCrDrEr�r�r$r$r$r%r�psr�c@seZdZdd�Zdd�ZdS)�HermitianTestCasecCs|jdhddhd�dS)Nr6r7zsize-0)rr�)r�)r>r$r$r%�test_herm_cases}sz!HermitianTestCase.test_herm_casescCs|jddhdhd�dS)Nr6zsize-0r7)rr�)r�)r>r$r$r%�test_empty_herm_cases�s
z'HermitianTestCase.test_empty_herm_casesN)rCrDrEr�r�r$r$r$r%r�{sr�c@s,eZdZejjdd��Zejjdd��ZdS)�LinalgGeneralizedSquareTestCasecCs|jddhdhd�dS)Nr7r4zsize-0)rr�)r�)r>r$r$r%�test_generalized_sq_cases�s
z9LinalgGeneralizedSquareTestCase.test_generalized_sq_casescCs|jdddhd�dS)Nr7r4zsize-0)r)r�)r>r$r$r%�test_generalized_empty_sq_cases�sz?LinalgGeneralizedSquareTestCase.test_generalized_empty_sq_casesN)rCrDrE�pytest�mark�slowr�r�r$r$r$r%r��sr�c@s,eZdZejjdd��Zejjdd��ZdS)�"LinalgGeneralizedNonsquareTestCasecCs|jddhdhd�dS)Nr7r5zsize-0)rr�)r�)r>r$r$r%�test_generalized_nonsq_cases�s
z?LinalgGeneralizedNonsquareTestCase.test_generalized_nonsq_casescCs|jdddhd�dS)Nr7r5zsize-0)r)r�)r>r$r$r%�"test_generalized_empty_nonsq_cases�szELinalgGeneralizedNonsquareTestCase.test_generalized_empty_nonsq_casesN)rCrDrEr�r�r�r�r�r$r$r$r%r��sr�c@s,eZdZejjdd��Zejjdd��ZdS)�HermitianGeneralizedTestCasecCs|jddhdhd�dS)Nr7r6zsize-0)rr�)r�)r>r$r$r%�test_generalized_herm_cases�s
z8HermitianGeneralizedTestCase.test_generalized_herm_casescCs|jdddhdhd�dS)Nr7r6zsize-0�none)rr�)r�)r>r$r$r%�!test_generalized_empty_herm_cases�sz>HermitianGeneralizedTestCase.test_generalized_empty_herm_casesN)rCrDrEr�r�r�r�r�r$r$r$r%r��sr�cCs�t|�}|jdkr�|j|jkr<|jdd�|jdd�}n(|j|jdkr\|jdd�}ntd��tj|tj||�d�}x8tjt	t
|jdd	���D]}t||||�||<q�W|St||�SdS)
NrMrOzNot implemented...)r*rLrdrdrdre)r
rgrW�
ValueErrorr!rlZcommon_typerhri�map�ranger)r,r-ru�r�cr$r$r%�dot_generalized�s
 r�cCsLt|�}|jdkr:tj|j|jd�}t|jd�|d<|St|jd�SdS)NrM)r*rL.rre)r
rgr!rlrWr*r)r,r�r$r$r%�identity_like_generalized�s
r�c@seZdZdd�ZdS)�
SolveCasescCs.tj||�}t|t||��tt||��dS)N)r�solverr�rr&)r>r,r-r=rtr$r$r%r@�sz
SolveCases.doN)rCrDrEr@r$r$r$r%r��sr�c@s:eZdZejjdeeee	g�dd��Z
dd�Zdd�ZdS)	�	TestSolver*cCs2tjddgddgg|d�}ttj||�j|�dS)NrOg�?)r*)r!rrrr�r*)r>r*rtr$r$r%�
test_types�szTestSolve.test_typesc	Cs.Gdd�dtj�}tjd�jddd�}tjd�jddd�j|�}tj||�dd�dd�dd�f}tj|dd�dd�dd�f|dd�dd�dd�f�}t||�tt	||��t
tjtj|dd�dd�dd�f|�t
ttj||dd�dd�dd�f�tjd�jddd�}t
ttj||�t
ttj|dd�|dd��tjd�jdd�j|�}tj||�dd�dd�f}tj|dd�dd�dd�f|dd�dd�f�}t||�tt	||��tjd�jdd�}t
ttj||�t
ttj|dd�|dd��t
ttj|dd�dd�dd�f|�dS)	Nc@seZdZdS)z,TestSolve.test_0_size.<locals>.ArraySubclassN)rCrDrEr$r$r$r%�
ArraySubclass�sr�rPrLr'rOrMr)
r!r"�arangerVrmrr�rrr rrr�)r>r�r,r-�expected�resultr$r$r%�test_0_size�s*"8
(& 2
 zTestSolve.test_0_sizecCsGdd�dtj�}tjd�jddd�}tjd�jddd�j|�}tj||�dd�dd�dd�f}tj||dd�dd�dd�f�}t||�tt	||��tj||�dd�dd�dd�f}tj|dd�dd�dd�f|dd�dd�dd�f�}t||�tt	||��dS)	Nc@seZdZdS)z.TestSolve.test_0_size_k.<locals>.ArraySubclassN)rCrDrEr$r$r$r%r��sr�rNrOrLr'rMr)
r!r"r�rVrmrr�rrr )r>r�r,r-r�r�r$r$r%�
test_0_size_k�s""
"8
zTestSolve.test_0_size_kN)
rCrDrEr�r��parametrizerrrrr�r�r�r$r$r$r%r��s!r�c@seZdZdd�ZdS)�InvCasescCs0tj|�}tt||�t|��tt||��dS)N)r�invrr�r�rr&)r>r,r-r=Za_invr$r$r%r@s


zInvCases.doN)rCrDrEr@r$r$r$r%r�
sr�c@s2eZdZejjdeeee	g�dd��Z
dd�ZdS)�TestInvr*cCs0tjddgddgg|d�}ttj|�j|�dS)NrOg�?)r*)r!rrrr�r*)r>r*rtr$r$r%r�szTestInv.test_typescCs�Gdd�dtj�}tjdtjd�j|�}tj|�}t|jj	tj
k�t|j|j�tt
||��tjdtjd�j|�}tj|�}t|jj	tjk�t|j|j�tt
||��dS)Nc@seZdZdS)z*TestInv.test_0_size.<locals>.ArraySubclassN)rCrDrEr$r$r$r%r�sr�rrO)r*)rrOrO)rr)r!r"�zeros�int_rmrr�rr*r�float64rrWr �	complex64)r>r�r,�resr$r$r%r�s

zTestInv.test_0_sizeN)rCrDrEr�r�r�rrrrr�r�r$r$r$r%r�sr�c@seZdZdd�ZdS)�EigvalsCasescCs&tj|�}tj|�\}}t||�dS)N)r�eigvals�eigr)r>r,r-r=�ev�evalues�evectorsr$r$r%r@,s
zEigvalsCases.doN)rCrDrEr@r$r$r$r%r�*sr�c@s2eZdZejjdeeee	g�dd��Z
dd�ZdS)�TestEigvalsr*cCs`tjddgddgg|d�}ttj|�j|�tjddgddgg|d�}ttj|�jt|��dS)NrOg�?)r*rd)r!rrrr�r*r2)r>r*rtr$r$r%r�3szTestEigvals.test_typescCs�Gdd�dtj�}tjdtjd�j|�}tj|�}t|jj	tj
k�td|j�tt
|tj��tjdtjd�j|�}tj|�}t|jj	tjk�td	|j�tt
|tj��dS)
Nc@seZdZdS)z.TestEigvals.test_0_size.<locals>.ArraySubclassN)rCrDrEr$r$r$r%r�<sr�rrO)r*)rrOrO)rrO)rr)r)r!r"r�r�rmrr�rr*rr�rrWr r�)r>r�r,r�r$r$r%r�:s

zTestEigvals.test_0_sizeN)rCrDrEr�r�r�rrrrr�r�r$r$r$r%r�2sr�c@seZdZdd�ZdS)�EigCasescCsXtj|�\}}tt||�tj|�tj|�dddd�ft|j�d�tt	||��dS)N.)�rtol)
rr�rr�r!r
r3r*rr&)r>r,r-r=r�r�r$r$r%r@Os

 zEigCases.doN)rCrDrEr@r$r$r$r%r�Msr�c@s2eZdZejjdeeee	g�dd��Z
dd�ZdS)�TestEigr*cCs�tjddgddgg|d�}tjj|�\}}t|j|�t|j|�tjddgddgg|d�}tjj|�\}}t|jt|��t|jt|��dS)NrOg�?)r*rd)r!rrr�rr*r2)r>r*rt�w�vr$r$r%r�XszTestEig.test_typescCs�Gdd�dtj�}tjdtjd�j|�}tj|�\}}t|jj	tj
k�t|jj	tj
k�t|j|j�td|j�tt
|tj��tjdtjd�j|�}tj|�\}}t|jj	tjk�t|jj	tjk�t|j|j�td	|j�tt
|tj��dS)
Nc@seZdZdS)z*TestEig.test_0_size.<locals>.ArraySubclassN)rCrDrEr$r$r$r%r�fsr�rrO)r*)rrOrO)rrO)rr)r)r!r"r�r�rmrr�rr*rr�rrWr r�)r>r�r,r��res_vr$r$r%r�dszTestEig.test_0_sizeN)rCrDrEr�r�r�rrrrr�r�r$r$r$r%r�Wsr�c@s.eZdZdZejjdeee	e
g�dd��ZdS)�SVDBaseTestsFr*cCsxtjddgddgg|d�}tj|�\}}}t|j|�t|jt|��t|j|�tj|d|jd�}t|jt|��dS)NrOg�?)r*F)�
compute_uvr6)r!rr�svdrr*r1r6)r>r*rt�urw�vhr$r$r%r�~szSVDBaseTests.test_typesN)rCrDrEr6r�r�r�rrrrr�r$r$r$r%r�{sr�c@seZdZdd�ZdS)�SVDCasesc	Csptj|d�\}}}t|ttj|�tj|�dddd�ftj|��t|j�d�tt	||��tt	||��dS)NF.)r�)
rr�rr�r!r
r3r*rr&)r>r,r-r=r�rw�vtr$r$r%r@�s&
zSVDCases.doN)rCrDrEr@r$r$r$r%r��sr�c@seZdZdd�ZdS)�TestSVDcCs�tjd�}tj|d|jd�\}}}t|jd�t|jd�t|tjd��tjd	�}tj|d|jd�\}}}t|jd
�t|jd�t|tjd��dS)z6 Empty input should put an identity matrix in u or vh rNrT)r�r6N)rNr)rNrN)rr)rrN)rr)rNrN)r!rlrr�r6rrW�eye)r>rtr�rwr�r$r$r%�test_empty_identity�s

zTestSVD.test_empty_identityN)rCrDrEr�r$r$r$r%r��sr�c@seZdZdd�ZdS)�SVDHermitianCasesc	Cs�tj|ddd�\}}}t|ttj|�tj|�dddd�ftj|��t|j�d�dd�}ttj	|||��tj
tj|jd	�|j��ttj	|||��tj
tj|jd
�|j��t
tj|�dddd�f|�tt||��tt||��dS)NFT)r6.)r�cSs<tt|j��}|d|d|d<|d<tjtj||d��S)NrLrO)�axesrerdrdre)rrr�rgr!�conj�	transpose)�matr�r$r$r%r6�sz'SVDHermitianCases.do.<locals>.hermitianrOrdrdrd)rr�rr�r!r
r3r*rr	Zbroadcast_tor�rWr�sortrr&)r>r,r-r=r�rwr�r6r$r$r%r@�s&
,,zSVDHermitianCases.doN)rCrDrEr@r$r$r$r%r��sr�c@seZdZdZdS)�TestSVDHermitianTN)rCrDrEr6r$r$r$r%r��sr�c@seZdZdd�ZdS)�	CondCasescCs�t|�}d|kr"tttj|�dStj|dd�}ttj|�|d|dddd	�ttj|d
�|d|dddd	�ttj|d�|d|dddd	�tjj|�}ttj|d�t	|�j
d�jd�t	|�j
d�jd�ddd	�ttj|d�t	|�j
d�jd�t	|�j
d�jd�ddd	�ttj|tj
�t	|�j
d�jd �t	|�j
d!�jd"�ddd	�ttj|tj
�t	|�j
d#�jd$�t	|�j
d%�jd&�ddd	�ttj|d�tjt	|�d
j
d'�j
d(�t	|�d
j
d)�j
d*��ddd	�dS)+Nzsize-0F)r�.rrOrRrQ)r.r/rL�fro).rrd).rd).rrd).rdrerd).rd).rrerdrerdrdrerdrerdrdrdrdrdrdrdrdrdrdrdrdrd)r
rrr�condr�rr!r�r[�sum�max�minr�sqrt)r>r,r-r=r�rwZcinvr$r$r%r@�sH



&

&
&
&

zCondCases.doN)rCrDrEr@r$r$r$r%r��sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestCondcCs�tdddgdd
dgdddgg�}ttj|t�d�ttj|t�d�ttj|d�d�ttj|d�d	�ttj|d
�tjd��dS)Ng�?rrOg@g@rNrLrMg�?r�i	r(g�gUUUUUU�?rdgUUUUU6@)rrrr�rr!r�)r>�Ar$r$r%�test_basic_nonsvd�s zTestCond.test_basic_nonsvdcCs�tjd�tjd�g}ddddg}ddg}x,tj||�D]\}}ttj||�dk�q6Wx$tj||�D]\}}tj||�qdWdS)	NrLrOr�g4&�kC)rLrL)rLrLrdre)r!r��onesrhrirrr�)r>ZAs�p_posZp_negr��pr$r$r%�
test_singular�szTestCond.test_singularcCs�ddddddg}ddddg}tjd	�}tj|d
<x6|D].}tj||�}tt|tj��ttj|��q6Wtjd�}tj|d<x||D]t}tj||�}ttj|d��||kr�t|ddk�t|ddk�q�ttj|d��ttj|d��q�WdS)
NrOrLr�rrMg4&�kCrdre)rLrL)rrO)rMrLrL)rOrrO)	r!r��nanrr�rr Zfloat_�isnan)r>Zpsr�r�r�r�r$r$r%�test_nans$





zTestCond.test_nancCs�tjjd�tjjdddd�}d|d<d|d<x\d
D]T}tj||�}t|dtj�t|dtj�ttj	|d
��ttj	|d��q4WdS)Ni�rLrrOr�)rr)rOrOrdre)NrOrLr�rdre)rr)rOrO)rrO)rOr)
r!�random�seed�randrr�rrr�isfinite)r>r�r�r�r$r$r%�test_stacked_singulars
zTestCond.test_stacked_singularN)rCrDrEr�r�r�r�r$r$r$r%r��s	r�c@seZdZdd�ZdS)�	PinvCasescCs<tj|�}t}t||||�|�|ddd�tt||��dS)NrRrQ)r.r/)r�pinvr�rrr&)r>r,r-r=�a_ginvrr$r$r%r@.s
zPinvCases.doN)rCrDrEr@r$r$r$r%r�)sr�c@seZdZdS)�TestPinvN)rCrDrEr$r$r$r%r�6sr�c@seZdZdd�ZdS)�PinvHermitianCasescCs@tj|dd�}t}t||||�|�|ddd�tt||��dS)NT)r6rRrQ)r.r/)rr�r�rrr&)r>r,r-r=r�rr$r$r%r@<szPinvHermitianCases.doN)rCrDrEr@r$r$r$r%r�:sr�c@seZdZdS)�TestPinvHermitianN)rCrDrEr$r$r$r%r�Dsr�c@seZdZdd�ZdS)�DetCasesc
Cs�tj|�}tj|�\}}t|�jjttfkr<t|�jt�}nt|�jt	�}tj
|�}t|tj
|dd��t|tj|�tj
|dd��tj|�}tj|�}|dk}	ttj||	�d�t||	t�dS)NrO)�axisrrdrd)r�det�slogdetr
r*rrr�astyperr�rr
�reducer!�expZ
atleast_1dr[rr)
r>r,r-r=�drw�ld�adr��mr$r$r%r@Js



zDetCases.doN)rCrDrEr@r$r$r$r%r�Hsr�c@s:eZdZdd�Zejjdeee	e
g�dd��Zdd�ZdS)	�TestDetcCsttjdgg�d�tttjdgg��t�ttjdgg�d�tttjdgg��t�ttjdgg�dtf�tttjdgg�d�t�tttjdgg�d�t�ttjdgg�dtf�tttjdgg�d�t�tttjdgg�d�t�dS)NgyrrO)rrr�rrrr�r)r>r$r$r%�	test_zero]szTestDet.test_zeror*cCs^tjddgddgg|d�}ttjj|�j|�tjj|�\}}t|jt|��t|j|�dS)NrOg�?)r*)r!rrrr�r*r�r1)r>r*rt�phrwr$r$r%r�js
zTestDet.test_typescCs�tjdtjd�}tj|�}t|d�t|jjtjk�tj	|�}t|d�t|djjtjk�t|djjtj
k�tjdtjd�}tj|�}t|d�t|jjtjk�tj	|�}t|d�t|djjtjk�t|djjtjk�dS)	Nr)r*g�?rO)rr)rOr)rr)rOr)r!r�r�rr�rrr*rr��float32r�)r>r,r�r$r$r%r�rs 







zTestDet.test_0_sizeN)
rCrDrEr�r�r�r�rrrrr�r�r$r$r$r%r�\s
r�c@seZdZdd�ZdS)�
LstsqCasescCsLtj|�}|j\}}tj|d�\}}}	tj||dd�\}
}}}
|dkrVt|
dkj��||krzt|t	||
��t
||�n
t
||�t|
|
j|��||kr�||kr�tjttj	||
�|��dj
dd�}tj|�}tj|�jdkr�d|_t
|j|j�ntjg�jt|
��}t||�ttj|jtj��tt|
|��tt||��dS)	NFrO)�rcondrrL)r�rd)rO)r!r
rWrr��lstsqrrprrrZ__array_wrap__r[r�rgrrmr�
issubdtyper*�floatingr&)r>r,r-r=�arrr��nr�rwr�rt�	residuals�rank�svZ
expect_residsr$r$r%r@�s,


&

z
LstsqCases.doN)rCrDrEr@r$r$r$r%r��sr�c@sFeZdZdd�Zejjdddgdddddddg�d
d��Zdd
�ZdS)�	TestLstsqc	Cs�tjddddddgddddddgddddddgddddddgg�j}tjddddddg�}t���}|jtd�}tj||�\}}}}t|d	k�tj||dd
�\}}}}t|d	k�tj||dd
�\}}}}t|dk�tt	|�dk�WdQRXdS)
Ngg�?g@g@g@rOrz`rcond` parameter will changerN)r�rMrd)
r!r�Tr�record�
FutureWarningrr�r�len)	r>r,r-�supr�rtrrrwr$r$r%�test_future_rcond�szTestLstsq.test_future_rcondr�r�n_rhsrNrLrrOcCs�tj||�j||�}tj||f�}tj||dd�\}}}}	|dkrTt|dkj��t|j	||f�t|j	||krx|fnd�||kr�|dkr�|tj
||�}
t||
|
jdd��t|t
||��t|	j	t
||�f�dS)N)r�rrL)r�)rre)r!r�rVr�rr�rrprrWrrr�r�)r>r�rr
r,r-rtrrrwr�r$r$r%�test_empty_a_b�s
zTestLstsq.test_empty_a_bcCsjtjddddg�}tjdddddg�}tj|tjt|��g�j}ttd	��tj	||dd
�WdQRXdS)NrrOrLrMg�������?g�������?g������@gffffff
@zIncompatible dimensions)r�rd)
r!rZvstackr�r
rrrrr�)r>rt�yr�r$r$r%�test_incompatible_dims�s
z TestLstsq.test_incompatible_dimsN)rNrLrL)rrNrO)rrNrL)rNrrO)rNrrL)rNrLr)rrr)	rCrDrErr�r�r�rrr$r$r$r%r�sr�dtcCsg|]}tj|��qSr$)r!r*)r\r�r$r$r%r]�sr]z?bBhHiIqQefdgFDGOc@s�eZdZejd�ZeddddgZeddddgZeddddgZeeeegZ	e
ddgddgg�Zejegggd�Z
eejd�ejd�ejd�gZd	d
�Zdd�Zd
d�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�TestMatrixPowerrNrMrrOrL�e�g�GcCs�|jj|�}tt|dddd	d�|j�tt|ddd
dd�|j�tt|dddd
d�|j�tt|ddddd�|j�dS)NrL�d�
rRrrOrMi� iririr)�rshft_1r�rr�rshft_0�rshft_2�rshft_3)r>rZrshftr$r$r%�test_large_power�s   z TestMatrixPower.test_large_powercCsBdd�}x4|jD]*}||j|��|tkr||jj|��qWdS)NcSs*t|d�}t|t|��t|j|j�dS)Nr)rrr�r*)�M�mzr$r$r%�tz�s
z.TestMatrixPower.test_power_is_zero.<locals>.tz)�	rshft_allr��object�stacked)r>rr r�r$r$r%�test_power_is_zero�s
z"TestMatrixPower.test_power_is_zerocCsBdd�}x4|jD]*}||j|��|tkr||jj|��qWdS)NcSs&t|d�}t||�t|j|j�dS)NrO)rrr*)r�rr$r$r%r �s

z-TestMatrixPower.test_power_is_one.<locals>.tz)r!r�r"r#)r>rr r�r$r$r%�test_power_is_one�s
z!TestMatrixPower.test_power_is_onecCsBdd�}x4|jD]*}||j|��|tkr||jj|��qWdS)NcSs>t|d�}|jtkrtnt}t||||��t|j|j�dS)NrL)rr*r"r	rr)r�r�mmulr$r$r%r s
z-TestMatrixPower.test_power_is_two.<locals>.tz)r!r�r"r#)r>rr r�r$r$r%�test_power_is_twos
z!TestMatrixPower.test_power_is_twocCs4dd�}x&|jD]}||jkr||j|��qWdS)NcSs4t|d�}|jtkrtnt}t|||�t|��dS)NrOrd)rr*r"r	rrr�)r�Zinvmatr&r$r$r%r s
z3TestMatrixPower.test_power_is_minus_one.<locals>.tz)r!�dtnoinvr�)r>rr r�r$r$r%�test_power_is_minus_ones
z'TestMatrixPower.test_power_is_minus_onecCs.|jj|�}ttt|d�ttt|dg�dS)Ng�?rO)rr�r�	TypeErrorr)r>rr�r$r$r%�test_exceptions_bad_powersz)TestMatrixPower.test_exceptions_bad_powercCsPttttjdg|�d�ttttjdgdgg|�d�ttttjd|�d�dS)NrOrLrNrM)rNrMrL)rrrr!rr�)r>rr$r$r%�test_exceptions_non_square"sz*TestMatrixPower.test_exceptions_non_squarecCs,||jkrdS|jj|�}ttt|d�dS)NrOrd)r(�noninvr�rrr)r>rr�r$r$r%�test_exceptions_not_invertible's
z.TestMatrixPower.test_exceptions_not_invertibleN)rCrDrEr!r�rrrrr!rr-�blockr#r"r*r(rr$r%r'r)r+r,r.r$r$r$r%r�s 
rc@seZdZdd�ZdS)�TestEigvalshCasescCs^tj|d�}tj|�\}}|jdd�t||t|j�d�tj|d�}t||t|j�d�dS)N�LrO)r�)r��Urd)r�eigvalshr�r�rr3r*)r>r,r-r=r�r�r��ev2r$r$r%r@1szTestEigvalshCases.doN)rCrDrEr@r$r$r$r%r0/sr0c@sBeZdZejjdeeee	g�dd��Z
dd�Zdd�Zdd	�Z
d
S)�TestEigvalshr*cCs:tjddgddgg|d�}tjj|�}t|jt|��dS)NrOg�?)r*)r!rrr3rr*r1)r>r*rtr�r$r$r%r�>szTestEigvalsh.test_typescCsXtjddgddggtjd�}tttjj|dd�tttjj|d�tttjj|d�dS)NrOg�?)r*�lrong)�UPLO�lower�upper)r!rr�rr�rr3)r>rtr$r$r%�test_invalidDszTestEigvalsh.test_invalidcCs�tjddgddggtjd�}tjddgddggtjd�}tjd
dgtjd�}ttj�}tjj|�}t|||d�tjj|dd�}t|||d�tjj|dd�}t|||d�tjj|dd�}t|||d�tjj|d	d�}t|||d�dS)NrrO)r*)r�r1)r7�lr2r�rd)r!rrr3rr3r)r>�Klo�Kup�tgtr�r�r$r$r%�	test_UPLOJs
zTestEigvalsh.test_UPLOcCs�Gdd�dtj�}tjdtjd�j|�}tj|�}t|jj	tj
k�td|j�tt
|tj��tjdtjd�j|�}tj|�}t|jj	tjk�td	|j�tt
|tj��dS)
Nc@seZdZdS)z/TestEigvalsh.test_0_size.<locals>.ArraySubclassN)rCrDrEr$r$r$r%r�bsr�rrO)r*)rrOrO)rrO)rr)r)r!r"r�r�rmrr3rr*rr�rrWr r�r�)r>r�r,r�r$r$r%r�`s

zTestEigvalsh.test_0_sizeN)rCrDrEr�r�r�rrrrr�r:r?r�r$r$r$r%r5=sr5c@seZdZdd�ZdS)�
TestEighCasesc
Cs�tj|�\}}tj|�\}}|jdd�t||�tt||�tj|�dddd�ftj|�t	|j
�d�tj|d�\}}	t||�tt||	�tj|�dddd�ftj|	�t	|j
�t|�d�dS)NrO)r�.)r�r2)r��err_msgrd)r�eighr�r�rrr�r!r
r3r*�repr)
r>r,r-r=r�Zevcr�r�r4Zevc2r$r$r%r@us

 

 zTestEighCases.doN)rCrDrEr@r$r$r$r%r@ssr@c@sBeZdZejjdeeee	g�dd��Z
dd�Zdd�Zdd	�Z
d
S)�TestEighr*cCsJtjddgddgg|d�}tjj|�\}}t|jt|��t|j|�dS)NrOg�?)r*)r!rrrBrr*r1)r>r*rtr�r�r$r$r%r��szTestEigh.test_typescCsXtjddgddggtjd�}tttjj|dd�tttjj|d�tttjj|d�dS)NrOg�?)r*r6)r7r8r9)r!rr�rr�rrB)r>rtr$r$r%r:�szTestEigh.test_invalidcCstjddgddggtjd�}tjddgddggtjd�}tjd
dgtjd�}ttj�}tjj|�\}}t|||d�tjj|dd�\}}t|||d�tjj|dd�\}}t|||d�tjj|dd�\}}t|||d�tjj|d	d�\}}t|||d�dS)NrrO)r*)r�r1)r7r;r2r�rd)r!rrr3rrBr)r>r<r=r>r�r�r�r$r$r%r?�s
zTestEigh.test_UPLOcCs�Gdd�dtj�}tjdtjd�j|�}tj|�\}}t|jj	tj
k�t|jj	tj
k�t|j|j�td|j�tt
|tj��tjdtjd�j|�}tj|�\}}t|jj	tjk�t|jj	tjk�t|j|j�td	|j�tt
|tj��dS)
Nc@seZdZdS)z+TestEigh.test_0_size.<locals>.ArraySubclassN)rCrDrEr$r$r$r%r��sr�rrO)r*)rrOrO)rrO)rr)r)r!r"r�r�rmrrBrr*rr�rrWr r�r�)r>r�r,r�r�r$r$r%r��szTestEigh.test_0_sizeN)rCrDrEr�r�r�rrrrr�r:r?r�r$r$r$r%rD�srDc@seZdZdZdZdS)�
_TestNormBaseN)rCrDrEr�decr$r$r$r%rE�srEc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�_TestNormGeneralcCsFttg�d�tttg|jd��d�ttttg|jd���d�dS)Ng)r*)rrrrr)r>r$r$r%�
test_empty�sz_TestNormGeneral.test_emptyc	Cs�tjdddg�}tjd}tjd}||}�x||D�]r}|j|�}t|tj�}tt|jj	tj
��t|d�t��:}|j
td�t|d�}tt|jj	tj
��t|d�WdQRXt|d�}tt|jj	tj
��t|d�t|d�}tt|jj	tj
��t|d�t|d�}tt|jj	tj
��t||jj	d�|jj	d
��t|d
�}tt|jj	tj
��t||jj	d�|jj	d��t|tj�}tt|jj	tj
��t|d	�q4WdS)NrOr�
AllIntegerZAllFloatgzdivide by zero encounteredrLg@g�?rNg@rdg�?g�?)r!r�	typecodesr�rrr�
issubclassr*rrrr�filter�RuntimeWarning)	r>r,�exact_types�
inexact_types�	all_types�each_inexact_types�at�anrr$r$r%�test_vector_return_type�s:










z(_TestNormGeneral.test_vector_return_typecs�ddddg}dd	d
dg}ddd
dg}�fdd�}x|||fD]}||�q<Wx8t|�jd�t|�jd�t|�jd�fD]}||�qvWdS)NrOrLrMrNcs�tjjt|�d�jd�tjjt|t�d�jd�tjjt|t�d�jd�tjjt|d�d�jd�tjjt|d�d�jd�tjjt|d
�d�jd�tjjt|d�d�jd�tjjt|d
�d�jd�dS)N�g�?)r)g@g�?rOg$@g(@�rLg�i@�rrNg��6ҭ�@rdg���Q��?g��6ҭ�@regr�q�?g�g�s�c���?)r!�testingrrrFr)r�)r>r$r%�_test�s 






z+_TestNormGeneral.test_vector.<locals>._test)r*rdrerfrcrdrf)rr)r>r,r-r�rYr�r$)r>r%�test_vector�sz_TestNormGeneral.test_vectorc		s�tdddgdddgg|jd��x�ddddddtjtjgD]h���fd	d
�t�jd�D�}tt��dd�|���fdd
�t�jd�D�}tt��dd�|�q:Wtjdd
|jd�j	ddd���j
}�x�dddddtjtjdgD]މx�tjt||�d�D]�}|\}}|dk�r||7}|dk�r0||7}||k�rNt
tt��|d�npt��|d�}|||�||k�r����fdd
�t�j��D�}n ���fdd
�t�j��D�}t||��qWq�WdS)NrOrLrMrNrRr')r*rcs$g|]}t�dd�|f�d��qS)N)�ord)r)r\�k)r��orderr$r%r]sz._TestNormGeneral.test_axis.<locals>.<listcomp>)r[r�cs$g|]}t�|dd�f�d��qS)N)r[)r)r\r\)r�r]r$r%r]srVr�cs*g|]"}t�dd�j|�d��d��qS)N)r�)r[)r�take)r\r\)�B�k_indexr]r$r%r]5scs,g|]$}t�dd�j|�d�j�d��qS)N)r�)r[)rr^r)r\r\)r_r`r]r$r%r]8srdrerd)rrr!�Infr�rWrrr�rVrgrh�combinationsrr�)	r>Z	expected0Z	expected1Zndr�Zrow_axisZcol_axisrr�r$)r�r_r`r]r%�	test_axiss2 "



z_TestNormGeneral.test_axisc		Cs�tjdd|jd�jddd�}d}d}t|ddd	�}t|ddd
d�}ttj|�||jdd�d�d}t|j	|k|j|j	|dd��x�ddd
dddtj
tj
gD]�}x�t|j�D]v}t|||d	�}t|||d
d�}ttj|�||j||�d�t
|j	�}d||<t|�}t|j	|k|j|j	|||��q�Wq�Wx�dddddtj
tj
ddg	D]�}x�tjt|j�d�D]�}t|||d	�}t|||d
d�}ttj|�||j||�d�t
|j	�}d||d
<d||d<t|�}t|j	|k|j|j	|||���q`W�qHWdS)NrOrV)r*rLrMrNzorder {0}, axis = {1}z;Shape mismatch found {0}, expected {1}, order={2}, axis={3})r[r�T)r[r�Zkeepdims)rArr��nuc)rOrOrOrdrerd)r!r�rrVrrZsqueeze�formatrrWrar�rgrrrjrh�permutations)	r>r�Zallclose_errZ	shape_errr��foundZexpected_shaper]r\r$r$r%�
test_keepdims<sB
 

"

z_TestNormGeneral.test_keepdimsN)rCrDrErHrTrZrcrhr$r$r$r%rG�s
)%rGc@s:eZdZejZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dS)�_TestNorm2DcCs tt|jgg|jd��d�dS)N)r*g)rrrr)r>r$r$r%�test_matrix_emptylsz_TestNorm2D.test_matrix_emptyc	
Cs�|jdddgdddgg�}tjd}d}||}�x�|D�]z}|j|�}t|tj�}tt|jj	tj
��t|d�t��:}|j
td�t|d�}tt|jj	tj
��t|d�WdQRXt|d�}tt|jj	tj
��t|d�t|d�}tt|jj	tj
��t|d�t|d�}tt|jj	tj
��t|d�t|tj�}tt|jj	tj
��t|d�t|d
�}tt|jj	tj
��t|d�t|d�}tt|jj	tj
��tjj|dd
d�q8WdS)NrOrrIZfdFDg@zdivide by zero encounteredg�?rLg@r�rdgU&,t=�@r')r)rdg�?g�LX�z��?re)rr!rJr�rrrrKr*rrrrrLrMrX)	r>r,rNrOrPrQrRrSrr$r$r%�test_matrix_return_typeos@













z#_TestNorm2D.test_matrix_return_typecCs�|jddgddgg|jd�}tt|�d�tt|d�d�tt|d	�d
�tt|t�d�tt|t�d�tt|d�d
�tt|d�d
�tt|d�d�tt|d�d�ttt|d�ttt|d�ttt|d�dS)NrOrMrRrS)r*�Tg�?r�rdg$@g(@g@g@rLg��W�?"@gї�ʄ�?Znofrorg���T"@g���T"@rdrerf)rrrrrrr�)r>r�r$r$r%�test_matrix_2x2�sz_TestNorm2D.test_matrix_2x2cCs�d|jdddgdddgdddgg|jd�}tt|�d�tt|d�d�tt|d�d
�tt|t�d�tt|t�d�tt|d�d�tt|d�d�tt|d�d�tt|d�d�dS)NrOrrLrMr'rrR)r*�Yg�?r�rdg�B+pc�?g�������?g333333�?g�?g�������?g�&��.d�?gܸՠ���?g�������?g�������?gA�b�2�"@grj=Q0�?g�������?gA�b�2�"@grj=Q0�?rdre)rrrrr)r>r�r$r$r%�test_matrix_3x3�s*z_TestNorm2D.test_matrix_3x3cCs|jdddgdddgg|jd�}tjdd|jd�jddd�}ttt|d	d
�ttt|dd
�tttddgd	d�tttddgdd�tttddgdd�x<d
D]4}ttt||d�ttt||d�ttt||d�q�Wttjt|dd�ttjt|dd�ttt|dd�dS)NrOrLrMrNrRr')r*rVr�rrd�test)rrM)rrO)rOrL)rLrM)rrOrL)	rrr!r�rVrr�rZ	AxisError)r>r�r_r]r$r$r%�
test_bad_args�s 
z_TestNorm2D.test_bad_argsN)
rCrDrEr!rrjrkrmrorqr$r$r$r%rigs3ric@seZdZdS)�	_TestNormN)rCrDrEr$r$r$r%rr�srrc@s$eZdZdd�Zdd�Zdd�ZdS)�TestNorm_NonSystematiccCs*tjdtjd�}tt|dd�ddd�dS)Nr)r*rM)r[g�����L)@rL)r))r!r�Z
longdoubler+r)r>rtr$r$r%�test_longdouble_norm�sz+TestNorm_NonSystematic.test_longdouble_normcCs,tjd	gtjd�}tt|dd�d
dd�dS)NrL�)r*rM)r[rR)r)li�l)r!rZint32r+r)r>rtr$r$r%�test_intmin�sz"TestNorm_NonSystematic.test_intmincCs�tjdtjd�}d|d<d|d<d}ttjj|dd	�|d
d�|jtj�}ttjj|dd	�|dd�|jtj�}ttjj|dd	�|d
d�dS)NrL)r*r'y@rrOg���V;'@rM)r[r)r)�	rR)rLy@@i����y�@)	r!rlZclongdoubler+rrr��
complex128r�)r>r�r�r$r$r%�test_complex_high_ord�sz,TestNorm_NonSystematic.test_complex_high_ordN)rCrDrErtrvryr$r$r$r%rs�srsc@seZdZejZdZdS)�_TestNormDoubleBaser(N)rCrDrEr!rrrFr$r$r$r%rz�srzc@seZdZejZdZdS)�_TestNormSingleBaser'N)rCrDrEr!r�rrFr$r$r$r%r{sr{c@seZdZejZdZdS)�_TestNormInt64Baser(N)rCrDrEr!Zint64rrFr$r$r$r%r|	sr|c@seZdZdS)�TestNormDoubleN)rCrDrEr$r$r$r%r}sr}c@seZdZdS)�TestNormSingleN)rCrDrEr$r$r$r%r~sr~c@seZdZdS)�
TestNormInt64N)rCrDrEr$r$r$r%rsrc@seZdZdd�Zdd�ZdS)�TestMatrixRankcCs�tdttjd���tjd�}d|d<tt|�d�tttjd	��d�ttddddg�d�tttjd
��d�ttdg�d�tj|tjd�tjd�g�}tt|�tjdddg��ttd�d�dS)NrNgrOrMrrdrd)rdrd)rNrN)rN)rNrN)rrr!r�r�r)r>�I�msr$r$r%�test_matrix_ranks
zTestMatrixRank.test_matrix_rankcCs�tdttjd�dd��tdttjd�dd��tdttjd
�dd��tjd�}d|d<tdt|dd��d|d<tdt|dd	d
��tdt|ddd
��dS)NrNT)r6rOrgrMg:�0�yE>g��|"�BE>)r6Ztolg�;䡈�E>)rNrN)rNrNrdrd)rdrdrdrd)rdrd)rrr!r�r�r�)r>r�r$r$r%�test_symmetric_rank0s
z"TestMatrixRank.test_symmetric_rankN)rCrDrEr�r�r$r$r$r%r�sr�cCs�tjjd�}x�td�D]�}|jdd�}|dd�df|dd�df|dd�df<tt|�d	�|dd�d
f|dd�df|dd�df<tt|�d
�qWdS)Ni�3r�(r)�sizerOrLrrwrNrRrMrP)r�r)r!r�ZRandomStater�Znormalrr)�rng�i�Xr$r$r%�test_reduced_rank>s,,r�c@sJeZdZejZdd�Zejjddgdddg�dd��Z	d	d
�Z
dd�Zd
S)�TestQRcCs�t|�}|j}|j\}}t||�}tj|dd�\}}t|j|k�t|j|k�tt||��tt||��t|j||fk�t|j||fk�tt	||�|�tt	|j
j�|�tj
|��ttj|�|�tj|dd�\}	}
t|	j|k�t|
j|k�tt|	|��tt|
|��t|	j||fk�t|
j||fk�tt	|	|
�|�tt	|	j
j�|	�tj
|��ttj|
�|
�tj|dd�}t|j|k�tt||��t||
�dS)NZcomplete)�modeZreducedr�)rr*rWr�r�qrrr rrrr�r!r��triu)r>r,Za_typeZa_dtyper�rr\�qr�Zq1Zr1Zr2r$r$r%�check_qrOs8

zTestQR.check_qrr�rrMrcCstt||�}tj||f�}|j|�tjj|dd�\}}t|jtj�t|jtj�t|j	||f�t|j	|f�dS)N�raw)r�)
r�r!rlr�rr�rr*rrW)r>r�rr\r,�h�taur$r$r%�
test_qr_emptyvs

zTestQR.test_qr_emptycCs�|jddgddgddggtjd�}tj|dd	�\}}t|jtjk�t|jtjk�t|jd
k�t|jdk�tj|jdd	�\}}t|jtjk�t|jtjk�t|jdk�t|jd
k�dS)NrOrLrMrNrRr')r*r�)r�)rLrM)rL)rMrL)rL)	rr!rrr�rr*rWr)r>r,r�r�r$r$r%�
test_mode_raw�s"zTestQR.test_mode_rawcCs�|jddgddgg�}|jddgddgddgg�}x@dD]8}|j|�}|j|�}|j|�|j|�|j|j�q8WxPdD]H}dd|j|�}dd|j|�}|j|�|j|�|j|j�qzWdS)	NrOrLrMrNrRr'�fdy�?)rr�r�r)r>r,r-r�m1�m2r$r$r%�test_mode_all_but_economic�s







z!TestQR.test_mode_all_but_economicN)rMr)rrM)rr)rCrDrEr!rr�r�r�r�r�r�r�r$r$r$r%r�Ks'r�c@seZdZdd�Zdd�ZdS)�TestCholeskyc		Csdd
dddg}tjtjtjtjf}x�tj||�D]�\}}tjjd�tjj	|�}tj
|tj�rr|dtjj	|�}tt
t|���}d|dd�<tj|j|�j�|�}tj||d�}tjj|�}tj||j|�j��}t||dj||||�d	|jd
tj|�jd�q0WdS)NrOrLrM�2ry�?)r*z{} {}
{}
{}i�r)rAZatol)rOrO)rLrL)rMrM)r�r�)rMrrrdre)rdrere)r!r�r�r�rxrhrir�r�Zrandnr�Zcomplexfloatingrrr�r
r	r�r�r
r�choleskyrrerWZfinfoZeps)	r>ZshapesZdtypesrWr*r,�tr�r-r$r$r%�test_basic_property�s z TestCholesky.test_basic_propertycCs�Gdd�dtj�}tjdtjd�j|�}tj|�}t|j|j�t	|j
jtjk�t	t
|tj��tjdtjd�j|�}tj|�}t|j|j�t	|j
jtjk�t	t
|tj��dS)Nc@seZdZdS)z/TestCholesky.test_0_size.<locals>.ArraySubclassN)rCrDrEr$r$r$r%r��sr�rrO)r*)rrOrO)rOrr)r!r"r�r�rmrr�rrWrr*rr�r r�)r>r�r,r�r$r$r%r��s

zTestCholesky.test_0_sizeN)rCrDrEr�r�r$r$r$r%r��sr�cCs�tjdkrd}nd}x�tjtjfD]v}tjd|d�}|j|�}|jd�j�}t|j	jd�x<t
jt
jt
j
fD](}||�}t|||��t|||��qlWq"WdS)N�little�<�>rN)r*�S�=)�sys�	byteorderr!r�r�r�ZnewbyteorderZbyteswaprr*rr�r�r�r)ZnativeZdttrZn_arrZsw_arrZroutiner�r$r$r%�test_byteorder_check�s

r�cCsptjddgddgg�}tjddgddgg�}tjddddg�ddd�}||d<||d<ttjjtjj|�dS)NrOrLrMrN.r)rr)r!rr�rrrr�)Z
invertibleZnon_invertiblertr$r$r%� test_generalized_raise_multiloop�sr�c CsRd}ytj�}Wn"ttfk
r2tjd�YnX|dk�r(tjd�tjd�ddl}|j|j	d�yt
jjj
�Wn2tk
r�Yn tk
r�tjtj�YnXy0t
jdgg�}t
jjjddd|d||dd�	Wn<tk
�r}zdt|�k�rtj|�WYdd}~XnXtjtj�n&tj�\}}tj|�|k�rNtjd�dS)	N�zNot POSIX or fork failed.rrOg�?zDORGQR parameter number 5zNumpy xerbla not linked in.)rr)�os�fork�OSError�AttributeErrorr��skip�close�resourceZ	setrlimitZRLIMIT_COREr!r�lapack_liteZxerblar�r|�_exit�	EX_CONFIGrZdorgqrr:�wait�WEXITSTATUS)Z	XERBLA_OK�pidr�r,r�statusr$r$r%�test_xerbla_override�s:


r�cCshddg}tjd�}xP|D]H}|jdd|d�}tjtjd|g�|jdd|d�}tjtjd|g�qWdS)	NzPyQt5.QtWidgetsZIPythonz�
    import sys
    {before}
    try:
        import {bad_lib}
    except ImportError:
        sys.exit(0)
    {after}
    x = np.ones(2, dtype=np.float32)
    sys.exit(0 if np.allclose(x.dot(x), 2.0) else 1)
    zimport numpy as np�)�before�after�bad_libz-c)r�r�r�)�textwrap�dedentre�
subprocess�
check_callr��
executable)Zbad_libs�templater��coder$r$r%�test_sdot_bug_8577/s


r�c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestMultiDotcCsltjjd�}tjjd�}tjjd�}tt|||g�|j|�j|��tt|||g�tj|tj||���dS)Nr'rL)r'rL)rLr')r'rL)r!r�rrr)r>r�r_�Cr$r$r%�(test_basic_function_with_three_argumentsTs
 z5TestMultiDot.test_basic_function_with_three_argumentscCsNtjjd�}tjjd�}tt||g�|j|��tt||g�tj||��dS)Nr'rL)r'rL)rLr')r!r�rrr)r>r�r_r$r$r%�&test_basic_function_with_two_arguments^sz3TestMultiDot.test_basic_function_with_two_argumentscCs\tjjd�}tjjd�}tjjd�}tjjd�}tt||||g�|j|�j|�j|��dS)Nr'rLrO)r'rL)rLr')r'rL)rLrO)r!r�rrr)r>r�r_r��Dr$r$r%�8test_basic_function_with_dynamic_programing_optimizationfs
zETestMultiDot.test_basic_function_with_dynamic_programing_optimizationcCsLtjjd�}tjjd�}tjjd�}tjjd�}tt||||g�jd�dS)NrLr')rLr')r'rL)rLrL)rL)r!r�rrrW)r>�A1dr_r�r�r$r$r%�test_vector_as_first_argumentos
z*TestMultiDot.test_vector_as_first_argumentcCsLtjjd�}tjjd�}tjjd�}tjjd�}tt||||g�jd�dS)Nr'rL)r'rL)rLr')r'rL)r')r!r�rrrW)r>r�r_r��D1dr$r$r%�test_vector_as_last_argumentys
z)TestMultiDot.test_vector_as_last_argumentcCsLtjjd�}tjjd�}tjjd�}tjjd�}tt||||g�jf�dS)NrLr')rLr')r'rL)r!r�rrrW)r>r�r_r�r�r$r$r%�&test_vector_as_first_and_last_argument�s
z3TestMultiDot.test_vector_as_first_and_last_argumentcCs�tjjd�}tjjd�}tjjd�}tjd�}t|||g|d�}||ksLt�t||j|�j|��t|tj|tj||���dS)Nr'rL)r#)r'rL)rLr')r'rL)r'rL)r!r�r�rrHrr)r>r�r_r�r#�retr$r$r%�test_three_arguments_and_out�s
z)TestMultiDot.test_three_arguments_and_outcCsdtjjd�}tjjd�}tjd�}t||g|d�}||ks>t�t||j|��t|tj||��dS)Nr'rL)r#)r'rL)rLr')r'r')r!r�r�rrHrr)r>r�r_r#r�r$r$r%�test_two_arguments_and_out�s
z'TestMultiDot.test_two_arguments_and_outcCsztjjd�}tjjd�}tjjd�}tjjd�}tjd	�}t||||g|d�}||ksZt�t||j|�j|�j|��dS)
Nr'rLrO)r#)r'rL)rLr')r'rL)rLrO)r'rO)r!r�r�rrHrr)r>r�r_r�r�r#r�r$r$r%�,test_dynamic_programing_optimization_and_out�s
z9TestMultiDot.test_dynamic_programing_optimization_and_outcCshtjjd �tjjd!�tjjd"�tjjd#�tjjd$�tjjd%�g}tjdd	d
ddd
gddddddgddddddgddddddgddddddgddddddgg�}tjddddddgddddddgddddddgddddddgddddddgddddddggtd�}|d8}t|dd�\}}ttj|dd&�dd�f�tj|dd'�dd�f��ttj|�tj|��dS)(NrU�#�rRr�rVgg��@gþ@g�O�@g�1�@g���@g��@g�@gջ@g��@gp�@g��@g��@g@�@gX�@g��@rrOrMrLrN)r*T)Zreturn_costs)rUr�)r�r�)r�rR)rRr)rr�)r�rVrdrd)r!r�r�intrrr�)r>ZarraysZ
m_expectedZ
s_expectedrwr�r$r$r%�test_dynamic_programming_logic�s.




z+TestMultiDot.test_dynamic_programming_logiccCs&tttg�ttttjjd�g�dS)NrM)rMrM)rr�rr!r�)r>r$r$r%�test_too_few_input_arrays�sz&TestMultiDot.test_too_few_input_arraysN)rCrDrEr�r�r�r�r�r�r�r�r�r�r�r$r$r$r%r�Rs
	




r�c@sveZdZejjdejd�dfejd�dfg�dd	��Zejjd
ddg�dd
��Z	ejjdddg�dd��Z
dd�ZdS)�
TestTensorinvzarr, indrNr'rPrLrMrOcCs&tt��tj||d�WdQRXdS)N)�ind)rrr�	tensorinv)r>rr�r$r$r%�test_non_square_handling�s
z&TestTensorinv.test_non_square_handlingz
shape, ind�cCsNtjd�}||_tj||d�}|j|d�|jd|�}|j}t||�dS)Nr�)r,r�)r!r�rWrr�r)r>rWr�r,�ainvr��actualr$r$r%�test_tensorinv_shape�s
z"TestTensorinv.test_tensorinv_shaper�rcCs6tjd�}d|_tt��tj||d�WdQRXdS)Nr�rNr'rPrM)r,r�)rNr'rPrM)r!r�rWrr�rr�)r>r�r,r$r$r%�test_tensorinv_ind_limit�s

z&TestTensorinv.test_tensorinv_ind_limitcCsJtjd�}d|_tj|dd�}tjd�}ttj||d�tjj||��dS)Nr�rPrMrO)r�)r�rPrM)	r!r�rWrr�r�rZ	tensordotZtensorsolve)r>r,r�r-r$r$r%�test_tensorinv_result�s


z#TestTensorinv.test_tensorinv_resultN)rNr'rPrL)rMrMrL�rNr'rPrM)r�rL�r�rPrM)r�rOre)rCrDrEr�r�r�r!r�r�r�r�r�r$r$r$r%r��s
r�c	Cs>tjddgddggdd�}ttd��tj|�WdQRXdS)NrOrLrRZfloat16)r*zunsupported in linalgre)r!rrr*rr�)rr$r$r%�test_unsupported_commontype�sr�Fz*Numpy not compiled with 64-bit BLAS/LAPACK)�run�reasonge�
B)Z
free_bytescCsRd}tjd|gtjd�}tjddgtjd�}d|d<tj||�}t|d
d�dS)NrLrrO)r*rlrd)rrdrd)rrd)r!r�r�r�rr)rr,r-r�r$r$r%�test_blas64_dotsr�)r�c
	Cs�tj}tjjj}d}d
}|}tjddg|d�}tjdg|d�}tjdg|d�}|||||||dd�}t|dd�t|d|�t|d|�t|j��}	t	d|	ko�dkn�dS)NrLrrO)r*r�infor�r�*llllrdll)
r!r�rr�Zdgeqrfr�rr��itemr)
r*Zlapack_routiner�rZldar,Zworkr��resultsZlworkr$r$r%�!test_blas64_geqrf_lwork_smoketests
r�)r'r(y�?@y@@y@@y@@y@�?y�?@y�?@y@@y@@y@@y@�?y�?@y�?@y@@y@@y@@y@�?y�?@y�?@y�?�y�?�y�?�)rr)ry�?�?y@@y@�y@�y@"@y@@y@�?y�?@y�?�?y@@y@�y@"�y@�y@ @y@�?y�?@y@�y�?�?y@@y@�y@�y@"@y@@y@�?y�?@y�?�?y@@y@�y@"�y@�y@ @y@�?y�?@y@�y�?�?y@@y@�y@�y@"@y@@y@�?y�?@y�?�y@�y�?�?y@@y@�y@"�y@�y@ @y@�?y�?@y�?�y@�y�?�y@�y@@y@�y@@y@�)rr)|�__doc__r�r�rhr}r�r�r�Znumpyr!rrrrrrrr	r
rrr
rZnumpy.linalgrrrrrZnumpy.linalg.linalgrZ
numpy.testingrrrrrrrrrZnumpy.testing._private.utilsrr&r+r1r2r3rGr9rKr�r�rTrlr�rZrxryrzr�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�r�r�r�rr�r�rr0r5r@rDrErGrirrrsrzr{r|r}r~rr�r�r�r�r�r�r�r�r�r�r�r�Zxfailr�r�r$r$r$r%�<module>s�(,


&$&$ &*


0


:	
$.@

*4&W6;x$
d,1#)