
    doin                    l   S SK r S SKrS SKrS SKrS SKrS SKJrJrJ	r	J
r
JrJr  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/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8  S SK9J:r:  S SK;J<r<  S SK=J>r>  S S	KJ?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrIJJrJJKrKJLrLJMrMJNrNJOrOJPrPJQrQ  S S
KRJSrS  S SKTJUrU  S SKVJWrW  S SKXJYrY  S SKZJ[r[  S SK\J]r]  \R                  S:H  =(       d    \R                  " 5       S;   r_S\`4S jra\R                  \R                  /rc\R                  \R                  /re\c\e-   rfS rg " S S5      rh " S S5      ri " S S5      rj " S S5      rk " S S5      rl " S S 5      rm " S! S"\m5      rn\R                  R                  \_S#S$9\R                  R                  S%5      \R                  R                  S&5      \R                  R                  S'5      S( 5       5       5       5       rtS) ru " S* S+5      rv " S, S-5      rw " S. S/5      rx " S0 S15      ry " S2 S35      rz " S4 S55      r{S=r|r}\]S6   S7   S8   r|\]S6   S7   S9   r} " S: S;5      r~ " S< S=5      r " S> S?5      r " S@ SA5      rSB r\R                  R                  \R                  " 5       SC:H  SDS$9SE 5       rSF rSG r\R                  GR                  SSHSI9SJ 5       r " SK SL5      rSYSM jr\R                  GR                  \R                  R                  \GR                  " \GR                  5      GR                  SN:  SOS$9SP 5       5       rSQ r\R                  GR!                  SR\\`\R                  \\R                  /5      SS 5       r " ST SU5      rSV r " SW SX5      rg)Z    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)skip_xp_invalid_arg)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       Z/var/www/html/land-ocr/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'.
rR      r   zinput type not supported.      ?)
isinstanceintrU   rE   lenr@   	TypeErrorr3   rvsrX   rW   r5   )dim_or_eigvrngdimdvhs         r^   symrandro   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rb   rR      rR         	   ]   rR   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 )Nrt   rv   rl   ry   rz   rR   r   )r4   rX   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 )Nrt   rR   rw   y      @      ?y      "@      ?y      W@      @rR   r   r{   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 )	Nrt   rv   Fcheck_finitery   rz   rR   r   r{   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   rR   Thomogeneous_eigvalsrR   r   )rT   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parametrizere   floatr;   complexr<   r   __static_attributes__r   r`   r^   rq   rq   \   sG    .... [[TC)#LM= N=r`   rq   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 )Nrt   rv   ry   rz   rR   r   rb   ru         @r   r   r   rb   r   rR   leftright)r4   r
   r>   r1   r   rB   rangerX   	r}   r~   r   rm   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 )Nrb   rR   r         ?       @y      ?       )r4   r
   r   r   rW   rX   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 )Nrt   r   rb   r   ru   )r4   r
   r   r   rW   rX   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 )Nrb   r   Tr   rb   r   r   )r
   r   r   r   rT   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   rb   r   rtolatolerr_msggHz>)r   r   r   )r   r   r   y             rQ   g|=)tolr   )rC   rT   rF   r@   r
   r   r   r   lexsortr   rf   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   rT   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)rb   r   ru   )rR   r   r   )r   rR   r   )r   r   rR   )rb   r   r   )r   rb   r   r   r   r   ru   ru   ru   r  r	  )r5   r4   r9   rF   rT   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$ )	NrR   )rb   r   r   r   )r   rb   r   r   r   )r   r   rb   r   )r   r   r   rb   rb   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  )rT   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  ru   r  rQ   )rT   rU   RandomStatero   r   )r}   rj   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 )Nrt   rv   Fr   ry   rz   rR   r   rb   ru   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.rx   ru   rR   N)rT   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.rR         "@ru   N)rF   rT   r:   r/  r0  r1  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                  " 5          [        R
                  " S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@)r:  g      L@g      Z@g      o@float64r   )       @      @      $@r9  )r   r"        &@g      =@)r"        @g      *@g      ?@)r5  r?  g      1@g     A@r  z%invalid value encountered in multiplyr=  +=r          @)	rT   r4   r
   warningscatch_warningsfilterwarningsRuntimeWarningiscloseany)r}   r]   r   r  Vs        r^   test_gh_11577TestEig.test_gh_11577f  s     HH///02 :CD HH,,,-/ 7@A
 1y $$&##A>S::a51557777::a51557777 '&&s   %A3C""
C0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   rR   r   Tr   r   )rT   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ru   rR   )   rT  l   F)Q)r   r   )r   r   r   r   rb   )	rT   rU   default_rngrY   dictr
   r   rf   r   )r}   rQ  r   r   r   r\   batch_shape
core_shaperj   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,  r2  r6  rK  r   r   r   re   r   rT   r;   r   r<   r   
complex128r\  r   r   r`   r^   r   r      s4   C(<<
 AF49H;TD"&*."A"*
-8: [[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`.
   rR         ?rb         r          r   rQ         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.rb   	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.rb   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.        rb   rR   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.rb   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  rb   rR   r  N)
r@   rr  r0   r{  r8   r   rA   rx  r   ry  r  s           r^   test_zhbevxTestEigBanded.test_zhbevx0  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.rR   rx   r   selectselect_rangerb   h㈵>rm   Fr   N)
r   rz  ru  r   rA   rv  r{  rx  rT   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. NrR   rx   r   r  rb   r  rm   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_bandede  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.rR   Nrb   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.rR   Nrb   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   rb   r   Teigvals_only)rT   r   r   r4   r@   r\   )r}   r   a_bandr   rm   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   re   r   rT   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  rb   rk  r   N)r6   rl   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   rQ   rj  lapack_driverfoor   r   r   r  )r0  r1  r#   rl   r  rg   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   rb   r  r  r  rR   rx   r  rm   N)	r#   rl   r  r   rA   r   r0  r1  rf   )	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   rb   r  rR   rx   r  rm   )r0  r1  r$   rl   r  r8   r   rA   r   r   r  rf   )	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  rb   r   r   r  rR   rj  rm   )r   r   r   r   r   N)rT   r4   r$   ndimr   r   r@   )r}   r~   r   xrJ  s        r^   test_eigh_tridiagonal_1x1,TestEigTridiagonal.test_eigh_tridiagonal_1x1N  s    HHdVHHRLQ5vv{{SvFvv{{vv{{52$=)SwGvv{{ww$ww&   r`   )rl   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 5       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)TestEighia  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 )Nrb   rR   ru   rT  )type)subset_by_valuesubset_by_indexr   r  r   r  wrongr  gvxevrgvd)r  r  )r0  r1  r   rT   r   re  s    r^   test_wrong_inputsTestEigh.test_wrong_inputsb  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 )Nru   )r0  r'   r   rT   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   rR   r	  rb   T)r[   r\   )	enumerateDTYPESr_   r   r   r@   rf   r   )r}   indr   r~   r   rm   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 )Nrb   rR      ru   rw   )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   rR   )	scipy.sparsesparseidentitytocscrT   
atleast_2dr0  r1  r   )r}   scipyr~   r   s       r^   test_eigh_of_sparseTestEigh.test_eigh_of_sparse  sJ     	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  )rZ   r\   r  r    r   r   )r_   r   r   rT   finfoeps)r}   r  r)  r~   r   rm   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 )Nrb   r  rj  V瞯<rB  rQ   r   )r   r   r4   )r}   r  r   rm   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  rt   )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)r[   )r~   r   r  r  rb   r  r.  rR   )rT   spacingr_   r   r   )r}   r  r  r   r~   r   r   rm   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 )
Nrw   rb   rR   r  )rb   333333??      ?rR   gffffff?r	  r=  r>  )r_   r   r   rf   r   rT   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   rR   r   Tr  )rT   r   r   rF   r@   r\   r   )r}   r   r~   r   rm   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  rK   r'  r   r   r   r  r1  r5  r:  rB  re   r   rT   r;   r   r<   r   r   r   r`   r^   r  r  a  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  )r0  rg   r   r1  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 )Nrt   rb   r  ru   rv   TFfull_matricesr  ru   r   r   r  r   rX   rF   r9   r@   r\   charr   rf   r}   r~   rO  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 )Nrt   rv   rM  rN  ru   r   rP  rR  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 )Nrt   rT  rw   rx   rM  rN  r   r   r  r   rX   rF   r@   r9   r\   rQ  r   rf   rR  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 )	Nrb   rR   rT  rw   ru   rM  rN  r   r\  rR  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   ru   rM  rN  rb   r   )rT   rU   r(  r   r   r  r   rX   rF   r@   r9   r\   rQ  rf   )r}   rj   rZ   mr   r~   rO  r  rS  rT  rU  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 )Nrt   )rb   y               @ru   rv   rM  rN  rb   r   )r   r  r   rW   rX   rF   r@   r9   r\   rQ  r   rf   rR  s           r^   r   !TestSVD_GESDD.test_simple_complex1  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   ru   rM  rQ   rN  rb   r   )rT   rU   r(  r   listr@   r   r  r   rW   rX   rF   r9   r\   rQ  rf   )r}   rj   rZ   rc  r   rO  r~   r  rS  rT  rU  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  )rT   rU   r(  r;   r;  r<   r_  rV   rY   r   r  )r}   rj   sizesszr   r~   s         r^   test_crash_1580TestSVD_GESDD.test_crash_1580Q  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 )Nrt   rL  rv   F)r   r  ru   r   rP  )r}   r~   r  rS  rT  rU  r   s          r^   r,  TestSVD_GESDD.test_check_finiteZ  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?rv  r  r  r  )r  rv  rw  rv  r  r  )r  r  rv  rw  rv  r  )r  r  r  rv  rw  rv  r  )rT   r4   r   r  )r}   r   s     r^   test_gh_5039TestSVD_GESDD.test_gh_5039d  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_mbrb   l        r   r  FrO  r   rj  r   )rI   rT   r9   r;   r   r   )r}   r]   r  rS  rT  s        r^   test_large_matrixTestSVD_GESDD.test_large_matrixu  sb     	%(HHaZrzz2%q.b!c"$"U)+S1r`   rc  r   rb   rR   rZ   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)	rT   r9   minr\   rQ  lowerr   r   r@   )r}   rc  rZ   r\   r~   r#  dchar
real_dcharr  rS  rm   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   rc  rZ   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 )Nru   r   r   Fr~  r   r  )rT   rF   r   r   r   r#  r\   )r}   r   rc  rZ   a0u0s0r   r~   r  rS  rm   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   rX  r]  r`  rd  r   rj  rq  r,  rx  r   r   skipifrJ   slowr  r   r  r  re   r   rT   r;   r   r<   r   r   r   r`   r^   rG  rG    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`   rG  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 WASMrz  z#out of memory in 32-bit CI workflowrR   ri  c                      [         R                  " S[         R                  S9n [        [        5         [        U 5        S S S 5        g ! , (       d  f       g = f)N)i  i  r   )rT   r   r;  r0  r1  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)NrR   r   NaN)matchFr   )rT   rF   nanr   r	   r1  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   ru   r   r   rR   )rT   r   r   r4   r   r   rF   r\   )r}   r   r~   rS  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 )Nrt   rv   ru   r   rb   rR   r   r   rf   r}   r~   rS  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 )Nrt   r[  rR   r   rb   r  r  s      r^   r]   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 )Nrb   rR   rT  rw   ru   r   r  r  s      r^   r`  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 )Nrt   )rb   r                @rv   ru   r   rb   rR   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 )Nrt   )rT  y              @rx   rR   r   rb   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 )Nrb   rR   rT  rw   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 )	Nrt   rv   Fr   ru   r   rb   rR   r  r  s      r^   r,  TestSVDVals.test_check_finite  sQ    	9-AE*A!!!$$!$%$%r`   c                 z    [         R                  R                  S5      nUR                  S5      n[        U5        g )Nr'  )i  i
  )rT   rU   rU  r   )r}   rj   r~   s      r^   test_crash_2609TestSVDVals.test_crash_2609	  s+    ii##D)JJ|$
r`   r   N)r   r   r   r   r   r   r   re   r   rT   r;   r   r<   r   r   r]  r`  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rb   r   r   ru   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   rR   ru   rR   ry   ru   rw   ru   rx   ru   r   r   rX   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  rt   r   ru   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  rt   ru   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pivotingrb   r   ru   
rT   rC   r   r   r5   r   r   r   rX   rF   r}   r~   r  r  prl   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  rt   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  rt   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  rR   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  rb   r   rR   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  rR   ry   rw   ru   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  rR   ry   rw   ru   Tr  rb   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  rR   ry   rw   ru   economicmoderS  rR   rR   r   r   rX   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  rR   ry   rw   ru   Tr  r  r  rb   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  rR   ry   rw   ru   r  r  rb   r   rb   rR   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  rR   ry   rw   ru   r  Tr  r  rb   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  rR   ry   rw   ru   r  r  rt   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  rR   ry   rw   ru   Tr  r  rt   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  rR   rw   r  rR   r  rR   ru   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  rb   r   rR   r  r  rT   rC   r   r   r5   r   r   r   rX   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  rR   ry   rw   r  r  rR   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  rb   r   rR   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  rb   rR   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  rb   rR   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  rb   rR   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  rb   rR   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ru         @      @rw   rw   rR   y       @      @ru   rR   r  ru   )r   r   rW   rX   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 )Nr8  r:  r;  rb   rR   r9  r   ru   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 )Nr8  r:  r;  r>  ru   r  r?  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       @      @rR   ry   y      @      @ru   r  r  rb          @       @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 )Nr8  r:  r;  r>  r   T	conjugater   r   r   rW   r?  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 )Nru   r9  rw   rF  rR   r  r  rb   r   TrJ  rL  r?  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 )Nr8  r:  r;  r>  TrJ  )r   rT   r4   r   r   rW   r?  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 )	Nr8  r:  r;  Tr  rb   r   ru   )r4   r   r   r5   r   rT   r   r   rW   rX   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 )Nr8  r:  r;  Tr  r>  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 )Nr8  r:  r;  Tr  r>  rY  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  rR   rT   rU   r(  r   r   r   rX   rF   r}   rj   rZ   r#  r~   r  r  s          r^   rd  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  rR   r   rT   rU   r(  r   r   r   r   rF   	r}   rj   rZ   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 r`  re  	r}   rj   rZ   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  rR   Tr  rb   r   rT   rU   r(  r   r   r   r5   r   r   r   rX   rF   r}   rj   rZ   r#  r~   r  r  r  rl   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!  rR   ra  r}   rj   rc  rZ   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'  rt  r!  rR   r  r  r   re  )
r}   rj   rc  rZ   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'  rt  r!  rR   r  r  re  )
r}   rj   rc  rZ   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'  rt  r!  rR   Tr  rb   r   rn  r}   rj   rc  rZ   r#  r~   r  r  r  rl   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|  )
rT   rU   r(  r   r   r   rX   rF   r   r@   ru  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'  rt  r!  rR   Tr  r  rb   r   r  )rT   rU   r(  r   r   r   r5   r   r   r   rX   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!  rt  rR   ra  ru  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!  rt  rR   Tr  rb   r   rn  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  rR   rQ   )	rT   rU   r(  r   r   r   rW   rX   rF   rb  s          r^   rj  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  rR   rQ   r   re  rf  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  re  rj  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  rR   rQ   Tr  rb   r   )rT   rU   r(  r   r   r   r5   r   r   r   rW   rX   rF   ro  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   ru   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  )lworkru   ri  r   r  r   rR   )r   r   r0  	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`   rc  r  rZ   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  rb   r   r  r  r  raw)	r  rT   r9   r   r   r@   r\   rf   int32)r}   rc  rZ   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  rT   r   r   r   r#  r:   )
r}   rc  rZ   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   )rT   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(  r+  r.  r1  r4  r   r@  rC  rG  rM  rP  rS  rV  rZ  r]  rd  rg  rk  rp  rv  ry  r}  r  r  r  r  r  rj  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   rX   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 r`  rT   rU   r(  r   r   r   rX   rF   r}   rj   rZ   r#  r~   r  r  s          r^   rd  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  ru   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  ru   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 r7  )r   r   rW   rX   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 rs  r  r}   rj   rc  rZ   r#  r~   r  r  s           r^   rv  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!  rt  rR   r  r  )
rT   rU   r(  r   r   r   rX   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  )	rT   rU   r(  r   r   r   rW   rX   rF   r  s          r^   rj  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!  rt  rR   rQ   r  r  )rT   rU   r(  r   r   r   rW   rX   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`   rc  r  rZ   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  rT   r9   r   r   r@   r\   )r}   rc  rZ   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  rT   r   r   r   r#  )r}   rc  rZ   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  rd  r  r  r  r   rv  r  r  rj  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   rW   rX   rT   rF   rf   )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     ru   r  ri  ru   rx   rA  +<r   r   r   )r   r  r   rT   rI  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lhprR         rc   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  r5        @      g      @r  r=  rm        @rA   rA  r  r  -q=r   rR   )r   r  r   rT   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  rb   )r0  r1  r   )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   rW   rX   )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   rR   r  r  r   )rT   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   rR   rA   r  r   r  r   )rT   rC   r   rY   )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   rR   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:  $ )NrQ   r4  )rT   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   rb   rc  )rT   rC   r;   r;  r   rY   )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   rT   r>   r  r  r,  re   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@rb   calc_qrT  decimalr   r   rX   r}   r~   h1rn   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%  rb   r)  )r   r   rW   rX   r}   r~   rn   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)rb   rR   ru   rT  rw   rx   r  )r   rR   ru   rT  rx   r  rR   )r   rR   rR   ru   r   ru   rR   )r   r   rR   r  r   r   rR   )r   ru   rb   rR   r   rb   rR   )r   rb   rR   ru   r   rb   r   )r   r   r   r   r   rb   rR   rb   r)  r-  r2  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 )Nru   rR   )r   r   rb   r)  )rT   rF   r   r   rX   r2  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  rR   rb   r)  )rT   rU   r(  r   r   r   rX   r}   rj   rZ   r#  r~   rn   r  s          r^   rd  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  rR   rQ   rb   r)  )rT   rU   r(  r   r   r   rW   rX   r;  s          r^   rj  "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(  rb   F)r*  r   rT  r+  r-  r.  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 )
NrR   rb   r  r  r)  y       @      r   y      @      @y      (@       )r   r   rT   rF   )r}   r~   rn   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   ru   Tr)  )rT   r   r   r@   r\   rF   )r}   r   r~   rn   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   r5  r8  rd  rj  r,  rC  r   r   r   re   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  rw   r+  r   )rT   rU   r(  rY   r;   r   r   rX   rF   r   r   r5   	r}   rj   rZ   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 )NrN  rw   r   
rT   rU   r(  r   r   rX   rF   r   r   r5   rO  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 )NrN  rw   rQ   r   )rT   rU   r(  r   r   rW   rX   rF   r   r   r5   r   rO  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 )NrN  rw   rQ   r+  r   )rT   rU   r(  rY   r<   r   r   rW   rX   rF   r   r   r5   r   rO  s	            r^   test_qz_complex64TestQZ.test_qz_complex648	  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 )NrN  rw   r   )r  r   )rT   rU   r(  r   rW   rX   r   ru  r   rF   r   r   r5   )r}   rj   rZ   r]   r   rP  rQ  rR  r  aabbs              r^   test_qz_double_complexTestQZ.test_qz_double_complexE	  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      @)ri  r?       Er  )皙@r        Gr  )rj  rj  rm  rj  )rj  r   g      rl  )rj  r<  r  rj  )r=  r   r  r=  c                     US:H  $ )Nr   r   )araibetas      r^   r  ,TestQZ.test_qz_double_sort.<locals>.<lambda>m	  s    bAgr`   r  )	rT   r4   r0  r1  r   r   r   rX   r   )r}   r]   r   rP  rQ  rR  r  r  s           r^   test_qz_double_sortTestQZ.test_qz_double_sortU	  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 )NrN  rw   Fr   r   rV  rO  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   rS  rW  rZ  r]  rb  rs  r,  r   r   r`   r^   rL  rL  	  s'    
'
',,' 5FF
'r`   rL  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              )rQ   y333333@y              y      @      )re  rf  rg  r  rh  )ri  rj  rk  r  )rl  g      :@rm  r  )rb   rR   rb   )rb   ru   rT  )rb   ru   ru   )rb   ru   r|  rT  )r"  rj  r   r   )r=  r=  r<  r@  )r@  r=  rj  r   )r  r=  rC  r@  )rC  r>  r  r>  )r@  r@  r<  r5  )r5  rj  r  r  )r"  rj  r=  r@  rR   r   rb   )rT   r4   rF   r5   r]   r   )
clsA1B1A2B2A3B3A4B4A5s
             r^   setup_class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  )rT   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   rb   rR   T)rT   rF   r@   r   rX   rW   r   trilr9   r   r
   r   r   r   r2   r4   )r}   r]   r   rA   rP  rQ  alpharq  rR  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_all0
  s@    nnT"VVTVV4LDbJJrt+d+ 5r`   c                 &    U R                  S5        g )Nr  r  re  s    r^   test_lhpTestOrdQZ.test_lhp6
      ur`   c                 &    U R                  S5        g )Nr  r  re  s    r^   test_rhpTestOrdQZ.test_rhp9
  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rT   
empty_likeboolr   r  r  outnonzeros       r^   rA    TestOrdQZ.test_ref.<locals>.sortD
  D    --.CAvG!CMJqz1771<CLJr`   r  r}   rA   s     r^   test_refTestOrdQZ.test_refB
      	 	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>.sortO
  r  r`   r  r  s     r^   test_cefTestOrdQZ.test_cefM
  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 )Nrb   rR   r  r  )r    r]   r   r  )r}   r  s     r^   test_diff_input_typesTestOrdQZ.test_diff_input_typesX
  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 )NrR   r   rc   r  r  r  r  r  y             ?y      ?      ?yٿɿ      ?      r   rb   r  )	rT   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  rq  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^   rx  rx  	  sM    4% 4%l
,\,		6-5r`   rx  c                       \ rS rSr\R
                  R                  S5      S 5       r\R
                  R                  S 5       r	Sr
g)TestOrdQZWorkspaceSizei
  rw   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 )NrN     c                 
    X:  $ rc  r   r  rq  s     r^   r  7TestOrdQZWorkspaceSize.test_decompose.<locals>.<lambda>
      U\r`   ru  r  c                 
    X:  $ rc  r   r  s     r^   r  r  
  r  r`   r   )	rT   rU   r(  r;   r;  rY   r    r_  r<   )r}   rj   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 )NrN  r  r  r  )	rT   rU   r(  r;   r;  r_  r<   rY   r    )r}   rj   r  r  r]   r   SrX   r  rq  UrJ  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   )_datacopiedrb   rR   ru   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UR                  S5      n[        USS9  [        UR                  SS9  g	)
z4Check linalg works with non-aligned memory (float32)i  r   rR   r!  offsetcountr\   ri  ri  Toverwrite_aN)	r:   rT   uint8
frombufferdatar;   r/  r
   rX   r~   r  s     r^   test_aligned_mem_floatr  
  sT     	s"((#A 	affQcAA			(Atr`   ppc64lezcrashes on ppc64lec                      [        S[        R                  S9n [        R                  " U R                  SS[
        S9nUR                  S5      n[        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:   rT   r  r  r  r   r/  r
   rX   r  s     r^   test_aligned_memr  
  sT    
 	s"((#A 	affQc?A			(Atr`   c                      [        S[        R                  S9n [        R                  " U R                  SS[
        S9nUR                  S5      n[        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   rT   r  r  r  r   r/  r
   rX   r  s     r^   test_aligned_mem_complexr  
  sT     	d"((#A 	affQcAA			(Atr`   c                 v   [        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UR                  XC   R                  5      n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  .rb   )ri  r   rf   rd   rT   rE   r9   r   r\   itemsizer  r  r  r/  r@   rX   )funcr  rY  r   r~   r`  s         r^   check_lapack_misalignedr  
  s    :D3t9GadBJJ''!$))ADJJ$7$779JBrwwq		%&TZZ1BADJJ'B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      R	                  S5      n[         R                  " S[         R
                  S9n[         R                  " UR                  SS[        S9nUR	                  S5      n[         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  )rT   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
		#x(A
		%rxx(A
affQc?A			(A
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_banded.      J1r`   c                 &    [        [        S/5        g r#  )rG   r   re  s    r^   test_eigvalsTestOverwrite.test_eigvals1      GfX.r`   c                 &    [        [        S/5        g r#  )rG   r   re  s    r^   test_eigvalshTestOverwrite.test_eigvalsh4  s    Hvh/r`   c                 &    [        [        S/5        g r*  )rG   r   re  s    r^   r  !TestOverwrite.test_eigvals_banded7  s    NVH5r`   c                 &    [        [        S/5        g r#  )rG   r   re  s    r^   test_hessenbergTestOverwrite.test_hessenberg:  r,  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 )Nrt   r[  )r  r  r  c                    > [        TU 5      $ rc  )r   )r   xlus    r^   r  -TestOverwrite.test_lu_solve.<locals>.<lambda>C  s    hsA&6r`   )ru   )rT   r4   r   rG   )r}   r  r>  s     @r^   test_lu_solveTestOverwrite.test_lu_solve@  s.    HHiI67l6?r`   c                 &    [        [        S/5        g r#  )rG   r   re  s    r^   test_luTestOverwrite.test_luE      B)r`   c                 &    [        [        S/5        g r#  )rG   r   re  s    r^   test_qrTestOverwrite.test_qrH  rE  r`   c                 &    [        [        S/5        g r#  )rG   r   re  s    r^   test_rqTestOverwrite.test_rqK  rE  r`   c                 &    [        [        S/5        g r#  )rG   r   re  s    r^   
test_schurTestOverwrite.test_schurN  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>R  s    eAy&9r`   r  )dtypes)rG   rT   r;   r;  re  s    r^   test_schur_complex TestOverwrite.test_schur_complexQ  s!    9F8$&JJ

#;	=r`   c                 B    [        [        S/5        [        S S/5        g )Nr  c                     [        U SS9$ )Nr  r  )r   rQ  s    r^   r  (TestOverwrite.test_svd.<locals>.<lambda>W  s    c!7&Cr`   )rG   r   re  s    r^   test_svdTestOverwrite.test_svdU  s    C&*CfXNr`   c                 &    [        [        S/5        g r#  )rG   r   re  s    r^   test_svdvalsTestOverwrite.test_svdvalsY  r0  r`   r   N)r   r   r   r   r$  r'  r  r.  r2  r  r7  r:  r@  rC  rG  rJ  rM  rT  rY  r\  r   r   r`   r^   r!  r!  %  sT    342/0621@
***-=O/r`   r!  c                 F   [         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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 )NrR   r   r-  rb   gz]ʂ>r.  rR   rb   rB  rw   -C6?MbP?rcondư>rx   )rT   r   r   rY   r/  r0  r   r   r@   r   meanrX   rU   r(  rV   )rZ   r\   skip_bigXr0  r   Yrj   s           r^   _check_orthri  ]  sH   
Ae$++E2A
((5/

C
*CQA1a&!Avvxc7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)rf  z.memory error perhaps caused by orth regression)ri  rT   r;  MemoryErrorAssertionError)rZ   r  s     r^   test_orth_memory_efficiencyrm  x  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rb   rR   ru   ri  r!  )rT   r;   r;  r<   r_  	itertoolsproductri  )rS  ro  r   rZ   s       r^   	test_orthrr    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   rR   )rT   r   rF   r   r\   r@   )r   r~   r  oas       r^   test_orth_emptyrv    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 )Nrb   ro  rR   r   r-  r   rB  r_  rw   r`  ra  rb  rd  rx   )rT   rU   r(  r;   r;  r<   r_  rp  rq  r   r/  r0  r%   r   r@   r   rX   randnrV   rY   )
r}   rj   rS  ro  r   rZ   rg  r0  r   rh  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 rt  )rT   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  rH  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  rb   rR   )r
  r   r  r   r!  rB  )
rT   rU   rU  standard_normalr%   r   r   r/  r\   r0  )r}   r
  r   r  rj   rZ   rg  rh  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   re   r   rT   r;   r   r<   r  r  r   r   r`   r^   rx  rx    s    #2J [[TC

GR\\#RS1 T1 [[]T5M:[[^dE];[[_w.@AB B < ;Br`   rx  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  ru   r<  rA  rB  rb   )g4?gVRf?g8!@g6?)gN$ЗW?gJg~'@g3:]$)gvMg ۿgPT#ge,?)g΀?g+?gNG@gS<ʿg"	?rR   r   r  r  gL0?gĹ-?gyv?r   r  )r   rb   r   )r   r   rb   r  rn  r  r  r   r   r   r   r  )r"   r   r   r!   rT   pir9   r@   r4   r0  r1  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)rT   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   rm   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   )rT   r   r&   r  r}   rg  r   rm   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 )Nrb   rR   ru   r   rT   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 )Nrb   rR   r   r  r  s         r^   test_single_array2x2_complex(TestCDF2RDF.test_single_array2x2_complex1  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 )Nrt   rv   r  r  s         r^   test_single_array3x3_real%TestCDF2RDF.test_single_array3x3_real7  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 Nrt   )r   rT  rw   )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                    [         R                  R                  S5      n[        SS5       HV  nUR                  SX"45      n[         R                  R                  U5      u  pE[        XE5      u  pgU R                  XgU5        MX     g )Nr'  rb   r  r!  rT   rU   rU  r   r7   r
   r&   r  r}   rj   r  rg  r   rm   r  r   s           r^   test_random_1d_stacked_arrays)TestCDF2RDF.test_random_1d_stacked_arraysC  sg    ii##D)q!A

C;'A99==#DAQ]FB!!"!,	 r`   c                    [         R                  R                  S5      n[        SS5       HW  nUR                  SSX"45      n[         R                  R                  U5      u  pE[        XE5      u  pgU R                  XgU5        MY     g )Nr'  rb   r  ri  r  r  s           r^   test_random_2d_stacked_arrays)TestCDF2RDF.test_random_2d_stacked_arraysL  si    ii##D)q!A

BA>*A99==#DAQ]FB!!"!,	 r`   c                     [         R                  " S5      [         R                  " S5      p![        [        [
        X5        g )Nr   )rR   )rT   r   r4   r0  r1  r&   r}   r   rm   s      r^   test_low_dimensionality_error)TestCDF2RDF.test_low_dimensionality_errorU  s%    xx|RXXd^1j'10r`   c                     [         R                  " S5      [         R                  " S5      R                  SS5      p![        [        [
        X5        g )Nru   rx   rR   rT   r:   r/  r0  r1  r&   r  s      r^   r2  !TestCDF2RDF.test_not_square_errorY  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  rT   r4   r7   r
   r0  r1  r&   r}   rg  r   rm   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 )Nru   r  rT  r  r  s      r^   test_non_associated_error%TestCDF2RDF.test_non_associated_errord  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 )Nrt   r   )rR   rw   y      @      r  r  s       r^   test_not_conjugate_pairs$TestCDF2RDF.test_not_conjugate_pairsi  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  r2  r  r  r  r   r   r`   r^   r  r    sH    5
)))))--11
11
1r`   r  )F)rp  platformsysrD  numpyrT   numpy.testingr   r   r   r   r   r   r   r	   r0  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.conftestrK   scipy.__config__rL   machineIS_WASMr   r_   r;  REAL_DTYPESr_  rS   r  ro   rq   r   ra  r  r  rG  r  r   r  xfail_on_32bitparallel_threads_limitr  r  r  r  r  r  r  r  r  blas_providerblas_versionrL  rx  r  r  r  r  r  r  xfailr  r!  ri  r  r\   intpr  rm  rr  r   re   r   rv  rx  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o4 o4d	f$ f$P	~! ~!BH$ H$TM# M#^M  G$;<AB##A&r  ' C =#; ;|E EE
. E
.PN- N-b}4 }4@Y# Y#x  $ #+,V4V<*+F3I>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 \1r`   