o 6a#@sX dZddlZddlZddlZddlZddlZddlZddlZddlZ ddlm Z m Z m 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,dddZ$ddZ-ddZ.ddZ/hdZ0GdddZ1ddZ2e j34dgZ5e5e2de1de ddgd d!gge d"e ddge d"e1d#e ddgd d!gge d"e ddge d"e1d$e ddgd d!gge d"e gd%gd&ge d"e1d'e d(d)gd*d+gge d"e d,d(ge d"e1d-e d(d)gd*d+gged"e d,d(ged"e1d.e d(d)gd*d+gged"e gd/gd0ged"e1d1e j6d2e d"e j6d3e d"d4hd5e1d6e j37d7d7e j37d7e1d8e j37d9d9e j37d9e1d:d9d;gde1d?e gd@gd&ge d"e ddge d"e1dAe ddgd d!gdBdCgge d"e gdDe d"e1dEe gd@gd&ge d"e ddge d"e1dFe ddgd d!gdBdCgge d"e gdDe d"e1dGe gdHgdIge d"e d,d(ge d"e1dJe dKdLgdMdNgdOdPgge d"e gdQe d"e1dRe gdHgdIged"e d,d(ged"e1dSe dKdLgdMdNgdOdPgged"e gdQed"e1dTe gdHgdIged"e d,d(gdUdVgged"e1dWe dKdLgdMdNgdOdPgged"e d,d(gdUdVgdUdVgged"e1dXe j37d7dYe j37d7e1dZe j37d9d[e j37d9e1d\e j37d[d9e j37d[e1d]e j37dd=e j37dd4hd5e1d^e j37d=de j37d=d4hd5g7Z5e5e2d_e1d`e ddgddgge d"de1dae ddgddgge d"de1dbe dd)gdcd9gge d"de1dde dd)gdcd9gged"de1dee j6d2e d"dd4hd5e1dfd9d;gd;d9ggde1dge ddgddggde1dhe j37d9d9dg7Z5didjZ8e5e87Z5dkdlZ9dmdnZ:e5e:7Z5GdodpdpZ;Gdqdrdre;ZGdwdxdxe;Z?Gdydzdze;Z@Gd{d|d|e;ZAd}d~ZBddZCGdddeeAZOGdddeOeLZPGdddeeAZUGdddeUZVGdddeeAZ^GdddZ_Gddde>eAZ`GdddZaGdddZbGdddebZcGdd„debZdGddĄdedecZeGddƄdƃZfGddȄdebZgGddʄdebZhGdd̄debZiGdd΄deeegZjGddЄdeeehZkGdd҄deeeiZlGddԄdԃZmddքZnGdd؄d؃ZoGddڄdڃZpdd܄ZqddބZrddZsej[jtddZuGdddZvGdddZwddZxej[jtej[jye( ddde*ddddZzej[jye( ddddZ{dS)z# Test functions for linalg module N)arraysingledoublecsinglecdoubledotidentitymatmul)multiply atleast_2dinfasarray)linalg) matrix_powernorm matrix_rank multi_dot LinAlgError)_multi_dot_matrix_chain_order) assert_ assert_equal assert_raisesassert_array_equalassert_almost_equalassert_allclosesuppress_warningsassert_raises_regex HAS_LAPACK64)requires_memorycCs$t|t|tjrt|uStjuSN)type isinstancenpndarray)outin_r&@/usr/lib/python3/dist-packages/numpy/linalg/tests/test_linalg.pyconsistent_subclasssr( cKs8t|jjttfvr |}n|}t||fd|i|dS)Ndecimal)r dtyper rrold_assert_almost_equal)absingle_decimaldouble_decimalkwr+r&r&r'r$srcCstttttttti|Sr)rrrrr,r&r&r'get_real_dtype, r4cCstttttttti|Sr)rrrrr3r&r&r'get_complex_dtype1r5r6cCs|ttfvrdSdS)Ngh㈵>gdy=)rrr3r&r&r'get_rtol6s r7>squarestrided hermitian nonsquare generalizedsize-0c@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)rr!strnamer.r/ frozensettags)selfr@r.r/rBr&r&r'__init__Fs zLinalgCase.__init__cCs||j|j|jddS)zN Run the function `do` on this test case, expanding arguments rBN)r.r/rB)rCdor&r&r'checkQszLinalgCase.checkcCsd|jdS)Nz )r@rCr&r&r'__repr__WszLinalgCase.__repr__N)__name__ __module__ __qualname__setrDrGrJr&r&r&r'r>Es r>cCs,|tvsJd|D] }|j|hB|_q |S)z^ Add the given tag (a string) to each of the cases (a list of LinalgCase objects) z Invalid tag)all_tagsrB)tagcasescaser&r&r' apply_tag[srSr8r?@@@r3rdouble_2)rVrUrX)rWrX@r?@y@@y@@y@@@?r cdouble_2)r\r[y?@)y?y?y?0x0rrrr=rE8x81x1nonarrayr; single_nsq_1)rUrVrW single_nsq_2g@rZ)rVrUrW double_nsq_1 double_nsq_2 csingle_nsq_1)??@@@)y@y@"@y@@ csingle_nsq_2rnrorpy@"y@y@ @)r\r[rp cdouble_nsq_1 cdouble_nsq_2cdouble_nsq_1_2y?y@cdouble_nsq_2_28x11 1x55x10x44x0r:hsinglehdoublehcsingley@hcdoublehempty hnonarray matrix_b_only hmatrix_1x1cCsg}tD]}t|jtjsqt|jd|jd|jg}|jdur%d}nt|jd|jd|jg}t|jd|||j dhBd}| |t|jgdd d|jj }|jdurbd}nt|jgdd d|jj }t|jd |||j dhBd}| |q|S) Nrfrgr)_tile3r<rErgrf_tile213) CASESr!r.r"r#rr/r>r@rBappendreshapeshape) new_casesrRr.r/new_caser&r&r'_make_generalized_casess*   $ $  rccst|tjs|dfVdSdg|j}d|d<|jdkr!d|d<|jdkr*d |d <tjt|D]}d d t|j|D}td d |D}tj ||j d}| tj  d||}||d<| |j}tt||k|dddd |DfV|jdkr|jddkrt|j}d|d<tjjj||d}|dfV|jdkr|jddkrt|j}d|d<tjjj||d}|dfV|jdkr|jdddkrt|j}d|d<d|d<tjjj||d}|dfVq1dS)z< Generate cartesian product of strides for all axes nopNrd)rdrgrdrf)rdrcSsg|] \}}t||qSr&)abs).0r.r/r&r&r' sz%_stride_comb_iter..cSsg|]}tdd|qSr)slice)rrepeatr&r&r'rsr3l>[=.stride__cSsg|]}d|qS)z%+dr&)rjr&r&r'r(sr)strides stride_xxx_0stride_xxx_0_xrdrdstride_xxx_0_0)r!r"r#ndim itertoolsproducttuplezipremptyr,viewuint32fill __class__ralljoinlistrlib stride_tricks as_strided)x stride_setrepeats new_shapeslicesxisr&r&r'_stride_comb_iter sL            rc Csng}tD]0}t|jD](\}}t|jD]\}}t|jd|d||||jdhBd}||qq q|S)Nrr9rE)rrr.r/r>r@rBr)rrRr.a_labelr/b_labelrr&r&r'_make_strided_cases=s  rc@s"eZdZeZeefddZdS)LinalgTestCasec Csv|jD]5}|j|@|kr q|j|@rqz||jWqty8}zd|d}|t7}t||d}~wwdS)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: z N) TEST_CASESrBrGrF Exception traceback format_excAssertionError)rCrequireexcluderRemsgr&r&r' check_casesQs     zLinalgTestCase.check_casesN)rKrLrMrrrNrr&r&r&r'rNsrc@eZdZddZddZdS)LinalgSquareTestCasecC|jdhddhddS)Nr8r<r=rrrrIr&r&r' test_sq_casesg z"LinalgSquareTestCase.test_sq_casescC|jddhdhddS)Nr8r=r<rrrIr&r&r'test_empty_sq_casesk  z(LinalgSquareTestCase.test_empty_sq_casesN)rKrLrMrrr&r&r&r're rc@r)LinalgNonsquareTestCasecCr)Nr;r<r=rrrIr&r&r'test_nonsq_casesrrz(LinalgNonsquareTestCase.test_nonsq_casescCr)Nr;r=r<rrrIr&r&r'test_empty_nonsq_casesvrz.LinalgNonsquareTestCase.test_empty_nonsq_casesN)rKrLrMrrr&r&r&r'rprrc@r)HermitianTestCasecCr)Nr:r<r=rrrIr&r&r'test_herm_cases}rz!HermitianTestCase.test_herm_casescCr)Nr:r=r<rrrIr&r&r'test_empty_herm_casesrz'HermitianTestCase.test_empty_herm_casesN)rKrLrMrrr&r&r&r'r{rrc@,eZdZejjddZejjddZdS)LinalgGeneralizedSquareTestCasecCr)Nr<r8r=rrrIr&r&r'test_generalized_sq_cases  z9LinalgGeneralizedSquareTestCase.test_generalized_sq_casescC|jhdddS)N>r8r<r=rrrIr&r&r'test_generalized_empty_sq_casesz?LinalgGeneralizedSquareTestCase.test_generalized_empty_sq_casesN)rKrLrMpytestmarkslowrrr&r&r&r'r  rc@r)"LinalgGeneralizedNonsquareTestCasecCr)Nr<r;r=rrrIr&r&r'test_generalized_nonsq_casesrz?LinalgGeneralizedNonsquareTestCase.test_generalized_nonsq_casescCr)N>r;r<r=rrrIr&r&r'"test_generalized_empty_nonsq_casesrzELinalgGeneralizedNonsquareTestCase.test_generalized_empty_nonsq_casesN)rKrLrMrrrrrr&r&r&r'rrrc@r)HermitianGeneralizedTestCasecCr)Nr<r:r=rrrIr&r&r'test_generalized_herm_casesrz8HermitianGeneralizedTestCase.test_generalized_herm_casescCs|jhddhddS)N>r:r<r=nonerrrIr&r&r'!test_generalized_empty_herm_casesrz>HermitianGeneralizedTestCase.test_generalized_empty_herm_casesN)rKrLrMrrrrrr&r&r&r'rrrcCst|}|jdkrZ|j|jkr|jdd|jdd}n|j|jdkr.|jdd}ntdtj|t||d}tjt t |jddD] }t ||||||<qJ|St ||S)NrgrrdzNot implemented...r3r) r rr ValueErrorr"r common_typerrmapranger)r.r/rrcr&r&r'dot_generalizeds   rcCsHt|}|jdkrtj|j|jd}t|jd|d<|St|jdS)Nrgr3r.r)r rr"rrr,r)r.rr&r&r'identity_like_generalizeds  rc@eZdZddZdS) SolveCasescCs.t||}t|t||tt||dSr)rsolverrrr()rCr.r/rBrr&r&r'rFs z SolveCases.doNrKrLrMrFr&r&r&r'r rc@s:eZdZejdeeee gddZ ddZ ddZ dS) TestSolver,cCs2tjddgddgg|d}tt||j|dSNrd?r3)r"rrrrr,rCr,rr&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@ eZdZdS)z,TestSolve.test_0_size..ArraySubclassNrKrLrMr&r&r&r' ArraySubclassrrbrfr)rdrgr) r"r#arangerrrrrrr!rrrrCrr.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@r)z.TestSolve.test_0_size_k..ArraySubclassNrr&r&r&r'rrrrhrdrfr)rgr) r"r#rrrrrrrr!rr&r&r' test_0_size_ks"" "8 zTestSolve.test_0_size_kN) rKrLrMrr parametrizerrrrrrrr&r&r&r'rs   !rc@r)InvCasescCs0t|}tt||t|tt||dSr)rinvrrrrr()rCr.r/rBa_invr&r&r'rF s  z InvCases.doNrr&r&r&r'r  rr c@2eZdZejdeeee gddZ ddZ dS)TestInvr,cCs0tjddgddgg|d}tt|j|dSr)r"rrrr r,rr&r&r'rszTestInv.test_typescCsGdddtj}tjdtjd|}t|}t|jj tj ut |j |j tt ||tjdtjd|}t|}t|jj tjut |j |j tt ||dS)Nc@r)z*TestInv.test_0_size..ArraySubclassNrr&r&r&r'rrrrrdrdr3r_)r"r#zerosint_rrr rr,r float64rrr! complex64rCrr.resr&r&r'rs  zTestInv.test_0_sizeN rKrLrMrrr rrrrrrr&r&r&r'rs  rc@r) EigvalsCasescCs&t|}t|\}}t||dSr)reigvalseigr)rCr.r/rBevevaluesevectorsr&r&r'rF,s zEigvalsCases.doNrr&r&r&r'r*rrc@r ) TestEigvalsr,cCs`tjddgddgg|d}tt|j|tjddgddgg|d}tt|jt|dSNrdrr3r)r"rrrrr,r6rr&r&r'r3szTestEigvals.test_typescCsGdddtj}tjdtjd|}t|}t|jj tj ut d|j tt |tjtjdtjd|}t|}t|jj tjut d|j tt |tjdS)Nc@r)z.TestEigvals.test_0_size..ArraySubclassNrr&r&r&r'r<rrrr3rrdr_r`)r"r#rrrrrrr,r rrrr!rrr&r&r'r:    zTestEigvals.test_0_sizeNrr&r&r&r'r2s  rc@r)EigCasescCsXt|\}}tt||t|t|ddddft|jdtt ||dS)N.rtol) rrrrr"r r7r,rr()rCr.r/rBrrr&r&r'rFOs   z EigCases.doNrr&r&r&r'r!Mrr!c@r )TestEigr,cCstjddgddgg|d}tj|\}}t|j|t|j|tjddgddgg|d}tj|\}}t|jt|t|jt|dSr)r"rrrrr,r6rCr,rwvr&r&r'rXs  zTestEig.test_typescCsGdddtj}tjdtjd|}t|\}}t|jj tj ut|jj tj ut |j |j t d|j tt |tjtjdtjd|}t|\}}t|jj tjut|jj tjut |j |j t d|j tt |tjdS)Nc@r)z*TestEig.test_0_size..ArraySubclassNrr&r&r&r'rfrrrr3rr_r`)r"r#rrrrrrr,r rrrr!rrCrr.rres_vr&r&r'rd  zTestEig.test_0_sizeNrr&r&r&r'r$Ws  r$c@s.eZdZdZejdeee e gddZ dS) SVDBaseTestsFr,cCsxtjddgddgg|d}t|\}}}t|j|t|jt|t|j|tj|d|jd}t|jt|dS)Nrdrr3F compute_uvr:)r"rrsvdrr,r4r:)rCr,rurvhr&r&r'r~s  zSVDBaseTests.test_typesN) rKrLrMr:rrr rrrrrr&r&r&r'r+{sr+c@r)SVDCasesc Cspt|d\}}}t|tt|t|ddddft|t|jdtt ||tt ||dS)NF.r") rr.rrr"r r7r,rr()rCr.r/rBr/rvtr&r&r'rFs&z SVDCases.doNrr&r&r&r'r1rr1c@r)TestSVDcCstd}tj|d|jd\}}}t|jdt|jdt|tdtd}tj|d|jd\}}}t|jdt|jdt|tddS) z6 Empty input should put an identity matrix in u or vh )rhrTr,rhrhr_rh)rrhN)r"rrr.r:rreye)rCrr/rr0r&r&r'test_empty_identitys      zTestSVD.test_empty_identityN)rKrLrMr6r&r&r&r'r3s r3c@r)SVDHermitianCasesc Cstj|ddd\}}}t|tt|t|ddddft|t|jddd}tt |||t t |j d|j tt |||t t |j d|j t t|ddddf|tt||tt||dS) NFTr:.r"cSs<tt|j}|d|d|d<|d<ttj||dS)Nrr)axes)rrrr"conj transpose)matr9r&r&r'r:sz'SVDHermitianCases.do..hermitianr)rr.rrr"r r7r,rr broadcast_tor5rrsortrr()rCr.r/rBr/rr2r:r&r&r'rFs&,,zSVDHermitianCases.doNrr&r&r&r'r7rr7c@seZdZdZdS)TestSVDHermitianTN)rKrLrMr:r&r&r&r'r?sr?c@r) CondCasescCst|}d|vrtttj|dStj|dd}tt||d|ddddtt|d |d|ddddtt|d |d|ddddtj|}tt|d t | d  d t | d  d dddtt|d t | d  d t | d  d dddtt|tj t | d  d t | d  d dddtt|tj t | d  d t | d  d dddtt|d tt |d  d  d t |d  d  d ddddS)Nr=F)r-).r).rryrwr0r1rfrrdrfro)r rrrcondr.rr"r rsummaxminr sqrt)rCr.r/rBrrcinvr&r&r'rFsZ  & & &&  z CondCases.doNrr&r&r&r'r@s r@c@s>eZdZddZddZejjddddd d Zd d Z d S)TestCondcCstgdgdgdg}tt|tdtt|t dtt|ddtt|ddtt|d td dS) N)rUrrd)rgr)rrrWrhgUUUUUU?rdrrrBgUUUUU6@)rrrrCr r"rGrCAr&r&r'test_basic_nonsvds zTestCond.test_basic_nonsvdcCsttdtdg}gd}ddg}t||D]\}}tt||dkqt||D] \}}t||q-dS)NrfrfNrdrfrBrr4&k C)r"ronesrrrrrC)rCAsp_posp_negrKpr&r&r' test_singularszTestCond.test_singularTFz/Platform/LAPACK-dependent failure, see gh-18914runreasoncCsgd}gd}td}tj|d<|D]}t||}tt|tjtt|qtd}tj|d<|D]:}t||}tt|d||vr^t|dd kt|d d kq8tt|d tt|d  q8dS) N)NrdrrfrrBrNrMr)rgrfrfrdrrdrdrrOrf) r"rPnanrrCrr!float_isnan)rCpsrRrKrTrr&r&r'test_nans&      zTestCond.test_nancCstjdtjdddd}d|d<d|d<dD]*}t||}t|dtjt|dtjtt |dtt |dqdS) NrTrfrr_r)NrdrfrBrrrrdr) r"randomseedrandrrCrr risfinite)rCrKrTrr&r&r'test_stacked_singulars  zTestCond.test_stacked_singularN) rKrLrMrLrUrrxfailr^rdr&r&r&r'rIs   rIc@r) PinvCasescCs<t|}t}t||||||dddtt||dS)NryrwrArpinvrrrr(rCr.r/rBa_ginvrr&r&r'rF1s z PinvCases.doNrr&r&r&r'rf,s rfc@r)TestPinvNrr&r&r&r'rk9rrkc@r)PinvHermitianCasescCs@tj|dd}t}t||||||dddtt||dS)NTr8ryrwrArgrir&r&r'rF?szPinvHermitianCases.doNrr&r&r&r'rl=rrlc@r)TestPinvHermitianNrr&r&r&r'rmGrrmc@r)DetCasesc Cst|}t|\}}t|jjttfvrt|t}nt|t }t |}t |t j |ddt |t|t j |ddt|}t|}|dk} t t|| dt|| t dS)Nraxisrrd)rdetslogdetr r,r rrastyperrrr reducer"exp atleast_1drrr ) rCr.r/rBdrldadrmr&r&r'rFMs    z DetCases.doNrr&r&r&r'rnKrrnc@s:eZdZddZejdeee e gddZ ddZ dS) TestDetcCsttdggdtttdggtttdggdtttdggtttdggdt ftttdggdttttdggdtttdggdt ftttdggdttttdggdtdS)Nyrrd)rrrqr rrrrr rIr&r&r' test_zero`s zTestDet.test_zeror,cCs^tjddgddgg|d}ttj|j|tj|\}}t|jt|t|j|dSr)r"rrrrqr,rrr4)rCr,rphrr&r&r'rms zTestDet.test_typescCstjdtjd}t|}t|dt|jjtjut |}t|dt|djjtjut|djjtj utjdtj d}t|}t|dt|jjtj ut |}t|dt|djjtj ut|djjtj udS)Nr_r3rUr_rrd) r"rrrrqrrr,r rrfloat32r)rCr.rr&r&r'rus         zTestDet.test_0_sizeN) rKrLrMr}rrr rrrrrrr&r&r&r'r{_s   r{c@r) LstsqCasescCsLt|}|j\}}t|d\}}} tj||dd\} } } } |dkr+t| dk||kr=t|t || t | |nt | |t| | || |kr}||kr}tt t || |dj dd}t|}t|jdkr|d|_t | j|jn tgt| }t| |tt| jtjtt| |tt| |dS) NFrrcondrrfrordr)r"r rrr.lstsqrrrrr__array_wrap__rrDrrrr issubdtyper,floatingr()rCr.r/rBarrrznr/rr2r residualsranksv expect_residsr&r&r'rFs0       z LstsqCases.doNrr&r&r&r'rrrc@s:eZdZddZejgdgdddZddZd S) TestLstsqc Cstgdgdgdgdgj}tgd}tK}|td}t||\}}}}t|dktj||dd \}}}}t|dktj||dd \}}}}t|d ktt |d kWddS1sjwYdS) N)r|rUr|rUrVr|)r|rVr|r|rUr|)rUr|rUr|r|rX)r|r|r|rVrWr|)rdrrrrrz`rcond` parameter will changerhrrrgrd) r"rTrrecord FutureWarningrrrlen) rCr.r/supr&rrrrr&r&r'test_future_rconds$     "zTestLstsq.test_future_rcond)rzrn_rhs))rhrfrf)rrhrd)rrhrf)rhrrd)rhrrf)rhrfr)rrrc Cst||||}t||f}tj||dd\}}}} |dkr*t|dkt|j ||ft|j ||kr<|fnd||krZ|dkrZ|t ||} t || | j ddt|t ||t| j t ||fdS)Nrrr`rro)r"rrrPrrrrrrrrrDrF) rCrzrrr.r/rrrrrr&r&r'test_empty_a_bs zTestLstsq.test_empty_a_bcCsvtgd}tgd}t|tt|gj}ttdtj ||ddWddS1s4wYdS)N)rrdrfrg)rg?g?g@gffffff @zIncompatible dimensionsr) r"rvstackrPrrrrrr)rCryrKr&r&r'test_incompatible_dimss  "z TestLstsq.test_incompatible_dimsN) rKrLrMrrrr rrr&r&r&r'rs  rdtcCsg|]}t|qSr&)r"r,)rrr&r&r'rsrz?bBhHiIqQefdgFDGOc@seZdZedZegdZegdZegdZeeeegZ e ddgddggZ e egggdZ eeded ed gZd d Zd dZddZddZddZddZddZddZdS)TestMatrixPowerrh)rgrrdrf)rfrgrrd)rdrfrgrrdrrfrgGcCs|j|}tt|ddddd|jtt|ddddd|jtt|ddddd|jtt|ddddd|jdS)Nrfdi rrdrg)rshft_1rsrrrshft_0rshft_2rshft_3)rCrrshftr&r&r'test_large_powers z TestMatrixPower.test_large_powercC>dd}|jD]}||||tkr||j|qdS)NcSs*t|d}t|t|t|j|jdS)Nr)rrrr,)Mmzr&r&r'tzs z.TestMatrixPower.test_power_is_zero..tz rshft_allrsobjectstackedrCrrr<r&r&r'test_power_is_zero z"TestMatrixPower.test_power_is_zerocCr)NcSs&t|d}t||t|j|jdS)Nrd)rrr,)r<rr&r&r'rs  z-TestMatrixPower.test_power_is_one..tzrrr&r&r'test_power_is_onerz!TestMatrixPower.test_power_is_onecCr)NcSs>t|d}|jtkr tnt}t||||t|j|jdS)Nrf)rr,rr rr)r<rmmulr&r&r'r s z-TestMatrixPower.test_power_is_two..tzrrr&r&r'test_power_is_two s z!TestMatrixPower.test_power_is_twocCs0dd}|jD]}||jvr|||qdS)NcSs4t|d}|jtkr tnt}t|||t|dSNr)rr,rr rrr)r<invmatrr&r&r'rs z3TestMatrixPower.test_power_is_minus_one..tz)rdtnoinvrsrr&r&r'test_power_is_minus_ones   z'TestMatrixPower.test_power_is_minus_onecCs.|j|}ttt|dttt|dgdS)Ng?rd)rrsr TypeErrorrrCrr<r&r&r'test_exceptions_bad_power s z)TestMatrixPower.test_exceptions_bad_powercCsPttttdg|dttttdgdgg|dttttd|ddS)Nrdrf)rhrgrf)rrrr"rrP)rCrr&r&r'test_exceptions_non_square%sz*TestMatrixPower.test_exceptions_non_squarecCs,||jvrdS|j|}ttt|ddSr)rnoninvrsrrrrr&r&r'test_exceptions_not_invertible*s  z.TestMatrixPower.test_exceptions_not_invertibleN)rKrLrMr"r5rrrrrrrblockrrr,rrrrrrrrrr&r&r&r'rs"           rc@r)TestEigvalshCasescCs^t|d}t|\}}|jddt||t|jdt|d}t||t|jddS)NLrror"U)reigvalshrr>rr7r,)rCr.r/rBrrrev2r&r&r'rF4s   zTestEigvalshCases.doNrr&r&r&r'r2rrc@BeZdZejdeeee gddZ ddZ ddZ dd Z d S) TestEigvalshr,cCs:tjddgddgg|d}tj|}t|jt|dSr)r"rrrrr,r4)rCr,rr&r&r&r'rAs zTestEigvalsh.test_typescCXtjddgddggtjd}tttjj|ddtttjj|dtttjj|ddSNrdrr3lrongUPLOlowerupper)r"rrrrrrrCrr&r&r' test_invalidGzTestEigvalsh.test_invalidcCstjddgddggtjd}tjddgddggtjd}tjddgtjd}ttj}tj|}t|||dtjj|dd}t|||dtjj|dd}t|||dtjj|d d}t|||dtjj|d d}t|||ddS Nrrdr3rr"rrlrr/)r"rrr7rrr)rCKloKuptgtr#r&r&r&r' test_UPLOMs  zTestEigvalsh.test_UPLOcCsGdddtj}tjdtjd|}t|}t|jj tj ut d|j tt |tjtjdtjd|}t|}t|jj tjut d|j tt |tjdS)Nc@r)z/TestEigvalsh.test_0_size..ArraySubclassNrr&r&r&r'rerrrr3rr_r`)r"r#rrrrrrr,r rrrr!rrrr&r&r'rcr zTestEigvalsh.test_0_sizeNrKrLrMrrr rrrrrrrrr&r&r&r'r@s   rc@r) TestEighCasesc Cst|\}}t|\}}|jddt||tt||t|ddddft|t |j dt|d\}} t||tt|| t|ddddft| t |j t |ddS)Nrro.r"r)r#err_msg) reighrr>rrrr"r r7r,repr) rCr.r/rBrevcrrrevc2r&r&r'rFxs        zTestEighCases.doNrr&r&r&r'rvrrc@r) TestEighr,cCsJtjddgddgg|d}tj|\}}t|jt|t|j|dSr)r"rrrrr,r4r%r&r&r'rszTestEigh.test_typescCrr)r"rrrrrrrr&r&r'rrzTestEigh.test_invalidcCstjddgddggtjd}tjddgddggtjd}tjddgtjd}ttj}tj|\}}t|||dtjj|dd\}}t|||dtjj|dd\}}t|||dtjj|d d\}}t|||dtjj|d d\}}t|||ddSr)r"rrr7rrr)rCrrrr#r&r'r&r&r'rs zTestEigh.test_UPLOcCsGdddtj}tjdtjd|}t|\}}t|jj tj ut|jj tj ut |j |j t d|j tt |tjtjdtjd|}t|\}}t|jj tjut|jj tjut |j |j t d|j tt |tjdS)Nc@r)z+TestEigh.test_0_size..ArraySubclassNrr&r&r&r'rrrrr3rr_r`)r"r#rrrrrrr,r rrrr!rrr(r&r&r'rr*zTestEigh.test_0_sizeNrr&r&r&r'rs   rc@seZdZdZdZdS) _TestNormBaseN)rKrLrMrdecr&r&r&r'rsrc@s4eZdZddZddZddZddZd d Zd S) _TestNormGeneralcCsFttgdtttg|jddttttg|jdddS)Nr|r3)rrrrr rIr&r&r' test_emptys z_TestNormGeneral.test_emptyc Cstgd}tjd}tjd}||}|D]}||}t|tj }tt|jj tj t |dt "}| tdt|d}tt|jj tj t |dWdn1s\wYt|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 |dqdS)NrY AllIntegerAllFloatr|divide by zero encounteredrrrfrdrVrrhg?rU)r"r typecodesrsrr r issubclassr,r rrrfilterRuntimeWarning rCr. exact_types inexact_types all_typeseach_inexact_typesatanrr&r&r'test_vector_return_types>               z(_TestNormGeneral.test_vector_return_typecsvgd}gd}gd}fdd}|||fD]}||qt|jdt|jdt|jdfD]}||q2dS)N)rdrfrgrh)rrrr)rrfrrhcstjjt|djdtjjt|tdjdtjjt|t djdtjjt|ddjdtjjt|ddjdtjjt|d djdtjjt|d d jdtjjt|d d jddS)Ng6ҭ@r+rXrUrd$@rgQ?rfrgsc?rrh)r"testingrrrr )r'rIr&r'_tests0 z+_TestNormGeneral.test_vector.._testr3)rr)rCr.r/rrr'r&rIr' test_vectors    z_TestNormGeneral.test_vectorc stgdgdg|jdddddddtjtj fD]4fd d tjdD}ttdd |fd d tjdD}ttdd |qtjdd |jd dddj }dddddtjtj dfD]ht t| |dD][}|\}}|dkr||7}|dkr||7}||krt tt|d qyt|d }|||||krfdd tjD}nfdd tjD}t||qyqmdS)Nrdrfrgrhryr)r3rrrdrfrgcs$g|]}tdd|fdqSNordrrkrKorderr&r'r $z._TestNormGeneral.test_axis..rrpcs$g|]}t|ddfdqSrrrrr&r'r"rrhrrBcs*g|]}tddj|ddqSNror)rtakerBk_indexrr&r'r8s"cs,g|]}tddj|djdqSr)rrrrrr&r'r;s$)rrr"Infrrrrrrrr combinationsrr) rC expected0 expected1ndrprow_axiscol_axisrrr&)rKrrrr' test_axiss:    z_TestNormGeneral.test_axisc Cstjdd|jdddd}d}d}t|ddd }t|ddd d }tt|||ddd d }t|j |k||j |ddddddddtj tj fD]C}t |j D];}t|||d }t|||d d }tt|||||d t |j }d||<t|}t|j |k||j |||qTqMdddddtj tj ddf D]O}tt |j dD]C}t|||d }t|||d d }tt|||||d t |j }d||d<d||d<t|}t|j |k||j |||qqdS)Nrdrr3rfrgrhzorder {0}, axis = {1}z;Shape mismatch found {0}, expected {1}, order={2}, axis={3}rT)rrpkeepdims)r)rdrdrdrrrrBnuc)r"rrrrrsqueezeformatrrrrrrrr permutations) rCrK allclose_err shape_errrfoundexpected_shaperrr&r&r' test_keepdims?sT              z_TestNormGeneral.test_keepdimsN)rKrLrMrrrrrr&r&r&r'rs ) %rc@s:eZdZejZddZddZddZddZd d Z d S) _TestNorm2DcCs tt|jgg|jdddS)Nr3r|)rrrrrIr&r&r'test_matrix_emptyos z_TestNorm2D.test_matrix_emptyc Cs|gdgdg}tjd}d}||}|D]}||}t|tj }tt|jj tj t |dt "}| tdt|d}tt|jj tj t |dWdn1s]wYt|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 tjj |dddqdS)NrYrrfdFDrVrrrUrdrfgLXz?rrBrgU&,t=@r)r)rr"rrsrr rrr,r rrrrrrrr&r&r'test_matrix_return_typersD                 z#_TestNorm2D.test_matrix_return_typecCs|jddgddgg|jd}tt|dtt|ddtt|dd tt|td tt|t d tt|dd tt|d d tt|ddtt|ddttt|dttt|dttt|ddS)Nrdrgryrr3gT"@rBrrg(@rXrrZrfgW?"@rgїʄ?nofrorr)rrrrr rrrJr&r&r'test_matrix_2x2sz_TestNorm2D.test_matrix_2x2cCsd|jgdgdgdg|jd}tt|dtt|ddtt|dd tt|td tt|t d tt|d d tt|ddtt|ddtt|dddS)Ng?r)r)rry)rgrfrdr3grj=Q0?rBrgB+pc?g?g333333?rdrUrg?rfg&.d?rgܸՠ?)rrrrr rJr&r&r'test_matrix_3x3s z_TestNorm2D.test_matrix_3x3cCs|jgdgdg|jd}tjdd|jdddd}ttt|d d ttt|d d tttddgd dtttddgd dtttddgd dd D]}ttt||dttt||dttt||dqLttjt|ddttjt|ddttt|dddS)Nrrr3rdrrfrgrhrBrrtestrrgr)rdrfrfrg)rrdrf) rrr"rrrrr AxisError)rCrKrrr&r&r' test_bad_argssz_TestNorm2D.test_bad_argsN) rKrLrMr"rrrrrr$r&r&r&r'rjs3 rc@r) _TestNormNrr&r&r&r'r%rr%c@s$eZdZddZddZddZdS)TestNorm_NonSystematiccCs*tjdtjd}tt|ddddddS)N r3rgrgL)@rfr)r"r longdoubler-rrr&r&r'test_longdouble_normsz+TestNorm_NonSystematic.test_longdouble_normcCs,tjdgtjd}tt|ddddddS)Nir3rgrlryr)r"rint32r-rrr&r&r' test_intminsz"TestNorm_NonSystematic.test_intmincCstjdtjd}d|d<d|d<d}ttjj|dd |d d |tj}ttjj|dd |d d |tj}ttjj|dd |d d dS)Nrfr3y@@ry@rdgV;'@rgrr'r ry) r"r clongdoubler-rrrs complex128r)rCrwrr&r&r'test_complex_high_ords  z,TestNorm_NonSystematic.test_complex_high_ordN)rKrLrMr)r+r0r&r&r&r'r&s r&c@eZdZejZdZdS)_TestNormDoubleBaser*N)rKrLrMr"rrrr&r&r&r'r2r2c@r1)_TestNormSingleBaser)N)rKrLrMr"rrrr&r&r&r'r4r3r4c@r1)_TestNormInt64Baser*N)rKrLrMr"int64rrr&r&r&r'r5 r3r5c@r)TestNormDoubleNrr&r&r&r'r7rr7c@r)TestNormSingleNrr&r&r&r'r8rr8c@r) TestNormInt64Nrr&r&r&r'r9rr9c@r)TestMatrixRankcCstdttdtd}d|d<tt|dtttddttgddtttd dttdgdt|tdtdg}tt|tgd ttdddS) Nrhr|rrrgr4r)rdrrrrd)rh)rgrhr)rrr"r5rr)rCImsr&r&r'test_matrix_ranks zTestMatrixRank.test_matrix_rankcCstdttdddtdttdddtdttdddtd}d|d<td t|ddd |d<tdt|dd d td t|dd d dS)NrhTr8rdr4rr|r;rgg:0yE>g|"BE>)r:tolg;䡈E>)rrr"r5rPr)rCr<r&r&r'test_symmetric_rank3s z"TestMatrixRank.test_symmetric_rankN)rKrLrMr>r@r&r&r&r'r:s r:cCstjd}tdD]B}|jdd}|dddf|dddf|dddf<tt|d|ddd f|ddd f|ddd f<tt|d q dS) Ni3r)(r')sizerdrfrr-rhryrgrb)r"r` RandomStaternormalrr)rngiXr&r&r'test_reduced_rankAs   ,,rHc@sHeZdZejZddZejddggdddZ dd Z d d Z d S) TestQRc Cst|}|j}|j\}}t||}tj|dd\}}t|j|kt|j|ktt||tt||t|j||fkt|j||fktt |||tt |j |t |tt ||tj|dd\} } t| j|kt| j|ktt| |tt| |t| j||fkt| j||fktt | | |tt | j | t |tt | | tj|dd} t| j|ktt| |t| | dS)Ncompletemodereducedr)r r,rrFrqrrr!rrrr:r"r5triu) rCr.a_typea_dtyperzrrqrq1r1r2r&r&r'check_qrRs8  zTestQR.check_qrrzr))rgrr!r_cCstt||}t||f}||tjj|dd\}}t|jtjt|jtjt|j ||ft|j |fdS)NrawrK) rFr"rrVrrNrr,rr)rCrzrrr.htaur&r&r' test_qr_emptyys  zTestQR.test_qr_emptycCs|jddgddgddggtjd}tj|dd \}}t|jtjkt|jtjkt|jd kt|jd ktj|jdd \}}t|jtjkt|jtjkt|jd kt|jd kdS) Nrdrfrgrhryr)r3rWrKr"r,r) rr"rrrNrr,rr)rCr.rXrYr&r&r' test_mode_raws"zTestQR.test_mode_rawcCs|ddgddgg}|ddgddgddgg}dD]}||}||}||||||jqdD]$}dd||}dd||}||||||jq:dS) Nrdrfrgrhryr)fd?)rrsrVr)rCr.r/rm1m2r&r&r'test_mode_all_but_economics      z!TestQR.test_mode_all_but_economicN) rKrLrMr"rrVrrr rZr[r`r&r&r&r'rINs'  rIc@r) TestCholeskyc Csgd}tjtjtjtjf}t||D]p\}}tjdtjj |}t |tj r5|dtjj |}t t t|}d|dd<t|||}tj||d}tj|}t|||}t|||d|d|d|d |jd t|jd qdS) N)rrMrgrg)2rc)rgr'r'rdr])rrrr3  ir)ratol)r"rrrr/rrr`rarandnrcomplexfloatingrrrr r;r:r rcholeskyrrfinfoeps) rCshapesdtypesrr,r.trr/r&r&r'test_basic_propertys$    z TestCholesky.test_basic_propertycCsGdddtj}tjdtjd|}t|}t|j|jt |j j tj ut t |tjtjdtjd|}t|}t|j|jt |j j tjut t |tjdS)Nc@r)z/TestCholesky.test_0_size..ArraySubclassNrr&r&r&r'rrrrr3)rdrr)r"r#rrrrrirrrr,r rr!rrr&r&r'rs  zTestCholesky.test_0_sizeN)rKrLrMrorr&r&r&r'ras racCstjdkrd}nd}tjtjfD]9}tjd|d}||}|d}t|j jdt j t j t j fD]}||}t|||t|||q4qdS)NlittlerSr`rarrrbrrrrrrrrrrrrrrr rrrr!r$r+r1r3r7r?r@rIrfrkrlrmrnr{rrrr rrrrrrrrr%r&r2r4r5r7r8r9r:rHrIrar}rrrrrrrrerrr&r&r&r's(  ,          #          9   0        :  $ . C  *4V6;x$ d,1 ")