B e j6;d?d?e j6;d?e4d@e j6;dAdAe j6;dAe4dBdAdCgdDdEggdCdAge4dFe d$d%gd&d'gged%d$gj<e4dGed$d%gd&d'gged%d$gj<g 7Z8e8e5de4dHe d$d%d&gd&d'd+gge d(e d%d$ge d(e4dIe d$d%gd&d'gdJd+gge d(e d%d$d&ge d(e4dKe d$d%d&gd&d'd+gged(e d%d$ged(e4dLe d$d%gd&d'gdJd+gged(e d%d$d&ged(e4dMe dNdOdPgdQdRdSgged(e d1d-ged(e4dTe dNdOgdPdUgdVdWgged(e d1d-dPged(e4dXe dNdOdPgdQdRdSgged(e d1d-ged(e4dYe dNdOgdPdUgdVdWgged(e d1d-dPged(e4dZe dNdOdPgdQdRdSgged(e d1d-gd[d\gged(e4d]e dNdOgdPdUgdVdWgged(e d1d-gd[d\gd[d\gged(e4d^e j6;d?d_e j6;d?e4d`e j6;dAdae j6;dAe4dbe j6;dadAe j6;dae4dce j6;ddEe j6;ddhd;e4dde j6;dEde j6;dEdhd;g7Z8e8e5de4dee d$d%gd%d$gge d(de4dfe d$d%gd%d$gged(de4dge d$d.gdhdAgged(de4die d$d.gdhdAgged(de4dje j9d9ed(ddhd;e4dkdAdCgdCdAggde4dFe d$d%gd%d$ggde4dled$d%gd%d$ggde4dme j6;dAdAdg 7Z8dndoZ=e8e=7Z8dpdqZ>drdsZ?e8e?7Z8e@e@fdtduZAGdvdwdwe3ZBGdxdydye3ZCGdzd{d{e3ZDGd|d}d}e3ZEGd~dde3ZFGddde3ZGddZHddZIGdddeBeEZJGdddeBeEZKGdddeBeEZLGdddeBeEZMGdddeBeEZNGdddeBeEZOGdddeBZPGddde3ZQGdddeBeCZRGdddeBeEZSGdddeBeCZTGddde3ZUGddde3ZVGdddeDeGZWGdddeDeGZXGddde3ZYGddde3ZZGdddeYZ[GdddeYZ\GdddeYZ]Gddde3Z^ddZ_Gddde3Z`Gddde3ZaddZbddZcddZdGddde3Zeefdk rze(dS)z# Test functions for linalg module )divisionabsolute_importprint_functionN)arraysingledoublecsinglecdoubledotidentity)multiply atleast_2dinfasarraymatrix)linalg) matrix_powernorm matrix_rank multi_dot LinAlgError)_multi_dot_matrix_chain_order) assert_ assert_equal assert_raisesassert_array_equalassert_almost_equalassert_allcloserun_module_suitedecSkipTestsuppress_warningscCs | p|S)N)abr"r"Q/opt/alt/python37/lib64/python3.7/site-packages/numpy/linalg/tests/test_linalg.pyifthensr&cCs | p|S)Nr")r#r$r"r"r%implysr' cKs8t|jjttfkr|}n|}t||fd|i|dS)Ndecimal)rdtypetyperrold_assert_almost_equal)r#r$single_decimaldouble_decimalkwr*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)Ngh㈵>gdy=)rr)r+r"r"r%get_rtol6s r3square nonsquare hermitian generalizedzsize-0stridedc@s*eZdZefddZddZddZdS) 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)r isinstancestrnamer#r$ frozensettags)selfr<r#r$r>r"r"r%__init__Es zLinalgCase.__init__cCs||j|j|jddS)zN Run the function `do` on this test case, expanding arguments )r>N)r#r$r>)r?dor"r"r%checkPszLinalgCase.checkcCs d|jfS)Nz)r<)r?r"r"r%__repr__VszLinalgCase.__repr__N)__name__ __module__ __qualname__setr@rBrCr"r"r"r%r9Ds r9cCs0|tkstdx|D]}|j|hB|_qW|S)z^ Add the given tag (a string) to each of the cases (a list of LinalgCase objects) z Invalid tag)all_tagsAssertionErrorr>)tagZcasescaser"r"r% apply_tagYs rLirg?g@g@g@)r+rZdouble_2g@ry?@y@@y@@y@@y@?r Z cdouble_2y?@y?y?y?Z0x0)rr)r)r>Z 0x0_matrix)rZ8x8Z1x1rMZnonarrayZ matrix_b_onlyZmatrix_a_and_bZ single_nsq_1Z single_nsq_2g@Z double_nsq_1Z double_nsq_2Z csingle_nsq_1y??y@@y@y@y@"@y@@Z csingle_nsq_2y@"y@y@ @Z cdouble_nsq_1Z cdouble_nsq_2Zcdouble_nsq_1_2y?y@Zcdouble_nsq_2_2Z8x11 Z1x5Z5x1Z0x4Z4x0ZhsingleZhdoubleZhcsingley@ZhcdoubleZhemptyZ hnonarrayZhmatrix_a_and_bZ hmatrix_1x1cCsg}xtD]}t|jtjs"q t|jd|jd|jg}|jdkrPd}nt|jd|jd|jg}t|jd|||j dhBd}| |t|jgdd d|jj }|jdkrd}n$t|jgdd d|jj }t|jd |||j dhBd}| |q W|S) NrOrPr(Z_tile3r7)r>)rPrOZ_tile213) CASESr:r#npndarrayrr$r9r<r>appendreshapeshape) new_casesrKr#r$new_caser"r"r%_make_generalized_casess&  $ $r]ccst|tjs|dfVdSdg|j}d|d<|jdkr@d|d<|jdkrRd |d <xtjt|D]}d d t|j|D}td d |D}tj ||j d}| tj  d||}||d<| |j}tt||k|dddd |DfV|jdkrJ|jddkrJt|j}d|d<tjjj||d}|dfV|jdkr|jddkrt|j}d|d<tjjj||d}|dfV|jdkrd|jdddkrdt|j}d|d<d|d<tjjj||d}|dfVqdWdS)z< Generate cartesian product of strides for all axes ZnopN)rM)rMrPrMrO)rMr^cSsg|]\}}t||qSr")abs).0r#r$r"r"r% (sz%_stride_comb_iter..cSsg|]}tdd|qS)N)slice)rcrepeatr"r"r%rd)s)r+l>[=.Zstride__cSsg|] }d|qS)z%+dr")rcjr"r"r%rd2sr)stridesZ stride_xxx_0Zstride_xxx_0_x)rMrMZstride_xxx_0_0)r:rVrWndim itertoolsproducttupleziprZemptyr+viewZuint32Zfill __class__ralljoinlistrilibZ stride_tricksZ as_strided)xZ stride_setZrepeats new_shapeZslicesZxisr"r"r%_stride_comb_itersF           ryc Cszg}xptD]h}xbt|jD]T\}}xJt|jD]<\}}t|jd|d||||jdhBd}||q.WqWq W|S)Nrgr8)r>)rUryr#r$r9r<r>rX)r[rKr#Za_labelr$Zb_labelr\r"r"r%_make_strided_casesFs rzc CsnxhtD]`}|j|@|krq|j|@r&qy||Wqtk rdd|}|t7}t|YqXqWdS)zl 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)rUr>rB Exception traceback format_excrI)funcrequireexcluderKmsgr"r"r% _check_casesWs   rc@seZdZddZddZdS)LinalgSquareTestCasecCst|jdhddhddS)Nr4r7zsize-0)rr)rrA)r?r"r"r% test_sq_casesmsz"LinalgSquareTestCase.test_sq_casescCst|jddhdhddS)Nr4zsize-0r7)rr)rrA)r?r"r"r%test_empty_sq_casespsz(LinalgSquareTestCase.test_empty_sq_casesN)rDrErFrrr"r"r"r%rksrc@seZdZddZddZdS)LinalgNonsquareTestCasecCst|jdhddhddS)Nr5r7zsize-0)rr)rrA)r?r"r"r%test_nonsq_casesvsz(LinalgNonsquareTestCase.test_nonsq_casescCst|jddhdhddS)Nr5zsize-0r7)rr)rrA)r?r"r"r%test_empty_nonsq_casesysz.LinalgNonsquareTestCase.test_empty_nonsq_casesN)rDrErFrrr"r"r"r%rtsrc@seZdZddZddZdS)HermitianTestCasecCst|jdhddhddS)Nr6r7zsize-0)rr)rrA)r?r"r"r%test_herm_cases~sz!HermitianTestCase.test_herm_casescCst|jddhdhddS)Nr6zsize-0r7)rr)rrA)r?r"r"r%test_empty_herm_casessz'HermitianTestCase.test_empty_herm_casesN)rDrErFrrr"r"r"r%r|src@s(eZdZejddZejddZdS)LinalgGeneralizedSquareTestCasecCst|jddhdhddS)Nr7r4zsize-0)rr)rrA)r?r"r"r%test_generalized_sq_casessz9LinalgGeneralizedSquareTestCase.test_generalized_sq_casescCst|jdddhddS)Nr7r4zsize-0)r)rrA)r?r"r"r%test_generalized_empty_sq_casessz?LinalgGeneralizedSquareTestCase.test_generalized_empty_sq_casesN)rDrErFrslowrrr"r"r"r%rsrc@s(eZdZejddZejddZdS)"LinalgGeneralizedNonsquareTestCasecCst|jddhdhddS)Nr7r5zsize-0)rr)rrA)r?r"r"r%test_generalized_nonsq_casessz?LinalgGeneralizedNonsquareTestCase.test_generalized_nonsq_casescCst|jdddhddS)Nr7r5zsize-0)r)rrA)r?r"r"r%"test_generalized_empty_nonsq_casesszELinalgGeneralizedNonsquareTestCase.test_generalized_empty_nonsq_casesN)rDrErFrrrrr"r"r"r%rsrc@s(eZdZejddZejddZdS)HermitianGeneralizedTestCasecCst|jddhdhddS)Nr7r6zsize-0)rr)rrA)r?r"r"r%test_generalized_herm_casessz8HermitianGeneralizedTestCase.test_generalized_herm_casescCst|jdddhdhddS)Nr7r6zsize-0Znone)rr)rrA)r?r"r"r%!test_generalized_empty_herm_casessz>HermitianGeneralizedTestCase.test_generalized_empty_herm_casesN)rDrErFrrrrr"r"r"r%rsrcCst|}|jdkr|j|jkr<|jdd|jdd}n(|j|jdkr\|jdd}ntdtj|t||d}x8tjt t |jddD]}t ||||||<qW|St ||SdS)NrPr_rMzNot implemented...)r+r`) rrjrZ ValueErrorrVroZ common_typerkrlmapranger )r#r$rwrcr"r"r%dot_generalizeds   rcCspt|}|jdkr^tj|j|jd}x4tjtt |jddD]}t |jd||<q@W|St |jdSdS)NrP)r+r`r) rrjrVrorZr+rkrlrrr )r#rrr"r"r%identity_like_generalizeds  rc@s,eZdZddZddZddZddZd S) TestSolvecCs:t||}t|t||ttt|tt|tdS)N)rsolverrrr'r:r)r?r#r$r>rvr"r"r%rAs z TestSolve.doccs,dd}xttttgD]}||fVqWdS)NcSs2tjddgddgg|d}tt||j|dS)NrMg?)r+)rVrrrrr+)r+rvr"r"r%rBsz#TestSolve.test_types..check)rrrr )r?rBr+r"r"r% test_typesszTestSolve.test_typesc Cs.Gdddtj}tdddd}tdddd|}t||ddddddf}t|ddddddf|ddddddf}t||tt ||t tj tj|ddddddf|t t tj||ddddddftdddd}t t tj||t t tj|dd|ddtddd|}t||ddddf}t|ddddddf|ddddf}t||tt ||tddd}t t tj||t t tj|dd|ddt t tj|ddddddf|dS) Nc@s eZdZdS)z,TestSolve.test_0_size..ArraySubclassN)rDrErFr"r"r"r% ArraySubclasssrrNrOr(rMrPr) rVrWarangerYrprrrrr:rrr)r?rr#r$expectedresultr"r"r% test_0_sizes*"8 (& 2  zTestSolve.test_0_sizecCsGdddtj}tdddd}tdddd|}t||ddddddf}t||ddddddf}t||tt ||t||ddddddf}t|ddddddf|ddddddf}t||tt ||dS) Nc@s eZdZdS)z.TestSolve.test_0_size_k..ArraySubclassN)rDrErFr"r"r"r%rsrrQrMrOr(rPr) rVrWrrYrprrrrr:)r?rr#r$rrr"r"r% test_0_size_ks"" "8 zTestSolve.test_0_size_kN)rDrErFrArrrr"r"r"r%rs!rc@s$eZdZddZddZddZdS)TestInvcCs<t|}tt||t|ttt|tt|tdS)N) rinvrrrrr'r:r)r?r#r$r>Za_invr"r"r%rA s   z TestInv.doccs,dd}xttttgD]}||fVqWdS)NcSs0tjddgddgg|d}tt|j|dS)NrMg?)r+)rVrrrrr+)r+rvr"r"r%rBsz!TestInv.test_types..check)rrrr )r?rBr+r"r"r%rszTestInv.test_typescCsGdddtj}tjdtjd|}t|}t|jj tj kt |j |j tt ||tjdtjd|}t|}t|jj tjkt |j |j tt ||dS)Nc@s eZdZdS)z*TestInv.test_0_size..ArraySubclassN)rDrErFr"r"r"r%rsr)rrMrM)r+)rr)rVrWzerosint_rprrrr+r,float64rrZr: complex64)r?rr#resr"r"r%rs  zTestInv.test_0_sizeN)rDrErFrArrr"r"r"r%r src@s$eZdZddZddZddZdS) TestEigvalscCs&t|}t|\}}t||dS)N)reigvalseigr)r?r#r$r>evevaluesevectorsr"r"r%rA,s zTestEigvals.doccs,dd}xttttgD]}||fVqWdS)NcSs`tjddgddgg|d}tt|j|tjddgddgg|d}tt|jt|dS)NrMg?)r+r_)rVrrrrr+r2)r+rvr"r"r%rB2sz%TestEigvals.test_types..check)rrrr )r?rBr+r"r"r%r1szTestEigvals.test_typescCsGdddtj}tjdtjd|}t|}t|jj tj kt d|j tt |tjtjdtjd|}t|}t|jj tjkt d|j tt |tjdS)Nc@s eZdZdS)z.TestEigvals.test_0_size..ArraySubclassN)rDrErFr"r"r"r%r<sr)rrMrM)r+)rrM)rr)r)rVrWrrrprrrr+r,rrrZr:r)r?rr#rr"r"r%r:s    zTestEigvals.test_0_sizeN)rDrErFrArrr"r"r"r%r*s rc@s$eZdZddZddZddZdS)TestEigcCsdt|\}}tt||t|t|ddddft|jdtt t |t t |t dS)N.)rtol) rrrrrVrr3r+rr'r:r)r?r#r$r>rrr"r"r%rAOs   z TestEig.doccs,dd}xttttgD]}||fVqWdS)NcSstjddgddgg|d}tj|\}}t|j|t|j|tjddgddgg|d}tj|\}}t|jt|t|jt|dS)NrMg?)r+r_)rVrrrrr+r2)r+rvwvr"r"r%rBWs  z!TestEig.test_types..check)rrrr )r?rBr+r"r"r%rVs zTestEig.test_typescCsGdddtj}tjdtjd|}t|\}}t|jj tj kt|jj tj kt |j |j t d|j tt |tjtjdtjd|}t|\}}t|jj tjkt|jj tjkt |j |j t d|j tt |tjdS)Nc@s eZdZdS)z*TestEig.test_0_size..ArraySubclassN)rDrErFr"r"r"r%rgsr)rrMrM)r+)rrM)rr)r)rVrWrrrprrrr+r,rrrZr:r)r?rr#rres_vr"r"r%res  zTestEig.test_0_sizeN)rDrErFrArrr"r"r"r%rMsrc@s$eZdZddZddZddZdS)TestSVDc Csd|krtttj|ddSt|d\}}}t|tt|t|ddddft|t|j dt t t |t t |t t t t |t t |t dS)Nzsize-0r.)r)rrrsvdrrrVrr3r+rr'r:r)r?r#r$r>urxvtr"r"r%rA~s& z TestSVD.doccs,dd}xttttgD]}||fVqWdS)NcSsttjddgddgg|d}t|\}}}t|j|t|jt|t|j|tj|dd}t|jt|dS)NrMg?)r+F) compute_uv)rVrrrrr+r1)r+rvrrxZvhr"r"r%rBs  z!TestSVD.test_types..check)rrrr )r?rBr+r"r"r%rs zTestSVD.test_typescCsdtjdtjd}ttjtj|tjdtjd}ttjtj|tjdtjd}ttjtj|dS)N)rr)r+)rrM)rMr)rVrrrrrr)r?r#r"r"r%rs zTestSVD.test_0_sizeN)rDrErFrArrr"r"r"r%r|s  rc@seZdZddZddZdS) TestCondSVDcCsZt|}d|kr&tttj|dddStj|dd}t|d|dt|ddddS) Nzsize-0F)r).r).r_rSrR)r.r/)rrrrrrcond)r?r#r$r>rrxr"r"r%rAszTestCondSVD.docCsDtdddgdddgdddgg}tt|t|dddS)Ng?g@rgg@g@)N.)rVrrrr)r?Ar"r"r%test_stacked_arrays_explicitlys"z*TestCondSVD.test_stacked_arrays_explicitlyN)rDrErFrArr"r"r"r%rs rc@seZdZddZddZdS) TestCond2cCs\t|}d|kr&tttj|dddStj|dd}t|d|dt|dddd dS) Nzsize-0F)r).r).r_rOrSrR)r.r/)rrrrrrr)r?r#r$r>rrxr"r"r%rAsz TestCond2.docCsHtdddgdddgdddgg}tt|dt|ddddS) Ng?g@rgg@g@rO)N.)rVrrrr)r?rr"r"r%rs"z(TestCond2.test_stacked_arrays_explicitlyN)rDrErFrArr"r"r"r%rs rc@seZdZddZdS) TestCondInfcCs6tdddgdddgdddgg}tt|tddS)Ng?rgg@)rrrrr)r?rr"r"r%tests zTestCondInf.testN)rDrErFrr"r"r"r%rsrc@seZdZddZdS)TestPinvcCsDt|}tt||||dddttt|tt|tdS)NrSrR)r.r/)rpinvrr rr'r:r)r?r#r$r>Za_ginvr"r"r%rAs z TestPinv.doN)rDrErFrAr"r"r"r%rsrc@s,eZdZddZddZddZddZd S) TestDetc Cst|}t|\}}t|jjttfkrdrxZldZadrmr"r"r%rAs    z TestDet.docCsttdggdtttdggtttdggdtttdggtttdggdt ftttdggdttttdggdtttdggdt ftttdggdttttdggdtdS)NgyrrM)rrrr,rr rr)r?r"r"r% test_zeroszTestDet.test_zeroccs,dd}xttttgD]}||fVqWdS)NcSs^tjddgddgg|d}ttj|j|tj|\}}t|jt|t|j|dS)NrMg?)r+)rVrrrrr+rr1)r+rvZphrxr"r"r%rBs z!TestDet.test_types..check)rrrr )r?rBr+r"r"r%rszTestDet.test_typescCstjdtjd}t|}t|dt|jjtjkt |}t|dt|djjtjkt|djjtj ktjdtj d}t|}t|dt|jjtj kt |}t|dt|djjtj kt|djjtj kdS)N)rr)r+g?)rMrrrM) rVrrrrrrr+r,rfloat32r)r?r#rr"r"r%rs         zTestDet.test_0_sizeN)rDrErFrArrrr"r"r"r%rs  rc@seZdZddZdS) TestLstsqcCsdd|krtttj||dSt|}|j\}}t|d\}}} t||\} } } } ||krzt|t || t | |n t | |t| | || |kr||krtt t || |dj dd}t|}t|jdkrd|_t | j|jntgt| }t| |tt| jtjttt|tt| tttt|tt| tdS)Nzsize-0rrO)rrM)rM)rrrZlstsqrVrrZrrr rZ__array_wrap__rbsumrjrrpr,rZ issubdtyper+floatingr'r:r)r?r#r$r>arrrnrrxrrvZ residualsZrankZsvZ expect_residsr"r"r%rAs.    &  z TestLstsq.doN)rDrErFrAr"r"r"r%rsrc@seZdZeddgddggZeddgddggZeddgddggZedd gd d ggZedZ e dd d f Z e dd d fe dd d f<e e dd d f<d dZ ddZ ddZddZddZddZddZd S)TestMatrixPowerrrMr_rQir` g?g @g333333?gffffff?NcCs(tt|jddddd|jdS)NrOdi rM)rrR90)r?r"r"r%test_large_power=sz TestMatrixPower.test_large_powercCs&tt|jddddtddS)NrOrir)rrrr )r?r"r"r%test_large_power_trailing_zeroAsz.TestMatrixPower.test_large_power_trailing_zeroccs0dd}x"|j|j|jgD]}||fVqWdS)NcSs0t|d}t|t|jdt|j|jdS)Nr)rrr rZr+)Mmzr"r"r%tzFs z'TestMatrixPower.testip_zero..tz)Arb22arbfloatlarge)r?rrr"r"r% testip_zeroEszTestMatrixPower.testip_zeroccs0dd}x"|j|j|jgD]}||fVqWdS)NcSs&t|d}t||t|j|jdS)NrM)rrr+)rrr"r"r%rNs  z&TestMatrixPower.testip_one..tz)rrr)r?rrr"r"r% testip_oneMszTestMatrixPower.testip_oneccs0dd}x"|j|j|jgD]}||fVqWdS)NcSs,t|d}t|t||t|j|jdS)NrO)rrr r+)rrr"r"r%rVs z&TestMatrixPower.testip_two..tz)rrr)r?rrr"r"r% testip_twoUszTestMatrixPower.testip_twoccs4dd}x&|j|j|j|jgD]}||fVqWdS)NcSs(t|d}tt|jdt||dS)Nr_r)rrr rZr )rrr"r"r%r^s z)TestMatrixPower.testip_invert..tz)rrrr)r?rrr"r"r% testip_invert]szTestMatrixPower.testip_invertcs$ddl}t|jjjfdddS)Nrcs tjdS)Nr_)rnoninvr")r?r"r%gz;TestMatrixPower.test_invert_noninvertible..) numpy.linalgrrr)r?numpyr")r?r%test_invert_noninvertibleds z)TestMatrixPower.test_invert_noninvertible)rDrErFrrrrrr rcopytrrrrrrrr"r"r"r%r2src@seZdZddZdS) TestBoolPowercCs(tddgddgg}tt|d|dS)NTFrO)rrr)r?rr"r"r% test_squarelszTestBoolPower.test_squareN)rDrErFrr"r"r"r%rjsrc@s4eZdZddZddZddZddZd d Zd S) TestEigvalshcCs^t|d}t|\}}|jddt||t|jdt|d}t||t|jddS)NLr_)r)rU)reigvalshrsortrr3r+)r?r#r$r>rrrev2r"r"r%rAss    zTestEigvalsh.doccs,dd}xttttgD]}||fVqWdS)NcSs:tjddgddgg|d}tj|}t|jt|dS)NrMg?)r+)rVrrrrr+r1)r+rvrr"r"r%rBs z&TestEigvalsh.test_types..check)rrrr )r?rBr+r"r"r%r~szTestEigvalsh.test_typescCsXtjddgddggtjd}tttjj|ddtttjj|dtttjj|ddS)NrMg?)r+lrong)UPLOlowerupper)rVrrrrrr)r?rvr"r"r% test_invalidszTestEigvalsh.test_invalidcCstjddgddggtjd}tjddgddggtjd}tjddgtjd}ttj}tj|}t|||dtjj|dd}t|||dtjj|dd}t|||dtjj|d d}t|||dtjj|d d}t|||ddS) NrrM)r+r_)rr)rlrr)rVrrr3rrr)r?KloKuptgtrrr"r"r% test_UPLOs  zTestEigvalsh.test_UPLOcCsGdddtj}tjdtjd|}t|}t|jj tj kt d|j tt |tjtjdtjd|}t|}t|jj tjkt d|j tt |tjdS)Nc@s eZdZdS)z/TestEigvalsh.test_0_size..ArraySubclassN)rDrErFr"r"r"r%rsr)rrMrM)r+)rrM)rr)r)rVrWrrrprrrr+r,rrrZr:rr)r?rr#rr"r"r%rs    zTestEigvalsh.test_0_sizeN)rDrErFrArrrrr"r"r"r%rqs  rc@s4eZdZddZddZddZddZd d Zd S) TestEighc Cst|\}}t|\}}|jddt||tt||t|ddddft|t |j dt|d\}} t||tt|| t|ddddft| t |j t |ddS)Nr_)r.)rr)rerr_msg) reighrrrrrrVrr3r+repr) r?r#r$r>rZevcrrrZevc2r"r"r%rAs       z TestEigh.doccs,dd}xttttgD]}||fVqWdS)NcSsJtjddgddgg|d}tj|\}}t|jt|t|j|dS)NrMg?)r+)rVrrrrr+r1)r+rvrrr"r"r%rBsz"TestEigh.test_types..check)rrrr )r?rBr+r"r"r%rszTestEigh.test_typescCsXtjddgddggtjd}tttjj|ddtttjj|dtttjj|ddS)NrMg?)r+r)rrr)rVrrrrrr)r?rvr"r"r%rszTestEigh.test_invalidcCstjddgddggtjd}tjddgddggtjd}tjddgtjd}ttj}tj|\}}t|||dtjj|dd\}}t|||dtjj|dd\}}t|||dtjj|d d\}}t|||dtjj|d d\}}t|||ddS) NrrM)r+r_)rr)rrrr)rVrrr3rrr)r?rrrrrrr"r"r%rs zTestEigh.test_UPLOcCsGdddtj}tjdtjd|}t|\}}t|jj tj kt|jj tj kt |j |j t d|j tt |tjtjdtjd|}t|\}}t|jj tjkt|jj tjkt |j |j t d|j tt |tjdS)Nc@s eZdZdS)z+TestEigh.test_0_size..ArraySubclassN)rDrErFr"r"r"r%rsr)rrMrM)r+)rrM)rr)r)rVrWrrrprrrr+r,rrrZr:rr)r?rr#rrr"r"r%rs  zTestEigh.test_0_sizeN)rDrErFrArrrrr"r"r"r%rs  rc@s\eZdZdZdZddZddZddZdd Zd d Z d d Z ddZ ddZ ddZ dS) _TestNormNcCsFttgdtttg|jddttttg|jdddS)Ng)r+)rrrdtr )r?r"r"r% test_empty sz_TestNorm.test_emptyc Cstdddg}tjd}tjd}||}x||D]r}||}t|tj }tt|jj tj t |dt :}| tdt|d}tt|jj tj t |dWdQRXt|d}tt|jj tj t |dt|d}tt|jj tj t |d t|d}tt|jj tj t ||j d |j d t|d }tt|jj tj t ||j d |j d t|tj}tt|jj tj t |d q4WdS)NrMr AllIntegerZAllFloatgzdivide by zero encounteredr_rOg@g?rQg?g?)rVr typecodesrrrr issubclassr+r,rrr!filterRuntimeWarning) r?r# exact_types inexact_types all_typeseach_inexact_typesatansupr"r"r%test_vector_return_types:             z!_TestNorm.test_vector_return_typec Cstdddgdddgg}tjd}d}||}x|D]v}||}t|tj }tt|jj tj t |dt :}| tdt|d}tt|jj tj t |dWdQRXt|d}tt|jj tj t |dt|d }tt|jj tj t |d t|d }tt|jj tj t |dt|tj}tt|jj tj t |dt|d }tt|jj tj t |dt|d }tt|jj tj t|dddq8WdS)NrMrrZfdFDg@zdivide by zero encounteredr_g?rOgLXz?r`fronucgU&,t=@r()r*)rVrrrrrrr r+r,rrr!r r r-) r?r#r r rrrrrr"r"r%test_matrix_return_type9s@                z!_TestNorm.test_matrix_return_typecsddddg}ddddg}ddddg}fd d }x|||fD] }||q._test)r+)rr)r?r#r$rrrr")r?r% test_vectorls     z_TestNorm.test_vectorcCstddgddgg|jd}tt|dtt|ddtt|dd tt|td tt|t d tt|dd tt|d d tt|ddtt|ddttt|dttt|dttt|ddS)NrMrPrSrT)r+gT"@rrg$@g(@g@r_g@rOgW?"@r`gїʄ?Znofrorar)rrrrrrr)r?rr"r"r%test_matrix_2x2sz_TestNorm.test_matrix_2x2cCsdtjdddgdddgdddgg|jd}tt|d tt|d d tt|d d tt|td tt|t dtt|ddtt|ddtt|ddtt|dddS)Ng?rMrOrPr(rrS)r+grj=Q0?rrgB+pc?g?g333333?g?r_g?g&.d?r`gܸՠ?)rVrrrrr)r?rr"r"r%test_matrix_3x3s*z_TestNorm.test_matrix_3x3c stdddgdddgg|jdxddd dddtjtj gD]hfd d tjdD}ttd d |fd d tjd D}ttdd |q:Wtjdd|jd dddj }xdddddtjtj dgD]܉xt t| |dD]}|\}}|d kr||7}|d kr.||7}||krLt tt|d qt|d }|||||krfdd tjD}n fdd tjD}t||qWqWdS)NrMrOrPrQrSr()r+r_rcs$g|]}tdd|fdqS)N)ord)r)rck)rorderr"r%rdsz'_TestNorm.test_axis..)rrcs$g|]}t|ddfdqS)N)r)r)rcr)rrr"r%rdsr`rcs*g|]"}tddj|ddqS)N)r)r)rtake)rcr)Bk_indexrr"r%rdscs,g|]$}tddj|djdqS)N)r)r)rrT)rcr)r r!rr"r%rds)rrrVInfrrZrrrrYrjrk combinationsrr) r?Z expected0Z expected1ZndrZrow_axisZcol_axisrrr")rr r!rr% test_axiss2       z_TestNorm.test_axisc Cstjdd|jdddd}d}d}t|ddd }t|ddd d }tt|||ddd d }t|j |k||j |ddxddddddtj tj gD]}xt |j D]v}t|||d }t|||d d }tt|||||d t |j }d||<t|}t|j |k||j |||qWqWxdddddtj tj ddg D]}xtt |j dD]}t|||d }t|||d d }tt|||||d t |j }d||d<d||d<t|}t|j |k||j |||q`WqHWdS)NrMr)r+rOrPrQzorder {0}, axis = {1}z;Shape mismatch found {0}, expected {1}, order={2}, axis={3})rrT)rrZkeepdims)r)rMrMrMr_rr`rr)rVrrrYrrZsqueezeformatrrZr#rrjrtrmrk permutations) r?rZ allclose_errZ shape_errrfoundZexpected_shaperrr"r"r% test_keepdimssB      "     z_TestNorm.test_keepdimscCstdddgdddgg|jd}tjdd|jdddd}ttt|d d ttt|d d tttddgd dtttddgd dxcs &r>c@seZdZddZdS) TestCholeskycCsGdddtj}tjdtjd|}t|}t|j|jt |j j tj kt t |tjtjdtjd|}t|}t|j|jt |j j tjkt t |tjdS)Nc@s eZdZdS)z/TestCholesky.test_0_size..ArraySubclassN)rDrErFr"r"r"r%rsr)rrMrM)r+)rMrr)rVrWrrrprZcholeskyrrZrr+r,rr:r)r?rr#rr"r"r%rs  zTestCholesky.test_0_sizeN)rDrErFrr"r"r"r%rKsrKcCstjdkrd}nd}xtjtjfD]v}tjd|d}||}|d}t|j jdxrQ)r+S=)sys byteorderrVrrr4Z newbyteorderZbyteswaprr+rrrrr)ZnativeZdttrZn_arrZsw_arrZroutinerr"r"r%test_byteorder_checks  rScCsptddgddgg}tddgddgg}tddddgddd}||d<||d<ttjjtjj|dS)NrMrOrPrQ.)rr)rVrrrrrr)Z invertibleZnon_invertiblervr"r"r% test_generalized_raise_multiloops rTc CsDd}y t}Wn ttfk r0tdYnX|dkrtdtdddl}||jdyt j j Wn*t k rYnttjYnXy0t dgg}t j j ddd|d||dd Wn:t k r }zdt|krt|Wdd}~XYnXttjn$t\}}t||kr@tddS) NzNot POSIX or fork failed.rrM)rrg?zDORGQR parameter number 5zNumpy xerbla not linked in.)osforkOSErrorAttributeErrorr closeresourceZ setrlimitZ RLIMIT_CORErVrZ lapack_liteZxerblar_exit EX_CONFIGrZdorgqrr;wait WEXITSTATUS)Z XERBLA_OKpidr[r#eZstatusr"r"r%test_xerbla_overrides:      rbc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS) TestMultiDotc Csltjd}tjd}tjd}tt|||g|||tt|||gt|t||dS)N)r(rO)rOr()rVr9rrr )r?rr Cr"r"r%(test_basic_function_with_three_arguments+s     z5TestMultiDot.test_basic_function_with_three_argumentscCs\tjd}tjd}tjd}tjd}tt||||g||||dS)N)r(rO)rOr()rOrM)rVr9rrr )r?rr rdDr"r"r%8test_basic_function_with_dynamic_programing_optimization5s     zETestMultiDot.test_basic_function_with_dynamic_programing_optimizationcCsLtjd}tjd}tjd}tjd}tt||||gjddS)NrO)rOr()r(rO)rOrO)rO)rVr9rrrZ)r?A1dr rdrfr"r"r%test_vector_as_first_argument>s     z*TestMultiDot.test_vector_as_first_argumentcCsLtjd}tjd}tjd}tjd}tt||||gjddS)N)r(rO)rOr(rO)r()rVr9rrrZ)r?rr rdD1dr"r"r%test_vector_as_last_argumentHs     z)TestMultiDot.test_vector_as_last_argumentcCsLtjd}tjd}tjd}tjd}tt||||gjddS)NrO)rOr()r(rOr")rVr9rrrZ)r?rhr rdrjr"r"r%&test_vector_as_first_and_last_argumentRs     z3TestMultiDot.test_vector_as_first_and_last_argumentc Csjtjdtjdtjdtjdtjdtjdg}tddd d d d gddd dddgddddddgddddddgddddddgddddddgg}tjddddddgddddddgddddddgddddddgddddddgddddddggtjd}|d8}t|dd\}}tt|dd ddft|dd ddftt|t|dS)!N)#)rn)rorS)rSr)r)rprgg@gþ@gO@g1@g@g@g@gջ@g@gp@g@g@g@@gX@g@rrMrPrOrQrS)r+T)Z return_costsr_)rVr9rintrrrB)r?ZarraysZ m_expectedZ s_expectedrxrr"r"r%test_dynamic_programming_logic\s.     z+TestMultiDot.test_dynamic_programming_logiccCs&tttgttttjdgdS)N)rPrP)rrrrVr9)r?r"r"r%test_too_few_input_arrayszs z&TestMultiDot.test_too_few_input_arraysN) rDrErFrergrirkrlrrrsr"r"r"r%rc)s     rc__main__)r(r))g__doc__Z __future__rrrrVrQrkr|warningsrrVrrrrr r r r r rrrrrrrrrrZnumpy.linalg.linalgrZ numpy.testingrrrrrrrrr r!r&r'r-r1r2r3rHobjectr9rLr9ZseedrUrorpZrandr"r]ryrzrGrrrrrrrrrrrrrrrrrrrrrrrrrr+r0r1r2r3r=r>rKrSrTrbrcrDr"r"r"r%s$  0                        /      B #/& > 8DQ ^1V