
    *iL                    <   S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r
SSK	JrJrJrJrJrJrJrJrJrJrJrJrJr  SSKJr  SSKJr  SSKJrJrJrJ r J!r!  SSK"J#r#  SSK$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/   SSK0r	S	 r2\*r3SS
 jr*S r4S r5S r61 Skr7 " S S5      r8S r9\
Rt                  Rw                  S5        / r<\<\9" S\8" S\" SS/SS//\S9\" SS/\S95      \8" S\" SS/SS//\S9\" SS/\S95      \8" S\" SS/SS//\S9\" / SQ/ SQ/\S95      \8" S\" SS /S!S"//\S9\" S#S/\S95      \8" S$\" SS /S!S"//\S9\" S#S/\S95      \8" S%\" SS /S!S"//\S9\" / S&Q/ S'Q/\S95      \8" S(\
Rz                  " S)\S9\
Rz                  " S*\S9S+1S,9\8" S-\
Rt                  R}                  S.S.5      \
Rt                  R}                  S.5      5      \8" S/\
Rt                  R}                  S0S05      \
Rt                  R}                  S05      5      \8" S1S0S2/S3S4//S2S0/5      /
5      -  r<\<\9" S5\8" S6\" / S7Q/ SQ/\S9\" SS/\S95      \8" S8\" SS/SS/S9S://\S9\" / S;Q\S95      \8" S<\" / S7Q/ SQ/\S9\" SS/\S95      \8" S=\" SS/SS/S9S://\S9\" / S;Q\S95      \8" S>\" / S?Q/ S@Q/\S9\" S#S/\S95      \8" SA\" SBSC/SDSE/SFSG//\S9\" / SHQ\S95      \8" SI\" / S?Q/ S@Q/\S9\" S#S/\S95      \8" SJ\" SBSC/SDSE/SFSG//\S9\" / SHQ\S95      \8" SK\" / S?Q/ S@Q/\S9\" S#S/SLSM//\S95      \8" SN\" SBSC/SDSE/SFSG//\S9\" S#S/SLSM/SLSM//\S95      \8" SO\
Rt                  R}                  S.SP5      \
Rt                  R}                  S.5      5      \8" SQ\
Rt                  R}                  S0SR5      \
Rt                  R}                  S05      5      \8" SS\
Rt                  R}                  SRS05      \
Rt                  R}                  SR5      5      \8" ST\
Rt                  R}                  SS45      \
Rt                  R}                  S5      S+1S,9\8" SU\
Rt                  R}                  S4S5      \
Rt                  R}                  S45      S+1S,9/5      -  r<\<\9" SV\8" SW\" SS/SS//\S9S5      \8" SX\" SS/SS//\S9S5      \8" SY\" SS /SZS0//\S9S5      \8" S[\" SS /SZS0//\S9S5      \8" S\\
Rz                  " S)\S9SS+1S,9\8" S]S0S2/S2S0//S5      \8" S^\" SS/SS//5      S5      \8" S_\
Rt                  R}                  S0S05      S5      /5      -  r<S` r?\<\?" 5       -  r<Sa r@Sb rA\<\A" 5       -  r< " Sc Sd5      rB " Se Sf\B5      rC " Sg Sh\B5      rD " Si Sj\B5      rE " Sk Sl\B5      rF " Sm Sn\B5      rG " So Sp\B5      rHSq rI " Sr Ss\C\F5      rJ " St Su\J5      rK " Sv Sw\C\F5      rL " Sx Sy\L5      rM " Sz S{\C\F5      rN " S| S}\N5      rO " S~ S\C\F5      rP " S S\P5      rQ " S S5      rR " S S\C\F5      rS " S S\S\R5      rT " S S\E\H5      rU " S S\U\R5      rV " S S\C\F5      rW " S S\W5      rX " S S\C\D\F\G5      rY " S S\Y5      rZ " S S\E\H5      r[ " S S\[5      r\S r] " S S\C\F5      r^ " S S\^5      r_ " S S\C\D5      r` " S S\`5      ra\R                  R                  SS V s/ s H  n \
R                  U 5      PM     sn 5       " S S5      5       re " S S\E\H5      rf " S S5      rg " S S\E\H5      rh " S S5      ri " S S5      rj " S S\j5      rk " S S\j5      rl " S S\l\k5      rm " S S5      rn " S S\j5      ro " S S\j5      rp " S S\j5      rq " S S\m\o5      rr " S S\m\p5      rs " S S\m\q5      rt " S S5      ruS rv " S S5      rw " S S5      rx " S S5      ryS rz\R                  R                  \&SS9S 5       r|\R                  R                  \R                  " 5       S0:  SS9\R                  R                  \'SS9S 5       5       r~\R                  R                  \&SS9\R                  R                  S 5       5       r " S S5      r " S S5      r " S S5      rS r\R                  GR                  SS9S 5       r\R                  GR                  \%(       + SS9S 5       rS rS rS rS rS rS rS rS rS rS rg! \1 a     GNf = fs  sn f )z"Test functions for linalg module

    N)arrayasarray
atleast_2dcdoublecsingledotdoubleidentityinflinalgmatmulmultiplysingle)swapaxes)	AxisError)LinAlgErrormatrix_powermatrix_rank	multi_dotnorm)_multi_dot_matrix_chain_order)HAS_LAPACK64IS_WASMNOGIL_BUILDassert_assert_allcloseassert_almost_equalassert_array_equalassert_equalassert_raisesassert_raises_regexsuppress_warningsc                     [        U 5      [        U[        R                  5      (       a  [        U5      L $ [        R                  L $ N)type
isinstancenpndarray)outin_s     \/var/www/html/ai-backend/venv/lib/python3.13/site-packages/numpy/linalg/tests/test_linalg.pyconsistent_subclassr,   9   s<     9jbjj&A&Ac * * jj* *    c                     [        U 5      R                  R                  [        [        4;   a  UnOUn[        X4SU0UD6  g )Ndecimal)r   dtyper%   r   r   old_assert_almost_equal)absingle_decimaldouble_decimalkwr/   s         r+   r   r   C   s;    qz 11  A8'8R8r-   c                 \    [         [         [        [        [        [         [        [        0U    $ r$   )r   r	   r   r   r0   s    r+   get_real_dtyper9   K   s&    FFFVWf..35 5r-   c                 \    [         [        [        [        [        [        [        [        0U    $ r$   )r   r   r	   r   r8   s    r+   get_complex_dtyper;   P   s&    GVWWgw0057 7r-   c                 &    U [         [        4;   a  gg)Ngh㈵>gdy=)r   r   r8   s    r+   get_rtolr=   U   s    !!r-   >   squarestrided	hermitian	nonsquaregeneralizedsize-0c                   6    \ rS rSr\" 5       4S jrS rS rSrg)
LinalgCased   c                 z    [        [        U[        5      5        Xl        X l        X0l        [        U5      U l        g)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   r&   strnamer2   r3   	frozensettags)selfrI   r2   r3   rK   s        r+   __init__LinalgCase.__init__e   s-    
 	
4%&	dO	r-   c                 P    U" U R                   U R                  U R                  S9  g)z>
Run the function `do` on this test case, expanding arguments
rK   N)r2   r3   rK   )rL   dos     r+   checkLinalgCase.checkp   s     	466466		*r-   c                 "    SU R                    S3$ )Nz<LinalgCase: >)rI   rL   s    r+   __repr__LinalgCase.__repr__v   s    tyyk++r-   )r2   r3   rI   rK   N)	__name__
__module____qualname____firstlineno__setrM   rR   rW   __static_attributes__ r-   r+   rE   rE   d   s    (+ 	$+,r-   rE   c                 d    U [         ;   d   S5       eU H  nUR                  U 1-  Ul        M     U$ )zR
Add the given tag (a string) to each of the cases (a list of LinalgCase
objects)
zInvalid tag)all_tagsrK   )tagcasescases      r+   	apply_tagre   z   s6    
 (?)M)?II%	 Lr-     r>   r         ?       @      @      @r8   r	   double_2)rh   rg   rj   )ri   rj         @r         ?       @y       @      @y      @      @y      @      @       @      ?r   	cdouble_2)rn   rm   y      ?      @)y      ?       y      ?      y      ?      0x0r   r   r   rC   rP   8x8   1x1   nonarray         rA   single_nsq_1)rg   rh   ri   single_nsq_2g      @rl   )rh   rg   ri   double_nsq_1double_nsq_2csingle_nsq_1)      ?      ?       @       @      @      )y      @      y      @      "@y      @       @csingle_nsq_2r   r   r   y      @      "y      @      y      @       @)rn   rm   r   cdouble_nsq_1cdouble_nsq_2cdouble_nsq_1_2y      ?      y       @       cdouble_nsq_2_28x11   1x5   5x10x44x0r@   hsinglehdoublehcsingley       @      hcdoublehempty	hnonarraymatrix_b_onlyhmatrix_1x1c                     / n [          GHs  n[        UR                  [        R                  5      (       d  M/  [        R
                  " UR                  SUR                  -  SUR                  -  /5      nUR                  c  S nOdUR                  R                  S:X  a  UR                  nO=[        R
                  " UR                  SUR                  -  SUR                  -  /5      n[        UR                  S-   X#UR                  S1-  S9nU R                  U5        [        R
                  " UR                  /S-  S-  5      R                  S	UR                  R                  -   5      nUR                  c  S nOUR                  R                  S:X  aa  [        R
                  " UR                  /S-  S-  UR                  S
   -  5      R                  S	UR                  R                  SS  -   5      nOM[        R
                  " UR                  /S-  S-  5      R                  S	UR                  R                  -   5      n[        UR                  S-   X#UR                  S1-  S9nU R                  U5        GMv     U $ )Nrx   ry   rv         _tile3rB   rP   ry   rx   _tile213)CASESr&   r2   r'   r(   r   r3   ndimrE   rI   rK   appendreshapeshape)	new_casesrd   r2   r3   new_cases        r+   _make_generalized_casesr   
  s   I$&&"**--HHdffa$&&j!dff*5666>AVV[[AA$&&!dff*a$&&j9:Adii(2A#'99#>@"HHdffX\A%&..v/DE66>AVV[[A$&&A)AGGBK7876DFFLL$556  $&&A)*226DFFLL3HIAdii*4a#'99#>@"3 6 r-   c           
   #     #    [        U [        R                  5      (       d  U S4v   gS/U R                  -  nSUS'   U R                  S:  a  SUS'   U R                  S:  a  S	US
'   [        R
                  " [        U5      6  GHP  n[        U R                  U5       VVs/ s H  u  p4[        X4-  5      PM     nnn[        S U 5       5      n[        R                  " XPR                  S9nUR                  [        R                  5      R                  S5        Xv   nXS'   UR                  U R                  5      n[!        [        R"                  " Xp:H  5      5        USSR%                  U Vs/ s H  nSU-  PM
     sn5      -   4v   U R                  S:  aZ  U R                  S   S:X  aG  ['        U R(                  5      n	SU	S'   [        R*                  R,                  R/                  X	S9nUS4v   U R                  S:  aZ  U R                  S   S:X  aG  ['        U R(                  5      n	SU	S'   [        R*                  R,                  R/                  X	S9nUS4v   U R                  S:  d  GM  U R                  SS S:X  d  GM  ['        U R(                  5      n	SU	S'   SU	S'   [        R*                  R,                  R/                  X	S9nUS4v   GMS     gs  snnf s  snf 7f)z4
Generate cartesian product of strides for all axes
nopNrv   )rv   ry   r   rv   r   rx   )rv   r   c              3   <   #    U  H  n[        S S U5      v   M     g 7fr$   )slice).0repeats     r+   	<genexpr>$_stride_comb_iter.<locals>.<genexpr>C  s     GwVuT400ws   r8   l   >[= .stride__z%+dr   )stridesstride_xxx_0stride_xxx_0_xrv   rv   stride_xxx_0_0)r&   r'   r(   r   	itertoolsproducttuplezipr   absemptyr0   viewuint32fill	__class__r   alljoinlistr   libstride_tricks
as_strided)
x
stride_setrepeatsr2   r3   	new_shapeslicesxijss
             r+   _stride_comb_iterr   1  sd    
 a$$h!&&JJrNvvz#
2vvz 
2$$eJ&78,/,AB,ADASZ,A	BGwGG XXiww/
		
+Z3WWQ[[!rw )chh7'C7a	7'CDDDD 66Q;1772;!+QYYAAbE%%000>Bn$$66Q;1772;!+QYYAAbE%%000>B&&&66Q;1773B<61QYYAAbEAbE%%000>B&&&; 9B (Ds-   BK%!K:B6K%0K ?C.K%2K%AK%c            
         / n [          H  n[        UR                  5       Hc  u  p#[        UR                  5       HE  u  pE[	        UR
                  S-   U-   S-   U-   X$UR                  S1-  S9nU R                  U5        MG     Me     M     U $ )Nr   r?   rP   )r   r   r2   r3   rE   rI   rK   r   )r   rd   r2   a_labelr3   b_labelr   s          r+   _make_strided_casesr   a  s    I+DFF3JA/7
%dii#o&?#&E&OQR+/99	{+BD  * 8 4  r-   c                   :    \ rS rSr\r\" 5       \" 5       4S jrSrg)LinalgTestCaseir  c                 2   U R                    HJ  nUR                  U-  U:w  a  M  UR                  U-  (       a  M.   UR                  U R                  5        ML     g! [         a0  nSU< S3nU[
        R                  " 5       -  n[        U5      UeSnAff = f)z`
Run func on each of the cases with all of the tags in require, and none
of the tags in exclude
zIn test case: z

N)
TEST_CASESrK   rR   rQ   	Exception	traceback
format_excAssertionError)rL   requireexcluderd   emsgs         r+   check_casesLinalgTestCase.check_casesu  s    
 OODyy7"g-yy7"1

477# $  1&thd3y++--$S)q01s   A
B&+BBr_   N)	rY   rZ   r[   r\   r   r   r]   r   r^   r_   r-   r+   r   r   r  s    J"%% 1r-   r   c                        \ rS rSrS rS rSrg)LinalgSquareTestCasei  c                 *    U R                  S1SS1S9  g )Nr>   rB   rC   r   r   r   rV   s    r+   test_sq_cases"LinalgSquareTestCase.test_sq_cases  s!    ("/!: 	 	<r-   c                 *    U R                  SS1S1S9  g )Nr>   rC   rB   r   r   rV   s    r+   test_empty_sq_cases(LinalgSquareTestCase.test_empty_sq_cases  s!    (H!5"/ 	 	2r-   r_   N)rY   rZ   r[   r\   r   r   r^   r_   r-   r+   r   r         <2r-   r   c                        \ rS rSrS rS rSrg)LinalgNonsquareTestCasei  c                 *    U R                  S1SS1S9  g )NrA   rB   rC   r   r   rV   s    r+   test_nonsq_cases(LinalgNonsquareTestCase.test_nonsq_cases  !    +"/!: 	 	<r-   c                 *    U R                  SS1S1S9  g )NrA   rC   rB   r   r   rV   s    r+   test_empty_nonsq_cases.LinalgNonsquareTestCase.test_empty_nonsq_cases  !    +x!8"/ 	 	2r-   r_   N)rY   rZ   r[   r\   r   r   r^   r_   r-   r+   r   r     r   r-   r   c                        \ rS rSrS rS rSrg)HermitianTestCasei  c                 *    U R                  S1SS1S9  g )Nr@   rB   rC   r   r   rV   s    r+   test_herm_cases!HermitianTestCase.test_herm_cases  r   r-   c                 *    U R                  SS1S1S9  g )Nr@   rC   rB   r   r   rV   s    r+   test_empty_herm_cases'HermitianTestCase.test_empty_herm_cases  r   r-   r_   N)rY   rZ   r[   r\   r   r   r^   r_   r-   r+   r   r     r   r-   r   c                       \ rS rSr\R
                  R                  S 5       r\R
                  R                  S 5       rSr	g)LinalgGeneralizedSquareTestCasei  c                 *    U R                  SS1S1S9  g )NrB   r>   rC   r   r   rV   s    r+   test_generalized_sq_cases9LinalgGeneralizedSquareTestCase.test_generalized_sq_cases  s!    -!:"* 	 	-r-   c                 &    U R                  1 SkS9  g )N>   r>   rB   rC   r   r   rV   s    r+   test_generalized_empty_sq_cases?LinalgGeneralizedSquareTestCase.test_generalized_empty_sq_cases  s    !DEr-   r_   N)
rY   rZ   r[   r\   pytestmarkslowr  r  r^   r_   r-   r+   r  r    s>    [[- - [[F Fr-   r  c                       \ rS rSr\R
                  R                  S 5       r\R
                  R                  S 5       rSr	g)"LinalgGeneralizedNonsquareTestCasei  c                 *    U R                  SS1S1S9  g )NrB   rA   rC   r   r   rV   s    r+   test_generalized_nonsq_cases?LinalgGeneralizedNonsquareTestCase.test_generalized_nonsq_cases  !    -!="* 	 	-r-   c                 &    U R                  1 SkS9  g )N>   rA   rB   rC   r  r   rV   s    r+   "test_generalized_empty_nonsq_casesELinalgGeneralizedNonsquareTestCase.test_generalized_empty_nonsq_cases  s    !GHr-   r_   N)
rY   rZ   r[   r\   r
  r  r  r  r  r^   r_   r-   r+   r  r    s>    [[- - [[I Ir-   r  c                       \ rS rSr\R
                  R                  S 5       r\R
                  R                  S 5       rSr	g)HermitianGeneralizedTestCasei  c                 *    U R                  SS1S1S9  g )NrB   r@   rC   r   r   rV   s    r+   test_generalized_herm_cases8HermitianGeneralizedTestCase.test_generalized_herm_cases  r  r-   c                 *    U R                  1 SkS1S9  g )N>   r@   rB   rC   noner   r   rV   s    r+   !test_generalized_empty_herm_cases>HermitianGeneralizedTestCase.test_generalized_empty_herm_cases  s    !G"( 	 	+r-   r_   N)
rY   rZ   r[   r\   r
  r  r  r  r  r^   r_   r-   r+   r  r    s<    [[- - [[+ +r-   r  c                     [        U 5      n U R                  S:  aF  [        R                  " U R                  U R
                  S9n[        U R                  S   5      US'   U$ [        U R                  S   5      $ )Nry   r8   r   .r   )r   r   r'   r   r   r0   r
   )r2   rs     r+   identity_like_generalizedr!    s\    
Avv{HHQWWAGG,!''"+&#
##r-   c                       \ rS rSrS rSrg)
SolveCasesi  c                 D   [         R                  " X5      n[        R                  " U5      R                  S:X  a<  [        XS   5      S   n[        [        R                  " X%R                  5      U5        O[        X5      n[        X%5        [        [        XB5      5        g )Nrv   ).N.r   )r   solver'   r   r   r   r   broadcast_tor   r   r,   )rL   r2   r3   rK   r   adotxs         r+   rQ   SolveCases.do  sq    LL88A;q  1	l+F3E;; ?G1LE)#A)*r-   r_   NrY   rZ   r[   r\   rQ   r^   r_   r-   r+   r#  r#    s    
+r-   r#  c                   r    \ rS rSr\R
                  R                  S\\\	\
/5      S 5       rS rS rS rSrg)		TestSolvei  r0   c                     [         R                  " SS/SS//US9n[        [        R                  " X"5      R
                  U5        g Nrv         ?r8   )r'   r   r   r   r&  r0   rL   r0   r   s      r+   
test_typesTestSolve.test_types  s8    HHq#ha)7V\\!'--u5r-   c                     " S S[         R                  5      n[         R                  " S5      R                  SSS5      n[         R                  " S5      R	                  U5      n[
        R                  " X#5      nUR                  S:X  d   e[         R                  " S5      R                  SS5      R	                  U5      n[
        R                  " X#5      nUR                  S:X  d   e[         R                  " S5      R                  SS5      R	                  U5      n[        [        [
        R                  X#5        g )	Nc                       \ rS rSrSrg))TestSolve.test_1_d.<locals>.ArraySubclassi  r_   NrY   rZ   r[   r\   r^   r_   r-   r+   ArraySubclassr5        r-   r7  rt   rx   rx   rx   rz   )rx   rx   rx   rv   )
r'   r(   aranger   r   r   r&  r   r    
ValueError)rL   r7  r2   r3   results        r+   test_1_dTestSolve.test_1_d  s    	BJJ 	IIaL  Aq)IIaLm,a#||v%%% IIaL  A&++M:a#||y(((IIaL  A&++M:j&,,5r-   c           
          " S S[         R                  5      n[         R                  " S5      R                  SSS5      n[         R                  " S5      R                  SSS5      R	                  U5      n[
        R                  " X#5      S S 2SS2S S 24   n[
        R                  " US S 2SS2SS24   US S 2SS2S S 24   5      n[        XT5        [        [        XQ5      5        [        [
        R                  [
        R                  US S 2SS2SS24   U5        [        [        [
        R                  X#S S 2SS2S S 24   5        [         R                  " S5      R                  SSS5      n[        [        [
        R                  X#5        [        [        [
        R                  USS USS 5        [         R                  " S5      R	                  U5      n[
        R                  " X#5      S S 2SS24   n[
        R                  " US S 2SS2SS24   USS 5      n[        XT5        [        [        XQ5      5        [         R                  " S5      R                  SS5      n[        [        [
        R                  X#5        [        [        [
        R                  USS USS 5        [        [        [
        R                  US S 2SS2SS24   U5        g )	Nc                       \ rS rSrSrg),TestSolve.test_0_size.<locals>.ArraySubclassi   r_   Nr6  r_   r-   r+   r7  rA     r8  r-   r7  rt   rx   r   rv   ry   r   )r'   r(   r:  r   r   r   r&  r   r   r&   r    r   r;  rL   r7  r2   r3   expectedr<  s         r+   test_0_sizeTestSolve.test_0_size  s-   	BJJ 	 IIaL  Aq)IIaL  Aq)..}=<<%a1ai0a1Q3!na1Q3	l;6,
612 	f((&,,!QqS!A#+Jj&,,Q!QY<@ IIaL  Aq)j&,,5j&,,!A!A? IIaLm,<<%a1f-a1Q3!na!f56,
612IIaL  A&j&,,5j&,,!A!A?j&,,!QqS!A#+Br-   c                     " S S[         R                  5      n[         R                  " S5      R                  SSS5      n[         R                  " S5      R                  SSS5      R	                  U5      n[
        R                  " X#5      S S 2S S 2SS24   n[
        R                  " X#S S 2S S 2SS24   5      n[        XT5        [        [        XQ5      5        [
        R                  " X#5      S S 2SS2SS24   n[
        R                  " US S 2SS2SS24   US S 2SS2SS24   5      n[        XT5        [        [        XQ5      5        g )	Nc                       \ rS rSrSrg).TestSolve.test_0_size_k.<locals>.ArraySubclassi"  r_   Nr6  r_   r-   r+   r7  rH  "  r8  r-   r7  rz   rv   rx   r   ry   r   )
r'   r(   r:  r   r   r   r&  r   r   r&   rB  s         r+   test_0_size_kTestSolve.test_0_size_k   s   	BJJ 	IIaL  Aq)IIaL  Aq)..}=<<%aAaCi0a1a19.6,
612 <<%a1ack2a1Q3!na1Q3!n=6,
612r-   r_   N)rY   rZ   r[   r\   r
  r  parametrizer   r	   r   r   r1  r=  rD  rI  r^   r_   r-   r+   r,  r,    s@    [[Wvvw&HI6 J66"CB3r-   r,  c                       \ rS rSrS rSrg)InvCasesi3  c                     [         R                  " U5      n[        [        X5      [	        U5      5        [        [        XA5      5        g r$   )r   invr   r   r!  r   r,   )rL   r2   r3   rK   a_invs        r+   rQ   InvCases.do5  s4    

1F1,5a8	:#E-.r-   r_   Nr*  r_   r-   r+   rM  rM  3  s    /r-   rM  c                   f    \ rS rSr\R
                  R                  S\\\	\
/5      S 5       rS rSrg)TestInvi<  r0   c                     [         R                  " SS/SS//US9n[        [        R                  " U5      R
                  U5        g r.  )r'   r   r   r   rO  r0   r0  s      r+   r1  TestInv.test_types=  s7    HHq#ha)7VZZ]((%0r-   c                     " S S[         R                  5      n[         R                  " S[         R                  S9R	                  U5      n[
        R                  " U5      n[        UR                  R                  [         R                  L 5        [        UR                  UR                  5        [        [        X15      5        [         R                  " S[         R                  S9R	                  U5      n[
        R                  " U5      n[        UR                  R                  [         R                  L 5        [        UR                  UR                  5        [        [        X15      5        g )Nc                       \ rS rSrSrg)*TestInv.test_0_size.<locals>.ArraySubclassiD  r_   Nr6  r_   r-   r+   r7  rX  D  r8  r-   r7  r   rv   rv   r8   rq   )r'   r(   zerosint_r   r   rO  r   r0   r%   float64r   r   r&   	complex64rL   r7  r2   ress       r+   rD  TestInv.test_0_sizeB  s    	BJJ 	HHYbgg.33MBjjm		"**,-QWWcii(
3./HHV2<<055mDjjm		",,./QWWcii(
3./r-   r_   NrY   rZ   r[   r\   r
  r  rK  r   r	   r   r   r1  rD  r^   r_   r-   r+   rS  rS  <  s4    [[Wvvw&HI1 J10r-   rS  c                       \ rS rSrS rSrg)EigvalsCasesiS  c                 v    [         R                  " U5      n[         R                  " U5      u  pV[        XE5        g r$   )r   eigvalseigr   )rL   r2   r3   rK   evevaluesevectorss          r+   rQ   EigvalsCases.doU  s(    ^^A"JJqMB(r-   r_   Nr*  r_   r-   r+   rc  rc  S  s    )r-   rc  c                   f    \ rS rSr\R
                  R                  S\\\	\
/5      S 5       rS rSrg)TestEigvalsi[  r0   c                 *   [         R                  " SS/SS//US9n[        [        R                  " U5      R
                  U5        [         R                  " SS/SS//US9n[        [        R                  " U5      R
                  [        U5      5        g Nrv   r/  r8   r   )r'   r   r   r   re  r0   r;   r0  s      r+   r1  TestEigvals.test_types\  st    HHq#ha)7V^^A&,,e4HHq#hQ(6V^^A&,,.?.FGr-   c                     " S S[         R                  5      n[         R                  " S[         R                  S9R	                  U5      n[
        R                  " U5      n[        UR                  R                  [         R                  L 5        [        SUR                  5        [        [        U[         R                  5      5        [         R                  " S[         R                  S9R	                  U5      n[
        R                  " U5      n[        UR                  R                  [         R                  L 5        [        SUR                  5        [        [        U[         R                  5      5        g )Nc                       \ rS rSrSrg).TestEigvals.test_0_size.<locals>.ArraySubclassie  r_   Nr6  r_   r-   r+   r7  rr  e  r8  r-   r7  rY  r8   r   rv   rq   rr   )r'   r(   rZ  r[  r   r   re  r   r0   r%   r\  r   r   r&   r]  r^  s       r+   rD  TestEigvals.test_0_sizec  s    	BJJ 	HHYbgg.33MBnnQ		"**,-VSYY'
3

+,HHV2<<055mDnnQ		",,./T399%
3

+,r-   r_   Nra  r_   r-   r+   rl  rl  [  s6    [[Wvvw&HIH JH-r-   rl  c                       \ rS rSrS rSrg)EigCasesiv  c           	      :   [         R                  " U5      nUR                  UR                  pe[	        [        X5      [        R                  " U5      [        R                  " U5      SS S S 24   -  [        UR                  5      S9  [        [        Xa5      5        g )N.rtol)r   rf  eigenvalueseigenvectorsr   r   r'   r   r=   r0   r   r,   )rL   r2   r3   rK   r_  rz  r{  s          r+   rQ   EigCases.dox  st    jjm$'OOS5E5E\q/

<02::k3J3PTVW<3XX%k&7&78	: 	#L45r-   r_   Nr*  r_   r-   r+   rv  rv  v  s    6r-   rv  c                   f    \ rS rSr\R
                  R                  S\\\	\
/5      S 5       rS rSrg)TestEigi  r0   c                    [         R                  " SS/SS//US9n[         R                  R                  U5      u  p4[	        UR
                  U5        [	        UR
                  U5        [         R                  " SS/SS//US9n[         R                  R                  U5      u  p4[	        UR
                  [        U5      5        [	        UR
                  [        U5      5        g rn  )r'   r   r   rf  r   r0   r;   rL   r0   r   wvs        r+   r1  TestEig.test_types  s    HHq#ha)7yy}}QQWWe$QWWe$HHq#hQ(6yy}}QQWW/67QWW/67r-   c                 :    " S S[         R                  5      n[         R                  " S[         R                  S9R	                  U5      n[
        R                  " U5      u  p4[        UR                  R                  [         R                  L 5        [        UR                  R                  [         R                  L 5        [        UR                  UR                  5        [        SUR                  5        [        [        U[         R                  5      5        [         R                  " S[         R                  S9R	                  U5      n[
        R                  " U5      u  p4[        UR                  R                  [         R                  L 5        [        UR                  R                  [         R                  L 5        [        UR                  UR                  5        [        SUR                  5        [        [        U[         R                  5      5        g )Nc                       \ rS rSrSrg)*TestEig.test_0_size.<locals>.ArraySubclassi  r_   Nr6  r_   r-   r+   r7  r    r8  r-   r7  rY  r8   rs  rq   rr   )r'   r(   rZ  r[  r   r   rf  r   r0   r%   r\  r   r   r&   r]  rL   r7  r2   r_  res_vs        r+   rD  TestEig.test_0_size  s<   	BJJ 	HHYbgg.33MBZZ]
  BJJ./		"**,-QWWekk*VSYY'
1bjj)*HHV2<<055mDZZ]
  BLL01		",,./QWWekk*T399%
1bjj)*r-   r_   Nra  r_   r-   r+   r~  r~    s4    [[Wvvw&HI	8 J	8+r-   r~  c                   d    \ rS rSrSr\R                  R                  S\\	\
\/5      S 5       rSrg)SVDBaseTestsi  Fr0   c                    [         R                  " SS/SS//US9n[        R                  " U5      nUR                  UR
                  UR                  pen[        UR                  U5        [        UR                  [        U5      5        [        UR                  U5        [        R                  " USU R                  S9n[        UR                  [        U5      5        g )Nrv   r/  r8   F
compute_uvr@   )r'   r   r   svdUSVhr   r0   r9   r@   )rL   r0   r   r_  r  r  r  r   s           r+   r1  SVDBaseTests.test_types  s    HHq#ha)7jjm55#%%bQWWe$QWWnU34RXXu%JJqUdnnEQWWnU34r-   r_   N)rY   rZ   r[   r\   r@   r
  r  rK  r   r	   r   r   r1  r^   r_   r-   r+   r  r    s4    I[[Wvvw&HI5 J5r-   r  c                       \ rS rSrS rSrg)SVDCasesi  c                 f   [         R                  " US5      u  pEn[        U[        [        R
                  " U5      [        R
                  " U5      SS S S 24   -  [        R
                  " U5      5      [        UR                  5      S9  [        [        XA5      5        [        [        Xa5      5        g )NF.rx  )
r   r  r   r   r'   r   r=   r0   r   r,   )rL   r2   r3   rK   ur   vts          r+   rQ   SVDCases.do  s~    ::a'b6"**Q-"**Q-T12M"M+-::b>;%agg.	0 	#A)*#B*+r-   r_   Nr*  r_   r-   r+   r  r    s    ,r-   r  c                        \ rS rSrS rS rSrg)TestSVDi  c                    [         R                  " S5      n[        R                  " USU R                  S9u  p#n[        UR                  S5        [        UR                  S5        [        U[         R                  " S5      5        [         R                  " S5      n[        R                  " USU R                  S9u  p#n[        UR                  S5        [        UR                  S5        [        U[         R                  " S5      5        g)	z5Empty input should put an identity matrix in u or vh )rz   r   Tr  rz   rz   rq   rz   )r   rz   N)r'   r   r   r  r@   r   r   eye)rL   r   r  r   vhs        r+   test_empty_identityTestSVD.test_empty_identity  s    HHV::aDDNNKbQWWf%RXXv&Qq	"HHV::aDDNNKbQWWf%RXXv&R#r-   c                     [         R                  " SS/SS//5      n[        R                  " USU R                  S9n[        R
                  " U5      n[        X#5        g )Nrv   r/  Fr  )r'   r   r   r  r@   svdvalsr   )rL   r   
s_from_svds_from_svdvalss       r+   test_svdvalsTestSVD.test_svdvals  sI    HHq#ha)*ZZet~~N
*J7r-   r_   N)rY   rZ   r[   r\   r  r  r^   r_   r-   r+   r  r    s    $8r-   r  c                       \ rS rSrS rSrg)SVDHermitianCasesi  c                 R   [         R                  " USSS9u  pEn[        U[        [        R
                  " U5      [        R
                  " U5      SS S S 24   -  [        R
                  " U5      5      [        UR                  5      S9  S n[        [        R                  " XG" U5      5      [        R                  " [        R                  " UR                  S   5      UR                  5      5        [        [        R                  " Xg" U5      5      [        R                  " [        R                  " UR                  S   5      UR                  5      5        [        [        R                  " U5      SS S S24   U5        [        [        XA5      5        [        [        Xa5      5        g )NFTr@   .rx  c                     [        [        U R                  5      5      nUS   US   sUS'   US'   [        R                  " [        R
                  " XS95      $ )Nr   r   axes)r   ranger   r'   conj	transpose)matr  s     r+   r@   'SVDHermitianCases.do.<locals>.hermitian  sH    chh(D!%b48DHd2h772<<788r-   r   )r   r  r   r   r'   r   r=   r0   r   r'  r  r   r   sortr   r,   )rL   r2   r3   rK   r  r   r  r@   s           r+   rQ   SVDHermitianCases.do  s"   ::a$7b6"**Q-"**Q-T12M"M+-::b>;%agg.	0	9
 	BIIa16qwwWY{H[]^]d]d8efBIIb)B-8"//"&&QSQYQYZ\Q]J^`b`h`h:ijRWWQZTrT	*A.#A)*#B*+r-   r_   Nr*  r_   r-   r+   r  r    s    ,r-   r  c                       \ rS rSrSrSrg)TestSVDHermitiani  Tr_   N)rY   rZ   r[   r\   r@   r^   r_   r-   r+   r  r    s    Ir-   r  c                       \ rS rSrS rSrg)	CondCasesi  c           	         [        U5      nSU;   a   [        [        [        R                  U5        g [        R
                  " USS9n[        [        R                  " U5      US   US   -  SSS9  [        [        R                  " US	5      US   US   -  SSS9  [        [        R                  " US
5      US   US   -  SSS9  [        R                  R                  U5      n[        [        R                  " US5      [        U5      R                  S
5      R                  S5      [        U5      R                  S
5      R                  S5      -  SSS9  [        [        R                  " US5      [        U5      R                  S
5      R                  S5      [        U5      R                  S
5      R                  S5      -  SSS9  [        [        R                  " U[        R                  5      [        U5      R                  S5      R                  S5      [        U5      R                  S5      R                  S5      -  SSS9  [        [        R                  " U[        R                  * 5      [        U5      R                  S5      R                  S5      [        U5      R                  S5      R                  S5      -  SSS9  [        [        R                  " US5      [        R                  " [        U5      S	-  R                  S5      R                  S5      [        U5      S	-  R                  S5      R                  S5      -  5      SSS9  g )NrC   F)r  r%  ).r   r   r   r4   r5   rx   r   rv   r   fro)r   r    r   r   condr  r   r'   rO  r   summaxminr   sqrt)rL   r2   r3   rK   cr   cinvs          r+   rQ   CondCases.do  s   AJt+v{{A6 JJqU+KKNAfI'
2R	1 	KK1qy1W:5R	1 	KK2'
QvY 6R	1
 yy}}QKK1FJJrNr"SY]]2%6%:%:2%>>R	1 	KK2FJJrNr"SY]]2%6%:%:2%>>R	1 	KK266"FJJrNr"SY]]2%6%:%:2%>>R	1 	KKBFF7#FJJrNr"SY]]2%6%:%:2%>>R	1 	KK5!GGSVQYOOB'++B/4y!|((,0045 6R		1r-   r_   Nr*  r_   r-   r+   r  r    s    (1r-   r  c                   l   \ rS rSr\R
                  R                  SSS/5      S 5       r\R
                  R                  S\\	\
\/5      \R
                  R                  SSS	S
SS\R                  \R                  * /5      S 5       5       rS r\R
                  R!                  SSSS9S 5       rS rSrg)TestCondi  
is_complexFTc                    [        / SQ/ SQ/ SQ/5      nU(       a  US-  n[        [        R                  " U[        5      S5        [        [        R                  " U[        * 5      S5        [        [        R                  " US5      S5        [        [        R                  " US5      S	5        [        [        R                  " US
5      [
        R                  " S5      5        g )Nrg   r   rv   r   g       r   r   r   ri   r   rz   gUUUUUU?rv   r   r/  r  gUUUUU6@)r   r   r   r  r   r'   r  )rL   r  As      r+   test_basic_nonsvdTestCond.test_basic_nonsvd  s     :{J78VAFKK3/3FKKC40%8FKK1-q1FKK2.4FKK5127783DEr-   r0   norm_ordrv   r   rx   r   r  c                     [        / SQ/ SQ/ SQ/US9n[        U5      n[        [        R                  " X2S9R
                  U5        g )Nr  r  r  r8   )p)r   r9   r   r   r  r0   )rL   r0   r  r  out_types        r+   test_cond_dtypesTestCond.test_cond_dtypes)  s:    
 :{J7uE!%(V[[/55x@r-   c                 X   [         R                  " S5      [         R                  " S5      /n/ SQnSS/n[        R                  " X5       H'  u  pE[        [        R                  " XE5      S:  5        M)     [        R                  " X5       H  u  pE[        R                  " XE5        M     g )Nr9  Nrv   rx   r  r   r     4&kC)r'   rZ  onesr   r   r   r   r  )rL   Asp_posp_negr  r  s         r+   test_singularTestCond.test_singular2  s     hhv0#R%%b0DA FKK%,- 1 %%b0DAKK 1r-   z/Platform/LAPACK-dependent failure, see gh-18914)runreasonc                    / SQn/ SQn[         R                  " S5      n[         R                  US'   U H[  n[        R                  " X45      n[        [        U[         R                  5      5        [        [         R                  " U5      5        M]     [         R                  " S5      n[         R                  US'   U H  n[        R                  " X45      n[        [         R                  " US   5      5        XB;   a$  [        US   S	:  5        [        US
   S	:  5        Md  [        [         R                  " US   5      (       + 5        [        [         R                  " US
   5      (       + 5        M     g )N)Nrv   r   rx   r   r  r  r9  rs  )ry   rx   rx   rv   r   rv   rv   r   r  rx   )	r'   r  nanr   r  r   r&   r\  isnan)rL   psr  r  r  r  s         r+   test_nanTestCond.test_nan@  s    
 )#GGFO&&$AA!AJq"**-.BHHQK  
 GGIVV'
AA!ABHHQqTN#z!t$!t$BHHQqTN*+BHHQqTN*+ r-   c                    [         R                  R                  S5        [         R                  R                  SSSS5      nSUS'   SUS'   S H  n[        R
                  " X5      n[        US   [         R                  5        [        US   [         R                  5        [        [         R                  " US   5      5        [        [         R                  " US   5      5        M     g )	Nrf   rx   r   rq   r   )Nrv   rx   r  r   r   rs  rv   r   )
r'   randomseedrandr   r  r   r   r   isfinite)rL   r  r  r  s       r+   test_stacked_singularTestCond.test_stacked_singular[  s     			tIINN1aA&$$,AA!A4"&&)4"&&)BKK$()BKK$() -r-   r_   N)rY   rZ   r[   r\   r
  r  rK  r  r   r	   r   r   r'   r   r  r  xfailr  r  r^   r_   r-   r+   r  r    s    [[\E4=9
F :
F [[Wvvw&HI[[Z!RBrvvw)OPA Q JA [[t-  .,.,0*r-   r  c                       \ rS rSrS rSrg)	PinvCasesik  c                     [         R                  " U5      n[        n[        U" U" X5      U5      USSS9  [	        [        XA5      5        g )Nr   r   r  r   pinvr   r   r   r,   rL   r2   r3   rK   a_ginvr   s         r+   rQ   PinvCases.dop  s<    QCA2AaXZ[#F./r-   r_   Nr*  r_   r-   r+   r  r  k  s    
0r-   r  c                       \ rS rSrSrg)TestPinvix  r_   Nr6  r_   r-   r+   r  r  x      r-   r  c                       \ rS rSrS rSrg)PinvHermitianCasesi|  c                     [         R                  " USS9n[        n[        U" U" X5      U5      USSS9  [	        [        XA5      5        g )NTr  r   r   r  r  r  s         r+   rQ   PinvHermitianCases.do~  s?    Q$/CA2AaXZ[#F./r-   r_   Nr*  r_   r-   r+   r  r  |  s    0r-   r  c                       \ rS rSrSrg)TestPinvHermitiani  r_   Nr6  r_   r-   r+   r   r     r  r-   r   c                  n   [         R                  " / SQ/ SQ/ SQ/5      n [        [         R                  R	                  U SS9[         R                  R	                  U SS95        [
        R                  " [        SS9   [         R                  R	                  U SSS	9  S S S 5        g ! , (       d  f       g = f)
Nrv   rx   ry   )rz   rv   rv   )rx   ry   rv   r/  rcondrx  z%`rtol` and `rcond` can't be both set.)match)r  ry  )r'   r   r   r   r  r
  raisesr;  )r2   s    r+   test_pinv_rtol_argr    s    
)Y	23A
		q$
		qs#
 
B
 			q#.
 
 
s   = B&&
B4c                       \ rS rSrS rSrg)DetCasesi  c                    [         R                  " U5      n[         R                  " U5      nUR                  UR                  pv[        U5      R                  R                  [        [        4;   a  [        U5      R                  [        5      nO[        U5      R                  [        5      n[         R                  " U5      n	[        U[        R                  " U	SS95        [        U[         R"                  " U5      -  [        R                  " U	SS95        [         R$                  " U5      n[         R$                  " U5      nUS:g  n
[        [         R&                  " Xj   5      S5        [)        Xz)    [*        * 5        g )Nr   axisr   rv   )r   detslogdetsign	logabsdetr   r0   r%   r   r	   astyper   re  r   r   reducer'   exp
atleast_1dr   r   r   )rL   r2   r3   rK   dr_  r   ldadrg  ms              r+   rQ   DetCases.do  s    JJqMnnQ#--21:  VV$44""6*B""7+B^^BAxr;<Ar
NHOOBR,HIMM!]]2!VBFF14L!,RVcT"r-   r_   Nr*  r_   r-   r+   r	  r	    s    #r-   r	  c                   l    \ rS rSrS r\R                  R                  S\\	\
\/5      S 5       rS rSrg)TestDeti  c                 |   [        [        R                  " S//5      S5        [        [        [        R                  " S//5      5      [        5        [        [        R                  " S//5      S5        [        [        [        R                  " S//5      5      [
        5        [        [        R                  " S//5      S[        * 45        [        [        [        R                  " S//5      S   5      [        5        [        [        [        R                  " S//5      S   5      [        5        [        [        R                  " S//5      S[        * 45        [        [        [        R                  " S//5      S   5      [
        5        [        [        [        R                  " S//5      S   5      [        5        g )N        y                r   rv   )r   r   r  r%   r	   r   r  r   rV   s    r+   	test_zeroTestDet.test_zero  s&   VZZ#(#.T&**seW-.7VZZ$)3/T&**tfX./9V^^cUG,sSDk:T&..3%1!45v>T&..3%1!45v>V^^dVH-sd|<T&..4&2156@T&..4&2156?r-   r0   c                 L   [         R                  " SS/SS//US9n[        [         R                  R	                  U5      R
                  U5        [         R                  R                  U5      u  p4[        UR
                  [        U5      5        [        UR
                  U5        g r.  )r'   r   r   r   r  r0   r  r9   )rL   r0   r   phr   s        r+   r1  TestDet.test_types  ss    HHq#ha)7RYY]]1%++U3		!!!$QWWnU34RXXu%r-   c                    [         R                  " S[         R                  S9n[        R                  " U5      n[        US5        [        UR                  R                  [         R                  L 5        [        R                  " U5      n[        US5        [        US   R                  R                  [         R                  L 5        [        US   R                  R                  [         R                  L 5        [         R                  " S[         R                  S9n[        R                  " U5      n[        US5        [        UR                  R                  [         R                  L 5        [        R                  " U5      n[        US5        [        US   R                  R                  [         R                  L 5        [        US   R                  R                  [         R                  L 5        g )Nrq   r8   rg   r  r   rv   )r'   rZ  r]  r   r  r   r   r0   r%   r  float32r\  )rL   r2   r_  s      r+   rD  TestDet.test_0_size  s6   HHV2<<0jjmS"		",,./nnQS&!A!!R\\12A!!RZZ/0HHV2::.jjmS"		"**,-nnQS&!A!!RZZ/0A!!RZZ/0r-   r_   N)rY   rZ   r[   r\   r  r
  r  rK  r   r	   r   r   r1  rD  r^   r_   r-   r+   r  r    s<    @ [[Wvvw&HI& J&1r-   r  c                       \ rS rSrS rSrg)
LstsqCasesi  c                     [         R                  " U5      nUR                  u  pV[        R                  " US5      u  pxn	[        R
                  " XSS9u  ppUS:X  a  [        U
S:H  R                  5       5        XV::  a!  [        U[        X5      5        [        X5        O[        X5        [        XR                  U5      5        X:X  a  XV:  a  [         R                  " [        [         R                  " X5      U-
  5      5      S-  R                  SS9n[         R                  " U5      n[         R                  " U5      R                  S:X  a'  SUl        [        UR                  UR                  5        O.[         R                  " / 5      R!                  [#        U
5      5      n[        X5        [        [         R$                  " UR&                  [         R(                  5      5        [        [+        X5      5        [        [+        X5      5        g )	NFr   r  r   rx   r  rv   r   )r'   r   r   r   r  lstsqr   r   r   r   r   __array_wrap__r   r  r   r   r   r%   
issubdtyper0   floatingr,   )rL   r2   r3   rK   arrr  nr  r   r  r   	residualsranksvexpect_residss                  r+   rQ   LstsqCases.do  si   jjmyy::a'b!'a"!=d6Q!VLLN#63q9-!!B 1 1! 459

3rvva|a/01Q6 JJ}5Mzz!}!!Q&&*#Y__m.A.ABHHRL--d1g6MI5ioor{{;<#A)*#I12r-   r_   Nr*  r_   r-   r+   r'  r'    s    3r-   r'  c                   l    \ rS rSrS r\R                  R                  / SQ/ SQ5      S 5       rS r	Sr
g)		TestLstsqi  c                 r   [         R                  " / SQ/ SQ/ SQ/ SQ/5      R                  n[         R                  " / SQ5      n[        R                  " XSS9u  p4pV[        US:H  5        [        R                  " X5      u  p4pV[        US	:H  5        [        R                  " XS S9u  p4pV[        US	:H  5        g )
N)r  rg   r  rg   rh   r  )r  rh   r  r  rg   r  )rg   r  rg   r  r  rj   )r  r  r  rh   ri   r  )rv   r   r   r   r   r   r   r  rz   ry   )r'   r   Tr   r)  r   )rL   r2   r3   r   r/  r0  r   s          r+   
test_rcondTestLstsq.test_rcond  s    HH22224 5 67Q 	

 HH'( &Q <d	 &Q 2d	 &Q >d	r-   )r  r.  n_rhs))rz   rx   rx   )r   rz   rv   )r   rz   rx   )rz   r   rv   )rz   r   rx   )rz   rx   r   r   r   r   c                 F   [         R                  " X-  5      R                  X5      n[         R                  " X45      n[        R
                  " XES S9u  pgpUS:X  a  [        US:H  R                  5       5        [        UR                  X#45        [        UR                  X:  a  U4OS5        X:  a:  US:  a4  U[         R                  " XF5      -
  n
[        XzU
-  R                  SS95        [        U[        X5      5        [        U	R                  [        X5      45        g )Nr  r   rr   r   r  )r'   r:  r   r  r   r)  r   r   r   r   r   r   r  r  )rL   r  r.  r:  r2   r3   r   r/  r0  r   r   s              r+   test_empty_a_bTestLstsq.test_empty_a_b  s     IIae$$Q*GGQJ &Q >d6Q!VLLN#QWWqj)Y__15xdD5UQYBFF1L A	E;;B;+?@T3q9%QWWs1yl+r-   c                 `   [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " U[         R                  " [	        U5      5      /5      R
                  n[        [        S5         [        R                  " X2S S9  S S S 5        g ! , (       d  f       g = f)N)r   rv   rx   ry   )r   g?g?g @gffffff
@zIncompatible dimensionsr  )
r'   r   vstackr  lenr7  r!   r   r   r)  )rL   r   yr  s       r+   test_incompatible_dims TestLstsq.test_incompatible_dims  sj    HH\"HH-.IIq"''#a&/*+-- .GHLLT* IHHs    B
B-r_   N)rY   rZ   r[   r\   r8  r
  r  rK  r=  rC  r^   r_   r-   r+   r5  r5    s7     [[0 3 ,,+r-   r5  dtz?bBhHiIqQefdgFDGOc                      \ rS rSr\R
                  " S5      r\/ SQ   r\/ SQ   r\/ SQ   r	\\\\	/r
\" SS/SS//5      r\R                  " \///S-  5      r\\R                   " S	5      \R                   " S
5      \R                   " S5      /rS rS rS rS rS rS rS r\R4                  R7                  \SS9S 5       rSrg)TestMatrixPoweri&  rz   )ry   r   rv   rx   )rx   ry   r   rv   )rv   rx   ry   r   rv   r   rx   r   gGc                    U R                   R                  U5      n[        [        USS-  S-   S-   S-   5      U R                  5        [        [        USS-  S-   S-   S-   5      U R                   5        [        [        USS-  S-   S-   S-   5      U R
                  5        [        [        USS-  S-   S-   S-   5      U R                  5        g )Nrx   rF   i       r   rv   ry   )rshft_1r  r   r   rshft_0rshft_2rshft_3)rL   rE  rshfts      r+   test_large_power TestMatrixPower.test_large_power3  s    ##B'3 5 9:DLL	J3 5 9:DLL	J3 5 9:DLL	J3 5 9:DLL	Jr-   c                     S nU R                    HG  nU" UR                  U5      5        U[        :w  d  M&  U" U R                  R                  U5      5        MI     g )Nc                     [        U S5      n[        U[        U 5      5        [        UR                  U R                  5        g )Nr   )r   r   r!  r0   )Mmzs     r+   tz.TestMatrixPower.test_power_is_zero.<locals>.tz?  s0    a#B6q9:177+r-   	rshft_allr  objectstackedrL   rE  rW  r  s       r+   test_power_is_zero"TestMatrixPower.test_power_is_zero>  sE    	,
 >>Cszz"~V|4<<&&r*+ "r-   c                     S nU R                    HG  nU" UR                  U5      5        U[        :w  d  M&  U" U R                  R                  U5      5        MI     g )Nc                 r    [        U S5      n[        X5        [        UR                  U R                  5        g )Nrv   )r   r   r0   )r  rV  s     r+   rW  -TestMatrixPower.test_power_is_one.<locals>.tzJ  s(    c1%B!399-r-   rY  r]  s       r+   test_power_is_one!TestMatrixPower.test_power_is_oneI  sE    	.
 >>Cszz"~V|4<<&&r*+ "r-   c                     S nU R                    HG  nU" UR                  U5      5        U[        :w  d  M&  U" U R                  R                  U5      5        MI     g )Nc                     [        U S5      nU R                  [        :w  a  [        O[        n[        X" X 5      5        [        UR                  U R                  5        g )Nrx   )r   r0   r[  r   r   r   )r  rV  mmuls      r+   rW  -TestMatrixPower.test_power_is_two.<locals>.tzU  s@    c1%B YY&06cDT#^,399-r-   rY  r]  s       r+   test_power_is_two!TestMatrixPower.test_power_is_twoT  sE    	. >>Cszz"~V|4<<&&r*+ "r-   c                     S nU R                    H+  nXR                  ;  d  M  U" UR                  U5      5        M-     g )Nc                     [        U S5      nU R                  [        :w  a  [        O[        n[        U" X5      [        U 5      5        g Nr   )r   r0   r[  r   r   r   r!  )r  invmatrg  s      r+   rW  3TestMatrixPower.test_power_is_minus_one.<locals>.tza  s9    !#r*F YY&06cDV!#<S#ACr-   )rZ  dtnoinvr  r]  s       r+   test_power_is_minus_one'TestMatrixPower.test_power_is_minus_one`  s2    	C >>C%3::b>" "r-   c                     U R                   R                  U5      n[        [        [        US5        [        [        [        US/5        g )Ng      ?rv   )rM  r  r    	TypeErrorr   rL   rE  r  s      r+   test_exceptions_bad_power)TestMatrixPower.test_exceptions_bad_powerk  s4    ll!!"%isC8isQC8r-   c                    [        [        [        [        R                  " S/U5      S5        [        [        [        [        R                  " S/S//U5      S5        [        [        [        [        R
                  " SU5      S5        g )Nrv   rx   )rz   ry   rx   )r    r   r   r'   r   r  )rL   rE  s     r+   test_exceptions_non_square*TestMatrixPower.test_exceptions_non_squarep  sW    k<1#r1BAFk<A3*b1I1Mk<B1GKr-   fp errors don't work in wasmr  c                     XR                   ;   a  g U R                  R                  U5      n[        [        [
        US5        g rm  )rp  noninvr  r    r   r   ru  s      r+   test_exceptions_not_invertible.TestMatrixPower.test_exceptions_not_invertibleu  s1    kk  $k<b9r-   r_   N)rY   rZ   r[   r\   r'   r  rM  rL  rN  rO  rZ  r   r~  blockr\  r[  r0   rp  rQ  r^  rc  ri  rq  rv  ry  r
  r  skipifr   r  r^   r_   r-   r+   rG  rG  &  s     ffQiGl#Gl#Gl#G'7G4IQFQF#$Fhh'}q()Grxx}bhhsmRXXc]CG	J	,	,
,	#9
L
 [[(FG: H:r-   rG  c                       \ rS rSrS rSrg)TestEigvalshCasesi}  c                 "   [         R                  " US5      n[         R                  " U5      u  pVUR                  SS9  [	        XE[        UR                  5      S9  [         R                  " US5      n[	        Xu[        UR                  5      S9  g )NLr   r  rx  r  )r   eigvalshrf  r  r   r=   r0   )rL   r2   r3   rK   rg  rh  ri  ev2s           r+   rQ   TestEigvalshCases.do  sh     __Q$"JJqM"(288*<=ooa%8BHH+=>r-   r_   Nr*  r_   r-   r+   r  r  }  s    	?r-   r  c                   r    \ rS rSr\R
                  R                  S\\\	\
/5      S 5       rS rS rS rSrg)	TestEigvalshi  r0   c                     [         R                  " SS/SS//US9n[         R                  R                  U5      n[	        UR
                  [        U5      5        g r.  )r'   r   r   r  r   r0   r9   )rL   r0   r   r  s       r+   r1  TestEigvalsh.test_types  sF    HHq#ha)7IIq!QWWnU34r-   c                 N   [         R                  " SS/SS//[         R                  S9n[        [        [         R
                  R                  USS9  [        [        [         R
                  R                  US5        [        [        [         R
                  R                  US5        g Nrv   r/  r8   lrongUPLOlowerupper)r'   r   r$  r    r;  r   r  rL   r   s     r+   test_invalidTestEigvalsh.test_invalid  sk    HHq#ha)<j"))"4"4agFj"))"4"4aAj"))"4"4aAr-   c                    [         R                  " SS/SS//[         R                  S9n[         R                  " SS/SS//[         R                  S9n[         R                  " SS/[         R                  S9n[        [         R                  5      n[         R                  R                  U5      n[        XSUS9  [         R                  R                  USS9n[        XSUS9  [         R                  R                  USS9n[        XSUS9  [         R                  R                  US	S9n[        XSUS9  [         R                  R                  US
S9n[        XSUS9  g Nr   rv   r8   r   rx  r  r  lr  r  )r'   r   r	   r=   r   r  r   )rL   KloKuptgtry  r  s         r+   	test_UPLOTestEigvalsh.test_UPLO  s   hhAA'ryy9hhAA'ryy9hhAwbii0		" IIs#T*IIs-T*IIs-T*IIs-T*IIs-T*r-   c                     " S S[         R                  5      n[         R                  " S[         R                  S9R	                  U5      n[
        R                  " U5      n[        UR                  R                  [         R                  L 5        [        SUR                  5        [        [        U[         R                  5      5        [         R                  " S[         R                  S9R	                  U5      n[
        R                  " U5      n[        UR                  R                  [         R                  L 5        [        SUR                  5        [        [        U[         R                  5      5        g )Nc                       \ rS rSrSrg)/TestEigvalsh.test_0_size.<locals>.ArraySubclassi  r_   Nr6  r_   r-   r+   r7  r    r8  r-   r7  rY  r8   rs  rq   rr   )r'   r(   rZ  r[  r   r   r  r   r0   r%   r\  r   r   r&   r]  r$  r^  s       r+   rD  TestEigvalsh.test_0_size  s    	BJJ 	HHYbgg.33MBooa 		"**,-VSYY'
3

+,HHV2<<055mDooa 		"**,-T399%
3

+,r-   r_   NrY   rZ   r[   r\   r
  r  rK  r   r	   r   r   r1  r  r  rD  r^   r_   r-   r+   r  r    s?    [[Wvvw&HI5 J5
B+,-r-   r  c                       \ rS rSrS rSrg)TestEighCasesi  c                    [         R                  " U5      nUR                  UR                  pe[         R                  " U5      u  pxUR                  SS9  [        XW5        [        [        X5      [        R                  " U5      SS S S 24   [        R                  " U5      -  [        UR                  5      S9  [         R                  " US5      u  p[        X5        [        [        X5      [        R                  " U	5      SS S S 24   [        R                  " U
5      -  [        UR                  5      [        U5      S9  g )Nr   r  .rx  r  )ry  err_msg)r   eighrz  r{  rf  r  r   r   r   r'   r   r=   r0   repr)rL   r2   r3   rK   r_  rg  evcrh  ri  r  evc2s              r+   rQ   TestEighCases.do  s     kk!n//3#3#3C"JJqM"B(q

2sD!|4rzz#F%bhh/	1 KK3'	C)q

3T15

48HH%bhh/a	Br-   r_   Nr*  r_   r-   r+   r  r    s    Br-   r  c                   r    \ rS rSr\R
                  R                  S\\\	\
/5      S 5       rS rS rS rSrg)	TestEighi  r0   c                     [         R                  " SS/SS//US9n[         R                  R                  U5      u  p4[	        UR
                  [        U5      5        [	        UR
                  U5        g r.  )r'   r   r   r  r   r0   r9   r  s        r+   r1  TestEigh.test_types  sT    HHq#ha)7yy~~a QWWnU34QWWe$r-   c                 N   [         R                  " SS/SS//[         R                  S9n[        [        [         R
                  R                  USS9  [        [        [         R
                  R                  US5        [        [        [         R
                  R                  US5        g r  )r'   r   r$  r    r;  r   r  r  s     r+   r  TestEigh.test_invalid  se    HHq#ha)<j"))..!'Bj"))..!W=j"))..!W=r-   c                    [         R                  " SS/SS//[         R                  S9n[         R                  " SS/SS//[         R                  S9n[         R                  " SS/[         R                  S9n[        [         R                  5      n[         R                  R                  U5      u  pV[        XSUS9  [         R                  R                  USS9u  pV[        XSUS9  [         R                  R                  USS9u  pV[        XSUS9  [         R                  R                  US	S9u  pV[        XSUS9  [         R                  R                  US
S9u  pV[        XSUS9  g r  )r'   r   r	   r=   r   r  r   )rL   r  r  r  ry  r  r  s          r+   r  TestEigh.test_UPLO  s   hhAA'ryy9hhAA'ryy9hhAwbii0		" yy~~c"T*yy~~c~,T*yy~~c~,T*yy~~c~,T*yy~~c~,T*r-   c                 :    " S S[         R                  5      n[         R                  " S[         R                  S9R	                  U5      n[
        R                  " U5      u  p4[        UR                  R                  [         R                  L 5        [        UR                  R                  [         R                  L 5        [        UR                  UR                  5        [        SUR                  5        [        [        U[         R                  5      5        [         R                  " S[         R                  S9R	                  U5      n[
        R                  " U5      u  p4[        UR                  R                  [         R                  L 5        [        UR                  R                  [         R                  L 5        [        UR                  UR                  5        [        SUR                  5        [        [        U[         R                  5      5        g )Nc                       \ rS rSrSrg)+TestEigh.test_0_size.<locals>.ArraySubclassi  r_   Nr6  r_   r-   r+   r7  r    r8  r-   r7  rY  r8   rs  rq   rr   )r'   r(   rZ  r[  r   r   r  r   r0   r%   r\  r   r   r&   r]  r$  r  s        r+   rD  TestEigh.test_0_size  s<   	BJJ 	HHYbgg.33MB[[^
  BJJ./		"**,-QWWekk*VSYY'
1bjj)*HHV2<<055mD[[^
  BLL01		"**,-QWWekk*T399%
1bjj)*r-   r_   Nr  r_   r-   r+   r  r    s>    [[Wvvw&HI% J%>+,+r-   r  c                   ,    \ rS rSrSrSr\S 5       rSrg)_TestNormBasei  Nc                 .   [        U R                  R                  [        R                  5      (       a+  [        UR                  U R                  R                  5        g [        [        UR                  R                  [        R                  5      5        g r$   )	
issubclassr0   r%   r'   inexactr   realr   r,  )r   r_  s     r+   check_dtype_TestNormBase.check_dtype  sN    aggllBJJ//AFFLL1 Jsyy~~r{{;<r-   r_   )	rY   rZ   r[   r\   rE  decstaticmethodr  r^   r_   r-   r+   r  r    s    	B
C= =r-   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	_TestNormGenerali   c                     [        [        / 5      S5        [        [        [        / U R                  S95      S5        [        [        [	        [        / U R                  S95      5      S5        g )Nr  r8   )r   r   r   rE  r   rV   s    r+   
test_empty_TestNormGeneral.test_empty"  sI    T"Xs#T%$''23S9T*U2TWW%=>?Er-   c                 ~   [         R                  " / SQ5      n[         R                  S   n[         R                  S   nX#-   nU GH  nUR                  U5      n[	        U[         R
                  * 5      nU R                  Xg5        [        US5        [        5        nUR                  [        S5        [	        US5      nU R                  Xg5        [        US5        S S S 5        [	        US5      nU R                  Xg5        [        US5        [	        US	5      nU R                  Xg5        [        US
5        [	        US5      nU R                  Xg5        [        XwR                  R                  S
5      UR                  R                  S5      -  5        [	        US5      nU R                  Xg5        [        XwR                  R                  S
5      UR                  R                  S5      -  5        [	        U[         R
                  5      nU R                  Xg5        [        US5        GM     g ! , (       d  f       GNX= f)Nr  
AllIntegerAllFloatr  divide by zero encounteredr   r   rx   rv   rh   r/  rz   g      ?rg   )r'   r   	typecodesr  r   r   r  r   r"   filterRuntimeWarningr0   r%   	rL   r2   exact_typesinexact_types	all_types	each_typeatansups	            r+   test_vector_return_type(_TestNormGeneral.test_vector_return_type'  s   HHYll<0Z0/	"I)$Bb266'"BR$C("$

>+GH"b\  (#B,	 % b!BR$A&b!BR$C(b!BR$HHMM#$6i8P$PQb!BR$HHMM#$6i8P$PQb"&&!BR$C(? # %$s   A H--
H<	c                    ^  / SQn/ SQn/ SQnU 4S jnXU4 H  nU" U5        M     [        UT R                  S9[        UT R                  S9[        UT R                  S94 H  nU" U5        M     g )N)rv   rx   ry   rz   )r   r   r   r   )r   rx   r   rz   c                 F  > [         R                  R                  [        U 5      STR                  S9  [         R                  R                  [        U [
        5      STR                  S9  [         R                  R                  [        U [
        * 5      STR                  S9  [         R                  R                  [        U S5      STR                  S9  [         R                  R                  [        U S5      STR                  S9  [         R                  R                  [        U S	5      STR                  S9  [         R                  R                  [        U S
5      STR                  S9  [         R                  R                  [        U S5      STR                  S9  g )Ng6ҭ@r/   rj   rg   rv         $@r   gQ?rx   r   gsc?r   rz   )r'   testingr   r   r  r   )r  rL   s    r+   _test+_TestNormGeneral.test_vector.<locals>._testU  sD   JJ**47I3788 + =JJ**43<3788 + =JJ**4C4=#3788 + =JJ**41:t3788 + =JJ**42;	3788 + =JJ**41:y3788 + =JJ**42;9M3788 + =JJ**41:q3788 + =r-   r8   )r   rE  )rL   r2   r3   r  r  r  s   `     r+   test_vector_TestNormGeneral.test_vectorP  sl    	=$ A!H  )5$''+B)+A!H+r-   c                    [        / SQ/ SQ/U R                  S9nS SSSSS[        R                  [        R                  * 4 H  n[	        UR
                  S   5       Vs/ s H  n[        US S 2U4   US	9PM     nn[        [        XSS
9U5        [	        UR
                  S   5       Vs/ s H  n[        XS S 24   US	9PM     nn[        [        XSS
9U5        M     [        R                  " SSU R                  S9R                  SSS5      nUR                  nS SSSS[        R                  [        R                  * S4 GH  n[        R                  " [	        U* U5      S5       H  nUu  pU	S:  a  X-  n	U
S:  a  X-  n
X:X  a  [        [        [        XbUS
9  M6  [        XbUS
9nXyU
-   -
  nX:  aA  [	        UR
                  U   5       Vs/ s H  n[        US S  R                  X<S9US	9PM     nnOJ[	        UR
                  U   5       Vs/ s H'  n[        US S  R                  X<S9R                   US	9PM)     nn[        X5        M     GM     g s  snf s  snf s  snf s  snf )Nr  rz   r   r   r8   r   r   rv   rx   ry   ordr  r     rz   r   r  r  )r   rE  r'   r   r  r   r   r   r:  r   r   r   combinationsr    r;  taker7  )rL   r  orderk	expected0	expected1Bndr  row_axiscol_axisr.  k_indexrC  s                 r+   	test_axis_TestNormGeneral.test_axisn  sD    9i(8B1aBFFRVVG<E;@;LM;Laa1g51;LIMQ :IF;@;LM;Laa1g51;LIMQ :IF	 = IIa477+33Aq!<VVB2q"&&266'5AE!..ubS"~qA%)"a<NHa<NH'!*dAtLQ5A !x$78G*-217773C-D$F-D %)11)C$O-D ! $F .317773C-D$F-D %)11)C)E)E5$Q-D ! $F'4) B B NM,$F$Fs   I*I$I.I#c                 <   [         R                  " SSU R                  S9R                  SSS5      nSnSn[	        US S S	9n[	        US S S
S9n[        [         R                  " U5      UUR                  S S 5      S9  Sn[        UR                  U:H  UR                  UR                  US S 5      5        S SSSSS[         R                  [         R                  * 4 H  n[        UR                  5       H  n[	        XUS	9n[	        XUS
S9n[        [         R                  " U5      UUR                  Xx5      S9  [        UR                  5      nSXh'   [        U5      n[        UR                  U:H  UR                  UR                  XgU5      5        M     M     S SSSS[         R                  [         R                  * SS4	 H  n[        R                   " [        UR                  5      S5       H  n[	        XUS	9n[	        XUS
S9n[        [         R                  " U5      UUR                  Xx5      S9  [        UR                  5      nSXhS   '   SXhS   '   [        U5      n[        UR                  U:H  UR                  UR                  XgU5      5        M     M     g )Nrv   r  r8   rx   ry   rz   zorder {0}, axis = {1}z;Shape mismatch found {0}, expected {1}, order={2}, axis={3}r  T)r  r  keepdims)r  )rv   rv   rv   r   r   r   r  nuc)r'   r:  rE  r   r   r   squeezeformatr   r   r   r  r   r   r   r   permutations)	rL   r  allclose_err	shape_errrC  foundexpected_shaper  r  s	            r+   test_keepdims_TestNormGeneral.test_keepdims  sH   IIa477+33Aq!<.Q	 t$/QDtd;

5)8 , 3 3D$ ?	A"~-  ndDI	K B1aBFFRVVG<E166]15QDA

5 18(4(;(;E(EG!%agg$%!!&~!6~5!((nQOQ # = B2q"&&266'5%HE++E!&&M1=15QDA

5 18(4(;(;E(EG!%agg'(t$'(t$!&~!6~5!((nQOQ > Ir-   r_   N)
rY   rZ   r[   r\   r  r  r  r  r   r^   r_   r-   r+   r  r     s    F
')R<#5J(Qr-   r  c                   J    \ rS rSr\R
                  rS rS rS rS r	S r
Srg)	_TestNorm2Di  c           	      `    [        [        U R                  / /U R                  S95      S5        g )Nr8   r  )r   r   r   rE  rV   s    r+   test_matrix_empty_TestNorm2D.test_matrix_empty  s$    T$**bT*9:C@r-   c                    U R                  / SQ/ SQ/5      n[        R                  S   nSnX#-   nU GH  nUR                  U5      n[	        U[        R
                  * 5      nU R                  Xg5        [        US5        [        5        nUR                  [        S5        [	        US5      nU R                  Xg5        [        US5        S S S 5        [	        US	5      nU R                  Xg5        [        US5        [	        US
5      nU R                  Xg5        [        US5        [	        US5      nU R                  Xg5        [        US5        [	        U[        R
                  5      nU R                  Xg5        [        US5        [	        US5      nU R                  Xg5        [        US5        [	        US5      nU R                  Xg5        [        R                  R                  USSS9  GM     g ! , (       d  f       GN,= f)Nr  rY  r  fdFDrh   r  r   rg   rv   rx   gLXz?r   r  r  gU&,t=@r   r  )r   r'   r  r  r   r   r  r   r"   r  r  r  r  s	            r+   test_matrix_return_type#_TestNorm2D.test_matrix_return_type  s   JJ	9-.ll<0
 /	"I)$Bb266'"BR$C("$

>+GH"b\  (#B,	 % b!BR$C(b!BR$$45b"BR$C(b"&&!BR$C(b%BR$C(b%BR$ JJ**2/A1*MK # %$s   
A G//
G>	c                 d   U R                  SS/SS//U R                  S9n[        [        U5      S5        [        [        US5      S5        [        [        US5      S	5        [        [        U[        5      S
5        [        [        U[        * 5      S5        [        [        US5      S	5        [        [        US5      S5        [        [        US5      S5        [        [        US5      S5        [        [        [        US5        [        [        [        US5        [        [        [        US5        g )Nrv   ry   r   r   r8   gT"@r  r  r  g      (@rj   r   rl   rx   gW?"@r   gїʄ?nofror   r   )r   rE  r   r   r   r    r;  rL   r  s     r+   test_matrix_2x2_TestNorm2D.test_matrix_2x2  s    JJAA'twwJ7DGY/DENI6DEND1DCL$/DSDM3/DAJ-DBK-DAJ(:;DBK)<=j$73j$2.j$1-r-   c                    SU R                  / SQ/ SQ/ SQ/U R                  S9-  n[        [        U5      S5        [        [        US5      S5        [        [        US5      S	5        [        [        U[        5      S
5        [        [        U[        * 5      S5        [        [        US5      S5        [        [        US5      S5        [        [        US5      S5        [        [        US5      S5        g )Ng?r  )r   r   r   )ry   rx   rv   r8   grj=Q0?r  r  gB+pc?g?g333333?rv   rg   r   g?rx   g&.d?r   gܸՠ?)r   rE  r   r   r   r  s     r+   test_matrix_3x3_TestNorm2D.test_matrix_3x3	  s    
 JJ	9i8JHIDG%9:DEN,@ADEN,>?DCL#.DSDM3/DAJ,DBK-DAJ(;<DBK)<=r-   c                    U R                  / SQ/ SQ/U R                  S9n[        R                  " SSU R                  S9R	                  SSS5      n[        [        [        US	S
5        [        [        [        USS
5        [        [        [        SS/S	S 5        [        [        [        SS/SS 5        [        [        [        SS/SS 5        S HE  n[        [        [        XS 5        [        [        [        XS5        [        [        [        X#S5        MG     [        [        [        US S5        [        [        [        US S5        [        [        [        US S5        g )Nr  r  r8   rv   r  rx   ry   rz   r  r   r  testr   ry   rs  )rv   rx   rx   ry   r   rv   rx   )	r   rE  r'   r:  r   r    r;  r   r   )rL   r  r  r  s       r+   test_bad_args_TestNorm2D.test_bad_args  s
    JJ	9-TWWJ=IIa477+33Aq!<
 	j$5!4j$5!4j$At<j$At<j$A= E*dAd;*dAf=*dAf=  	iq$2iq$7j$4;r-   r_   N)rY   rZ   r[   r\   r'   r   r  r	  r  r  r  r^   r_   r-   r+   r  r    s)     HHEA1Nf. >"<r-   r  c                       \ rS rSrSrg)	_TestNormi6  r_   Nr6  r_   r-   r+   r  r  6  r  r-   r  c                   &    \ rS rSrS rS rS rSrg)TestNorm_NonSystematici:  c                 p    [         R                  " S[         R                  S9n[        [	        USS9SSS9  g )N
   r8   ry   r  gL)@rx   r  )r'   r:  
longdoubler1   r   r  s     r+   test_longdouble_norm+TestNorm_NonSystematic.test_longdouble_norm<  s*     IIb.QAqAr-   c                 r    [         R                  " S/[         R                  S9n[        [	        USS9SSS9  g )Ni   r8   ry   r  l        r   r  )r'   r   int32r1   r   r  s     r+   test_intmin"TestNorm_NonSystematic.test_intminB  s,     HHhZrxx0QACr-   c                    [         R                  " S[         R                  S9nSUS'   SUS'   Sn[        [         R                  R                  USS	9US
S9  UR                  [         R                  5      n[        [         R                  R                  USS	9USS9  UR                  [         R                  5      n[        [         R                  R                  USS	9USS9  g )Nrx   r8   y      @      @r   y            @rv   gV;'@ry   r  r  r  	   r   )	r'   r   clongdoubler1   r   r   r  
complex128r]  )rL   r  r_  s      r+   test_complex_high_ord,TestNorm_NonSystematic.test_complex_high_ordH  s    HHT0!!		qa 8#rJHHR]]#		qa 8#qIHHR\\"		qa 8#qIr-   r_   N)rY   rZ   r[   r\   r!  r%  r,  r^   r_   r-   r+   r  r  :  s    BD
Jr-   r  c                   0    \ rS rSr\R
                  rSrSrg)_TestNormDoubleBaseiV     r_   N)	rY   rZ   r[   r\   r'   r	   rE  r  r^   r_   r-   r+   r/  r/  V  s    	B
Cr-   r/  c                   0    \ rS rSr\R
                  rSrSrg)_TestNormSingleBasei[  r   r_   N)	rY   rZ   r[   r\   r'   r$  rE  r  r^   r_   r-   r+   r2  r2  [  s    	B
Cr-   r2  c                   0    \ rS rSr\R
                  rSrSrg)_TestNormInt64Basei`  r0  r_   N)	rY   rZ   r[   r\   r'   int64rE  r  r^   r_   r-   r+   r4  r4  `  s    	B
Cr-   r4  c                       \ rS rSrSrg)TestNormDoubleie  r_   Nr6  r_   r-   r+   r7  r7  e  r  r-   r7  c                       \ rS rSrSrg)TestNormSingleii  r_   Nr6  r_   r-   r+   r9  r9  i  r  r-   r9  c                       \ rS rSrSrg)TestNormInt64im  r_   Nr6  r_   r-   r+   r;  r;  m  r  r-   r;  c                        \ rS rSrS rS rSrg)TestMatrixRankiq  c                     [        S[        [        R                  " S5      5      5        [        R                  " S5      nSUS'   [        [        U5      S5        [        [        [        R                  " S5      5      S5        [        [        / SQ5      S5        [        [        [        R                  " S	5      5      S5        [        [        S/5      S5        [        R
                  " U[        R                  " S5      [        R                  " S5      /5      n[        [        U5      [        R
                  " / S
Q5      5        [        [        S5      S5        [        [        S5         [        USSS9  S S S 5        g ! , (       d  f       g = f)Nrz   r  r   r   ry   r  r   )rv   r   r   r   rv   )rz   )ry   rz   r   z#`tol` and `rtol` can't be both set.g{Gz?)tolry  )r   r   r'   r  rZ  r   r!   r;  )rL   Imss      r+   test_matrix_rankTestMatrixRank.test_matrix_ranks  s   QBFF1I./FF1I&	[^Q'[&!12A6[.2[$0!4[!%q)XXq"&&)RXXf%567[_bhhy&9:[^Q' >
 t$/
 
 
s   *E??
Fc           	         [        S[        [        R                  " S5      SS95        [        S[        [        R                  " S5      SS95        [        S[        [        R
                  " S5      SS95        [        R                  " S5      nSUS'   [        S	[        USS95        S
US'   [        S[        USSS95        [        S	[        USSS95        g )Nrz   Tr  rv   r  r   r  r?  ry   g:0yE>g|"BE>)r@   r@  g;䡈E>)r   r   r'   r  r  rZ  )rL   rA  s     r+   test_symmetric_rank"TestMatrixRank.test_symmetric_rank  s    QBFF1I>?QBGGFOtDEQBHHV$4EFFF1I&	QA67&	QA7CDQA7CDr-   r_   N)rY   rZ   r[   r\   rC  rF  r^   r_   r-   r+   r=  r=  q  s    02Er-   r=  c                  @   [         R                  R                  S5      n [        S5       Hp  nU R	                  SS9nUS S 2S4   US S 2S4   -   US S 2S4'   [        [        U5      S5        US S 2S	4   US S 2S
4   -   US S 2S4'   [        [        U5      S5        Mr     g )Ni3rF   )(   r  sizerv   rx   r   r)  rz   r   ry   rt   )r'   r  RandomStater  normalr   r   )rngiXs      r+   test_reduced_rankrQ    s    
))


)C3ZJJHJ%AqD'AadG#!Q$[^Q'AqD'AadG#!Q$[^Q' r-   c            	          \ rS rSr\R
                  rS r\R                  R                  SS// SQ5      S 5       r
S rS rS	 r\R                  R                  S
/ SQ5      \R                  R                  S/ SQ5      \R                  R                  S\R                  \R                  \R                   \R"                  /5      S 5       5       5       rSrg)TestQRi  c                    [        U5      nUR                  nUR                  u  pE[        XE5      n[        R
                  " USS9nUR                  UR                  p[        UR                  U:H  5        [        U	R                  U:H  5        [        [        X5      5        [        [        X5      5        [        UR                  XD4:H  5        [        U	R                  XE4:H  5        [        [        X5      U5        [        [        UR                  R                  5       U5      [        R                  " U5      5        [        [        R                   " U	5      U	5        [        R
                  " USS9u  p[        U
R                  U:H  5        [        UR                  U:H  5        [        [        X5      5        [        [        X5      5        [        U
R                  XF4:H  5        [        UR                  Xe4:H  5        [        [        X5      U5        [        [        U
R                  R                  5       U
5      [        R                  " U5      5        [        [        R                   " U5      U5        [        R
                  " USS9n[        UR                  U:H  5        [        [        X5      5        [        X5        g )Ncompletemodereducedr   )r%   r0   r   r  r   qrQRr   r&   r   r   r7  r  r'   r  triu)rL   r2   a_typea_dtyper  r.  r  r_  rZ  r[  q1r1r2s                r+   check_qrTestQR.check_qr  s    a''wwI ii
+uucee17"#7"#
1%&
1%&A6!"A6!"CIq)C
A.q	:BGGAJ* 19-G#$G#$
2&'
2&'QF"#QF"#CK+C		R0"&&)<BGGBK, YYqs#G#$
2&'B#r-   r  r.  )ry   r   r  rq   c                    [        X5      n[        R                  " X45      nU R                  U5        [        R                  R                  USS9u  pV[        UR                  [        R                  5        [        UR                  [        R                  5        [        UR                  X!45        [        UR                  U45        g )NrawrV  )
r  r'   r   rb  r   rY  r   r0   r	   r   )rL   r  r.  r  r2   htaus          r+   test_qr_emptyTestQR.test_qr_empty  s     IHHaVaae,QWWbii(SYY		*QWWqf%SYY%r-   c                    U R                  SS/SS/SS//[        R                  S9n[        R                  " USS	9u  p#[        UR                  [        R                  :H  5        [        UR                  [        R                  :H  5        [        UR                  S
:H  5        [        UR                  S:H  5        [        R                  " UR                  SS	9u  p#[        UR                  [        R                  :H  5        [        UR                  [        R                  :H  5        [        UR                  S:H  5        [        UR                  S:H  5        g )Nrv   rx   ry   rz   r   r   r8   rf  rV  r  r(  r   )	r   r'   r	   r   rY  r   r0   r   r7  )rL   r2   rg  rh  s       r+   test_mode_rawTestQR.test_mode_raw  s     JJAAA/ryyJA 15)299$%		RYY&'6!"		T!"133U+299$%		RYY&'6!"		T!"r-   c                    U R                  SS/SS//5      nU R                  SS/SS/SS//5      nS Hb  nUR                  U5      nUR                  U5      nU R                  U5        U R                  U5        U R                  UR                  5        Md     S Hn  nSSUR                  U5      -  -   nSSUR                  U5      -  -   nU R                  U5        U R                  U5        U R                  UR                  5        Mp     g )	Nrv   rx   ry   rz   r   r   fd              ?)r   r  rb  r7  )rL   r2   r3   rE  m1m2s         r+   test_mode_all_but_economic!TestQR.test_mode_all_but_economic  s    JJAA'(JJAAA/0B"B"BMM"MM"MM"$$  BR!((2,&&BR!((2,&&BMM"MM"MM"$$ r-   c           	         [        U5      nUR                  nUR                  SS  u  pE[        XE5      n[        R
                  " USS9u  px[        UR                  U:H  5        [        UR                  U:H  5        [        [        Xr5      5        [        [        X5      5        [        UR                  SS  XD4:H  5        [        UR                  SS  XE4:H  5        [        [        Xx5      U5        [        R                  " UR                  S   5      n	[        R                  " U	UR                  S S UR                  S   4S-  -   5      n
[        [        [        USS5      R                  5       U5      U
5        [        [        R                  " USS S 2S S 24   5      U5        [        R
                  " USS9u  p[        UR                  U:H  5        [        UR                  U:H  5        [        [        X5      5        [        [        X5      5        [        UR                  SS  XF4:H  5        [        UR                  SS  Xe4:H  5        [        [        X5      U5        [        R                  " UR                  S   5      n	[        R                  " U	UR                  S S UR                  S   4S-  -   5      n
[        [        [        USS5      R                  5       U5      U
5        [        [        R                  " USS S 2S S 24   5      U5        [        R
                  " USS9n[        UR                  U:H  5        [        [        X5      5        [        X5        g )	Nr   rU  rV  r   rx   .rX  r   )r%   r0   r   r  r   rY  r   r&   r   r   r'   r
   r'  r   r  r\  )rL   r2   r]  r^  r  r.  r  qr   I_matstack_I_matr_  r`  ra  s                 r+   check_qr_stackedTestQR.check_qr_stacked
  s    a''wwrs|I yy,7"#7"#
1%&
1%&&'&'F1L!,AGGBK(ooe~'99;F8Ar2#6#;#;#=qA;OBGGAc1aiL115 19-G#$G#$
2&'
2&'!'(!'(F2NA.BHHRL)ooe""!(;;=F8BB#7#<#<#>C'	)BGGBsAqyM2B7 YYqs#G#$
2&'B#r-   rK  ))ry   rz   )rz   ry   r  rd  r  
outer_size)r9  r(  )rx   ry   rz   rE  c                    [         R                  R                  S5      nUR                  X-   S9R	                  U5      nUR                  X-   S9R	                  U5      nU R                  U5        U R                  USU-  -   5        g )N{   rJ  rp  )r'   r  default_rngrM  r  ry  )rL   r{  rK  rE  rN  r  r  s          r+   test_stacked_inputsTestQR.test_stacked_inputs7  sx     ii##C(JJJ-J.55b9JJJ-J.55b9a a#'k*r-   r_   N)rY   rZ   r[   r\   r'   r   rb  r
  r  rK  ri  rl  rs  ry  r   r	   r   r   r  r^   r_   r-   r+   rS  rS    s    HHE%$N [[c3Z * 

&

&#, "+$Z [[V &  [[\ ,! "[[T
		299


BJJ$  !+!"+r-   rS  c                   @   \ rS rSr\R
                  R                  S/ SQ5      \R
                  R                  S\R                  \R                  \R                  \R                  45      \R
                  R                  SSS/5      S 5       5       5       rS	 rS
 rSrg)TestCholeskyiH  r   )r   r9  ry   ry   )2   r  )ry   r  r  r0   r  FTc                 h   [         R                  R                  S5        [         R                  R                  " U6 n[         R                  " U[         R
                  5      (       a#  US[         R                  R                  " U6 -  -   n[        [        [        U5      5      5      nSUSS & [         R                  " UR                  U5      R                  5       U5      n[         R                  " XBS9n[         R                  R                  XCS9nU(       a5  [         R                  " UR                  U5      R                  5       U5      nO3[         R                  " XfR                  U5      R                  5       5      nSUR                  S   -  [         R                   " U5      R"                  -  n[%        XtX S	U S
U S
U 3S9  [         R&                  " USSS9n	[)        [         R*                  " [         R,                  " U	5      5      5        [)        [         R*                  " U	S:  5      5        g )Nrv   rp  )r   r   r   r8   r  i  r    
)atolr  r   )axis1axis2)r'   r  r  randnr+  complexfloatingr   r  rA  r   r  r  r   r   choleskyr   finfoepsr   diagonalr   r   isreal)
rL   r   r0   r  r2   tr  r3   r  r  s
             r+   test_basic_property TestCholesky.test_basic_propertyJ  s    			qIIOOU#== 2 233B%000As5z"#"#IIakk!n))+Q/JJq&IIq. 		!++a.--/3A		![[^0023AQWWQZ"((5/"5"5547!E7"QCr!1MN KK2.ryy|$%qAvr-   c                     " S S[         R                  5      n[         R                  " S[         R                  S9R	                  U5      n[
        R                  " U5      n[        UR                  UR                  5        [        UR                  R                  [         R                  L 5        [        [        U[         R                  5      5        [         R                  " S[         R                  S9R	                  U5      n[
        R                  " U5      n[        UR                  UR                  5        [        UR                  R                  [         R                  L 5        [        [        U[         R                  5      5        g )Nc                       \ rS rSrSrg)/TestCholesky.test_0_size.<locals>.ArraySubclassio  r_   Nr6  r_   r-   r+   r7  r  o  r8  r-   r7  rY  r8   )rv   r   r   )r'   r(   rZ  r[  r   r   r  r   r   r   r0   r%   r\  r&   r]  r^  s       r+   rD  TestCholesky.test_0_sizen  s    	BJJ 	HHYbgg.33MBooa QWWcii(		"**,-
3

+,HHYbll388Gooa QWWcii(		",,./
3

+,r-   c                 8   [         R                  " SS/SS//5      n[        [        R                  " U5      [        R                  " USS95        [        [        R                  " USS9[        R                  " U5      R
                  R                  5       5        g )Ny      ?        y               y               @y      @        Fr  T)r'   r   r   r   r  r7  r  )rL   r2   s     r+   test_upper_lower_arg!TestCholesky.test_upper_lower_arg~  sn    HHvv&(89:V__Q'%)HIOOAT*OOA  %%'	
r-   r_   N)rY   rZ   r[   r\   r
  r  rK  r'   r$  r\  r]  r+  r  rD  r  r^   r_   r-   r+   r  r  H  s    [[@ [["**bjj",,F [[%    8- 	
r-   r  c                   |   \ rS rSr\R
                  " S5      r\R
                  " S5      r\R                  " / SQ/ SQ/ SQ/5      r	\
" \R                  R                  \\5      \	5        \" \S5         \R                  R                  \SS2\R                  4   \5        SSS5        Srg! , (       d  f       Srg= f)		TestOuteri  ry   r;  r  )r   rx   rz   z$Input arrays must be one-dimensionalNr_   )rY   rZ   r[   r\   r'   r:  arr1arr2r   rC  r   r   outerr!   r;  newaxisr^   r_   r-   r+   r  r    s    99Q<D99Q<Dxx				H ryytT2H=	:
 			Q

]+T2
 
 
 
s   2.B++
B;r  c                  r   [         R                  S:X  a  Sn OSn [        R                  [        R                  4 H  n[        R
                  " SUS9nUR                  UR                  R                  U 5      5      nUR                  UR                  R                  S5      5      R                  5       n[        UR                  R                  S5        [        R                  [        R                  [        R                  4 H-  nU" U5      n[        Xe" U5      5        [        Xe" U5      5        M/     M     g )Nlittle<rU   rz   r8   r  =)sys	byteorderr'   r$  r\  r  r   r0   newbyteorderbyteswapr   r   rO  r  r  r   )nativedttr-  n_arrsw_arrroutiner_  s          r+   test_byteorder_checkr    s    
}} 

BJJ'ffQc"//78#))0056??ASYY((#.

FJJ<G#,CsGEN3sGFO4 = (r-   r{  r|  c                  :   [         R                  " SS/SS//5      n [         R                  " SS/SS//5      n[         R                  " / SQ5      SS S2   nXS'   XS'   [        [         R                  R
                  [         R                  R                  U5        g )Nrv   rx   ry   rz   )rz   rz   rx   rx   .rq   )r'   r   rZ  r    r   r   rO  )
invertiblenon_invertibler   s      r+    test_generalized_raise_multiloopr    s    
 Aq6Aq6*+JXX1v1v./N
qt!t$AcFdG"))'':r-   z?skipping test that uses fork because there are multiple threadsz:Cannot safely use fork in tests on the free-threaded buildc                     Sn  [         R                  " 5       nWS:X  a  [         R                  " S5        [         R                  " S5        SS KnUR                  UR                  S5         [        R                  R                  R                  5          [        R$                  " S//5      n[        R                  R                  R'                  SSSUSX3SS5	        [         R                   " [         R"                  5        g [         R*                  " 5       u  p[         R,                  " U5      U :w  a  [        R
                  " S5        g g ! [        [        4 a    [        R
                  " S5         GN[f = f! [         a     N[         a(    [         R                   " [         R"                  5         GN f = f! [         a0  nS[)        U5      ;   a  [         R                   " U 5         S nAGNS nAff = f)	N   zNot POSIX or fork failed.r   rv   rq   rg   zDORGQR parameter number 5zNumpy xerbla not linked in.)osforkOSErrorAttributeErrorr
  skipcloseresource	setrlimitRLIMIT_COREr'   r   lapack_litexerblar;  r   _exit	EX_CONFIGr   dorgqrrH   waitWEXITSTATUS)	XERBLA_OKpidr  r2   r   statuss         r+   test_xerbla_overrider    sm    I1ggi
 ax

8//8	#II!!((*
	$2$ AII!!((1aa 	 ggi>>&!Y.KK56 /I ^$ 1/01  	 	#HHR\\"	#  	$*c!f4 #		$sB   E ,(E8 AF8 &E54E58
F5-F54F58
G2%G--G2zCannot start subprocessc                  *   SS/n [         R                  " S5      nU  Hs  nUR                  SSUS9n[        R                  " [
        R                  SU/5        UR                  SSUS9n[        R                  " [
        R                  SU/5        Mu     g )	NzPyQt5.QtWidgetsIPythonz
    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)
    zimport numpy as np )beforeafterbad_libz-c)r  r  r  )textwrapdedentr  
subprocess
check_callr  
executable)bad_libstemplater  codes       r+   test_sdot_bug_8577r    s     "9-H 
  
	H &:"'.  0s~~tT:; %9"'.  0s~~tT:; r-   c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestMultiDoti  c           
         [         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[        [        XU/5      UR	                  U5      R	                  U5      5        [        [        XU/5      [         R                  " U[         R                  " X#5      5      5        g Nr   rx   rx   r   r'   r  r   r   r   )rL   r  r  Cs       r+   (test_basic_function_with_three_arguments5TestMultiDot.test_basic_function_with_three_arguments  s     IIV$IIV$IIV$IqQi0!%%(,,q/BIqQi0"&&BFF1L2IJr-   c                    [         R                  R                  S5      n[         R                  R                  S5      n[        [        X/5      UR	                  U5      5        [        [        X/5      [         R                  " X5      5        g r  r  )rL   r  r  s      r+   &test_basic_function_with_two_arguments3TestMultiDot.test_basic_function_with_two_arguments&  s\    IIV$IIV$Iqf-quuQx8Iqf-rvva|<r-   c                    [         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[        [        XX4/5      UR	                  U5      R	                  U5      R	                  U5      5        g )Nr  r  rx   rv   r  )rL   r  r  r  Ds        r+   9test_basic_function_with_dynamic_programming_optimizationFTestMultiDot.test_basic_function_with_dynamic_programming_optimization.  s     IIV$IIV$IIV$IIV$IqQl3QUU1X\\!_5H5H5KLr-   c                 >   [         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[        [        XX4/5      R                  S5        g )Nrx   r  r  r9  r(  r'   r  r   r   r   )rL   A1dr  r  r  s        r+   test_vector_as_first_argument*TestMultiDot.test_vector_as_first_argument7  sm    iiq!IIV$IIV$IIV$ 	Y~.44d;r-   c                 >   [         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[        [        XX4/5      R                  S5        g )Nr  r  rx   )r   r  )rL   r  r  r  D1ds        r+   test_vector_as_last_argument)TestMultiDot.test_vector_as_last_argumentA  sm    IIV$IIV$IIV$iiq! 	Ya~.44d;r-   c                 >   [         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[        [        XX4/5      R                  S5        g )Nrx   r  r  r_   r  )rL   r  r  r  r  s        r+   &test_vector_as_first_and_last_argument3TestMultiDot.test_vector_as_first_and_last_argumentK  sn    iiq!IIV$IIV$iiq! 	Y/066;r-   c           
         [         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[         R                  " S5      n[        XU/US9nXEL d   e[	        XAR                  U5      R                  U5      5        [	        U[         R
                  " U[         R
                  " X#5      5      5        g )Nr  r  r)   r'   r  rZ  r   r   r   )rL   r  r  r  r)   rets         r+   test_three_arguments_and_out)TestMultiDot.test_three_arguments_and_outU  s     IIV$IIV$IIV$hhvq	s+zzCqa1C266!<!89r-   c                 B   [         R                  R                  S5      n[         R                  R                  S5      n[         R                  " S5      n[        X/US9nX4L d   e[	        X1R                  U5      5        [	        U[         R
                  " X5      5        g )Nr  r  )r   r   r  r  )rL   r  r  r)   r  s        r+   test_two_arguments_and_out'TestMultiDot.test_two_arguments_and_outb  sr    IIV$IIV$hhvC(zzCq*C.r-   c                    [         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[         R                  R                  S5      n[         R                  " S5      n[        XX4/US9nXVL d   e[	        XQR                  U5      R                  U5      R                  U5      5        g )Nr  r  r  )r   rv   r  r  )rL   r  r  r  r  r)   r  s          r+   -test_dynamic_programming_optimization_and_out:TestMultiDot.test_dynamic_programming_optimization_and_outl  s     IIV$IIV$IIV$IIV$hhvq#.zzCqa!4!4Q!78r-   c           	      ,   [         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      /n[         R                  " / SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/5      n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[        S9nUS-  n[	        USS9u  pE[        [         R                  " US S2SS 24   5      [         R                  " US S2SS 24   5      5        [        [         R                  " U5      [         R                  " U5      5        g )N)   #   )r     )r  r   )r   r  )r     )r  r  )r  g     @g     þ@g    O@g    1@g    @)r  r  g     @g     @g     ջ@g     @)r  r  r  g     p@g     @g     @)r  r  r  r  g     @@g     X@)r  r  r  r  r  g     @)r  r  r  r  r  r  )r   rv   rv   ry   ry   ry   )r   r   rx   ry   ry   ry   )r   r   r   ry   ry   ry   )r   r   r   r   rz   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r8   rv   T)return_costsr   )r'   r  r   intr   r   r\  )rL   arrays
m_expected
s_expectedr   r  s         r+   test_dynamic_programming_logic+TestMultiDot.test_dynamic_programming_logicx  sA    ))""8,))""8,))""7+))""7+))""8,))""8,. XXIIIIIIK L
 XX6666668
 @CD
 	a
,V$G 	BGGAcrc12gJ/GGJssABw$78	:BGGAJ
(;<r-   c                     [        [        [        / 5        [        [        [        [        R                  R	                  S5      /5        g )Nr  )r    r;  r   r'   r  rV   s    r+   test_too_few_input_arrays&TestMultiDot.test_too_few_input_arrays  s,    j)R0j)bii.>.>v.F-GHr-   r_   N)rY   rZ   r[   r\   r  r  r  r  r  r  r  r  r  r  r  r^   r_   r-   r+   r  r    s<    K=M<<<:/
9=<Ir-   r  c                   :   \ rS rSr\R
                  R                  S\R                  " S5      S4\R                  " S5      S4/5      S 5       r	\R
                  R                  SS	S
/5      S 5       r
\R
                  R                  SSS/5      S 5       rS rSrg)TestTensorinvi  zarr, indrz   r   rt   rx   rx   ry   ry   rx   rv   c                 ~    [        [        5         [        R                  " XS9  S S S 5        g ! , (       d  f       g = f)Nind)r    r   r   	tensorinv)rL   r-  r  s      r+   test_non_square_handling&TestTensorinv.test_non_square_handling  s&    
 ;'S* (''s   .
<z
shape, ind)rz   r   rt   ry   rx   )   rt   ry   rv   c                     [         R                  " S5      nXl        [        R                  " X2S9nUR                  US  UR                  S U -   nUR                  n[        Xe5        g )Nr  r2   r  )r'   r  r   r   r  r   )rL   r   r  r2   ainvrC  actuals          r+   test_tensorinv_shape"TestTensorinv.test_tensorinv_shape  sU     FF2J!-7734=1774C=0V&r-   r  r   r   c                     [         R                  " S5      nSUl        [        [        5         [
        R                  " X!S9  S S S 5        g ! , (       d  f       g = f)Nr  r  r!  )r'   r  r   r    r;  r   r  )rL   r  r2   s      r+   test_tensorinv_ind_limit&TestTensorinv.test_tensorinv_ind_limit  s:     FF2J:&q* '&&s   A
Ac                    [         R                  " S5      nSUl        [        R                  " USS9n[         R
                  " S5      n[        [         R                  " X#S5      [         R                  R                  X5      5        g )Nr  r  rv   r  )	r'   r  r   r   r  r  r   	tensordottensorsolve)rL   r2   r"  r3   s       r+   test_tensorinv_result#TestTensorinv.test_tensorinv_result  sY    FF2Jq)GGBKTa0"))2G2G2MNr-   r_   N)rY   rZ   r[   r\   r
  r  rK  r'   r  r  r$  r'  r,  r^   r_   r-   r+   r  r    s    [[Z		"		Q*
 +	+ [[\,
 
'
' [[U	2%
 ++Or-   r  c                       \ rS rSr\R
                  R                  S\R                  " S5      S4\R                  " S5      S4/5      S 5       r	\R
                  R                  S/ S	Q5      S
 5       r
Srg)TestTensorsolvei  za, axesr  Nr  r   rx   c                     [        [        5         [        R                  " UR                  S S 5      n[
        R                  " XUS9  S S S 5        g ! , (       d  f       g = fNrx   r  )r    r   r'   r  r   r   r+  )rL   r2   r  r3   s       r+   r  (TestTensorsolve.test_non_square_handling  s@    
 ;'$Aq$/ (''s   9A
A r   ))rx   ry   r   )ry   rz   rz   ry   )r   ry   ry   r   c           	      &   [         R                  R                  " U6 n[         R                  " UR                  S S 5      n[         R
                  R                  X#5      n[        [         R                  " X$[        UR                  5      S9U5        g r2  )
r'   r  r  r  r   r   r+  r   r*  rA  )rL   r   r2   r3   r   s        r+   test_tensorsolve_result'TestTensorsolve.test_tensorsolve_result  s_     IIOOU#GGAGGBQK II!!!'QAGG=qAr-   r_   )rY   rZ   r[   r\   r
  r  rK  r'   r  r  r5  r^   r_   r-   r+   r/  r/    sv    [[Y		%		V$)
 0	0
 [[W/BBr-   r/  c                      [         R                  " SS/SS//SS9n [        [        S5         [        R
                  " U 5        S S S 5        g ! , (       d  f       g = f)Nrv   r   rx   r   float16r8   zunsupported in linalg)r'   r   r!   rt  r   r  )r-  s    r+   test_unsupported_commontyper9    sC    
((QGaV$I
6C	Y(?	@ 
A	@	@s   A
Az,Bad memory reports lead to OOM in ci testingc                      Sn [         R                  " SU /[         R                  S9n[         R                  " SS/[         R                  S9nSUS'   [         R                  " X!5      n[        US   S5        g )N        rv   r8   )r   r   )r'   rZ  r$  r  r   r   )r.  r2   r3   r  s       r+   test_blas64_dotr<    s[    A
!Qrzz*A
Abjj)AAeH
qA51r-   z*Numpy not compiled with 64-bit BLAS/LAPACKc            
         [         R                  n [         R                  R                  R                  nSnSnUn[         R
                  " SS/U S9n[         R
                  " S/U S9n[         R
                  " S/U S9nU" X#XTXvSS5      n[        US   S5        [        US   U5        [        US   U5        [        UR                  5       5      n	[        S	U	s=:  =(       a
    S
:  5        g s  5        g )Nl       rv   r8   r   r   infor  r.  r;  l        )
r'   r\  r   r  dgeqrfrZ  r   r
  itemr   )
r0   lapack_routiner  r.  ldar2   workrh  resultslworks
             r+   !test_blas64_geqrf_lwork_smoketestrF    s     JJEYY**11NAA
C 	!Qu%A88QCu%D
((A3e
$C Q13b!<G!$q!q! 		EEE!!E!"!"r-   c                      [         R                  " S5      R                  S5      n [         R                  R	                  U 5      n[         R
                  " / SQ/ SQ/ SQ/5      n[        X5        g )N<   ry   rz   r   )r   r   r0     )r     rK  &   )rI  .   4   :   )r'   r:  r   r   r  r   r   r   r#  rC  s      r+   test_diagonalrQ  
	  sV     			"i(AYY"Fxx	
H "r-   c                      [         R                  " S5      R                  S5      n [         R                  R	                  U 5      n[         R
                  " / SQ5      n[        X5        g )NrH  rI  )$   t      )r'   r:  r   r   tracer   r   rP  s      r+   
test_tracerW  	  sD     			"i(AYY__QFxx'H"r-   c                     [         R                  " S5      R                  S5      n [         R                  R	                  X S-   5      n[         R
                  " / SQ/ SQ/ SQ/5      n[        X5        / SQn/ SQn[         R                  R	                  X45      n[        / SQ5      n[        X5        [        [        S5         U S S 2SS 24   n[         R                  R	                  XU5        S S S 5        g ! , (       d  f       g = f)	Nr)  r  rv   )r   rx   r   r  r  )r   r   r   z8input arrays must be \(arrays of\) 3-dimensional vectors)	r'   r:  r   r   crossr   r   r!   r;  )r   r#  rC  r  r  x_2dims         r+   
test_crossr[  %	  s    
		!V$AYY__QA&Fxx H " 	AAYY__Q"F\"H"	C
 1ab5
		'
 
 
s   +C55
Dc                      [         R                  " S5      R                  S5      n [         R                  R	                  X 5      S:X  d   e[         R                  R	                  X SS/S9S:X  d   eg )Nr   r  7   rs  r  )r'   r:  r   r   r*  )r   s    r+   test_tensordotr^  @	  s^    
		!V$A99q$***99q66*:;rAAAr-   c                      [         R                  " S5      R                  S5      n [         R                  R	                  X R
                  5      n[         R                  " SS/SS//5      n[        X5        g )Nr   r  r      r  )r'   r:  r   r   r   r7  r   r   rP  s      r+   test_matmulra  H	  sW     			!V$AYYa%Fxx!R2r(+,H"r-   c                  Z   [         R                  " S5      R                  S5      n [         R                  R	                  U 5      nU R
                  n[        X5        [        [        S5         [         R                  R	                  U S S 2S4   5        S S S 5        g ! , (       d  f       g = f)Nr   r  z$array must be at least 2-dimensionalr   )	r'   r:  r   r   matrix_transposer7  r   r!   r;  rP  s      r+   test_matrix_transposerd  R	  sy    
		!V$AYY''*FssH"	:
 			""1QT7+
 
 
s   ,'B
B*c                  H   [         R                  " S5      R                  S5      n [         R                  R	                  U 5      n[        U[         R                  " S5      SS9  [         R                  R	                  U SS9n[        U[         R                  " S//5      SS9  g )Nr)  r  ^)ː,@ry   r5   Tr  )r'   r:  r   r   matrix_normr   r\  r   )r   r#  s     r+   test_matrix_normrj  _	  su    
		!V$AYY""1%F

7 3AFYY""1t"4F7) 5aHr-   c            	      ^   S GH&  n [         R                  [         R                  [         R                  4 H  n[         R                  " X5      n[        [         R                  R                  USS9S5        [        [         R                  R                  USS9S5        [        [         R                  R                  USS9S5        [        [         R                  R                  USS9S5        [        [         R                  R                  U[         R                  S9S5        M     GM)     g )N)r0  )rx   r   rq   r  r  r   r  rv   rx   )	r'   r\  r$  r$  rZ  r   r   ri  r   )r   r0   r   s      r+   test_matrix_norm_emptyrl  j	  s    )jj"**bhh7E&A..qe.<a@..qe.<a@..qa.8!<..qa.8!<..qbff.=qA 8 *r-   c                     [         R                  " S5      R                  S5      n [         R                  R	                  U 5      n[        U[         R                  " S5      SS9  [         R                  R	                  U SS9n[        U[         R                  " / SQ5      SS9  [         R                  R	                  U S	S
9n[         R                  " SSSS9n[        UR                  UR                  5        [        XSS9  g )Nr)  r  rf  ry   rg  r   r  )g|a2@gsh|? @gDioI#@Trh  r   r\  r8   )r'   r:  r   r   vector_normr   r\  r   fullr   r   rP  s      r+   test_vector_normrp  t	  s    
		!V$AYY""1%F

7 3AFYY""11"-F01! YY""1t"4Fwwvwi8Hx~~.;r-   c                     [         R                  [         R                  [         R                  4 H  n [         R                  " SU 5      n[        [         R                  R                  USS9S5        [        [         R                  R                  USS9S5        [        [         R                  R                  U[         R                  S9S5        M     g )Nr   rv   r  rx   )	r'   r\  r$  r$  rZ  r   r   rn  r   )r0   r   s     r+   test_vector_norm_emptyrr  	  s    **bjj"((3HHQRYY**1!*4a8RYY**1!*4a8RYY**1"&&*91=	 4r-   )r   r0  )__doc__r   r  r  r  r  	threadingr   r
  numpyr'   r   r   r   r   r   r   r	   r
   r   r   r   r   r   numpy._corer   numpy.exceptionsr   numpy.linalgr   r   r   r   r   numpy.linalg._linalgr   numpy.testingr   r   r   r   r   r   r   r   r    r!   r"   numpy.linalg.lapack_liteImportErrorr,   r1   r9   r;   r=   ra   rE   re   r  r  r   r   r  r   r   r   r   r   r   r   r  r  r  r!  r#  r,  rM  rS  rc  rl  rv  r~  r  r  r  r  r  r  r  r  r  r  r   r  r	  r  r'  r5  r  rK  r0   rG  r  r  r  r  r  r  r  r  r  r/  r2  r4  r7  r9  r;  r=  rQ  rS  r  r  r  r  r  active_countr  r  r  r  r  r/  r9  r  r<  r  rF  rQ  rW  r[  r^  ra  rd  rj  rl  rp  rr  )r  s   0r+   <module>r~     s    	  
         ! & P P >   	#* . 95
7
, ,, 		t 
 8xr2hR)8b"XV,. xr2hR)8b"XV,. zr2hR)8lL1@B yw'&&)9:'Jgw'w79 yw'&&)9:'Jgw'w79 {w'&&)9:'J02JKSZ[] uxxf-xxF+J  uyy~~a#yy~~a " uyy~~a#yy~~a " zAA1v;   
  F ;~lL1@b"XV,. ~r2hR2r(36B\02 ~lL1@b"XV,. ~r2hR2r(36B\02 /1LMU\^gw'w79 g&'(:Wg<NOW^`0@B /1LMU\^gw'w79 g&'(:Wg<NOW^`0@B  /1LMU\^w(66*:;7KM  g&'(:Wg<NOW^`w(66*:VV<LMU\]_ vyy~~a$yy~~a " uyy~~a#yy~~a " uyy~~a#yy~~a " uyy~~a#yy~~a J  uyy~~a#yy~~a J e6! 6
 6r ;yr2hR)8 yr2hR)8 zr6lVQK0@ zr6lVQK0@ xxxf-J  {AA r2hR)* }yy~~a#/! 
 @B 	 	" "-'` 		 1 1.2> 22n 22 2	Fn 	F	I 	I
+> 
+$+%'F +H3
 H3V/#%D /0h 0.)')H )-, -66#%D 6!+h !+H5 5,#%D ,8h 8,,)+G ,((, +1$&E +1\M*y M*`
0$'/2
0	y 	0*,H 0	* 	/##%D #*'1h '1T3%'> 3<.+
 .+b 5HI5H5HIJS: S: KS:l?)+G ?3- 3-lB%'C B.8+ 8+v
= 
=[Q} [Q|u<- u<p	- 	J J8- 
- 
 
	Y 3 		Y 3 		I1 	&E &ER
(^+ ^+B?
 ?
D3 3"5* G$BC; D; q L  N G  I.7IN.7b G$=><  ?<D~I ~IB&O &ORB B* GH I |#F  H#H#4# #(6B#
,IB<$>iJ  	 			h  Js    d d
dd