
    -i                    B   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  S SK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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'J(r(J)r)J*r*J+r+J,r,J-r-  S SK.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7  S SK8J9r9  S SK:J;r;  S SK<J=r=  S S	KJ>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrIJJrJJKrKJLrLJMrMJNrNJOrOJPrP  S S
KQJRrR  S SKSJTrT  S SKUJVrV  S SKWJXrX   S SKYJZrZ  \R                  S:H  =(       d    \R                  " 5       S;   r]S\^4S jr_\R                  \R                  /ra\R                  \R                  /rc\a\c-   rdS re " S S5      rf " S S5      rg " S S5      rh " S S5      ri " S S5      rj " S S5      rk " S  S!\k5      rl\R                  R                  \]S"S#9\R                  R                  S$5      \R                  R                  S%5      S& 5       5       5       rqS' rr " S( S)5      rs " S* S+5      rt " S, S-5      ru " S. S/5      rv " S0 S15      rw " S2 S35      rxS=ryrz\Zb  \ZS4   S5   S6   ry\ZS4   S5   S7   rz " S8 S95      r{ " S: S;5      r| " S< S=5      r} " S> S?5      r~S@ r\R                  R                  \R                  " 5       SA:H  SBS#9SC 5       rSD rSE r\R                  GR                  SSFSG9SH 5       r " SI SJ5      rSWSK jr\R                  GR                  \R                  R                  \GR                  " \GR                  5      GR                  SL:  SMS#9SN 5       5       rSO r\R                  GR                  SP\\^\R                  \\R                  /5      SQ 5       r " SR SS5      rST r " SU SV5      rg! \[ a    SrZ GNf = f)X    N)assert_equalassert_almost_equalassert_array_almost_equalassert_array_equalassert_assert_allclose)raises)eigeigvalslusvdsvdvalscholeskyqrschurrsf2csflu_solve	lu_factorsolvediagsvd
hessenbergrq
eig_bandedeigvals_bandedeigheigvalshqr_multiplyqzorthordqzsubspace_angleshadamardeigvalsh_tridiagonaleigh_tridiagonal
null_spacecdf2rdfLinAlgError)	dgbtrfdgbtrszgbtrfzgbtrsdsbevdsbevddsbevxzhbevdzhbevx)norm)_select_function)ortho_group)arraydiagfulllinalgargsortzerosarangefloat32	complex64ravelsqrt	iscomplexshapesortsignasarrayisfinitendarrayeye)assert_no_overwrite)matrix)check_free_memory)	HAS_ILP64)CONFIG
emscripten)wasm32wasm64Fc                    U[         ;   ab  [        R                  R                  X 5      [        R                  R                  X 5      S-  -   nX3R	                  5       R
                  -   S-  nO0[        R                  R                  X 5      nX3R
                  -   S-  nU(       a(  U[        SU -  5      [        R                  " U 5      -  -  nUR                  U5      $ )z7Generate random sym/hermitian array of the given size n              ?   )	COMPLEX_DTYPESnprandomrandconjTr>   rF   astype)nposdefdtypeAs       Q/var/www/html/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_decomp.py_random_hermitian_matrixr^   ,   s    IINN1 299>>!#7#<<^QIINN1 WaK	T!A#Yrvvay  88E?    c                    [        U [        5      (       a  U nUR                  U5      S-  S-
  nOK[        U [        5      (       a+  [	        U R
                  5      S:X  a  U R
                  S   nU nO[        S5      e[        R                  " U5      nUR                  R                  5       [        U5      -  U-  nSUR                  U-   -  nU$ )a  Return a random symmetric (Hermitian) matrix.

If 'dim_or_eigv' is an integer N, return a NxN matrix, with eigenvalues
    uniformly distributed on (-1,1).

If 'dim_or_eigv' is  1-D real array 'a', return a matrix whose
                  eigenvalues are 'a'.
rQ      r   zinput type not supported.      ?)
isinstanceintrT   rE   lenr@   	TypeErrorr3   rvsrW   rV   r5   )dim_or_eigvrngdimdvhs         r]   symrandrn   B   s     +s##JJsOA!
['
*
*
k
 A
%"344A	
T!Wq AQSSUAHr_   c                   z    \ rS rSrS rS rS rS r\R                  R                  S\\\\\/5      S 5       rSrg	)
TestEigVals\   c                     / SQ/ SQ/ SQ/n[        U5      nS[        S5      -   S-  SS[        S5      -
  S-  /n[        X#5        g )Nra   rQ      rQ         	   ]   rQ   r   r   r>   r   selfawexact_ws       r]   test_simpleTestEigVals.test_simple^   sC    	9-AJd2hJ>1qbz1n5!!-r_   c                     [        / SQ/ SQ/ SQ/S5      R                  nUR                  5       nUR                  n[        U5      nS[	        S5      -   S-  SS[	        S5      -
  S-  /n[        X#5        g )Nrs   ru   rk   rx   ry   rQ   r   )r4   rW   copyr   r>   r   r{   s       r]   test_simple_trTestEigVals.test_simple_trd   sd    9i3S9;;FFHCCAJd2hJ>1qbz1n5!!-r_   c                     / SQ/ SQ/ SQ/n[        U5      nS[        S5      -   S-  SS[        S5      -
  S-  /n[        X#5        g )Nrs   rQ   rv   y      @      ?y      "@      ?y      W@      @rQ   r   rz   r{   s       r]   test_simple_complexTestEigVals.test_simple_complexl   sM    	<0AJe$a'e$a') 	"!-r_   c                     / SQ/ SQ/ SQ/n[        USS9nS[        S5      -   S-  SS[        S5      -
  S-  /n[        X#5        g )	Nrs   ru   Fcheck_finiterx   ry   rQ   r   rz   r{   s       r]   test_finiteTestEigVals.test_finitet   sF    	9-AE*d2hJ>1qbz1n5!!-r_   dtc                    [         R                  " SUS9n[        U5      nUR                  S:X  d   eUR                  [        [         R
                  " SUS95      R                  :X  d   e[        USS9nUR                  S:X  d   eUR                  [        [         R
                  " SUS95      R                  :X  d   eg )Nr   r   r[   r   rQ   Thomogeneous_eigvalsrQ   r   )rS   emptyr   r@   r[   rF   )r|   r   r}   r~   s       r]   
test_emptyTestEigVals.test_emptyz   s    HHV2&AJww$ww'"&&""56<<<<<A40ww&   ww'"&&""56<<<<<r_    N)__name__
__module____qualname____firstlineno__r   r   r   r   pytestmarkparametrizerd   floatr;   complexr<   r   __static_attributes__r   r_   r]   rp   rp   \   sG    .... [[TC)#LM= N=r_   rp   c            	       X   \ rS rSrS rS rS rS r  SS jrS r	S r
S	 rS
 rS rS rS rS r\R$                  R'                  S\\\R.                  \\R2                  /5      S 5       r\R$                  R'                  SSS/5      \R$                  R'                  SSS/5      \R$                  R'                  SSS/5      \R$                  R'                  SSS/5      \R$                  R'                  S\R.                  \R6                  /5      S 5       5       5       5       5       rSrg)TestEig   c                 R   [        / SQ/ SQ/ SQ/5      n[        U5      u  p#S[        S5      -   S-  SS[        S5      -
  S-  /n[        SSS[        S5      S-  -   S-  /5      n[        / S	Q5      n[        SSS[        S5      S-  -
  S-  /5      nU[        U5      -  nU[        U5      -  nU[        U5      -  n[	        X$5        [	        XSS S 2S4   [        US
   5      -  5        [	        XcS S 2S4   [        US   5      -  5        [	        XsS S 2S4   [        US   5      -  5        [        S5       H$  n[	        XS S 2U4   -  X(   US S 2U4   -  5        M&     [        USSS9u  p#[        S5       H/  n[	        UR                  US S 2U4   -  X(   US S 2U4   -  5        M1     g )Nrs   ru   rx   ry   rQ   r   ra   rt         @r   r   r   ra   r   rQ   leftright)r4   r
   r>   r1   r   rB   rangerW   	r|   r}   r~   rl   r   v0v1v2is	            r]   r   TestEig.test_simple   s   9i341vd2hJ>1qbz1n5Aq1T"XaZ<*+,;Aq1T"XaZ<*+,$r(]$r(]$r(]!!-!"1gd1T7m&;<!"1gd1T7m&;<!"1gd1T7m&;<qA%aAqD'k14!Q$<@ 11A&qA%accAadGmQT!AqD'\B r_   c                    [        SS/SS//5      n[        USSS9u  p#n[        U[        SS/5      5        [        S5       H$  n[        XS S 2U4   -  X%   US S 2U4   -  5        M&     [        S5       HK  n[        UR	                  5       R
                  US S 2U4   -  X%   R	                  5       US S 2U4   -  5        MM     g )Nra   rQ   r         ?       @y      ?       )r4   r
   r   r   rV   rW   r|   r}   r~   vlvrr   s         r]   test_simple_complex_eigTestEig.test_simple_complex_eig   s    Aq6B7#$+	r!!UD$<%89qA%aQT(lADAqDMB qA%affhjj2ad8&;&'diik"QT(&:< r_   c                 b   [        / SQ/ SQ/ SQ/5      n[        USSS9u  p#n[        S5       H$  n[        XS S 2U4   -  X%   US S 2U4   -  5        M&     [        S5       HK  n[        UR	                  5       R
                  US S 2U4   -  X%   R	                  5       US S 2U4   -  5        MM     g )Nrs   r   ra   r   rt   )r4   r
   r   r   rV   rW   r   s         r]   r   TestEig.test_simple_complex   s    9i67+	rqA%aQT(lADAqDMB qA%affhjj2ad8&;&'diik"QT(&:< r_   c                     S//nS//n[        XSS9u  p4[        US   S5        [        US   S:g  5        [        US5        [        X5      u  p4[        U[        R
                  5        [        US5        g )Nra   r   Tr   ra   r   r   )r
   r   r   r   rS   inf)r|   r}   br~   r   s        r]   test_gh_3054TestEig.test_gh_3054   sm    SESEAd3$#$1AA	QAr_   c           	      6   Ub  [        U5      [        U5      p!UnO*[        U5      nUn[        R                  " UR                  6 nSU< SU< 3n[	        XSS9u  p[        XSS9nX-  U	SS S 24   -  nX*-  U	SS S 24   -  n[        UR                  S   5       H  n[        US S 2U4   US S 2U4   XCUS9  M     Uc&  [        U	SS S 24   S5        [        USS S 24   S5        [        R                  " U	5      n[        R                  " U5      n[        U	S S 2U4   US S 2U4   SSUS9  [        R                  " [        U
5      5      n[        [        U
5      5       H  n[        U
S S 2U4   5      UU'   M     [        U[        R                  " UR                  5      USSS	9  U	SS S 24   S:g  nU	SU4   U	SU4   -  n[	        X5      u  p[        X5      nX-  nX*-  U	-  nX-
  n[        UR                  S   5       HC  n[        R                  " [        US S 2U4   5      5      (       d  M0  [        US S 2U4   SXeUS9  ME     U	[        U	5         nU[        U5         nS
[        R                   " SU-  SS9-  nS
[        R                   " SU-  SS9-  n[#        [%        U5      UR&                  -   5      n[#        [%        U5      UR&                  -   5      n[        UU   UU   SSUS9  [        R                  " [        U
5      5      n[        [        U
5      5       H  n[        U
S S 2U4   5      UU'   M     [        U[        R                  " UR                  5      US9  [        [)        U5      [)        U	[        R                  " U	5         5      5        g )N
Tr   ra   r   rtolatolerr_msggHz>)r   r   r   )r   r   r   y             rP   g|=)tolr   )rC   rS   rF   r@   r
   r   r   r   lexsortr   re   r1   onessizeallrD   real_if_closer8   absimagrA   )r|   r\   B
atol_homog
rtol_homogr   r   B0msgr~   r   wtval1val2r   permpermtlengthbeta_nonzerowhresw_finwt_fins                          r]   _check_gen_eigTestEig._check_gen_eig   sN   =1:wqzqB
AB A1%r! At4Q5v!Q$v!Q$tzz!}%ADAJQT
!+cK & :AadGQ'Bq!tHa(zz!}

2!T'
Bq%xLt$ #	% #b'"s2wAR1XF1I   	 4c!	. !Q$1q,!A|O"44 A
Q^vvzksyy|$Avvhs1a4y)**AqD	1%)cC % (1+HRL! b&&r%xU;;r''6	u==s5zEJJ./Ffkk12dVE]!c	; #b'"s2wAR1XF1I   4cB 	R$qQ'8"9:r_   c                     [        / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/ SQ/ S	Q/ S
Q/5      n[        R                  " SS9   U R                  XSSS9  S S S 5        g ! , (       d  f       g = f)N)   "      r      )-   r   *         )'   /   1      r   )   r   r         )&   ,   r         )   r      r   r   )r   .   (   r   %   )r   r   r   r   r   )   r   r         )r   #      r   r   ignorer   g-a=)r   r   )r4   rS   errstater   r|   r\   r   s      r]   test_singularTestEig.test_singular  sq     '''''	) *
 '''''	) * [[X&UC '&&s   	A$$
A2c                    [        [        / SQ5      5      n[        / SQ/ SQ/ SQ45      n[        / SQ/ SQ/ SQ45      n[        S5      n[        S	5      n[        R
                  " XT/XB* //5      n[        R
                  " XE/X//5      n[        R                  " S
S9   U R                  Xg5        S S S 5        g ! , (       d  f       g = f)N)ra   r   rt   )rQ   r   r   )r   rQ   r   )r   r   rQ   )ra   r   r   )r   ra   r   r   r   r   rt   rt   rt   r  r  )r5   r4   r9   rF   rS   blockr	  r   )r|   MKDZI3r\   r   s           r]   test_falkerTestEig.test_falker  s    y!";[9::z956&MVHHrg2w'(HHqgv&'[[X&% '&&s   B99
Cc                     S n[         R                  " SS9   [        S5       H"  nU" US-  S-  S9u  p4U R                  X45        M$     S S S 5        g ! , (       d  f       g = f)Nc                 l    SU S-  -   nSU -  n/ SQ/ SQSSUS/SSSU//n/ SQ/ SQSSSU* /SSUS//nX44$ )	NrQ   )ra   r   r   r   )r   ra   r   r   r   )r   r   ra   r   )r   r   r   ra   ra   r   )omegac1c2r\   r   s        r]   matrices)TestEig.test_bad_geneig.<locals>.matrices&  sk    eQhB5BQAQ2 A QB3QA A 4Kr_   r  r  d         @)r  )rS   r	  r   r   )r|   r  kr\   r   s        r]   test_bad_geneigTestEig.test_bad_geneig#  sQ    	 [[X&3Zad3h/##A)   '&&s   2A
A!c                    [         R                  R                  S5      n[        SU5      nU R	                  US 5        [        SU5      nU R	                  X#5        UR                  S5      SUR                  S5      -  -   nU R	                  US 5        UR                  S5      SUR                  S5      -  -   nU R	                  X#5        g )N  rt   r  rP   )rS   rT   RandomStatern   r   )r|   ri   r\   r   s       r]   test_make_eigvalsTestEig.test_make_eigvals:  s     ii##D)AsOAt$AsOA!JJvCJJv$6!66At$JJvCJJv$6!66A!r_   c                    / SQ/ SQ/ SQ/n[        USS9u  p#S[        S5      -   S-  SS[        S5      -
  S-  /n[        S	S	S	[        S5      S
-  -   S-  /5      n[        / SQ5      n[        S	S	S	[        S5      S
-  -
  S-  /5      nU[        U5      -  nU[        U5      -  nU[        U5      -  n[	        X$5        [	        XSS S 2S4   [        US   5      -  5        [	        XcS S 2S	4   [        US   5      -  5        [	        XsS S 2S4   [        US   5      -  5        [        S
5       H$  n[	        XS S 2U4   -  X(   US S 2U4   -  5        M&     g )Nrs   ru   Fr   rx   ry   rQ   r   ra   rt   r   r   r   r   )r
   r>   r4   r1   r   rB   r   r   s	            r]   test_check_finiteTestEig.test_check_finiteH  sD   	9-15)d2hJ>1qbz1n5Aq1T"XaZ<*+,;Aq1T"XaZ<*+,$r(]$r(]$r(]!!-!"1gd1T7m&;<!"1gd1T7m&;<!"1gd1T7m&;<qA%aAqD'k14!Q$<@ r_   c                 z    [         R                  " S5      R                  SS5      n[        [        [
        U5        g)z:Check that passing a non-square array raises a ValueError.rw   rt   rQ   N)rS   r:   reshapeassert_raises
ValueErrorr
   )r|   r\   s     r]   test_not_square_errorTestEig.test_not_square_errorY  s(    IIaL  A&j#q)r_   c                     [        S5      n[        R                  " S5      R                  SS5      n[	        [
        [        X5        [	        [
        [        X!5        g)zGCheck that passing arrays of with different shapes
raises a ValueError.rQ         "@rt   N)rF   rS   r:   r.  r/  r0  r
   r
  s      r]   test_shape_mismatchTestEig.test_shape_mismatch^  s?     FIIcN""1a(j#q,j#q,r_   c                    [         R                  " / SQ/ SQ/ SQ/ SQ/SS9n[         R                  " / SQ/ SQ/ S	Q/ S
Q/SS9n[        X5      u  p4[         R                  R	                  5        nUR                  [        S5        [         R                  " USSS9R                  5       (       d   e[         R                  " USSS9R                  5       (       d   e S S S 5        g ! , (       d  f       g = f)N)g      (@      <@g      S@g     k@)g      0@g      @@g      T@g      l@)g      8@      D@g      V@g      m@)r9  g      L@g      Z@g      o@float64r   )       @      @      $@r8  )r   r!        &@g      =@)r!        @g      *@g      ?@)r4  r>  g      1@g     A@z%invalid value encountered in multiplyr<  +=r          @)	rS   r4   r
   testingsuppress_warningsfilterRuntimeWarningiscloseany)r|   r\   r   r  Vsups         r]   test_gh_11577TestEig.test_gh_11577f  s     HH///02 :CD HH,,,-/ 7@A
 1y ZZ))+sJJ~'NO::a51557777::a51557777	 ,++s   .A-C%%
C3r   c                 P   [         R                  " SUS9n[        U5      u  p4[        [         R                  " SUS95      u  pVUR                  S:X  d   eUR
                  UR
                  :X  d   e[        U[         R                  " S5      5        UR                  S:X  d   eUR
                  UR
                  :X  d   e[        USS9u  p4UR                  S:X  d   eUR
                  UR
                  :X  d   eUR                  S:X  d   eUR
                  UR
                  :X  d   eg )Nr   r   rQ   r   Tr   r   )rS   r   r
   rF   r@   r[   r   )r|   r   r}   r~   r   w_nvr_ns          r]   r   TestEig.test_empty  s    HHV2&Aq+,	ww$ww#))###BHHV,-xx6!!!xx4::%%%A40ww&   ww#))###xx6!!!xx4::%%%r_   	include_BFTr   r   r   r[   c                    SnSn[         R                  R                  S5      nUR                  Xg-   5      R                  U5      n	UR                  Xg-   5      R                  U5      n
[	        X4S9nU(       a  [        U	4XS.UD6nO[        U	4SU0UD6n[        US   5       H  n[        US   5       H  nU(       a  [        XU4   4XU4   US.UD6nO[        XU4   4SU0UD6nU(       d  U(       a3  [        [        U5      5       H  n[        UU   X4   UU   5        M     Mu  [        XU4   U5        M     M     g )	Nrt   rQ   )   rT  l   F)Q)r   r   )r   r   r   r   ra   )	rS   rT   default_rngrX   dictr
   r   re   r   )r|   rQ  r   r   r   r[   batch_shape
core_shaperi   r\   r   kwargsr   r   jrefr"  s                    r]   test_nd_inputTestEig.test_nd_input  s5    
ii##M2JJ{/077>JJ{/077>EKa21262Ca-d-f-C{1~&A;q>*a1gFa4tFvFCa1g;D;F;C5"3s8_'Aqtc!f= - $C1Is3 + 'r_   r   N)vIh%<=r^  r^  r^  )r   r   r   r   r   r   r   r   r   r  r  r#  r(  r+  r1  r5  rK  r   r   r   rd   r   rS   r;   r   r<   r   
complex128r\  r   r   r_   r]   r   r      s4   C(<<
 AF49H;TD"&*."A"*
-88 [[TC

GR\\#RS& T&( [[[5$-8[[VeT]3[[Wudm4[[2UDMB[[Wrzz2==&AB4 C C 5 4 9
4r_   r   c                       \ 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S r\R$                  R'                  S\\\R.                  \\R2                  /5      S 5       rSrg)TestEigBandedi  c                 $    U R                  5         g N)create_bandmatr|   s    r]   setup_methodTestEigBanded.setup_method  s    r_   c                 
   SnSU l         SU l        [        [        US5      5      [        [        US-
  S5      S5      -   [        [        US-
  S5      S5      -   [        [        US-
  S5      S5      -   [        [        US-
  S5      S5      -   U l        [        [        US5      5      S	[        [        US-
  S5      S5      -  -   S	[        [        US-
  S5      S5      -  -
  [        [        US-
  S5      S5      -   [        [        US-
  S5      S5      -   U l        [        [        US5      5      [        [        US-
  S5      S5      -   [        [        US-
  S
5      S5      -   [        [        US-
  S5      S5      -   [        [        US-
  S5      S5      -   U l        S	[        [        US5      5      -  [        [        US-
  S5      S5      -   S	[        [        US-
  S
5      S5      -  -   [        [        US-
  S5      S5      -   [        [        US-
  S5      S5      -   U l        [        R                  " U R                  5      u  p#UR                  n[        U5      nX$   U l        USS2U4   U l        [        R                  " U R
                  5      u  p#UR                  n[        U5      nX$   U l        USS2U4   U l        U R                  S-   n[!        XQ4["        S9U l        [!        XQ4[&        S9U l        [+        U5       HY  n[        U R                  U5      U R$                  XV-
  S-
  Xa24'   [        U R
                  U5      U R(                  XV-
  S-
  Xa24'   M[     SU R                   -  U R                  -   S-   n[!        XQ4["        S9U l        [        U R                  5      U R,                  SU R                   -  SS24'   [+        U R                   5       H  n[        U R                  US-   5      U R,                  SU R                   -  S-
  U-
  US-   U24'   [        U R                  U* S-
  5      U R,                  SU R                   -  S-   U-   SUS-
  U-
  24'   M     [!        XQ4[&        S9U l        [        U R                  5      U R.                  SU R                   -  SS24'   [+        U R                   5       H  n[        U R                  US-   5      U R.                  SU R                   -  S-
  U-
  US-   U24'   [        U R                  U* S-
  5      U R.                  SU R                   -  S-   U-   SUS-
  U-
  24'   M     S[1        U5      -  U l        U R2                  S-  U l        g)zWCreate the full matrix `self.fullmat` and
the corresponding band matrix `self.bandmat`.
   rQ         ?ra         r          r   rP         r;  Nr   r         ?      ?)KLKUr5   r6   sym_matherm_matreal_matcomp_matr7   r
   realr8   	w_sym_linevec_sym_lin
w_herm_linevec_herm_linr9   r   bandmat_symr   bandmat_hermr   bandmat_realbandmat_compr:   r   bc)r|   NewevargsLDABr   s          r]   rd  TestEigBanded.create_bandmat  s     T!S\*tAaC346:4!T?A6NOtAaC346:4!T?A6NO
 d1dm,d4!S>2667d4!S>1556  QqS$45  QqS$3	4 d1cl+QqS$457;D1dOQ7OPQqS#346:4!T?A6NO
 Da..QqS$45d4!T?A667  QqS#34  QqS$3	4 DLL)WWr{q$wKDMM*WWr{(4[
 ww{ $%8!4)7;tA.24<<.CDTVAXqs]+/3DMM1/EDdfQhm,  y477"Q&!4)59*.t}}*=!DGG)Q,'twwA6:4==!A#6NDaik!mQqSU238<T]]>?RT9CDaik!mQqs1uW45	   "4)7;*.t}}*=!DGG)Q,'twwA6:4==!A#6NDaik!mQqSU238<T]]>?RT9CDaik!mQqs1uW45	   VAY&&F#r_   c                     [        U R                  SS9u  pnUSS2[        U5      4   n[        [	        U5      U R
                  5        [        [        U5      [        U R                  5      5        g)zICompare dsbev eigenvalues and eigenvectors with
the result of linalg.eig.ra   	compute_vN)r,   rz  r8   r   rA   rv  r   rw  r|   r~   evecinfoevec_s        r]   
test_dsbevTestEigBanded.test_dsbev  sW     d..!<Q
]#!$q'4>>:!#e*c$2C2C.DEr_   c                     [        U R                  SS9u  pnUSS2[        U5      4   n[        [	        U5      U R
                  5        [        [        U5      [        U R                  5      5        g)zJCompare dsbevd eigenvalues and eigenvectors with
the result of linalg.eig.ra   r  N)r-   rz  r8   r   rA   rv  r   rw  r  s        r]   test_dsbevdTestEigBanded.test_dsbevd  sW     t//1=Q
]#!$q'4>>:!#e*c$2C2C.DEr_   c           
          [        U R                  5      u    n[        U R                  SSSUSSS9u  p#pEnUSS2[	        U5      4   n[        [        U5      U R                  5        [        [        U5      [        U R                  5      5        g)zJCompare dsbevx eigenvalues and eigenvectors
with the result of linalg.eig.        ra   rQ   r  r   N)
r@   rq  r.   rz  r8   r   rA   rv  r   rw  r|   r  r~   r  numifailr  r  s           r]   test_dsbevxTestEigBanded.test_dsbevx  sz     T\\"1$*4+;+;S#q!56a%A!TQ
]#!$q'4>>:!#e*c$2C2C.DEr_   c                     [        U R                  SS9u  pnUSS2[        U5      4   n[        [	        U5      U R
                  5        [        [        U5      [        U R                  5      5        g)zJCompare zhbevd eigenvalues and eigenvectors
with the result of linalg.eig.ra   r  N)r/   r{  r8   r   rA   rx  r   ry  r  s        r]   test_zhbevdTestEigBanded.test_zhbevd'  sW     t00A>Q
]#!$q'4??;!#e*c$2D2D.EFr_   c           
          [        U R                  5      u    n[        U R                  SSSUSSS9u  p#pEnUSS2[	        U5      4   n[        [        U5      U R                  5        [        [        U5      [        U R                  5      5        g)zJCompare zhbevx eigenvalues and eigenvectors
with the result of linalg.eig.r  ra   rQ   r  N)
r@   rr  r0   r{  r8   r   rA   rx  r   ry  r  s           r]   test_zhbevxTestEigBanded.test_zhbevx/  sz     T]]#1$*4+<+<c3156a%A!TQ
]#!$q'4??;!#e*c$2D2D.EFr_   c                    [        U R                  5      nUR                  n[        [	        U5      U R
                  5        [        U R                  5      nUR                  n[        [	        U5      U R                  5        Sn[        R                  " S5      n[        U R                  SX44S9n[        [	        U5      U R
                  X4S-    5        [        U R                  SX44S9n[        [	        U5      U R                  X4S-    5        U R
                  U   S-
  nU R
                  U   S-   n[        U R                  SXx4S9n	[        [	        U	5      U R
                  X4S-    5        U R                  U   S-
  nU R                  U   S-   n[        U R                  SXx4S9n
[        [	        U
5      U R                  X4S-    5        [        U R                  SS	9nUR                  n[        [	        U5      U R
                  5        g
)z?Compare eigenvalues of eigvals_banded with those of linalg.eig.rQ   rw   r   selectselect_rangera   h㈵>rl   Fr   N)
r   rz  ru  r   rA   rv  r{  rx  rS   longlong)r|   w_symw_hermind1ind2	w_sym_ind
w_herm_indv_lowerv_upper	w_sym_val
w_herm_vals              r]   test_eigvals_banded!TestEigBanded.test_eigvals_banded:  s   t//0

!$u+t~~> 1 12!$v,@ {{1~"4#3#3*-TLJ	!$y/"&..1f"=	?#D$5$5+.d\K
!$z"2"&//$Av">	@ ..&/..&/"4#3#3*-W<NP	!$y/"&..1f"=	? //$'&0//$'&0#D$5$5+.291CE
 	"$z"2"&//$Av">	@ t//eD

!$u+t~~>r_   c           
         [        U R                  5      u  pUSS2[        UR                  5      4   n[	        [        U5      U R                  5        [	        [        U5      [        U R                  5      5        [        U R                  5      u  pEUSS2[        UR                  5      4   n[	        [        U5      U R                  5        [	        [        U5      [        U R                  5      5        SnSn[        U R                  SXx4S9u  p[	        [        U	5      U R                  XxS-    5        [	        [        U
5      [        U R                  SS2XxS-   24   5      5        [        U R                  SXx4S9u  p[	        [        U5      U R                  XxS-    5        [	        [        U5      [        U R                  SS2XxS-   24   5      5        U R                  U   S-
  nU R                  U   S-   n[        U R                  SX4S9u  nn[	        [        U5      U R                  XxS-    5        [	        [        U5      [        U R                  SS2XxS-   24   5      5        U R                  U   S-
  nU R                  U   S-   n[        U R                  SX4S9u  nn[	        [        U5      U R                  XxS-    5        [	        [        U5      [        U R                  SS2XxS-   24   5      5        [        U R                  S	S
9u  pUSS2[        UR                  5      4   n[	        [        U5      U R                  5        [	        [        U5      [        U R                  5      5        g)zMCompare eigenvalues and eigenvectors of eig_banded
with those of linalg.eig. NrQ   rw   r   r  ra   r  rl   Fr   )r   rz  r8   ru  r   rA   rv  r   rw  r{  rx  ry  )r|   r  evec_sym	evec_sym_r  	evec_herm
evec_herm_r  r  r  evec_sym_indr  evec_herm_indr  r  r  evec_sym_valr  evec_herm_vals                      r]   test_eig_bandedTestEigBanded.test_eig_bandedd  s    %T%5%56Q

 334	!$u+t~~>!#i.#d6G6G2HI&t'8'89q'&++"667
!$v,@!#j/3t7I7I3JK ",T-=-=47;?,#H	 	"$y/"&..1f"=	?!#l"3"%d&7&74Q;&G"H	J %/t/@/@69=AL%J!
 	"$z"2"&//$Av">	@!#m"4"%d&8&8DaK&H"I	K ..&/..&/",T-=-=47;B:L#N	< 	"$y/"&..1f"=	?!#l"3"%d&7&74Q;&G"H	J //$'&0//$'&0$.t/@/@69=D<N%P!
M 	"$z"2"&//$Av">	@!#m"4"%d&8&8DaK&H"I	K %T%5%5EJQ

 334	!$u+t~~>!#i.#d6G6G2HIr_   c                    [        U R                  5      u  p[        U R                  U R                  U R
                  5      u  p4n[        USU R                  -  SS24   5      n[        U R                  U R
                  -   5       H2  nU[        USU R                  -  S-
  U-
  US-   U24   US-   5      -  nM4     [        U R                  SS9u  pn
[        Xj5        g)zOCompare dgbtrf  LU factorisation with the LU factorisation result
of linalg.lu.rQ   Nra   r   	permute_l)
r@   rs  r(   r|  ro  rp  r5   r   r   r   r|   r  r  lu_symm_bandipivr  ur   p_linl_linu_lins              r]   test_dgbtrfTestEigBanded.test_dgbtrf       T]]##)$*;*;TWWdgg#N D ail+,tww()Al1TWW9Q;q=!A#a%#78!A#>>A * !!<e!!+r_   c                    [        U R                  5      u  p[        U R                  U R                  U R
                  5      u  p4n[        USU R                  -  SS24   5      n[        U R                  U R
                  -   5       H2  nU[        USU R                  -  S-
  U-
  US-   U24   US-   5      -  nM4     [        U R                  SS9u  pn
[        Xj5        g)zOCompare zgbtrf  LU factorisation with the LU factorisation result
of linalg.lu.rQ   Nra   r   r  )
r@   rt  r*   r}  ro  rp  r5   r   r   r   r  s              r]   test_zgbtrfTestEigBanded.test_zgbtrf  r  r_   c                 (   [        U R                  U R                  U R                  5      u  pn[	        XR                  U R                  U R
                  U5      u  pC[        R                  " U R                  U R
                  5      n[        XE5        g)z]Compare dgbtrs  solutions for linear equation system  A*x = b
with solutions of linalg.solve.N)
r(   r|  ro  rp  r)   r   r7   r   rs  r   r|   r  r  r  yy_lins         r]   test_dgbtrsTestEigBanded.test_dgbtrs  sc     $*$*;*;TWWdgg#N DwwFT]]DFF3!!+r_   c                 (   [        U R                  U R                  U R                  5      u  pn[	        XR                  U R                  U R
                  U5      u  pC[        R                  " U R                  U R
                  5      n[        XE5        g)z]Compare zgbtrs  solutions for linear equation system  A*x = b
with solutions of linalg.solve.N)
r*   r}  ro  rp  r+   r~  r7   r   rt  r   r  s         r]   test_zgbtrsTestEigBanded.test_zgbtrs  sc     $*$*;*;TWWdgg#N Dww$GT]]DGG4!!+r_   r   c                    [         R                  " SUS9n[        U5      u  p4[        [         R                  " SS/SS//US95      u  pVUR                  S:X  d   eUR
                  UR
                  :X  d   eUR                  S:X  d   eUR
                  UR
                  :X  d   e[        USS9nUR                  S:X  d   eUR
                  UR
                  :X  d   eg )Nr   r   r   ra   r   Teigvals_only)rS   r   r   r4   r@   r[   )r|   r   a_bandr~   rl   rN  v_ns          r]   r   TestEigBanded.test_empty  s    &+&!bhhAA'7rBCww$ww#))###ww&   ww#))###vD1ww$ww#))###r_   )ro  rp  r   r}  r{  r|  rz  r~  rt  ry  rw  rr  rs  rq  rx  rv  N)r   r   r   r   rf  rd  r  r  r  r  r  r  r  r  r  r  r  r   r   r   rd   r   rS   r;   r   r<   r   r   r   r_   r]   ra  ra    s    M$bFF	FG	G(?T8Jt,,,, [[TC

GR\\#RS$ T$r_   ra  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestEigTridiagonali  c                 $    U R                  5         g rc  )create_trimatre  s    r]   rf  TestEigTridiagonal.setup_method  s    r_   c                    Sn[        US5      U l        [        US-
  S5      U l        [        U R                  5      [        U R                  S5      -   [        U R                  S5      -   U l        [
        R                  " U R                  5      u  p#UR                  n[        U5      nX$   U l	        USS2U4   U l
        g)z>Create the full matrix `self.fullmat`, `self.d`, and `self.e`.ri  rj  ra   rk  r   N)r6   rk   er5   full_matr7   r
   ru  r8   r~   r  )r|   r  r  r  r  s        r]   r   TestEigTridiagonal.create_trimat  s     aac4dffTVVR(884?JDMM*WWr{q$wK	r_   c           	         [        [        [        U R                  U R                  SS 5        [        [
        [        U R                  U R                  S-  5        [        [
        [        U R                  U R                  SS9  [        [        [        U R                  U R                  SS9  [        [        [        U R                  U R                  SSS	9  g)
zTest error conditions.Nr   rP   rj  lapack_driverfoor   r   r   r  )r/  r0  r#   rk   r  rf   re  s    r]   test_degenerate"TestEigTridiagonal.test_degenerate  s     	j"6sLi!5tvvtvv{Ki!5tvvtvv$&	(j"6$)	+ 	j"6 w	8r_   c                 (   S HA  n[        U R                  U R                  US9n[        [	        U5      U R
                  5        MC     S H.  n[        [        [         U R                  U R                  USSS9  M0     S GH  n[        U R                  U R                  SS[        U R                  5      S	-
  4US
9n[        [	        U5      U R
                  5        SnSn[        U R                  U R                  SXE4US
9n[        [	        U5      U R
                  XES	-    5        U R
                  U   S-
  nU R
                  U   S-   n[        U R                  U R                  SXg4US
9n[        [	        U5      U R
                  XES	-    5        GM     g)z>Compare eigenvalues of eigvalsh_tridiagonal with those of eig.)sterfstevstevdstebzstemrautor  )r  r  r  r   r   r  r  r  r  r  r  r   ra   r  r  r  rQ   rw   r  rl   N)	r#   rk   r  r   rA   r~   r/  r0  re   )	r|   driverr~   w_indr  r  r  r  w_vals	            r]   test_eigvalsh_tridiagonal,TestEigTridiagonal.test_eigvalsh_tridiagonal  sa    KF$TVVTVV6JA%d1gtvv6 K 1F*&:DFFDFF(.s'-/ 1 1F(s!S[]9K$&E &d5k466: DD(s$$&E &d5k466$Av3FG ffTlV+GffTlV+G(s'9K$&E &d5k466$Av3FG+ 1r_   c                    [        [        [        U R                  U R                  SS9  S H}  n[        U R                  U R                  US9u  p#USS2[        U5      4   n[        [        U5      U R                  5        [        [        U5      [        U R                  5      5        M     [        [        [        U R                  U R                  SSSS9  S	 GH  nS
n[        U R                  5      S-
  n[        U R                  U R                  SXV4US9u  p#[        [        U5      U R                  5        [        [        U5      [        U R                  5      5        SnSn[        U R                  U R                  SXV4US9u  p#[        [        U5      U R                  XVS-    5        [        [        U5      [        U R                  SS2XVS-   24   5      5        U R                  U   S-
  nU R                  U   S-   n[        U R                  U R                  SXx4US9u  p#[        [        U5      U R                  XVS-    5        [        [        U5      [        U R                  SS2XVS-   24   5      5        GM     g)zLCompare eigenvalues and eigenvectors of eigh_tridiagonal
with those of eig. r  r  )r  r  r  r  r  Nr  r   r   r  r  r   ra   r  rQ   rw   r  rl   )r/  r0  r$   rk   r  r8   r   rA   r~   r   r  re   )	r|   r  r~   r  r  r  r  r  r  s	            r]   test_eigh_tridiagonal(TestEigTridiagonal.test_eigh_tridiagonal#  s    	j"2DFFDFF$+	-AF&tvvtvvVLGAGAJ'E%d1gtvv6%c%j#dii.A	 B 	j"2DFFDFF$*3V	M0FDtvv;q=D&s$$&GA &d1gtvv6%c$iTYY@DD&s$$&GA &d1gtvvd6/BC%c$i&)$))AtF{N*C&DF ffTlV+GffTlV+G&s'9K$&GA &d1gtvvd6/BC%c$i&)$))AtF{N*C&DF3 1r_   c                    [         R                  " S/5      n[         R                  " / 5      n[        XSS9nUR                  S:X  d   e[	        X15        [        XSSS9u  p4UR                  S:X  d   eUR                  S:X  d   e[	        X15        [	        U[        S	//5      5        [        XS
SS9u  p4UR
                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eg)zSee gh-20075rl  Tr  ra   r   r   r  rQ   rj  rl   )r   r   r   r   r   N)rS   r4   r$   ndimr   r   r@   )r|   r}   r   xrI  s        r]   test_eigh_tridiagonal_1x1,TestEigTridiagonal.test_eigh_tridiagonal_1x1M  s    HHdVHHRLQ5vv{{SvFvv{{vv{{52$=)SwGvv{{ww$ww&   r_   )rk   r  r  r  r~   N)r   r   r   r   rf  r  r  r  r  r   r   r   r_   r]   r  r    s$     8 HD(FT!r_   r  c                      \ rS rSrS rS rS rS rS rS r	\
R                  R                  S\5      \
R                  R                  S	S
5      S 5       5       r\
R                  R                  S	S
5      S 5       r\
R                  R                  SS5      \
R                  R                  S	S5      S 5       5       rS r\
R                  R                  S\\\R*                  \\R.                  /5      S 5       rSrg)TestEighi`  c                 B    [         R                  R                  S5        g )Nr&  )rS   rT   seedre  s    r]   setup_classTestEigh.setup_classa  s    
		tr_   c           	         [        [        [        [        R                  " SS/5      5        [        [        [        [        R                  " SS/5      [        R                  " SS/5      5        [        [        [        [        R                  " SS/5      [        R                  " SS/5      5        [        [        [        [        R                  " SS/5      [        R                  " SS/5      SS9  [        [        [        [        R                  " SS/5      [        R                  " SS/5      SS/SS/S9  [        [        [        [        R                  " SS/5      [        R                  " SS/5      SS/S9  [        [        [        [        R                  " SS/5      [        R                  " SS/5      S	S/S9  [        [        [        [        R                  " SS/5      [        R                  " SS/5      SS/S9  [        [        [        [        R                  " SS/5      [        R                  " SS/5      SS/S
9  [        [        [        [        R                  " SS/5      SS9  [        [        [        [        R                  " SS/5      S SS9  [        [        [        [        R                  " SS/5      [        R                  " SS/5      SS9  [        [        [        [        R                  " SS/5      [        R                  " SS/5      SSS/S9  [        [        [        [        R                  " SS/5      [        R                  " SS/5      SSS/S9  g )Nra   rQ   rt   rT  )type)subset_by_valuesubset_by_indexr   r  r   r
  wrongr  gvxevrgvd)r  r  )r/  r0  r   rS   r   re  s    r]   test_wrong_inputsTestEigh.test_wrong_inputsd  sT   j$A8j$A!QIj$A!QIj$A!Q	 	j$A!Q'(!fq!f	F 	j$A!Q'(!f	. 	j$A!Q')1g	/ 	j$A!Q'(!f	. 	j$A!Q'(!f	. 	j$AHj$AeLj$A!Q"	$ 	j$A!Q"QF	<j$A!Q"QF	<r_   c           	          [        [        [        [        R                  " SS/5      [        R                  " SS/5      5        g )Nrt   )r/  r'   r   rS   r   re  s    r]   test_nonpositive_bTestEigh.test_nonpositive_b  s(    k4!Q"''1a&/Jr_   c                    [        [        5       H  u  p[        SUS9n[        USS/S9u  pE[	        UR
                  S   [        U5      5        [        US:  US:  -  5      (       d   e[        SSUS9n[        X6SS/S9u  pE[	        UR
                  S   [        U5      5        [        US:  US:  -  5      (       a  M   e   g )	N   r   r   rQ   r  ra   T)rZ   r[   )	enumerateDTYPESr^   r   r   r@   re   r   )r|   indr   r}   r~   rl   r   s          r]   test_value_subsetsTestEigh.test_value_subsets  s     (GC(26AB73DASV,B1q5)****(DCAr1g6DASV,B1q5)**** )r_   c                 |    [        SS/SS//5      n[        SS/SS//5      n[        U5      u  p4[        X5      u  p4g )Nra   rQ      rt   rv   )r4   r   )r|   r}   r   r~   zs        r]   test_eigh_integerTestEigh.test_eigh_integer  sH    Aq6Aq6"#Aq6Aq6"#AwAz1r_   c                     SS K nUR                  R                  S5      R                  5       n[        R
                  " U5      n[        [        [        U5        [        [        [        U5        g )Nr   rQ   )	scipy.sparsesparseidentitytocscrS   
atleast_2dr/  r0  r   )r|   scipyr}   r   s       r]   test_eigh_of_sparseTestEigh.test_eigh_of_sparse  sH    LL!!!$**,MM!j$*j$*r_   dtype_r  )r  evdr  evxc                     [        SUS9n[        X1S9u  pE[        X5-  XT-  -
  SS[        R                  " U5      R
                  -  SS9  g )Nr  )rY   r[   r  r    r   r   )r^   r   r   rS   finfoeps)r|   r  r-  r}   r~   rl   s         r]   test_various_drivers_standard&TestEigh.test_various_drivers_standard  sJ     %r8A%!"((6"2"6"66	!r_   c                     [        S//US9u  p#[        U[        S/5      SS9  [        U[        S//5      SS9  [        S//US9u  p#[        U[        S/5      SS9  [        U[        S//5      SS9  g )Nra   r  rj  V瞯<rA  rP   r   )r   r   r4   )r|   r  r~   rl   s       r]   test_1x1_lworkTestEigh.test_1x1_lwork  st    aSE&)5";U352$=u5 bTF6*5!:E252$=u5r_   r	  rs   )gvr  r  c                    [         R                  " S5      n[        S5      n[        SSS9n[        XEXS9u  pgUS:X  a  [	        XG-  XeU-  -  -
  SUSS9  g US	:X  a  [	        XE-  U-  Xv-  -
  SUSS9  g [	        XT-  U-  Xv-  -
  SUSS9  g )
Ng     @r  T)rZ   )r}   r   r  r	  ra   r  r2  rQ   )rS   spacingr^   r   r   )r|   r  r	  r   r}   r   r~   rl   s           r]    test_various_drivers_generalized)TestEigh.test_various_drivers_generalized  s     zz% $R($R5aV719AEA1uI-r2FQYAEAI-r2FAEAI-r2Fr_   c                 j   [        S5      n[        USS/S9n[        [        U5      S5        [        USS/S9n[        [        U5      S5        [	        X#5        [
        R                  " / SQ5      n[        USS/S9n[        [        U5      S5        [	        U[
        R                  " SS	/5      5        g )
Nrv   ra   rQ   r  )ra   333333??      ?rQ   gffffff?r  rA  rB  )r^   r   r   re   r   rS   r5   r4   )r|   r}   r~   w2r   w3s         r]   test_eigvalsh_new_argsTestEigh.test_eigvalsh_new_args  s    $Q'QA/SVQa!Q0SWa GG)*a!S2SWa BHHc3Z01r_   r   c                    [         R                  " SUS9n[        U5      u  p4[        [         R                  " SUS95      u  pVUR                  S:X  d   eUR
                  UR
                  :X  d   eUR                  S:X  d   eUR
                  UR
                  :X  d   e[        USS9n[        U[         R                  " S5      5        UR                  S:X  d   eUR
                  UR
                  :X  d   eg )Nr   r   rQ   r   Tr  )rS   r   r   rF   r@   r[   r   )r|   r   r}   r~   rl   rN  r  s          r]   r   TestEigh.test_empty  s    HHV2&Awq+,ww$ww#))###ww&   ww#))###&288D>*ww$ww#))###r_   r   N)r   r   r   r   r  r  r  r  r"  r+  r   r   r   r  r5  r9  r>  rF  rd   r   rS   r;   r   r<   r   r   r   r_   r]   r  r  `  s   $<LK++ [[Xv.[[X'BC! D /! [[X'BC6 D6 [[VY/[[X';<
G = 0
G2 [[TC

GR\\#RS$ T$r_   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\R"                  R%                  \(       + SS9\R"                  R(                  S 5       5       r\R"                  R-                  S/ SQ5      \R"                  R-                  S/ SQ5      \R"                  R-                  S\5      S 5       5       5       r\R"                  R-                  S\\\R8                  \\R<                  /5      \R"                  R-                  S/ SQ5      S 5       5       rSr g)TestSVD_GESDDi  gesddc                 \    [        [        [        S//SS9  [        [        [        S//SS9  g )Nrj  r  r  )r/  rf   r   r0  re  s    r]   r  TestSVD_GESDD.test_degenerate  s&    itfB?j#vUCr_   c                    / SQ/ SQ/ SQ/nS H  n[        XU R                  S9u  p4n[        UR                  U-  [	        S5      5        [        UR                  U-  [	        S5      5        [        UR                  S   UR                  S   4UR                  R                  5      n[        [        U5      5       H  nXG   XgU4'   M     [        X6-  U-  U5        M     g )Nrs   ra   r  rt   ru   TFfull_matricesr  rt   r   r   r  r   rW   rF   r9   r@   r[   charr   re   r|   r}   rS  r  svhsigmar   s           r]   r   TestSVD_GESDD.test_simple  s    
I.*M1)-););=HA"%accAgs1v6%bddRiQ81771:rxx{3QWW\\BE3q6]dd #%ai"na8 +r_   c                    / SQ/ SQ/ SQ/nS H  n[        XU R                  S9u  p4n[        UR                  U-  [	        S5      5        [        UR                  U-  [	        S5      5        [        UR                  S   UR                  S   4UR                  R                  5      n[        [        U5      5       H  nXG   XgU4'   M     [        X6-  U-  U5        M     g )Nrs   ru   rQ  rR  rt   r   rT  rV  s           r]   test_simple_singular"TestSVD_GESDD.test_simple_singular  s    	9-*M1)-););=HA"%accAgs1v6%bddRiQ81771:rxx{3QWW\\BE3q6]dd #%ai"na8 +r_   c                    / SQ/ SQ/nS H  n[        XU R                  S9u  p4n[        UR                  U-  [	        UR
                  S   5      5        [        UR
                  S   UR
                  S   4UR                  R                  5      n[        [        U5      5       H  nXG   XgU4'   M     [        X6-  U-  U5        M     g )Nrs   rT  rv   rw   rQ  rR  r   r   r  r   rW   rF   r@   r9   r[   rU  r   re   rV  s           r]   test_simple_underdet"TestSVD_GESDD.test_simple_underdet  s    	"*M1)-););=HA"%accAgs1771:?1771:rxx{3QWW\\BE3q6]dd #%ai"na8 +r_   c                    SS/SS/SS//nS H  n[        XU R                  S9u  p4n[        UR                  U-  [	        UR
                  S   5      5        [        UR                  U-  [	        S5      5        [        UR
                  S   UR
                  S   4UR                  R                  5      n[        [        U5      5       H  nXG   XgU4'   M     [        X6-  U-  U5        M     g )	Nra   rQ   rT  rv   rt   rQ  rR  r   r`  rV  s           r]   test_simple_overdet!TestSVD_GESDD.test_simple_overdet  s    VaVaV$*M1)-););=HA"%accAgs1771:?%bddRiQ81771:rxx{3QWW\\BE3q6]dd #%ai"na8 +r_   c           
         [         R                  R                  S5      nSnSn[        S5       GH  nUR                  X#/5      UR                  X2/5      4 H  nS H  n[	        XVU R
                  S9u  pxn	[        UR                  U-  [        UR                  S   5      5        [        XR                  -  [        U	R                  S   5      5        [        UR                  S   U	R                  S   4UR                  R                  5      n
[        [        U5      5       H  nX   XU4'   M     [        Xz-  U	-  U5        M     M     GM     g )	Nr&  r  r   rt   rQ  rR  ra   r   )rS   rT   r'  r   r   r  r   rW   rF   r@   r9   r[   rU  re   )r|   ri   rY   mr   r}   rS  r  rW  rX  rY  s              r]   test_randomTestSVD_GESDD.test_random"  s
   ii##D)qAjj!(#**aV*<=%2M"1151C1C EHA"-accAgs1771:G-b44iRXXa[9IJ!1771:rxx{";QWW\\JE"3q6]&'dd +-ai"na@ &3 > r_   c                 2   / SQ/ SQ/ SQ/nS GH  n[        XU R                  S9u  p4n[        UR                  5       R                  U-  [        UR                  S   5      5        [        UR                  5       R                  U-  [        UR                  S   5      5        [        UR                  S   UR                  S   4UR                  R                  5      n[        [        U5      5       H  nXG   XgU4'   M     [        X6-  U-  U5        GM     g )Nrs   )ra   y               @rt   ru   rQ  rR  ra   r   )r   r  r   rV   rW   rF   r@   r9   r[   rU  r   re   rV  s           r]   r   !TestSVD_GESDD.test_simple_complex2  s    
I.*M1)-););=HA"%affhjj1nc!''!*oF%bggikkB&6BHHQK8HI1771:rxx{3QWW\\BE3q6]dd #%ai"na8 +r_   c           
         [         R                  R                  S5      nSnSn[        S5       GH(  nS GH  nUR                  X#/5      UR                  X2/5      4 H  nUSUR                  [	        UR
                  5      5      -  -   n[        XeU R                  S9u  pxn	[        UR                  5       R                  U-  [        UR
                  S   5      5        [        UR
                  S   U	R
                  S	   4UR                  R                  5      n
[        [        U5      5       H  nX   XU4'   M     [        Xz-  U	-  U5        M     GM      GM+     g )
Nr&  r  r   rt   rQ  rP   rR  ra   r   )rS   rT   r'  r   listr@   r   r  r   rV   rW   rF   r9   r[   rU  re   )r|   ri   rY   rg  r   rS  r}   r  rW  rX  rY  s              r]   test_random_complex!TestSVD_GESDD.test_random_complex>  s   ii##D)qA!.**aV,cjj!.@AABszz$qww-888A"1151C1C EHA"-affhjj1n.1!''!*o?
 "1771:rxx{";QWW\\JE"3q6]&'dd +-ai"na@ B "/ r_   c                 H   [         R                  R                  S5      n/ SQnU Hy  n[         R                  [         R                  [         R
                  [         R                  4 H4  nUR                  " U6 R                  U5      n[        XPR                  S9  M6     M{     g )Nr&  ))r   r  )r   2   )<   r   r  )rS   rT   r'  r;   r:  r<   r_  rU   rX   r   r  )r|   ri   sizesszr   r}   s         r]   test_crash_1580TestSVD_GESDD.test_crash_1580R  so    ii##D)/Bzz2::r||R]]KHHbM((,A%7%78 L r_   c                    / SQ/ SQ/ SQ/n[        USU R                  S9u  p#n[        UR                  U-  [	        S5      5        [        UR                  U-  [	        S5      5        [        UR                  S   UR                  S   4UR                  R                  5      n[        [        U5      5       H  nX6   XVU4'   M     [        X%-  U-  U5        g )Nrs   rP  ru   F)r   r  rt   r   rT  )r|   r}   r  rW  rX  rY  r   s          r]   r+  TestSVD_GESDD.test_check_finite[  s    
I.quD<N<NOb!!##'3q62!"$$)SV4qwwqz288A;/>s1vA$EQ$K !!)b.!4r_   c                 n    [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        XR                  S9  g )N)K}\UU?vWUU?rz  r  r  r  )r  rz  r{  rz  r  r  )r  r  rz  r{  rz  r  )r  r  r  rz  r{  rz  r  )rS   r4   r   r  )r|   r   s     r]   test_gh_5039TestSVD_GESDD.test_gh_5039e  s4     HH====?@
 	A//0r_   z64-bit LAPACK requiredreasonc                     [        SS9  [        R                  " SS/[        R                  S9nSUS'   [	        USS9u  p#n[        US	   S
5        [        US   US   -  S
5        g )NihB  )free_mbra   l        r   r  FrS  r   rj  r   )rI   rS   r9   r;   r   r   )r|   r\   r  rW  rX  s        r]   test_large_matrixTestSVD_GESDD.test_large_matrixv  sb     	%(HHaZrzz2%q.b!c"$"U)+S1r_   rg  r   ra   rQ   rY   r[   c                    [         R                  " X4US9n[        X5      nUR                  R                  nUS;   a  UR                  5       OUn[        U5      u  pn
[        UR                  X45        [        UR                  U5        [        U	R                  U45        [        U	R                  [         R                  " U5      5        [        U
R                  X"45        [        U
R                  U5        [        USS9u  pn
[        UR                  X45        [        UR                  U5        [        U	R                  U45        [        U	R                  [         R                  " U5      5        [        U
R                  XR45        [        U
R                  U5        [        USS9n	[        U	R                  U45        [        U	R                  [         R                  " U5      5        g )Nr   FDFr  
compute_uv)	rS   r9   minr[   rU  lowerr   r   r@   )r|   rg  rY   r[   r}   r"  dchar
real_dcharr  rW  rl   s              r]   test_shape_dtypeTestSVD_GESDD.test_shape_dtype  sU    HHaV5)I&+tmU[[]
a&aQWWqf%QWWe$QWWqd#QWWbhhz23QWWqf%QWWe$au-aQWWqf%QWWe$QWWqd#QWWbhhz23QWWqf%QWWe$e$QWWqd#QWWbhhz23r_   r   rg  rY   r   r   r   c                    [         R                  " SUS9n[        U5      u  pVn[         R                  " X#4US9n[        U5      u  pn[	        U	[         R
                  " U5      5        [	        U
[         R                  " S5      5        [	        U[         R
                  " U5      5        U	R                  UR                  :X  d   eUR                  UR                  :X  d   eU
R                  UR                  :X  d   e[        USS9u  pn[	        U	[         R                  " US45      5        [	        U
[         R                  " S5      5        [	        U[         R                  " SU45      5        U	R                  UR                  :X  d   eUR                  UR                  :X  d   eU
R                  UR                  :X  d   e[        USS9n
[	        U
[         R                  " S5      5        U
R                  UR                  :X  d   eg )Nrt   r   r   Fr  r   r  )rS   rF   r   r   r   r'  r[   )r|   r   rg  rY   a0u0s0r   r}   r  rW  rl   s               r]   r   TestSVD_GESDD.test_empty  s~    VVAR W
HHaV2&a&a2;;q>*288D>*2;;q>*ww"(("""ww"(("""ww"(("""au-a288QF+,288D>*288QF+,ww"(("""ww"(("""ww"(("""e$288D>*ww"(("""r_   r   N)!r   r   r   r   r  r  r   r\  ra  rd  rh  r   rn  ru  r+  r|  r   r   skipifrJ   slowr  r   r  r  rd   r   rS   r;   r   r<   r   r   r   r_   r]   rK  rK    s*   MD
9
9	9
9A 
9A(951" [[I.FG[[2  H2 [[S),[[S),[[Wf-4 . - -44 [[TC

GR\\#RS[[Z)AB# C T#r_   rK  c                       \ rS rSrSrSrg)TestSVD_GESVDi  gesvdr   N)r   r   r   r   r  r   r   r_   r]   r  r    s    Mr_   r  zout of memory in WASMr~  z#out of memory in 32-bit CI workflowri  c                      [         R                  " S[         R                  S9n [        [        5         [        U 5        S S S 5        g ! , (       d  f       g = f)N)i  i  r   )rS   r   r:  r/  r0  r   )dfs    r]   test_svd_gesdd_nofegfaultr    s3     
ww}BJJ/B	z	"B 
#	"	"s   A
Ac                      [         R                  " S5      n [         R                  U S'   [        R                  " [
        SS9   [        U SS9  S S S 5        g ! , (       d  f       g = f)NrQ   r   NaN)matchFr   )rS   rF   nanr   r	   r0  r   r\   s    r]   test_gesdd_nan_error_messager    s@    
q	AffAdG	z	/AE" 
0	/	/s   A
A%c                       \ rS rSr\R
                  R                  S\\\	R                  \\	R                  /5      S 5       rS rS rS rS rS rS	 rS
 r\R
                  R*                  S 5       rSrg)TestSVDValsi  r   c                 `   / /[         R                  " S5      [         R                  " S5      4 H|  n[         R                  " X!S9n[	        U5      n[        U[         R                  " S5      5        [	        [         R                  " SUS95      nUR                  UR                  :X  a  M|   e   g )Nr   r   rt   r   r   rQ   )rS   r   r   r4   r   r   rF   r[   )r|   r   r}   rW  r  s        r]   r   TestSVDVals.test_empty  sz    rxx'8A%A
ABHHQK(,-B77bhh&&& 9r_   c                     / SQ/ SQ/ SQ/n[        U5      n[        [        U5      S:H  5        [        US   US   s=:  =(       a    US   :  5        g s  5        g )Nrs   ru   rt   r   ra   rQ   r   r   re   r|   r}   rW  s      r]   r   TestSVDVals.test_simple  sN    	9-AJA!!!$$!$%$%r_   c                     / SQ/ SQ/n[        U5      n[        [        U5      S:H  5        [        US   US   :  5        g )Nrs   r_  rQ   r   ra   r  r  s      r]   ra   TestSVDVals.test_simple_underdet  s9    	"AJA!!!r_   c                     SS/SS/SS//n[        U5      n[        [        U5      S:H  5        [        US   US   :  5        g )Nra   rQ   rT  rv   rt   r   r  r  s      r]   rd  TestSVDVals.test_simple_overdet  sG    VaVaV$AJA!!!r_   c                     / SQ/ SQ/ SQ/n[        U5      n[        [        U5      S:H  5        [        US   US   s=:  =(       a    US   :  5        g s  5        g )Nrs   )ra   r                @ru   rt   r   ra   rQ   r  r  s      r]   r   TestSVDVals.test_simple_complex  sN    Y/AJA!!!$$!$%$%r_   c                     / SQ/ SQ/n[        U5      n[        [        U5      S:H  5        [        US   US   :  5        g )Nrs   )rT  y              @rw   rQ   r   ra   r  r  s      r]   test_simple_underdet_complex(TestSVDVals.test_simple_underdet_complex  s9    
#AJA!!!r_   c                     SS/SS/SS//n[        U5      n[        [        U5      S:H  5        [        US   US   :  5        g )Nra   rQ   rT  rv   r  r   r  r  s      r]   test_simple_overdet_complex'TestSVDVals.test_simple_overdet_complex  sG    VaVb!W%AJA!!!r_   c                     / SQ/ SQ/ SQ/n[        USS9n[        [        U5      S:H  5        [        US   US   s=:  =(       a    US   :  5        g s  5        g )	Nrs   ru   Fr   rt   r   ra   rQ   r  r  s      r]   r+  TestSVDVals.test_check_finite  sQ    	9-AE*A!!!$$!$%$%r_   c                     [         R                  R                  S5        [         R                  R                  SS5      n[	        U5        g )Nr&  i  i
  )rS   rT   r  rU   r   r|   r}   s     r]   test_crash_2609TestSVDVals.test_crash_2609	  s-    
		tIINN4&
r_   r   N)r   r   r   r   r   r   r   rd   r   rS   r;   r   r<   r   r   ra  rd  r   r  r  r+  r  r  r   r   r_   r]   r  r    sz    [[TC

GR\\#RS' T'&&& [[ r_   r  c                       \ rS rSrS rSrg)TestDiagSVDi  c                 H    [        [        / SQSS5      / SQ/ SQ/ SQ/5        g )Nra   r   r   rt   r  )r   r   re  s    r]   r   TestDiagSVD.test_simple  s     !')Q":#,i"C	Er_   r   N)r   r   r   r   r   r   r   r_   r]   r  r    s    Er_   r  c                      \ 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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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+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7\8Rr                  Ru                  S6/ S7Q5      \8Rr                  Ru                  S8/ S7Q5      \8Rr                  Ru                  S9S:S;/5      \8Rr                  Ru                  S<\;5      S= 5       5       5       5       r<\8Rr                  Ru                  S>/ S?Q5      S@ 5       r=SA r>SBr?gC)DTestQRi  c                     / SQ/ SQ/ SQ/n[        U5      u  p#[        UR                  U-  [        S5      5        [        X#-  U5        g N   rQ   rt   rQ   rx   rt   rv   rt   rw   rt   r   r   rW   rF   r|   r}   qrs       r]   r   TestQR.test_simple  s;    	9-!u!!##'3q62!!%+r_   c                     / SQ/ SQ/ SQ/n[        U5      u  p#/ SQn[        XS5      u  pV[        X$-  U5        [        X65        [        U[        S5      S5      u  pV[        X%5        g )Nr  r  r  rs   r   rt   r   r   r   rF   r|   r}   r  r  cqcr2s          r]   test_simple_leftTestQR.test_simple_left  s\    	9-!uQ6*!!%,!!(QA/!!(r_   c                     / SQ/ SQ/ SQ/n[        U5      u  p#/ SQn[        X5      u  pV[        XB-  U5        [        X65        [        U[        S5      5      u  pS[        X%5        g )Nr  r  r  rs   rt   r  r  s          r]   test_simple_rightTestQR.test_simple_right)  sX    	9-!uQ"!!%,!!(As1v&!!(r_   c                    [         R                  " / SQ/ SQ/ SQ/5      n[        USS9u  p#n[        [	        U5      5      n[        [         R                  " USS  US S :*  5      5        [        UR                  U-  [        S5      5        [        X#-  US S 2U4   5        [        US S 2U4   5      u  pg[        X&5        [        X75        g )	Nr  r  r  Tpivotingra   r   rt   
rS   rC   r   r   r5   r   r   r   rW   rF   r|   r}   r  r  prk   q2r  s           r]   test_simple_pivotingTestQR.test_simple_pivoting3  s    JJ	9i89Q&aQLqu#2'(!!##'3q62!!%1a41AadG!!(!!(r_   c                 x    / SQ/ SQ/ SQ/n[        USS9u  p#n/ SQn[        XSS5      u  pcn[        X%-  U5        g )Nr  r  r  Tr  rs   r   r   r   r   r|   r}   r  r  jpvtr  r  s          r]   test_simple_left_pivoting TestQR.test_simple_left_pivoting>  sA    	9-D)
d!!5t!!%,r_   c                 r    / SQ/ SQ/ SQ/n[        USS9u  p#n/ SQn[        XSS9u  pcn[        XR-  U5        g )Nr  r  r  Tr  rs   r  r  s          r]   test_simple_right_pivoting!TestQR.test_simple_right_pivotingE  s?    	9-D)
d!!6t!!%,r_   c                     / SQ/ SQ/n[        U5      u  p#[        UR                  U-  [        S5      5        [        X#-  U5        g )Nr  r  rQ   r  r  s       r]   test_simple_trapTestQR.test_simple_trapL  9    	"!u!!##'3q62!!%+r_   c                    [         R                  " / SQ/ SQ/5      n[        USS9u  p#n[        [	        U5      5      n[        [         R                  " USS  US S :*  5      5        [        UR                  U-  [        S5      5        [        X#-  US S 2U4   5        [        US S 2U4   5      u  pg[        X&5        [        X75        g )Nr  r  Tr  ra   r   rQ   r  r  s           r]   test_simple_trap_pivoting TestQR.test_simple_trap_pivotingR  s    JJ	9-.Q&aQLqu#2'(!!##'3q62!!%1a41AadG!!(!!(r_   c                     SS/SS/SS//n[        U5      u  p#[        UR                  U-  [        S5      5        [        X#-  U5        g Nr  rQ   rx   rv   rt   r  r  s       r]   test_simple_tallTestQR.test_simple_tall]  sG    VaVaV$!u!!##'3q62!!%+r_   c                    [         R                  " SS/SS/SS//5      n[        USS9u  p#n[        [	        U5      5      n[        [         R                  " USS  US S	 :*  5      5        [        UR                  U-  [        S5      5        [        X#-  US S 2U4   5        [        US S 2U4   5      u  pg[        X&5        [        X75        g )
Nr  rQ   rx   rv   rt   Tr  ra   r   r  r  s           r]   test_simple_tall_pivoting TestQR.test_simple_tall_pivotingd  s    JJAAA/0Q&aQLqu#2'(!!##'3q62!!%1a41AadG!!(!!(r_   c                     SS/SS/SS//n[        USS9u  p#[        UR                  U-  [        S5      5        [        X#-  U5        [	        UR
                  S5        [	        UR
                  S	5        g )
Nr  rQ   rx   rv   rt   economicmoderS  rQ   rQ   r   r   rW   rF   r   r@   r  s       r]   test_simple_tall_eTestQR.test_simple_tall_ep  sf    VaVaV$!*%!!##'3q62!!%+QWWf%QWWf%r_   c                    [         R                  " SS/SS/SS//5      n[        USSS9u  p#n[        [	        U5      5      n[        [         R                  " US	S  US S
 :*  5      5        [        UR                  U-  [        S5      5        [        X#-  US S 2U4   5        [        US S 2U4   SS9u  pg[        X&5        [        X75        g )Nr  rQ   rx   rv   rt   Tr  r  r  ra   r   r   r  r  s           r]   test_simple_tall_e_pivoting"TestQR.test_simple_tall_e_pivotingy  s    JJAAA/0QJ7aQLqu#2'(!!##'3q62!!%1a41AadG*-!!(!!(r_   c                 $   SS/SS/SS//n[        USS9u  p#SS/n[        XS	5      u  pV[        X$-  U5        [        X65        [        / S
Q5      n[        XS	SS9u  pV[        X$S S -  U5        [        U[	        S5      S	5      u  pS[        XR5        g )Nr  rQ   rx   rv   rt   r  r   ra   r   ra   rQ   r   Toverwrite_cr   r   r   r4   rF   r  s          r]   test_simple_tall_leftTestQR.test_simple_tall_left  s    VaVaV$!*%FQ6*!!%,!!()Q6t<!!e)R0As1vv.!"(r_   c                     SS/SS/SS//n[        USSS9u  p#nS	S/n[        XS
S5      u  pcn[        XG5        [        X%-  U5        [        U[	        S5      S
S5      u  pcn[        Xb5        g )Nr  rQ   rx   rv   rt   r  Tr  r  ra   r   )r   r   r   r   rF   )r|   r}   r  r  r  r  r  kpvts           r]   test_simple_tall_left_pivoting%TestQR.test_simple_tall_left_pivoting  s{    VaVaV$
T:
dF!!5t4&!!%,!!SVVT:t!"(r_   c                     SS/SS/SS//n[        USS9u  p#/ SQn[        X5      u  pV[        XB-  U5        [        X65        [        U[        S5      5      u  pS[        XR5        g )	Nr  rQ   rx   rv   rt   r  r   rs   r  r|   r}   r  r  r  cqr  s          r]   test_simple_tall_rightTestQR.test_simple_tall_right  sg    VaVaV$!*%Q"!!%,!!(As1v&!"(r_   c                     SS/SS/SS//n[        USSS9u  p#n/ S	Qn[        XSS
9u  pcn[        XR-  U5        [        U[        S5      SS
9u  pcn[        Xb5        g )Nr  rQ   rx   rv   rt   Tr  r  rs   r  r  r|   r}   r  r  r  r  r  s          r]   test_simple_tall_right_pivoting&TestQR.test_simple_tall_right_pivoting  sk    VaVaV$Dz:
d!!6t!!%,!!SVd;t!"(r_   c                     / SQ/ SQ/n[        U5      u  p#[        UR                  U-  [        S5      5        [        X#-  U5        [	        UR
                  S5        [	        UR
                  S5        g )Nr  rQ   rv   r  rQ   r  rQ   rt   r  r  s       r]   test_simple_fatTestQR.test_simple_fat  sU    	"!u!!##'3q62!!%+QWWf%QWWf%r_   c                    [         R                  " / SQ/ SQ/5      n[        USS9u  p#n[        [	        U5      5      n[        [         R                  " USS  US S :*  5      5        [        UR                  U-  [        S5      5        [        X#-  US S 2U4   5        [        UR                  S5        [        UR                  S	5        [        US S 2U4   5      u  pg[        X&5        [        X75        g )
Nr   r  Tr  ra   r   rQ   r  r!  rS   rC   r   r   r5   r   r   r   rW   rF   r   r@   r  s           r]   test_simple_fat_pivotingTestQR.test_simple_fat_pivoting  s    JJ	9-.Q&aQLqu#2'(!!##'3q62!!%1a41QWWf%QWWf%AadG!!(!!(r_   c                     / SQ/ SQ/n[        USS9u  p#[        UR                  U-  [        S5      5        [        X#-  U5        [	        UR
                  S5        [	        UR
                  S5        g )Nr  rQ   rx   rv   r  r   rQ   r  r!  r  r  s       r]   test_simple_fat_eTestQR.test_simple_fat_e  sX    	"!*%!!##'3q62!!%+QWWf%QWWf%r_   c                    [         R                  " / SQ/ SQ/5      n[        USSS9u  p#n[        [	        U5      5      n[        [         R                  " USS  US S :*  5      5        [        UR                  U-  [        S5      5        [        X#-  US S 2U4   5        [        UR                  S	5        [        UR                  S
5        [        US S 2U4   SS9u  pg[        X&5        [        X75        g )Nr  r)  Tr  r  ra   r   rQ   r  r!  r   r%  r  s           r]   test_simple_fat_e_pivoting!TestQR.test_simple_fat_e_pivoting  s    JJ	9-.QJ7aQLqu#2'(!!##'3q62!!%1a41QWWf%QWWf%AadG*-!!(!!(r_   c                     / SQ/ SQ/n[        USS9u  p#SS/n[        XS5      u  pV[        X$-  U5        [        X65        [        U[        S5      S5      u  pS[        XR5        g )Nr  r)  r  r   ra   rQ   r   r  r  s          r]   test_simple_fat_leftTestQR.test_simple_fat_left  sa    	"!*%FQ6*!!%,!!(As1vv.!"(r_   c                     / SQ/ SQ/n[        USSS9u  p#nSS/n[        XSS5      u  pcn[        X%-  U5        [        U[        S5      SS5      u  pcn[        Xb5        g )	Nr  r)  r  Tr  ra   rQ   r   r  r  s          r]   test_simple_fat_left_pivoting$TestQR.test_simple_fat_left_pivoting  se    	"
T:
dF!!5t!!%,!!SVVT:t!"(r_   c                     / SQ/ SQ/n[        USS9u  p#SS/n[        X5      u  pV[        XB-  U5        [        X65        [        U[        S5      5      u  pS[        XR5        g )Nr  r)  r  r   ra   rQ   r  r  s          r]   test_simple_fat_rightTestQR.test_simple_fat_right  s]    	"!*%FQ"!!%,!!(As1v&!"(r_   c                     / SQ/ SQ/n[        USSS9u  p#nSS/n[        XSS9u  pcn[        XR-  U5        [        U[        S5      SS9u  pcn[        Xb5        g )	Nr  r)  Tr  r  ra   rQ   r  r  r  s          r]   test_simple_fat_right_pivoting%TestQR.test_simple_fat_right_pivoting  sa    	"Dz:
dF!!6t!!%,!!SVd;t!"(r_   c                     / SQ/ SQ/ SQ/n[        U5      u  p#[        UR                  5       R                  U-  [	        S5      5        [        X#-  U5        g Nrt         @      @rv   rv   rQ   y       @      @rt   rQ   r   rt   )r   r   rV   rW   rF   r  s       r]   r   TestQR.test_simple_complex  sA    <3!u!!&&(**q.#a&9!!%+r_   c                     / SQ/ SQ/ SQ/n[        U5      u  p#/ SQn[        XS5      u  pS[        X$-  U5        [        U[        S5      S5      u  pS[        X%5        g )Nr=  r?  r@  ra   rQ   r>  r   rt   r  r|   r}   r  r  r  r  s         r]   test_simple_complex_leftTestQR.test_simple_complex_left	  sT    <3!uA&)!!%,As1vv.!!(r_   c                     / SQ/ SQ/ SQ/n[        U5      u  p#/ SQn[        X5      u  pS[        XB-  U5        [        U[        S5      5      u  pS[        X%5        g )Nr=  r?  r@  rC  rt   r  rD  s         r]   test_simple_complex_right TestQR.test_simple_complex_right  sP    <3!uA!!!%,As1v&!!(r_   c                 $   SS/SS/SS//n[        USS9u  p#S	S
/n[        XS5      u  pV[        X$-  U5        [        X65        [        / SQ5      n[        XSSS9u  pV[        X$S S -  U5        [        U[	        S5      S5      u  pS[        XR5        g )Nr  y       @      @rQ   rx   y      @      @rt   r  r   ra          @       @r   r  Tr  r  r  s          r]   test_simple_tall_complex_left$TestQR.test_simple_tall_complex_left  s    YAq	*!*%IQ6*!!%,!!()Q6t<!!e)R0As1vv.!"(r_   c                     / SQ/ SQ/ SQ/n[        U5      u  p#/ SQn[        XSSS9u  pS[        UR                  5       U-  U5        g )Nr=  r?  r@  rC  r   T	conjugater   r   r   rV   rD  s         r]   "test_simple_complex_left_conjugate)TestQR.test_simple_complex_left_conjugate(  sB    <3!uA&D9!!&&(Q,3r_   c                     SS/SS/SS//n[        USS9u  p#SS/n[        XS	S
S9u  pS[        UR                  5       U-  U5        g )Nrt   r>  rv   rK  rQ   r  r   ra   r   TrO  rQ  rD  s         r]   'test_simple_complex_tall_left_conjugate.TestQR.test_simple_complex_tall_left_conjugate/  sU    YD	Aq6*!*%IA&D9!!&&(Q,3r_   c                     / SQ/ SQ/ SQ/n[        U5      u  p#[        R                  " / SQ5      n[        XSS9u  pS[	        XBR                  5       -  U5        g )Nr=  r?  r@  rC  TrO  )r   rS   r4   r   r   rV   rD  s         r]   #test_simple_complex_right_conjugate*TestQR.test_simple_complex_right_conjugate6  sG    <3!uHH\"AD1!!ffh,3r_   c                    [        / SQ/ SQ/ SQ/5      n[        USS9u  p#n[        [        U5      5      n[	        [
        R                  " USS  US S :*  5      5        [        UR                  5       R                  U-  [        S5      5        [        X#-  US S 2U4   5        [        US S 2U4   5      u  pg[        X&5        [        X75        g )	Nr=  r?  r@  Tr  ra   r   rt   )r4   r   r   r5   r   rS   r   r   rV   rW   rF   r  s           r]   test_simple_complex_pivoting#TestQR.test_simple_complex_pivoting=  s    <y9:Q&aQLqu#2'(!!&&(**q.#a&9!!%1a41AadG!!(!!(r_   c                     [        / SQ/ SQ/ SQ/5      n[        USS9u  p#n/ SQn[        XSS5      u  pcn[        X%-  U5        g )Nr=  r?  r@  Tr  rC  r   r4   r   r   r   r  s          r]   !test_simple_complex_left_pivoting(TestQR.test_simple_complex_left_pivotingH  sF    <y9:D)
d!!5t!!%,r_   c                     [        / SQ/ SQ/ SQ/5      n[        USS9u  p#n/ SQn[        XSS9u  pcn[        XR-  U5        g )Nr=  r?  r@  Tr  rC  r^  r  s          r]   "test_simple_complex_right_pivoting)TestQR.test_simple_complex_right_pivotingO  sD    <y9:D)
d!!6t!!%,r_   c                    [         R                  R                  S5      nSn[        S5       HR  nUR                  X"/5      n[	        U5      u  pV[        UR                  U-  [        U5      5        [        XV-  U5        MT     g Nr&  r  rQ   rS   rT   r'  r   r   r   rW   rF   r|   ri   rY   r"  r}   r  r  s          r]   rh  TestQR.test_randomV  sf    ii##D)qA

A6"Aa5DA%accAgs1v6%aeQ/	 r_   c                 J   [         R                  R                  S5      nSn[        S5       Hs  nUR                  X"/5      n[	        U5      u  pVUR                  U/5      n[        XGS5      u  p[        XW-  U5        [        U[        U5      S5      u  p[        XX5        Mu     g )Nr&  r  rQ   r   rS   rT   r'  r   r   r   r   rF   	r|   ri   rY   r"  r}   r  r  r  r  s	            r]   test_random_leftTestQR.test_random_left_  s    ii##D)qA

A6"Aa5DA

A3Af-EB%aeR03q662EB%a, r_   c                 F   [         R                  R                  S5      nSn[        S5       Hq  nUR                  X"/5      n[	        U5      u  pVUR                  U/5      n[        XG5      u  p[        Xu-  U5        [        U[        U5      5      u  p[        XX5        Ms     g re  rj  	r|   ri   rY   r"  r}   r  r  r  r  s	            r]   test_random_rightTestQR.test_random_rightk  s    ii##D)qA

A6"Aa5DA

A3A%EB%aeR03q6*EB%a, r_   c           	         [         R                  R                  S5      nSn[        S5       H  nUR                  X"/5      n[	        USS9u  pVn[        [        U5      5      n[        [         R                  " USS  US S :*  5      5        [        UR                  U-  [        U5      5        [        XV-  US S 2U4   5        [	        US S 2U4   5      u  p[        XY5        [        Xj5        M     g )Nr&  r  rQ   Tr  ra   r   rS   rT   r'  r   r   r   r5   r   r   r   rW   rF   r|   ri   rY   r"  r}   r  r  r  rk   r  r  s              r]   test_random_pivotingTestQR.test_random_pivotingw  s    ii##D)qA

A6"AT*GA!DGABFF1QR5AcrF?+,%accAgs1v6%aeQq!tW5!Q$[FB%a,%a, r_   c                    [         R                  R                  S5      nSnSn[        S5       HR  nUR                  X#/5      n[	        U5      u  pg[        UR                  U-  [        U5      5        [        Xg-  U5        MT     g Nr&     r   rQ   rf  r|   ri   rg  rY   r"  r}   r  r  s           r]   test_random_tallTestQR.test_random_tall  sk    ii##D)qA

A6"Aa5DA%accAgs1v6%aeQ/	 r_   c                 L   [         R                  R                  S5      nSnSn[        S5       Hr  nUR                  X#/5      n[	        USS9u  pgUR                  U/5      n[        XXS5      u  p[        Xh-  U	5        [        U[        U5      S5      u  p[        X5        Mt     g )Nr&  ry  r   rQ   r  r   r   rj  )
r|   ri   rg  rY   r"  r}   r  r  r  r  s
             r]   test_random_tall_leftTestQR.test_random_tall_left  s    ii##D)qA

A6"Aaj)DA

A3Af-EB%aeR03q662EB%b, r_   c                 H   [         R                  R                  S5      nSnSn[        S5       Hp  nUR                  X#/5      n[	        USS9u  pgUR                  U/5      n[        XX5      u  p[        X-  U	5        [        U[        U5      5      u  p[        X5        Mr     g Nr&  ry  r   rQ   r  r   rj  )
r|   ri   rg  rY   r"  r}   r  r  r  r  s
             r]   test_random_tall_rightTestQR.test_random_tall_right  s    ii##D)qA

A6"Aaj)DA

A3A%EB%aeR03q6*EB%b, r_   c           	         [         R                  R                  S5      nSnSn[        S5       H  nUR                  X#/5      n[	        USS9u  pgn[        [        U5      5      n	[        [         R                  " U	SS  U	S S :*  5      5        [        UR                  U-  [        U5      5        [        Xg-  US S 2U4   5        [	        US S 2U4   5      u  p[        Xj5        [        X{5        M     g )	Nr&  ry  r   rQ   Tr  ra   r   rs  r|   ri   rg  rY   r"  r}   r  r  r  rk   r  r  s               r]   test_random_tall_pivoting TestQR.test_random_tall_pivoting  s    ii##D)qA

A6"AT*GA!DGABFF1QR5AcrF?+,%accAgs1v6%aeQq!tW5!Q$[FB%a,%a, r_   c                 f   [         R                  R                  S5      nSnSn[        S5       H  nUR                  X#/5      n[	        USS9u  pg[        UR                  U-  [        U5      5        [        Xg-  U5        [        UR                  X#45        [        UR                  X345        M     g r  )
rS   rT   r'  r   r   r   rW   rF   r   r@   rz  s           r]   test_random_tall_eTestQR.test_random_tall_e  s    ii##D)qA

A6"Aaj)DA%accAgs1v6%aeQ/1&)1&) r_   c           	      B   [         R                  R                  S5      nSnSn[        S5       H  nUR                  X#/5      n[	        USSS9u  pgn[        [        U5      5      n	[        [         R                  " U	SS  U	S S	 :*  5      5        [        UR                  U-  [        U5      5        [        Xg-  US S 2U4   5        [        UR                  X#45        [        UR                  X345        [	        US S 2U4   SS
9u  p[        Xj5        [        X{5        M     g )Nr&  ry  r   rQ   Tr  r  ra   r   r   )rS   rT   r'  r   r   r   r5   r   r   r   rW   rF   r   r@   r  s               r]   test_random_tall_e_pivoting"TestQR.test_random_tall_e_pivoting  s    ii##D)qA

A6"AT
;GA!DGABFF1QR5AcrF?+,%accAgs1v6%aeQq!tW51&)1&)!Q$j1FB%a,%a, r_   c                    [         R                  R                  S5      nSnSn[        S5       HR  nUR                  X#/5      n[	        U5      u  pg[        UR                  U-  [        U5      5        [        Xg-  U5        MT     g Nr&  r   ry  rQ   rf  rz  s           r]   test_random_trapTestQR.test_random_trap  sk    ii##D)qA

A6"Aa5DA%accAgs1v6%aeQ/	 r_   c           	         [         R                  R                  S5      nSnSn[        S5       H  nUR                  X#/5      n[	        USS9u  pgn[        [        U5      5      n	[        [         R                  " U	SS  U	S S :*  5      5        [        UR                  U-  [        U5      5        [        Xg-  US S 2U4   5        [	        US S 2U4   5      u  p[        Xj5        [        X{5        M     g )	Nr&  r   ry  rQ   Tr  ra   r   rs  r  s               r]   test_random_trap_pivoting TestQR.test_random_trap_pivoting  s    ii##D)qA

A6"AT*GA!DGABFF1QR5AcrF?+,%accAgs1v6%aeQq!tW5!Q$[FB%a,%a, r_   c                 P   [         R                  R                  S5      nSn[        S5       Hv  nUR                  X"/5      SUR                  X"/5      -  -   n[	        U5      u  pV[        UR                  5       R                  U-  [        U5      5        [        XV-  U5        Mx     g Nr&  r  rQ   rP   )	rS   rT   r'  r   r   r   rV   rW   rF   rg  s          r]   rn  TestQR.test_random_complex  s    ii##D)qA

A6"R

A6(:%::Aa5DA%affhjj1nc!f=%aeQ/	 r_   c                    [         R                  R                  S5      nSn[        S5       H  nUR                  X"/5      SUR                  X"/5      -  -   n[	        U5      u  pVUR                  U/5      SUR                  U/5      -  -   n[        XGS5      u  p[        XW-  U5        [        U[        U5      S5      u  p[        XX5        M     g )Nr&  r  rQ   rP   r   rj  rk  s	            r]   test_random_complex_leftTestQR.test_random_complex_left  s    ii##D)qA

A6"R

A6(:%::Aa5DA

A3"SZZ_"44Af-EB%aeR03q662EB%a, r_   c                    [         R                  R                  S5      nSn[        S5       H  nUR                  X"/5      SUR                  X"/5      -  -   n[	        U5      u  pVUR                  U/5      SUR                  U/5      -  -   n[        XG5      u  p[        Xu-  U5        [        U[        U5      5      u  p[        XX5        M     g r  rj  ro  s	            r]   test_random_complex_right TestQR.test_random_complex_right	  s    ii##D)qA

A6"R

A6(:%::Aa5DA

A3"SZZ_"44A%EB%aeR03q6*EB%a, r_   c           	      *   [         R                  R                  S5      nSn[        S5       H  nUR                  X"/5      SUR                  X"/5      -  -   n[	        USS9u  pVn[        [        U5      5      n[        [         R                  " USS  US S :*  5      5        [        UR                  5       R                  U-  [        U5      5        [        XV-  US S 2U4   5        [	        US S 2U4   5      u  p[        XY5        [        Xj5        M     g )	Nr&  r  rQ   rP   Tr  ra   r   )rS   rT   r'  r   r   r   r5   r   r   r   rV   rW   rF   rt  s              r]   test_random_complex_pivoting#TestQR.test_random_complex_pivoting  s    ii##D)qA

A6"R

A6(:%::AT*GA!DGABFF1QR5AcrF?+,%affhjj1nc!f=%aeQq!tW5!Q$[FB%a,%a, r_   c                     / SQ/ SQ/ SQ/n[        USS9u  p#[        UR                  U-  [        S5      5        [        X#-  U5        g Nr  r  r  Fr   rt   r  r  s       r]   r+  TestQR.test_check_finite#  s>    	9-!%(!!##'3q62!!%+r_   c                 b   / SQ/ SQ/ SQ/n[        US S9u  p#[        USS9u  pE[        XB5        [        XS5        [        USS9u  pg[        Xb5        [        Xs5        [        USS9u  p[        X5        [        X5        [        [        [         U4SS	05        [        [        [         U4SS
05        g )Nr  r  r  )lworkrt   ri  r   r  r   rQ   )r   r   r/  	Exception)
r|   r}   r  r  r  r  q3r3q4r4s
             r]   
test_lworkTestQR.test_lwork)  s    	9-!4  AQ!"(!"( AR!"(!"( AR!"(!"( 	iaTGQ<8iaTGQ<8r_   rg  r  rY   r  FTr[   c                 ~   [        X5      n[        R                  " X4US9n[        XcS9tpxn	[	        UR
                  X45        [	        UR                  U5        [	        UR
                  X45        [	        UR                  U5        [        U	5      U(       a  SOS:X  d   eU(       a?  U	u  n
[	        U
R
                  U45        [	        U
R                  [        R                  5        [        USUS9tp[	        UR
                  X45        [	        UR                  U5        [        U	5      U(       a  SOS:X  d   eU(       a?  U	u  n
[	        U
R
                  U45        [	        U
R                  [        R                  5        [        USUS9tpxn	[	        UR
                  X45        [	        UR                  U5        [	        UR
                  XR45        [	        UR                  U5        [        U	5      U(       a  SOS:X  d   eU(       a?  U	u  n
[	        U
R
                  U45        [	        U
R                  [        R                  5        [        USUS9tu  pp[	        UR
                  X45        [	        UR                  U5        [	        UR
                  U45        [	        UR                  U5        [	        UR
                  XR45        [	        UR                  U5        [        U	5      U(       a  SOS:X  d   eU(       a@  U	u  n
[	        U
R
                  U45        [	        U
R                  [        R                  5        g g )	Nr   r  ra   r   r  r  r  raw)	r  rS   r9   r   r   r@   r[   re   int32)r|   rg  rY   r  r[   r"  r}   r  r  otherr  r  taus                r]   r  TestQR.test_shape_dtypeA  sa   
 IHHaV5)!/uQWWqf%QWWe$QWWqf%QWWe$5z8a333BA1$'"((+qsX6	QWWqf%QWWe$5z8a333BA1$'"((+!*x@uQWWqf%QWWe$QWWqf%QWWe$5z8a333BA1$'"((+ "158 D
ASYY'SYY&SYY%SYY&QWWqf%QWWe$5z8a333BA1$'"((+ r_   r  r  c                    [        X5      n[        R                  " X45      n[        U5      u  pV[	        U[        R
                  " U5      5        [	        U[        R                  " X45      5        [        USS9u  pVn[	        U[        R
                  " U5      5        [	        U[        R                  " X45      5        [	        U[        R                  " U5      5        [        USS9u  n[	        U[        R                  " X45      5        [        USS9u  pV[	        U[        R                  " X45      5        [	        U[        R                  " X245      5        [        USS9u  u  pn[	        U[        R                  " X45      5        [	        U	[        R                  " U45      5        [	        U[        R                  " X245      5        g )NTr  r  r   r  r  )r  rS   r   r   r   r'  r:   )
r|   rg  rY   r"  r}   r  r  r  r  r  s
             r]   r   TestQR.test_emptyu  s@   IHHaV!u2;;q>*288QF+,Q&a2;;q>*288QF+,299Q<(_288QF+,!*%288QF+,288QF+,15)
ARXXqf-.RXXqd^,288QF+,r_   c                    [         R                  " S5      n[         R                  " S5      n[        X5      u  p4[        U[         R                  " S5      5        [         R                  " S5      n[         R                  " S5      n[        X5      u  p4[        U[         R                  " S5      5        [         R                  " S5      n[         R                  " S5      n[        X5      u  p4[        U[         R                  " S5      5        g )Nr   r   r   )rS   r   r   r   )r|   r}   r  r  r  s        r]   test_multiply_emptyTestQR.test_multiply_empty  s    HHVHHVA!BHHV,-HHVHHVA!BHHV,-HHVHHVA!BHHV,-r_   r   N)@r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r&  r*  r-  r0  r3  r6  r9  r   rE  rH  rL  rR  rU  rX  r[  r_  rb  rh  rl  rp  ru  r{  r~  r  r  r  r  r  r  rn  r  r  r  r+  r  r   r   r   r  r  r   r  r   r   r_   r]   r  r    s   ,))	)--,	),
)&
)))))&)&))))),)))444	)--0
-
--	0--- *-$0-0
-
--,90 [[S),[[S),[[Z%7[[Wf-., . 8 - -.,` [[Z)AB- C-2.r_   r  c                   r   \ 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S r\R$                  R'                  S/ SQ5      \R$                  R'                  S/ SQ5      \R$                  R'                  S\5      S 5       5       5       r\R$                  R'                  S/ SQ5      S 5       rSrg)TestRQi  c                     / SQ/ SQ/ SQ/n[        U5      u  p#[        X3R                  -  [        S5      5        [        X#-  U5        g r  r   r   rW   rF   r|   r}   r  r  s       r]   r   TestRQ.test_simple  s9    	9-!u!!cc'3q62!!%+r_   c                 ^    / SQ/ SQ/ SQ/n[        U5      u  p#[        USS9n[        X$5        g )Nr  r  r  r  r   )r   r   )r|   r}   r  r  r  s        r]   test_rTestRQ.test_r  s,    	9-!u_!!(r_   c                    [         R                  R                  S5      nSn[        S5       HQ  nUR                  X"/5      n[	        U5      u  pV[        XfR                  -  [        U5      5        [        XV-  U5        MS     g re  rS   rT   r'  r   r   r   rW   rF   r|   ri   rY   r"  r}   r  r  s          r]   rh  TestRQ.test_random  sd    ii##D)qA

A6"Aa5DA%a##gs1v6%aeQ/	 r_   c                     / SQ/ SQ/n[        U5      u  p#[        UR                  U-  [        S5      5        [        X#-  U5        g )Nr  r  rt   r  r  s       r]   r  TestRQ.test_simple_trap  r  r_   c                     SS/SS/SS//n[        U5      u  p#[        UR                  U-  [        S5      5        [        X#-  U5        g r  r  r  s       r]   r  TestRQ.test_simple_tall  sG    VaVaV$!u!!##'3q62!!%+r_   c                     / SQ/ SQ/n[        U5      u  p#[        X3R                  -  [        S5      5        [        X#-  U5        g )Nr   r  rt   r  r  s       r]   r"  TestRQ.test_simple_fat  s7    	"!u!!cc'3q62!!%+r_   c                     / SQ/ SQ/ SQ/n[        U5      u  p#[        X3R                  5       R                  -  [	        S5      5        [        X#-  U5        g r<  )r   r   rV   rW   rF   r  s       r]   r   TestRQ.test_simple_complex  s?    <3!u!!ffhjj.#a&9!!%+r_   c                 
   [         R                  R                  S5      nSnSn[        S5       HQ  nUR                  X#/5      n[	        U5      u  pg[        XwR                  -  [        U5      5        [        Xg-  U5        MS     g rx  r  r|   ri   rg  rY   r"  r}   r  r  s           r]   r{  TestRQ.test_random_tall  i    ii##D)qA

A6"Aa5DA%a##gs1v6%aeQ/	 r_   c                 
   [         R                  R                  S5      nSnSn[        S5       HQ  nUR                  X#/5      n[	        U5      u  pg[        XwR                  -  [        U5      5        [        Xg-  U5        MS     g r  r  r  s           r]   r  TestRQ.test_random_trap  r  r_   c                 d   [         R                  R                  S5      nSnSn[        S5       H~  nUR                  X#/5      n[	        USS9u  pg[        XwR                  -  [        U5      5        [        Xg-  U5        [        UR                  X#45        [        UR                  X"45        M     g )Nr&  r   ry  rQ   r  r   )
rS   rT   r'  r   r   r   rW   rF   r   r@   r  s           r]   test_random_trap_economic TestRQ.test_random_trap_economic  s    ii##D)qA

A6"Aaj)DA%a##gs1v6%aeQ/1&)1&) r_   c                 N   [         R                  R                  S5      nSn[        S5       Hu  nUR                  X"/5      SUR                  X"/5      -  -   n[	        U5      u  pV[        XfR                  5       R                  -  [        U5      5        [        XV-  U5        Mw     g r  )	rS   rT   r'  r   r   r   rV   rW   rF   r  s          r]   rn  TestRQ.test_random_complex  s    ii##D)qA

A6"R

A6(:%::Aa5DA%a&&(**nc!f=%aeQ/	 r_   c                    [         R                  R                  S5      nSnSn[        S5       H  nUR                  X#/5      SUR                  X#/5      -  -   n[	        USS9u  pg[        XwR                  5       R                  -  [        U5      5        [        Xg-  U5        [        UR                  X#45        [        UR                  X"45        M     g )Nr&  r   ry  rQ   rP   r  r   )rS   rT   r'  r   r   r   rV   rW   rF   r   r@   r  s           r]   test_random_complex_economic#TestRQ.test_random_complex_economic  s    ii##D)qA

A6"R

A6(:%::Aaj)DA%a&&(**nc!f=%aeQ/1&)1&) r_   c                     / SQ/ SQ/ SQ/n[        USS9u  p#[        X3R                  -  [        S5      5        [        X#-  U5        g r  r  r  s       r]   r+  TestRQ.test_check_finite  s<    	9-!%(!!cc'3q62!!%+r_   rg  r  rY   r[   c                 N   [        X5      n[        R                  " X4US9n[        U5      u  pg[	        UR
                  X"45        [	        UR
                  X45        [	        UR                  U5        [	        UR                  U5        [        USS9n[	        UR
                  X45        [	        UR                  U5        [        USS9u  pg[	        UR
                  X45        [	        UR                  U5        [	        UR
                  XB45        [	        UR                  U5        g )Nr   r  r   r  )r  rS   r9   r   r   r@   r[   )r|   rg  rY   r[   r"  r}   r  r  s           r]   r  TestRQ.test_shape_dtype	  s     IHHaV5)!uQWWqf%QWWqf%QWWe$QWWe$qsOQWWqf%QWWe$!*%QWWqf%QWWe$QWWqf%QWWe$r_   r  r  c                    [        X5      n[        R                  " X45      n[        U5      u  pV[	        U[        R                  " X45      5        [	        U[        R
                  " U5      5        [        USS9n[	        U[        R                  " X45      5        [        USS9u  pV[	        U[        R                  " X45      5        [	        U[        R                  " X245      5        g )Nr  r   r  )r  rS   r   r   r   r'  )r|   rg  rY   r"  r}   r  r  s          r]   r   TestRQ.test_empty   s    IHHaV!u288QF+,2;;q>*qsO288QF+,!*%288QF+,288QF+,r_   r   N)r   r   r   r   r   r  rh  r  r  r"  r   r{  r  r  rn  r  r+  r   r   r   r  r  r   r   r   r_   r]   r  r    s    ,)0,,,,00
*0
*, [[S),[[S),[[Wf-% . - -%( [[Z)AB- C-r_   r  c                   v   \ rS rSrS rS r\R                  R                  SS\	R                  " S5      * S\	R                  " S5      S/4S	\	R                  " S5      S\	R                  " S5      * S/4S
SS\	R                  " S5      \	R                  " S5      * /4S\	R                  " S5      \	R                  " S5      * SS/4S \	R                  " S5      S\	R                  " S5      * S/4/5      S 5       rS rS r\R                  R                  S\\\	R                   \\	R$                  /5      S 5       r\R                  R                  SS
S/5      \R                  R                  SSS/5      \R                  R                  S\	R                   \	R(                  \	R$                  \	R*                  /5      S 5       5       5       r\R                  R                  SSS/5      \R                  R                  S\	R                   \	R(                  \	R$                  \	R*                  /5      S 5       5       rSrg)	TestSchuri1  c                     [        X2-  UR                  5       R                  -  XUSS9  [        X3R                  5       R                  -  [        R                  " [        U5      5      -
  SSUSS9  g )Nz&Schur decomposition does not match 'a'r   r   zu is not unitary)r   rV   rW   rS   rF   re   )r|   r}   tr  r   r   s         r]   check_schurTestSchur.check_schur3  sW    

*At H	J 	FFHJJA7 2	4r_   c           	         / SQ/ SQ/ SQ/n[        U5      u  p#U R                  XUSSS9  [        US5      u  pE[        [        R                  " [        [        U5      5      5      =(       a(    [        R                  " [        [        U5      5      5      5        U R                  XUSSS9  [        XE5      u  pgU R                  XUSSS9  g )Nr     rt   r  ri  rt   rw   r@  +<r   r   r   )r   r  r   rS   rH  r=   r?   r   )r|   r}   r  r!  tczctc2zc2s           r]   r   TestSchur.test_simple<  s    J/Qxqu59q)$uYr]+,Mim8L1MNU;2?5u=r_   zsort, expected_diaglhprQ         rb   rhpiucoucc                     U S:  $ )Nr  r   )r  s    r]   <lambda>TestSchur.<lambda>L  s    AHr_   c                     / SQ/ SQ/ SQ/ SQ/n[        X1S9u  pEnU R                  X4USSS9  [        [        R                  " U5      US	S
9  [        SU5        g )Nr<  r   rj  rk  g      g      rk  rj  r4        @      g      @r  r<  rm        @rA   r@  r  r  -q=r   rQ   )r   r  r   rS   r5   r   )r|   rA   expected_diagr}   r  r  sdims          r]   	test_sortTestSchur.test_sortF  s\     "! 1(
dqu59
M>Qr_   c                 p    / SQ/ SQ/ SQ/ SQ/n[        [        [        USS9  [        [        [        USS9  g )Nr  r  r  r   unsupportedr  ra   )r/  r0  r   r  s     r]   test_sort_errorsTestSchur.test_sort_errorsZ  s3    "! 	j%?j%3r_   c                     / SQ/ SQ/ SQ/n[        USS9u  p#[        X2-  UR                  5       R                  -  U5        g )Nr  r  r  Fr   )r   r   rV   rW   )r|   r}   r  r!  s       r]   r+  TestSchur.test_check_finiteb  s7    J/QU+!!%!&&(**"4a8r_   r   c                    [         R                  " SUS9n[        U5      u  p4[        [         R                  " SUS95      u  pV[	        U[         R                  " S5      5        [	        U[         R                  " S5      5        UR
                  UR
                  :X  d   eUR
                  UR
                  :X  d   e[        USS9u  p4n[	        U[         R                  " S5      5        [	        U[         R                  " S5      5        [        US5        UR
                  UR
                  :X  d   eUR
                  UR
                  :X  d   eg )Nr   r   rQ   r  r  r   )rS   r   r   rF   r   r[   r   )r|   r   r}   r  r!  t0z0r  s           r]   r   TestSchur.test_emptyg  s    HHV2&Qxrvvar*+288F+,288F+,ww"(("""ww"(("""15)
d288F+,288F+,T1ww"(("""ww"(("""r_   rA   outputru  r   r[   c                     [         R                  " SS/SS//5      n[        UR                  U5      XS9S   nUS:X  a  US:X  d   eUS:X  d   eg g )N皙?r   rQ   rA   r  r   r  r   )rS   rC   r   rX   )r|   rA   r  r[   r\   r  s         r]   test_gh_13137_sort_str TestSchur.test_gh_13137_sort_strx  s]      JJb	As8,- QXXe_4?C EMtqy88tqy88yyr_   c                   ^ [         R                  " SS/SS//5      nUS:H  =(       a#    U[         R                  [         R                  1;   mS	U4S jjn[	        UR                  U5      XAS9S   nT(       a  US:X  d   eUS:X  d   eg g )
Nr  r   rQ   ru  c                   > T(       aE  [         R                  " U 5      (       a   eUb  [         R                  " U5      (       d   eXS-  -   nO$[         R                  " U 5      (       d   eUb   eU nUR                  S:  $ )NrP   r8  )rS   iscomplexobjisrealr   )r  r  r!  all_reals      r]   rA   1TestSchur.test_gh_13137_sort_custom.<locals>.sort  so    ??1----}155"Hq))))y y66E>!r_   r  r   ra   rc  )rS   rC   r;   r:  r   rX   )r|   r  r[   r\   rA   r  r  s         @r]   test_gh_13137_sort_custom#TestSchur.test_gh_13137_sort_custom  s     JJb	As8,-6>Ge

BJJ/G&G		" QXXe_4?C$tqy33$!)33)yr_   r   N)r   r   r   r   r  r   r   r   r   rS   r>   r  r  r+  rd   r   r;   r   r<   r   r:  r_  r  r  r   r   r_   r]   r  r  1  s   4> [[
2771:+tRWWQZ5	6
"''!*cBGGAJ;5	6
$RWWQZ"''!*5	6
"''!*rwwqzk45	6
rwwqz3TB	C		E

49
 [[TC

GR\\#RS# T#  [[VeU^4[[X	':;[[Wrzz2::')||R]]'D E9E < 59$ [[X	':;[[Wrzz2::')||R]]'D E4E <4r_   r  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
\\\\\/5      S 5       rSrg)TestHessenbergi  c                     / SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/n[        USS9u  p4[        UR                  U-  U-  U5        [        X2S	S
9  g )Nikiif     "  ir  g     bgsE@g㥛 cg(m̀gkwc@gfjWr   g&S?g,eX@ra   calc_qrT  decimalr   r   rW   r|   r}   h1rm   r  s        r]   r   TestHessenberg.test_simple  sT     ..!# !A&!!##'A+q1!!3r_   c                     / SQ/ SQ/ SQ/n[        USS9u  p#[        UR                  5       R                  U-  U-  U5        g )Nr$  )r&  y             f@r(  )y             ;r  r*  ra   r.  )r   r   rV   rW   r|   r}   rm   r  s       r]   r   "TestHessenberg.test_simple_complex  s?     !A&!!&&(**q.1"4a8r_   c                     / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[        USS	9u  p#[        UR                  U-  U-  U5        g )
N)ra   rQ   rt   rT  rv   rw   r   )r   rQ   rt   rT  rw   r   rQ   )r   rQ   rQ   rt   r   rt   rQ   )r   r   rQ   r  r   r   rQ   )r   rt   ra   rQ   r   ra   rQ   )r   ra   rQ   rt   r   ra   r   )r   r   r   r   r   ra   rQ   ra   r.  r2  r7  s       r]   test_simple2TestHessenberg.test_simple2  sD    """""""$ !A&!!##'A+q1r_   c                     [         R                  " S5      nSUS'   [        USS9u  p#[        UR                  U-  U-  U5        g )Nrt   rQ   )r   r   ra   r.  )rS   rF   r   r   rW   r7  s       r]   test_simple3TestHessenberg.test_simple3  s<    FF1I%!A&!!##'A+q1r_   c                     [         R                  R                  S5      nSn[        S5       H=  nUR                  X"/5      n[	        USS9u  pV[        UR                  U-  U-  U5        M?     g )Nr&  r  rQ   ra   r.  )rS   rT   r'  r   r   r   rW   r|   ri   rY   r"  r}   rm   r  s          r]   rh  TestHessenberg.test_random  s]    ii##D)qA

A6"Aa*DA%accAgk15 r_   c                 &   [         R                  R                  S5      nSn[        S5       Ha  nUR                  X"/5      SUR                  X"/5      -  -   n[	        USS9u  pV[        UR                  5       R                  U-  U-  U5        Mc     g )Nr&  r  rQ   rP   ra   r.  )rS   rT   r'  r   r   r   rV   rW   r@  s          r]   rn  "TestHessenberg.test_random_complex  sy    ii##D)qA

A6"R

A6(:%::Aa*DA%affhjj1nq&8!< r_   c                     / SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/n[        USSS	9u  p4[        UR                  U-  U-  U5        [        X2S
S9  g )Nr$  r%  r)  r+  r,  r-  ra   F)r/  r   rT  r0  r2  r3  s        r]   r+   TestHessenberg.test_check_finite  sV     ..!# !AE:!!##'A+q1!!3r_   c                     SS/SS//n[        USS9u  p#[        U[        R                  " S5      5        [        X!5        SS/SS	//n[        USS9u  pV[        U[        R                  " S5      5        [        XT5        g )
NrQ   ra   r   r  r.  y       @      r   y      @      @y      (@       )r   r   rS   rF   )r|   r}   rm   r  r   h2r  s          r]   test_2x2TestHessenberg.test_2x2  sv    VaW!A&!!RVVAY/!!'D\D%=)Aa(!"bffQi0!"(r_   r   c                    [         R                  " SUS9n[        U5      nUR                  S:X  d   eUR                  [        [         R
                  " SUS95      R                  :X  d   e[        USS9u  p4[        USS9u  pVUR                  S:X  d   eUR                  UR                  :X  d   eUR                  S:X  d   eUR                  UR                  :X  d   eg )Nr   r   rt   Tr.  )rS   r   r   r@   r[   rF   )r|   r   r}   rm   r  h3r  s          r]   r   TestHessenberg.test_empty  s    HHV2&qMww&   ww*RVVAR%89?????!D)Ad+ww&   ww"(("""ww&   ww"(("""r_   r   N)r   r   r   r   r   r   r:  r=  rh  rn  r+  rH  r   r   r   rd   r   r;   r   r<   r   r   r   r_   r]   r"  r"    s[    	49	226=	4
) [[TC)#LM# N#r_   r"  zBuild Dependenciesblasnameversionc                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestQZi	  c                 4   [         R                  R                  S5      nSnUR                  X"/5      R                  [        5      nUR                  X"/5      R                  [        5      n[        X45      u  pVpx[        Xu-  UR                  -  USS9  [        Xv-  UR                  -  USS9  [        XwR                  -  [        U5      SS9  [        XR                  -  [        U5      SS9  [        [         R                  " [        U5      S:  5      5        g )N90  rv   r0  r   )rS   rT   r'  rX   r;   r   r   rW   rF   r   r   r5   	r|   ri   rY   r\   r   AABBQr  s	            r]   test_qz_singleTestQZ.test_qz_single	  s    ii##E*JJv%%g.JJv%%g.!x!!&133,1=!!&133,1=!!cc'3q61=!!cc'3q61=tBx1}%&r_   c                    [         R                  R                  S5      nSnUR                  X"/5      nUR                  X"/5      n[        X45      u  pVpx[	        Xu-  UR
                  -  U5        [	        Xv-  UR
                  -  U5        [	        XwR
                  -  [        U5      5        [	        XR
                  -  [        U5      5        [        [         R                  " [        U5      S:  5      5        g )NrS  rv   r   
rS   rT   r'  r   r   rW   rF   r   r   r5   rT  s	            r]   test_qz_doubleTestQZ.test_qz_double 	  s    ii##E*JJvJJv!x!!&133,2!!&133,2!!cc'3q62!!cc'3q62tBx1}%&r_   c                 "   [         R                  R                  S5      nSnUR                  X"/5      SUR                  X"/5      -  -   nUR                  X"/5      SUR                  X"/5      -  -   n[        X45      u  pVpx[	        Xu-  UR                  5       R                  -  U5        [	        Xv-  UR                  5       R                  -  U5        [	        XwR                  5       R                  -  [        U5      5        [	        XR                  5       R                  -  [        U5      5        [        [         R                  " [        U5      S:  5      5        [        [         R                  " [        U5      R                  S:H  5      5        g )NrS  rv   rP   r   )rS   rT   r'  r   r   rV   rW   rF   r   r   r5   r   rT  s	            r]   test_qz_complexTestQZ.test_qz_complex,	  s   ii##E*JJvCJJv$6!66JJvCJJv$6!66!x!!&1668::"5q9!!&1668::"5q9!!ffhjj.#a&9!!ffhjj.#a&9tBx1}%&tBx}})*+r_   c                 f   [         R                  R                  S5      nSnUR                  X"/5      SUR                  X"/5      -  -   R                  [        5      nUR                  X"/5      SUR                  X"/5      -  -   R                  [        5      n[        X45      u  pVpx[        Xu-  UR                  5       R                  -  USS9  [        Xv-  UR                  5       R                  -  USS9  [        XwR                  5       R                  -  [        U5      SS9  [        XR                  5       R                  -  [        U5      SS9  [        [         R                  " [        U5      S:  5      5        [        [         R                  " [        U5      R                  S:H  5      5        g )NrS  rv   rP   r0  r   )rS   rT   r'  rX   r<   r   r   rV   rW   rF   r   r   r5   r   rT  s	            r]   test_qz_complex64TestQZ.test_qz_complex649	  s1   ii##E*ZZ"SZZ%7"77??	JZZ"SZZ%7"77??	J!x!!&1668::"5q!D!!&1668::"5q!D!!ffhjj.#a&!D!!ffhjj.#a&!DtBx1}%&tBx}})*+r_   c                    [         R                  R                  S5      nSnUR                  X"/5      nUR                  X"/5      n[        X4SS9u  pVpxXu-  UR	                  5       R
                  -  n	[        U	R                  U5        [        U	R                  S5        Xv-  UR	                  5       R
                  -  n
[        U
R                  U5        [        U
R                  S5        [        XwR	                  5       R
                  -  [        U5      5        [        XR	                  5       R
                  -  [        U5      5        [        [         R                  " [        U5      S:  5      5        g )NrS  rv   r   )r  r   )rS   rT   r'  r   rV   rW   r   ru  r   rF   r   r   r5   )r|   ri   rY   r\   r   rU  rV  rW  r  aabbs              r]   test_qz_double_complexTestQZ.test_qz_double_complexF	  s    ii##E*JJvJJv!y1Vaffhjj !"''1-!"''1-Vaffhjj !"''1-!"''1-!!ffhjj.#a&9!!ffhjj.#a&9tBx1}%&r_   c                     [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        [        [        XS	 S
9  g )N)333333@      )@     @Ag      @333333@     5@g     Gg      @)rn  rC       Er  )皙@r        Gr  )rj  rj  rm  rj  )rj  r   g      rq  )rj  r;  r  rj  )rA  r   r  r<  c                     US:H  $ )Nr   r   )araibetas      r]   r  ,TestQZ.test_qz_double_sort.<locals>.<lambda>n	  s    bAgr_   r  )	rS   r4   r/  r0  r   r   r   rW   r   )r|   r\   r   rU  rV  rW  r  r  s           r]   test_qz_double_sortTestQZ.test_qz_double_sortV	  sX     HH--,,. /
 HH++++- .
 	j"a1MNr_   c                    [         R                  R                  S5      nSnUR                  X"/5      nUR                  X"/5      n[        X4SS9u  pVpx[	        Xu-  UR
                  -  U5        [	        Xv-  UR
                  -  U5        [	        XwR
                  -  [        U5      5        [	        XR
                  -  [        U5      5        [        [         R                  " [        U5      S:  5      5        g )NrS  rv   Fr   r   r[  rT  s	            r]   r+  TestQZ.test_check_finite	  s    ii##E*JJvJJv!U3!!&133,2!!&133,2!!cc'3q62!!cc'3q62tBx1}%&r_   r   N)r   r   r   r   rX  r\  r_  rb  rg  rx  r+  r   r   r_   r]   rQ  rQ  	  s'    
'
',,' 5FF
'r_   rQ  c                   f    \ rS rSr\S 5       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)	TestOrdQZi	  c                 P   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " / S	Q/ S
Q/ SQ/ SQ/5      n[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " S5      n[         R                  " SS/5      n[         R                  " SS/5      n	XXWU	/U l        X$XhU	/U l        g )N)y5     6y     J@     @Iy     @A     _@y      @      ?)yq=
ףpݿQy           By      /     @M@y      %      )y333333@      yC@1y      Q      )@y            )y      @@y,@fffffE@y     @@      Gy      3     @@)y      ?      y?333333?y              y              )y?333333y              y            @y333333	)y      ?        y333333@?y            y              )rP   y333333@y              y      @      )rj  rk  rl  r  rm  )rn  ro  rp  r  )rq  g      :@rr  r  )ra   rQ   ra   )ra   rt   rT  )ra   rt   rt   )ra   rt   r  rT  )r!  rj  r   r   )r<  r<  r;  r?  )r?  r<  rj  r   )r  r<  rB  r?  )rB  r=  r  r=  )r?  r?  r;  r4  )r4  rj  r  r  )r!  rj  r<  r?  rQ   r   ra   )rS   r4   rF   r5   r\   r   )
clsA1B1A2B2A3B3A4B4A5s
             r]   r  TestOrdQZ.setup_class	  s     XX $&%'( ) XXDDDDF G XX/...0 1
 XX}$$$& ' XX'''') * XX)''') * VVAYWWaV_ WWaV_$$r_   c                     [         R                  " SS9   [        U R                  U R                  5       VVs/ s H  u  p#[        X#US9PM     nnnS S S 5        [        W5      $ s  snnf ! , (       d  f       N= f)Nraiser  r  )rS   r	  zipr\   r   r    tuple)r|   rA   AiBirets        r]   	qz_decompTestOrdQZ.qz_decomp	  sZ    [[W%:=dffdff:MN:M5d+:MCN &Sz O &%s   $A+A%A+%A++
A9c
           	      p   [         R                  " UR                  6 n
[        XR                  R                  5       -  U
5        [        XR                  R                  5       -  U
5        [        X-  X-  5        [        X-  X)-  5        [        [         R                  " US5      [         R                  " UR                  5      5        [        [         R                  " US5      [         R                  " UR                  5      5        [        UR                  S   5       GH  nUS:  a  XUS-
  4   S:w  a  M  XR                  S   S-
  :  a  XKS-   U4   S:w  ax  [        XKUS-   2XS-   24   X[US-   2XS-   24   5      u  pUS   R                  S:  a  USS/   nXkUS-    X{US-    -  nUS   R                  S:  a  USS/   n[        X5        M  Xk   S:X  a*  X{   S:X  a"  [        XKU4   S5        [        X[U4   S5        M  X{   S:X  a  [        X[U4   S5        M  [        XKU4   X[U4   -  Xk   X{   -  5        GM      [        U5      nSn[        UR                  S   5       HL  nU" [         R                  " Xk   /5      [         R                  " X{   /5      5      nU(       d	  U(       a   eUnMN     g )Nr   r   r   ra   rQ   T)rS   rF   r@   r   rW   rV   r   trilr9   r   r
   r   r   r   r2   r4   )r|   r\   r   rA   rU  rV  alpharv  rW  r  Idr   evals_tmpsortfunlastsortcursorts                     r]   checkTestOrdQZ.check
  sZ   VVQWW!!cchhj."5!!cchhj."5!!&!%0!!&!%02772r?BHHRXX,>?2772r?BHHRXX,>?qwwqz"A 1ua!e8)88A;?"ra%(|q'8rAE'1U7"23R!a%q58H5IJ 8==1$!1a&MEa!enTAE]2q6;;?q!f+C)%58q=TW\ qD1- qD1-W\ qD1-'a4qD(958DG;KL/ #0 #4(qwwqz"Abhhz2BHHdgY4GHG ""{H #r_   c                     U R                  U5      n[        X R                  U R                  5       H  u  p4nU R                  " XEU/UQ76   M     g rc  )r  r  r\   r   r  )r|   rA   r  retir  r  s         r]   	check_allTestOrdQZ.check_all1
  s@    nnT"VVTVV4LDbJJrt+d+ 5r_   c                 &    U R                  S5        g )Nr  r  re  s    r]   test_lhpTestOrdQZ.test_lhp7
      ur_   c                 &    U R                  S5        g )Nr  r  re  s    r]   test_rhpTestOrdQZ.test_rhp:
  r  r_   c                 &    U R                  S5        g )Nr  r  re  s    r]   test_iucTestOrdQZ.test_iuc=
  r  r_   c                 &    U R                  S5        g )Nr  r  re  s    r]   test_oucTestOrdQZ.test_ouc@
  r  r_   c                 ,    S nU R                  U5        g )Nc                 |    [         R                  " U [        S9nUS:g  nSX#) '   X   X   -  R                  S:H  X#'   U$ Nr   r   FrS   
empty_likeboolr   r  r  outnonzeros       r]   rA    TestOrdQZ.test_ref.<locals>.sortE
  D    --.CAvG!CMJqz1771<CLJr_   r  r|   rA   s     r]   test_refTestOrdQZ.test_refC
      	 	tr_   c                 ,    S nU R                  U5        g )Nc                 |    [         R                  " U [        S9nUS:g  nSX#) '   X   X   -  R                  S:g  X#'   U$ r  r  r  s       r]   rA    TestOrdQZ.test_cef.<locals>.sortP
  r  r_   r  r  s     r]   test_cefTestOrdQZ.test_cefN
  r  r_   c                 T   [        U R                  S   U R                  S   SS9nU R                  " U R                  S   U R                  S   S/UQ76   [        U R                  S   U R                  S   SS9nU R                  " U R                  S   U R                  S   S/UQ76   g )Nra   rQ   r  r  )r    r\   r   r  )r|   r  s     r]   test_diff_input_typesTestOrdQZ.test_diff_input_typesY
  s    DFF1Itvvayu5

466!9dffQi55DFF1Itvvayu5

466!9dffQi55r_   c                    [         R                  " S5      n[         R                  " SS/5      nSSS/4SSS/4SSS/4SSS/4/n[         R                  " S5      n[         R                  " S	S
/5      nSSS/4SSS/4SSS/4SSS/4/n[         R                  " S5      n[         R                  " SS/5      nSS[         R                  /4SS[         R                  /4S[         R                  S/4/n	[         R                  " S5      n
[         R                  " SS/5      nSS[         R                  /4SS[         R                  /4S[         R                  S/4/n[         R                  " SS/5      n[         R                  " SS/5      nSS[         R                  /4SS[         R                  /4/nXXzU/nX%XU/nX6XU/n[        UUU5       H  u  nnnU H  u  nn[        UUUS9u    nnn  nUS:H  nUS:H  n[         R                  " U5      n[         R                  UUU-  '   [         R                  UU) U-  '   UU)    UU)    -  UU) '   [        UU5        M     M     g )NrQ   r   rb   r  r  r  r  r  y             ?y      ?      ?yٿɿ      ?      r   ra   r  )	rS   rF   r5   r   r  r  r    r  r   )r|   r  r  	expected1r  r  	expected2r  r  	expected3r  r  	expected4r  B5	expected5r\   r   expectedr  r  	expectedisortstrexpected_eigvalsr  r  rv  azerobzeror  s                                 r]   test_sort_explicitTestOrdQZ.test_sort_explicit`
  s    VVAYWWb#YdAY'aY'dAY'aY')	 VVAYWWgz*+k>:;nk:;k>:;nk:;=	
 VVAYWWaV_c266]+c266]+bffc]+-	 VVAYWWb!WdBFF^,dBFF^,bffd^,.	 WWaV_WWaXa[)a[)+	 RR RR )	J!$Q8!4BI-6))*/BW*E'1eT1a!MM%(#%66%%- $&FF5&5.!!5&M$v,65&	 0!4 .7 "5r_   r   N)r   r   r   r   classmethodr  r  r  r  r  r  r  r  r  r  r  r  r   r   r_   r]   r}  r}  	  sM    4% 4%l
,\,		6-5r_   r}  c                       \ rS rSr\R
                  R                  S5      S 5       r\R
                  R                  S 5       r	Sr
g)TestOrdQZWorkspaceSizei
  rv   c                    [         R                  R                  S5      nSn[         R                  [         R                  4 HQ  nUR                  X"45      R                  U5      nUR                  X"45      R                  U5      n[        XES SS9nMS     [         R                  [         R                  4 HQ  nUR                  X"45      R                  U5      nUR                  X"45      R                  U5      n[        XES SS9nMS     g )NrS     c                 
    X:  $ rc  r   r  rv  s     r]   r  7TestOrdQZWorkspaceSize.test_decompose.<locals>.<lambda>
      U\r_   ru  r  c                 
    X:  $ rc  r   r  s     r]   r  r  
  r  r_   r   )	rS   rT   r'  r;   r:  rX   r    r_  r<   )r|   ri   r  ddtyper\   r   r  s          r]   test_decompose%TestOrdQZWorkspaceSize.test_decompose
  s    ii##E*zz2::.F

A6"))&1A

A6"))&1Aa!A#%A	 / }}bll3F

A6"))&1A

A6"))&1Aa!A&(A 4r_   c                 p   [         R                  R                  S5      nSn[         R                  [         R                  [         R
                  [         R                  4 HS  nUR                  X"45      R                  U5      nUR                  X"45      R                  U5      n[        XESS9u  pgppMU     g )NrS  r  r  r  )	rS   rT   r'  r;   r:  r_  r<   rX   r    )r|   ri   r  r  r\   r   SrW   r  rv  UrI  s               r]   test_decompose_ouc)TestOrdQZWorkspaceSize.test_decompose_ouc
  s    ii##E*zz2::r}}bllKF

A6"))&1A

A6"))&1A&+Au&=#A%q! Lr_   r   N)r   r   r   r   r   r   	fail_slowr  r  r  r   r   r_   r]   r  r  
  sA    [[1( (" [[> >r_   r  c                       \ rS rSrS rSrg)TestDatacopiedi
  c                 ^  ^ SSK Jn  [        SS/SS//5      n[        U5      mUR	                  5       nUR                  5       n " U4S jS5      n " U4S jS	5      nU" 5       nU" 5       nUS
4TS
4US4US
4US
4US
44 H*  u  p[        U	5      n[        U" X5      U
[        U	5      S9  M,     g )Nr   )_datacopiedra   rQ   rt   c                   &   > \ rS rSrSU 4S jjrSrg)-TestDatacopied.test_datacopied.<locals>.Fake1i
  Nc                    > T$ rc  r   )r|   r[   r   r\   s      r]   	__array__7TestDatacopied.test_datacopied.<locals>.Fake1.__array__
  s    r_   r   )NN)r   r   r   r   r  r   r  s   r]   Fake1r  
  s     r_   r  c                   0   > \ rS rSr Y R                  rSrg)-TestDatacopied.test_datacopied.<locals>.Fake2i
  r   N)r   r   r   r   __array_interface__r   r  s   r]   Fake2r  
  s    "#"7"7r_   r  FTr   )scipy.linalg._decompr  rH   rC   tolistr   r   repr)r|   r  r  LM2r  r  F1F2itemstatusarrr\   s               @r]   test_datacopiedTestDatacopied.test_datacopied
  s    4QFQF#$AJHHJVVX	 		8 	8 WWZ!UaY %[2u+E{DLD$-CS/!%d-Dr_   r   N)r   r   r   r   r  r   r   r_   r]   r  r  
  s    -r_   r  c                      [        S[        R                  S9n [        R                  " U R                  SS[
        S9nSUl        [        USS9  [        UR                  SS9  g	)
z4Check linalg works with non-aligned memory (float32)i  r   rQ   r   offsetcountr[   ri  ri  Toverwrite_aN)	r:   rS   uint8
frombufferdatar;   r@   r
   rW   r}   r!  s     r]   test_aligned_mem_floatr  
  sM     	s"((#A 	affQcAAAGtr_   ppc64lezcrashes on ppc64lec                      [        S[        R                  S9n [        R                  " U R                  SS[
        S9nSUl        [        USS9  [        UR                  SS9  g	)
z4Check linalg works with non-aligned memory (float64)i$  r   rT  r   r	  r  Tr  N)	r:   rS   r  r  r  r   r@   r
   rW   r  s     r]   test_aligned_memr  
  sM    
 	s"((#A 	affQc?AAGtr_   c                      [        S[        R                  S9n [        R                  " U R                  SS[
        S9nSUl        [        USS9  [        UR                  SS9  g	)
z>Check that complex objects don't need to be completely alignediH  r   r  r   r	  r  Tr  N)	r9   rS   r  r  r  r   r@   r
   rW   r  s     r]   test_aligned_mem_complexr  
  sM     	d"((#A 	affQcAAAGtr_   c                 b   [        U5      n[        [        U5      5       GH  nUS S  n[        XC   [        R
                  5      (       d  M,  [        R                  " XC   R                  XC   R                  R                  -  S-   [        R                  S9n[        R                  " UR                  SXC   R                  XC   R                  S9nXC   R                  Ul        XC   US'   XTU'   U " U0 UD6  [        XC   R                  5      S:  d  M  XC   R                  XC'   U " U0 UD6  GM     g )Nr  r   rT  r	  .ra   )rm  r   re   rc   rS   rE   r9   r   r[   itemsizer  r  r  r@   rW   )funcr  rY  r   r}   re  s         r]   check_lapack_misalignedr  
  s    :D3t9GadBJJ''!$))ADJJ$7$779JBrwwq		%&TZZ1BtzzBHdBsGaD!v14::"tvva"6" r_   z0Ticket #1152, triggers a segfault in rare cases.)runr  c                     [         R                  " S[        S9n [         R                  " S5      nSUl        [         R                  " S[         R
                  S9n[         R                  " UR                  SS[        S9nSUl        [         R                  " S5      n[        U5      u  pE[        U4[        SS	94[        U4[        SS	94[        U4[        SS	94[        U4[        SS	94[        XE4U4[        SS
94[        X#4[        SSS94[         U 4[        SS	94[         U4[        SS	94[         U4[        SS	94["        U4[        5       4["        U4[        SS	94[$        U 4[        SS	94[&        U4[        SS	94[(        U4[        SS	94[*        U4[        SS	94[,        U4[        SS	944 H  u  pgn[/        XgU5        M     g )Nri  r   r   r  i N  rT  r	  Tr  )overwrite_b)r  r  )rS   rF   r   r:   r@   r  r  r  r   r   r
   rV  r   r   r   r   r   r   r   r   r   r   r   r  )	r  Rr  r   LUpivr  r  rY  s	            r]   test_lapack_misalignedr#    s    	rA
		#AAG
		%rxx(A
affQc?AAG
AlGB1$./qdDT23!t-.dt45	1~t'=>QFDTtDE1$./1$./1$./qdDF#qdDT23tTd34!t-.!t-.!t56QD$401!!V$ 	 F3%!r_   c                   t    \ 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S rS rS rS rSrg)TestOverwritei'  c                 J    [        [        S/5        [        [        SS/5        g Nr  )rG   r
   re  s    r]   test_eigTestOverwrite.test_eig(  s    C&*C&&!12r_   c                 J    [        [        S/5        [        [        SS/5        g r'  )rG   r   re  s    r]   	test_eighTestOverwrite.test_eigh,  s    D6(+D66"23r_   c                 &    [        [        S/5        g NrS  )rG   r   re  s    r]   r  TestOverwrite.test_eig_banded0      J1r_   c                 &    [        [        S/5        g r'  )rG   r   re  s    r]   test_eigvalsTestOverwrite.test_eigvals3      GfX.r_   c                 &    [        [        S/5        g r'  )rG   r   re  s    r]   test_eigvalshTestOverwrite.test_eigvalsh6  s    Hvh/r_   c                 &    [        [        S/5        g r.  )rG   r   re  s    r]   r  !TestOverwrite.test_eigvals_banded9  s    NVH5r_   c                 &    [        [        S/5        g r'  )rG   r   re  s    r]   test_hessenbergTestOverwrite.test_hessenberg<  r0  r_   c                 &    [        [        S/5        g r'  )rG   r   re  s    r]   test_lu_factorTestOverwrite.test_lu_factor?  s    Ix0r_   c                 |   ^ [         R                  " / SQ/ SQ/ SQ/5      n[        U5      m[        U4S jS/5        g )Nrs   r_  )r   r  r  c                    > [        TU 5      $ rc  )r   )r   xlus    r]   r  -TestOverwrite.test_lu_solve.<locals>.<lambda>E  s    hsA&6r_   )rt   )rS   r4   r   rG   )r|   r  rB  s     @r]   test_lu_solveTestOverwrite.test_lu_solveB  s.    HHiI67l6?r_   c                 &    [        [        S/5        g r'  )rG   r   re  s    r]   test_luTestOverwrite.test_luG      B)r_   c                 &    [        [        S/5        g r'  )rG   r   re  s    r]   test_qrTestOverwrite.test_qrJ  rI  r_   c                 &    [        [        S/5        g r'  )rG   r   re  s    r]   test_rqTestOverwrite.test_rqM  rI  r_   c                 &    [        [        S/5        g r'  )rG   r   re  s    r]   
test_schurTestOverwrite.test_schurP  s    EF8,r_   c                 Z    [        S S/[        R                  [        R                  /S9  g )Nc                     [        U S5      $ )Nr   )r   r}   s    r]   r  2TestOverwrite.test_schur_complex.<locals>.<lambda>T  s    eAy&9r_   r  )dtypes)rG   rS   r;   r:  re  s    r]   test_schur_complex TestOverwrite.test_schur_complexS  s!    9F8$&JJ

#;	=r_   c                 B    [        [        S/5        [        S S/5        g )Nr  c                     [        U SS9$ )Nr  r  )r   rU  s    r]   r  (TestOverwrite.test_svd.<locals>.<lambda>Y  s    c!7&Cr_   )rG   r   re  s    r]   test_svdTestOverwrite.test_svdW  s    C&*CfXNr_   c                 &    [        [        S/5        g r'  )rG   r   re  s    r]   test_svdvalsTestOverwrite.test_svdvals[  r4  r_   r   N)r   r   r   r   r(  r+  r  r2  r6  r  r;  r>  rD  rG  rK  rN  rQ  rX  r]  r`  r   r   r_   r]   r%  r%  '  sT    342/0621@
***-=O/r_   r%  c                 D   [         R                  " U S4[        S9R                  U5      n[         R                  " U5      R
                  nSU-  n[        U5      n[        UR                  U S45        [        XfR                  5       US9  [        UR                  5      n[        UR                  S5        [        XfR                  5       US9  U S:  a  U(       d  [         R                  R                  S5      nUR                  U S5      UR                  SU 5      -  nUSUR                  U S5      -  UR                  SU 5      -  -   nUR                  U5      n[        US	S
9n[        UR                  U S45        [        USS
9n[        UR                  U S45        g g g )NrQ   r   r1  ra   rA  rQ   ra   rv   -C6?MbP?rcondư>rw   )rS   r   r   rX   r3  r4  r   r   r@   r   meanrW   rT   r'  rU   )rY   r[   skip_bigXr4  r   Yri   s           r]   _check_orthrm  _  sF   
Ae$++E2A
((5/

C
*CQA1a&!Avvxc*QSS	A&!Avvxc*1uXii##A&HHQNSXXa^+sxx1~%A66HHUO$QWWq!f%$QWWq%j) ur_   r  z"test only on 64-bit, else too slowc                  x    Sn  [        U [        R                  SS9  g ! [         a  n[	        S5      UeS nAff = f)Ni T)rj  z.memory error perhaps caused by orth regression)rm  rS   r:  MemoryErrorAssertionError)rY   r  s     r]   test_orth_memory_efficiencyrq  z  sA     	AArzzD1 <
	s    
949c                      [         R                  [         R                  [         R                  [         R                  /n / SQn[
        R                  " X5       H  u  p#[        X25        M     g )Nra   rQ   rt   ri  r   )rS   r;   r:  r<   r_  	itertoolsproductrm  )rW  rs  r   rY   s       r]   	test_orthrv    sD    jj"**bllBMMBFE""61A 2r_   r   c                     [         R                  " SU S9n[         R                  " SU S9n[        U5      nUR                  [        U5      R                  :X  d   eUR
                  S:X  d   eg Nr   r   rQ   )rS   r   rF   r   r[   r@   )r   r}   r  oas       r]   test_orth_emptyrz    sW    
r"A		B	aB88tBx~~%%%88vr_   c                   \   \ rS rSrS r\R                  R                  S\\	\
R                  \\
R                  /5      S 5       r\R                  R                  SSS/5      \R                  R                  SSS/5      \R                  R                  S	S
S/5      S 5       5       5       rSrg)TestNullSpacei  c                    [         R                  R                  S5      n[         R                  [         R                  [         R
                  [         R                  /n/ SQn[        R                  " X#5       GH  u  pE[         R                  " SU4US9n[         R                  " U5      R                  nSU-  n[        U5      n	[        U	R                  XUS-
  45        [        Xi-  SUS9  [        UR                   5      n	[        U	R                  S5        [        UR                   U	-  SUS9  UR#                  SUS-  -   U5      n[        U5      n	[        U	R                  XUS-
  US-  -
  45        [        Xi-  SUS9  US	:  d  GM  [         R                  R                  S5      nUR%                  US	5      UR%                  S	U5      -  nUS
UR%                  US5      -  UR%                  SU5      -  -   nUR'                  U5      n[        USS9n	[        U	R                  XUS	-
  45        [        USS9n	[        U	R                  XUS-
  45        GM     g )Nra   rs  rQ   r   r1  r   rA  rc  rv   rd  re  rf  rh  rw   )rS   rT   r'  r;   r:  r<   r_  rt  ru  r   r3  r4  r%   r   r@   r   rW   randnrU   rX   )
r|   ri   rW  rs  r   rY   rk  r4  r   rl  s
             r]   test_null_spaceTestNullSpace.test_null_space  s   ii##A&**bjj",,F"&&v5EBAb)A((2,""C*C1A1c(+AE13/133A&)ACC!GQS1		!ad(A&A1A1!eadl"34AE13/1uii++A.HHQNSXXa^3sxx1~-A>>HHRLq-QWWqa%j1q-QWWqa%j1; 6r_   r   c                     [         R                  " SUS9n[         R                  " SUS9n[        U5      nUR                  S:X  d   eUR
                  [        U5      R
                  :X  d   eg rx  )rS   r   rF   r%   r@   r[   )r|   r   r}   r  nsas        r]   test_null_space_empty#TestNullSpace.test_null_space_empty  sY    HHV2&VVAR myyF"""yyJrN00000r_   r  TFr   r  rL  r  c                    [         R                  R                  S5      nSnUR                  SUS-  -   U45      n[	        UR                  5       XUS9n[        Xg-  S[         R                  " UR                  5      R                  S-  S9  g )	Nl   'YeN ri  ra   rQ   )r  r   r  r   r   rA  )
rS   rT   rU  standard_normalr%   r   r   r3  r[   r4  )r|   r  r   r  ri   rY   rk  rl  s           r]   test_null_space_options%TestNullSpace.test_null_space_options  sw     ii##$;<QT1.qvvx[%24qrxx'8'<'<S'@Ar_   r   N)r   r   r   r   r  r   r   r   rd   r   rS   r;   r   r<   r  r  r   r   r_   r]   r|  r|    s    #2J [[TC

GR\\#RS1 T1 [[]T5M:[[^dE];[[_w.@AB B < ;Br_   r|  c            	         [        S[        5      n U S S 2S S24   nU S S 2SS 24   n[        [        X5      [        R
                  S-  /S-  SS9  [        [        X!5      [        R
                  S-  /S-  SS9  X4 H8  n[        [        X35      [        R                  " UR                  S   5      SS9  M:     [        R                  " / SQ/ SQ/ S	Q/ S
Q/5      nSn[        [        US S 2S S24   US S 2SS 24   5      S   USS9  [        [        US S 2SS 24   US S 2S S24   5      S   USS9  Sn[        [        US S 2S S24   US S 2S/4   5      USS9  [        [        US S 2S/4   US S 2S S24   5      USS9  Sn[        [        US S 2S S24   US S 2S/4   5      USS9  [        [        US S 2S/4   US S 2S S24   5      USS9  Sn[        [        US S 2S S24   US S 2SS 24   5      US/SS9  [        [        [        US   U5        [        [        [        X3S   5        [        [        [        US S U5        [        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " [        R
                  S-  SS/5      n[        [        X5      USS9  S/S//nSS/SS//n[        [        XV5      SSS9  [        [        Xe5      SSS9  [        R                  " S5      n[        R                  " S5      n[        [        XV5      [        R                  " S5      5        [        R                  " S5      n[        R                  " S5      n[        [        XV5      [        R                  " S5      5        [        R                  " S5      n[        R                  " S5      n[        [        XV5      [        R                  " S5      5        g ) Nr  rt   r;  r@  rA  ra   )g4?gVRf?g8!@g6?)gN$ЗW?gJg~'@g3:]$)gvMg ۿgPT#ge,?)g΀?g+?gNG@gS<ʿg"	?rQ   r   r  r  gL0?gĹ-?gyv?r   r  )r   ra   r   )r   r   ra   r  rn  r  r  r   r   r   r   r  )r"   r   r   r!   rS   pir9   r@   r4   r/  r0  r   )Hr\   r   r  r  r}   r   s          r]   test_subspace_anglesr    s   EA	!RaR%A	!QR%AOA)BEEBJ<!+;%HOA)BEEBJ<!+;%HV-rxx
/C"	$ 
 		U	W	X	V	X	YA
 !HOAa!eHa12h7:H OAaeHa2A2h7:H  HOAa!eHaA3i8(OOAa!fIqBQBx8(O HOAa!eHaA3i8(OOAa!fIqBQBx8(O HOAa!eHa12h7(A  *oqtQ7*oqA$7*oq"vq9 	)	 	A
 	)	 	A
 xxq!Q(HOA)8%@
 A3A
!q!fAOA)2E:OA)2E: 	A
AOA)288D>:
A
AOA)288D>:
A
AOA)288D>:r_   c                   h    \ 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S rS rSrg)TestCDF2RDFi  c                 0    [         R                  " SX5      $ )Nz...ij,...jk->...ik)rS   einsum)r|   r}   r   s      r]   matmulTestCDF2RDF.matmul  s    yy-q44r_   c                 X    [        U R                  X!5      U R                  X25      5        g rc  )r   r  )r|   r~   rl   r  s       r]   assert_eig_validTestCDF2RDF.assert_eig_valid   s"    !KKKK	
r_   c                     [         R                  " S5      n[         R                  " S5      [         R                  " S5      p2[        X#5      u  pEU R                  XEU5        g )Nr   r   )rS   r   r&   r  r|   rk  r~   rl   wrr   s         r]   test_single_array0x0real$TestCDF2RDF.test_single_array0x0real&  sC    HHVxx{BHHV,1ba(r_   c                     [         R                  " SS/SS//5      n[         R                  R                  U5      u  p#[	        X#5      u  pEU R                  XEU5        g )Nra   rQ   rt   r   rS   r4   r7   r
   r&   r  r  s         r]   test_single_array2x2_real%TestCDF2RDF.test_single_array2x2_real-  sL    HHq!fq"g&'yy}}Qba(r_   c                     [         R                  " SS/SS//5      n[         R                  R                  U5      u  p#[	        X#5      u  pEU R                  XEU5        g )Nra   rQ   r   r  r  s         r]   test_single_array2x2_complex(TestCDF2RDF.test_single_array2x2_complex3  sL    HHq!fr1g&'yy}}Qba(r_   c                     [         R                  " / SQ/ SQ/ SQ/5      n[         R                  R                  U5      u  p#[	        X#5      u  pEU R                  XEU5        g )Nrs   ru   r  r  s         r]   test_single_array3x3_real%TestCDF2RDF.test_single_array3x3_real9  sF    HHiI67yy}}Qba(r_   c                     [         R                  " / SQ/ SQ/ SQ/5      n[         R                  R                  U5      u  p#[	        X#5      u  pEU R                  XEU5        g Nrs   )r   rT  rv   )r   r  rT  r  r  s         r]   test_single_array3x3_complex(TestCDF2RDF.test_single_array3x3_complex?  sF    HHiJ78yy}}Qba(r_   c                 (   [        SS5       H  n[        R                  R                  S5        [        R                  R	                  SX5      n[        R
                  R                  U5      u  p4[        X45      u  pVU R                  XVU5        M     g )Nra   r   iɚ;r   )	r   rS   rT   r  rU   r7   r
   r&   r  r|   r  rk  r~   rl   r  r   s          r]   test_random_1d_stacked_arrays)TestCDF2RDF.test_random_1d_stacked_arraysE  se    q!AIINN9%		sA)A99==#DAQ]FB!!"!, r_   c                     [        SS5       Hd  n[        R                  R                  SSX5      n[        R                  R                  U5      u  p4[        X45      u  pVU R                  XVU5        Mf     g )Nra   r   ri  )r   rS   rT   rU   r7   r
   r&   r  r  s          r]   test_random_2d_stacked_arrays)TestCDF2RDF.test_random_2d_stacked_arraysN  sW    q!A		r2q,A99==#DAQ]FB!!"!,	 r_   c                     [         R                  " S5      [         R                  " S5      p![        [        [
        X5        g )Nr   )rQ   )rS   r   r4   r/  r0  r&   r|   r~   rl   s      r]   test_low_dimensionality_error)TestCDF2RDF.test_low_dimensionality_errorV  s%    xx|RXXd^1j'10r_   c                     [         R                  " S5      [         R                  " S5      R                  SS5      p![        [        [
        X5        g )Nrt   rw   rQ   rS   r:   r.  r/  r0  r&   r  s      r]   r1  !TestCDF2RDF.test_not_square_errorZ  s2    yy|RYYq\11!Q71j'10r_   c                     [         R                  " / SQ/ SQ/ SQ/5      n[         R                  R                  U5      u  p#[	        [
        [        X25        g r  rS   r4   r7   r
   r/  r0  r&   r|   rk  r~   rl   s       r]   test_swapped_v_w_error"TestCDF2RDF.test_swapped_v_w_error_  s7    HHiJ78yy}}Qj'10r_   c                     [         R                  " S5      [         R                  " S5      R                  SS5      p![        [        [
        X5        g )Nrt   r  rT  r  r  s      r]   test_non_associated_error%TestCDF2RDF.test_non_associated_errore  s2    yy|RYYr]221a81j'10r_   c                 n   [         R                  " / SQ/ SQ/ SQ/5      n[         R                  R                  U5      u  p#[	        [
        [        X#5        [         R                  " / SQ/ SQ/ SQ// SQ/ SQ/ SQ//5      n[         R                  R                  U5      u  p#[	        [
        [        X#5        g )Nrs   r   )rQ   rv   y      @      r  r  s       r]   test_not_conjugate_pairs$TestCDF2RDF.test_not_conjugate_pairsj  s    HHiL9:yy}}Qj'10 HH	<0	<0
  yy}}Qj'10r_   r   N)r   r   r   r   r  r  r  r  r  r  r  r  r  r  r1  r  r  r  r   r   r_   r]   r  r    sH    5
)))))--11
11
1r_   r  )F)rt  platformsysnumpyrS   numpy.testingr   r   r   r   r   r   r   r	   r/  scipy.linalgr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   scipy.linalg.lapackr(   r)   r*   r+   r,   r-   r.   r/   r0   scipy.linalg._miscr1   scipy.linalg._decomp_qzr2   scipy.statsr3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   scipy.linalg._testutilsrG   scipy.sparse._sputilsrH   scipy._lib._testutilsrI   scipy.linalg.blasrJ   scipy.__config__rK   ImportErrormachineIS_WASMr   r^   r:  REAL_DTYPESr_  rR   r  rn   rp   r   ra  r  r  rK  r  r   r  xfail_on_32bitr  r  r  r  r  r  r  r  r"  blas_providerblas_versionrQ  r}  r  r  r  r  r  r  xfailr#  r%  rm  r  r[   intpr  rq  rv  r   rd   r   rz  r|  r  r  r   r_   r]   <module>r     s     
 5 5  *N N N N N N N NA A A $ 4 #; ; ; ; ; ; 8 ( 3 '' <<<'U8+;+;+=AU+U (-E  zz2::&,,.	~	%
4'= '=Tn4 n4b	f$ f$P	~! ~!BJ$ J$XM# M#^M  G$;<ABr  C =#; ;|E EE
. E
.PN- N-b}4 }4@Y# Y#x  $ #	/08@M./7	BLp' p'fG5 G5T> ><- -6
 H$$&)3/  1
1
#$ uL  N4N4@5/ 5/p*6 BHHRWW%..2?  AA  UBJJNO P8B 8BvB;J[1 [1k_  Fs   N NN