
    Bpjw	             	          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/J0r0  S SK1J2r2  S SK3J4r4  S SK5J6r6  S S	KJ7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrI  S S
KJJKrK  S SKLJMrM  S SKNJOrO  S SKPJQrQ  S SKRJSrS  S SKTJUrU  SSKVJWrW  \R                  S:H  =(       d    \R                  " 5       S;   rYS\Z4S jr[\R|                  \R                  /r]\R~                  \R                  /r_\]\_-   r`S ra " S S5      rb " S S5      rc " S S5      rd " S S5      re " S S 5      rf " S! S"5      rg " S# S$\g5      rh\R                  R                  \YS%S&9\R                  R                  S'5      \R                  R                  S(5      \R                  R                  S)5      \R                  R                  \QS*S&9S+ 5       5       5       5       5       rnS, ro " S- S.5      rp " S/ S05      rq " S1 S25      rr " S3 S45      rs " S5 S65      rt " S7 S85      ruS=rvrw\US9   S:   S;   rv\US9   S:   S<   rw " S= S>5      rx " S? S@5      ry " SA SB5      rz " SC SD5      r{SE r|\R                  R                  \R                  " 5       SF:H  SGS&9SH 5       r}SI r~SJ r\R                  GR                  SSKSL9SM 5       r " SN SO5      rS\SP jr\R                  GR                  \R                  R                  \GR
                  " \GR                  5      GR                  SQ:  SRS&9SS 5       5       rST r\R                  GR                  SU\\Z\R|                  \\R~                  /5      SV 5       r " SW SX5      rSY r " SZ S[5      rg)]    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)get_lapack_funcs)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   )parametrize_overwrite_arg
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Tr6   r>   astype)nposdefdtypeAs       Z/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_decomp.py_random_hermitian_matrixrY   +   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'.
rL   rE   r   zinput type not supported.      ?)
isinstanceintrO   r=   lenr8   	TypeErrorr+   rvsrR   rQ   r-   )dim_or_eigvrngdimdvhs         rX   symrandrh   B   s     +s##JJsOA!
['
*
*
k
 A
%"344A	
T!Wq AQSSUAHrZ   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rE   rL      rL         	   ]   rL   r   r   r6   r   selfawexact_ws       rX   test_simpleTestEigVals.test_simple^   sC    	9-AJd2hJ>1qbz1n5!!-rZ   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 )Nrm   ro   re   rr   rs   rL   r   )r,   rR   copyr   r6   r   ru   s       rX   test_simple_trTestEigVals.test_simple_trd   sd    9i3S9;;FFHCCAJd2hJ>1qbz1n5!!-rZ   c                     / SQ/ SQ/ SQ/n[        U5      nS[        S5      -   S-  SS[        S5      -
  S-  /n[        X#5        g )Nrm   rL   rp   y      @      ?y      "@      ?y      W@      @rL   r   rt   ru   s       rX   test_simple_complexTestEigVals.test_simple_complexl   sM    	<0AJe$a'e$a') 	"!-rZ   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 )	Nrm   ro   Fcheck_finiterr   rs   rL   r   rt   ru   s       rX   test_finiteTestEigVals.test_finitet   sF    	9-AE*d2hJ>1qbz1n5!!-rZ   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   rV   r   rL   Thomogeneous_eigvalsrL   r   )rN   emptyr   r8   rV   r>   )rv   r   rw   rx   s       rX   
test_emptyTestEigVals.test_emptyz   s    HHV2&AJww$ww'"&&""56<<<<<A40ww&   ww'"&&""56<<<<<rZ    N)__name__
__module____qualname____firstlineno__rz   r~   r   r   pytestmarkparametrizer^   floatr3   complexr4   r   __static_attributes__r   rZ   rX   rj   rj   \   sG    .... [[TC)#LM= N=rZ   rj   c                      \ rS rS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\\\R2                  \\R6                  /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\R2                  \R:                  /5      S 5       5       5       5       5       r\R(                  R+                  S\\\/5      \R(                  R+                  SSS/5      \R(                  R+                  SS S!/5      \R(                  R+                  S"SS/5      S# 5       5       5       5       r\R(                  R+                  S$\\\/5      \R(                  R+                  S%\\\/5      \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"SS/5      \R(                  R+                  S*SS/5      S+ 5       5       5       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 )Nrm   ro   rr   rs   rL   r   rE   rn         @r   r   r   rE   r   rL   leftright)r,   r
   r6   r)   r   r:   rangerR   	rv   rw   rx   rf   ry   v0v1v2is	            rX   rz   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 rZ   c                    [         R                  " / SQ/ SQ/ SQ/5      n[        USSS9u  p#nUR                  [         R                  :X  d   eUR
                  S:H  R                  5       (       d   eUR                  [         R                  :X  d   eUR                  [         R                  :X  d   e[         R                  " / SQ5      n[        XSSS9u  p#nUR                  [         R                  :X  d   eUR
                  S:H  R                  5       (       d   eUR                  [         R                  :X  d   eUR                  [         R                  :X  d   eg )Nrm   ro   Tr   r   )rn   rL   rE           )	rN   r,   r
   rV   
complex128imagallfloat64r-   )rv   rw   rx   vlvrbs         rX   test_simple_dtypeTestEig.test_simple_dtype   s    HHiI67D1	rww"--'''!  """"xx2::%%%xx2::%%% GGI4t4	rww"--'''"!!####xx2::%%%xx2::%%%rZ   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 )NrE   rL   r         ?       @y      ?       )r,   r
   r   r   rQ   rR   rv   rw   rx   r   r   r   s         rX   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(&:< rZ   c                    [         R                  " SS/SS//5      n[        USSS9u  p#nUR                  [         R                  :X  d   eUR                  [         R                  :X  d   eUR                  [         R                  :X  d   eg )NrE   rL   r   Tr   )rN   r;   r
   rV   r   )rv   rw   rx   r   r   s        rX   test_simple_complex_eig_dtype%TestEig.test_simple_complex_eig_dtype   ss    
 JJAQ()D1	rww"--'''xx2==(((xx2==(((rZ   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 )Nrm   r   rE   r   rn   )r,   r
   r   r   rQ   rR   r   s         rX   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(&:< rZ   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 )NrE   r   Tr   rE   r   r   )r
   r   r   r   rN   inf)rv   rw   r   rx   r   s        rX   test_gh_3054TestEig.test_gh_3054   sm    SESEAd3$#$1AA	QArZ   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   rE   r   rtolatolerr_msggHz>)r   r   r   )r   r   r   y             rK   g|=)tolr   )r;   rN   r>   r8   r
   r   r   r   lexsortr   r_   r)   onessizer   r<   real_if_closer0   absr   r9   )rv   rW   B
atol_homog
rtol_homogr   r   B0msgrx   r   wtval1val2r   permpermtlengthbeta_nonzerowhresw_finwt_fins                          rX   _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:rZ   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   )r,   rN   errstater   rv   rW   r   s      rX   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)rE   r   rn   )rL   r   r   )r   rL   r   )r   r   rL   )rE   r   r   )r   rE   r   r   r   r   rn   rn   rn   r
  r  )r-   r,   r1   r>   rN   blockr  r   )rv   MKDZI3rW   r   s           rX   test_falkerTestEig.test_falker8  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$ )	NrL   )rE   r   r   r   )r   rE   r   r   r   )r   r   rE   r   )r   r   r   rE   rE   r   )omegac1c2rW   r   s        rX   matrices)TestEig.test_bad_geneig.<locals>.matricesH  sk    eQhB5BQAQ2 A QB3QA A 4KrZ   r
  r  d         @)r  )rN   r  r   r   )rv   r!  krW   r   s        rX   test_bad_geneigTestEig.test_bad_geneigE  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  rn   r  rK   )rN   rO   RandomStaterh   r   )rv   rc   rW   r   s       rX   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!rZ   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 )Nrm   ro   Fr   rr   rs   rL   r   rE   rn   r   r   r   r   )r
   r6   r,   r)   r   r:   r   r   s	            rX   test_check_finiteTestEig.test_check_finitej  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$<@ rZ   c                 z    [         R                  " S5      R                  SS5      n[        [        [
        U5        g)z:Check that passing a non-square array raises a ValueError.rq   rn   rL   N)rN   r2   reshapeassert_raises
ValueErrorr
   )rv   rW   s     rX   test_not_square_errorTestEig.test_not_square_error{  s(    IIaL  A&j#q)rZ   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.rL         "@rn   N)r>   rN   r2   r1  r2  r3  r
   r  s      rX   test_shape_mismatchTestEig.test_shape_mismatch  s?     FIIcN""1a(j#q,j#q,rZ   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@r   r   )       @      @      $@r;  )r   r$        &@g      =@)r$        @g      *@g      ?@)r7  r@  g      1@g     A@r
  z%invalid value encountered in multiplyr>  +=r          @)	rN   r,   r
   warningscatch_warningsfilterwarningsRuntimeWarningiscloseany)rv   rW   r   r  Vs        rX   test_gh_11577TestEig.test_gh_11577  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   rL   r   Tr   r   )rN   r   r
   r>   r8   rV   r   )rv   r   rw   rx   r   w_nvr_ns          rX   r   TestEig.test_empty  s    HHV2&Aq+,	ww$ww#))###BHHV,-xx6!!!xx4::%%%A40ww&   ww#))###xx6!!!xx4::%%%rZ   	include_BFTr   r   r   rV   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rn   rL   )   rU  l   F)Q)r   r   )r   r   r   r   rE   )	rN   rO   default_rngrS   dictr
   r   r_   r   )rv   rR  r   r   r   rV   batch_shape
core_shaperc   rW   r   kwargsr   r   jrefr%  s                    rX   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 + 'rZ   dtyporderCFndimrL   rn   overwrite_ac                    Sn[         R                  " XU-  5      R                  XU5      nUR                  XS9nUS:X  a  [         R                  " USU-  /5      nUR                  5       n[        XdS9u  pU=(       a?    UR                  [        :g  =(       a%    UR                  S:H  =(       a    UR                  S   n
Xg:H  R                  5       U
:w  d   eg )Nrn   rV   r`  rL   rd  F_CONTIGUOUS)rN   r2   r1  rS   stackr}   r
   rV   r^   rc  flagsr   )rv   r_  r`  rc  rd  rT   rw   a_refrx   rf   	a_inplaces              rX   test_overwrite_regTestEig.test_overwrite_reg  s    
 IIacN""1(HH4H-19!QqS"A1.  $WW^$VVq[$ GGN#	 	 
!Y...rZ   dtyp_adtyp_border_aorder_bndim_andim_boverwrite_bc	                 P   Sn	[         R                  " X-  5      R                  X5      n
U
R                  XS9n
[         R                  " X-  5      R                  X5      nUR                  X$S9nUS:X  a  [         R                  " U
SU
-  /5      n
US:X  a  [         R                  " USU-  /5      nU
R                  5       nUR                  5       n[        XXxS9u  pU=(       a    U
R                  [        :g  =(       ae    U
R                  [         R                  " X5      :H  =(       a;    U
R                  S:H  =(       a%    UR                  S:H  =(       a    U
R                  S   nU=(       a    UR                  [        :g  =(       ae    UR                  [         R                  " X5      :H  =(       a;    U
R                  S:H  =(       a%    UR                  S:H  =(       a    UR                  S   nX:H  R                  5       U:w  d   S5       eX:H  R                  5       U:w  d   S5       eg )Nrn   rf  rL   rd  ru  rh  rW   r   )rN   r2   r1  rS   ri  r}   r
   rV   r^   result_typerc  rj  r   )rv   ro  rp  rq  rr  rs  rt  rd  ru  rT   rw   r   rk  b_refrx   rf   rl  	b_inplaces                     rX   test_overwrite_genTestEig.test_overwrite_gen  s    IIacN""1(HH6H1IIacN""1(HH6H1Q;!QqS"AQ;!QqS"A1[J  $WW^$"#''R^^A-A"A$VVq[$ vv{$ GGN#	 	  $WW^$"#''R^^A-A"A$VVq[$ vv{$ GGN#	 	 
!Y.33.
!Y.33.rZ   r   N)vIh%<=r}  r}  r}  )"r   r   r   r   rz   r   r   r   r   r   r   r  r  r&  r+  r.  r4  r8  rL  r   r   r   r^   r   rN   r3   r   r4   r   r   r]  rm  r{  r   r   rZ   rX   r   r      s   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
44 [[Vc5'%:;[[WsCj1[[VaV,[[]T5M:/ ; - 2 </, [[XUG'<=[[XUG'<=[[Yc
3[[Yc
3[[X1v.[[X1v.[[]T5M:[[]T5M:$4 ; ; / / 4 4 > >$4rZ   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)TestEigBanded"  c                 $    U R                  5         g N)create_bandmatrv   s    rX   setup_methodTestEigBanded.setup_method#  s    rZ   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`.
   rL         ?rE         r          r   rK         r=  Nr   r         ?      ?)KLKUr-   r.   sym_matherm_matreal_matcomp_matr/   r
   realr0   	w_sym_linevec_sym_lin
w_herm_linevec_herm_linr1   r   bandmat_symr   bandmat_hermr   bandmat_realbandmat_compr2   r   bc)rv   NewevargsLDABr   s          rX   r  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#rZ   c                    [        S[        R                  SS9nU" 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.sbev	preferredrV   ilp64rE   	compute_vN
r(   rN   r   r  r0   r   r9   r  r   r  )rv   dsbevrx   evecinfoevec_s         rX   
test_dsbevTestEigBanded.test_dsbevw  si     !rzzMd..!<Q
]#!$q'4>>:!#e*c$2C2C.DErZ   c                    [        S[        R                  SS9nU" 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.sbevdr  r  rE   r  Nr  )rv   dsbevdrx   r  r  r  s         rX   test_dsbevdTestEigBanded.test_dsbevd  si     "';Ot//1=Q
]#!$q'4>>:!#e*c$2C2C.DErZ   c           
      L   [        U R                  5      u    n[        S[        R                  SS9nU" U R
                  SSSUSSS9u  p4pVn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.sbevxr  r  r   rE   rL   r  r   N)r8   r  r(   rN   r   r  r0   r   r9   r  r   r  )	rv   r  dsbevxrx   r  numifailr  r  s	            rX   test_dsbevxTestEigBanded.test_dsbevx  s     T\\"1!';O %+4+;+;S#q!56a%A!TQ
]#!$q'4>>:!#e*c$2C2C.DErZ   c                    [        S[        R                  SS9nU" 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.hbevdr  r  rE   r  N)
r(   rN   r   r  r0   r   r9   r  r   r  )rv   zhbevdrx   r  r  r  s         rX   test_zhbevdTestEigBanded.test_zhbevd  si     "'kRt00A>Q
]#!$q'4??;!#e*c$2D2D.EFrZ   c           
      L   [        U R                  5      u    n[        S[        R                  SS9nU" U R
                  SSSUSSS9u  p4pVn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.hbevxr  r  r   rE   rL   r  N)r8   r  r(   rN   r   r  r0   r   r9   r  r   r  )	rv   r  zhbevxrx   r  r  r  r  r  s	            rX   test_zhbevxTestEigBanded.test_zhbevx  s     T]]#1!'kR %+4+<+<c3156a%A!TQ
]#!$q'4??;!#e*c$2D2D.EFrZ   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.rL   rq   r   selectselect_rangerE   h㈵>rf   Fr   N)
r   r  r  r   r9   r  r  r  rN   longlong)rv   w_symw_hermind1ind2	w_sym_ind
w_herm_indv_lowerv_upper	w_sym_val
w_herm_vals              rX   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~~>rZ   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. NrL   rq   r   r  rE   r  rf   Fr   )r   r  r0   r  r   r9   r  r   r  r  r  r  )rv   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                      rX   test_eig_bandedTestEigBanded.test_eig_banded  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IrZ   c                    [        S[        R                  SS9n[        U R                  5      u  p#U" U R
                  U R                  U R                  5      u  pEn[        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[        X{5        g)	zOCompare dgbtrf  LU factorisation with the LU factorisation result
of linalg.lu.gbtrfr  r  rL   NrE   r   	permute_l)r(   rN   r   r8   r  r  r  r  r-   r   r   r   )rv   dgbtrfr  r  lu_symm_bandipivr  ur   p_linl_linu_lins               rX   test_dgbtrfTestEigBanded.test_dgbtrf  s     "';OT]]##)$*;*;TWWdgg#N D ail+,tww()Al1TWW9Q;q=!A#a%#78!A#>>A * !!<e!!+rZ   c                    [        U R                  5      u  p[        S[        R                  SS9nU" U R
                  U R                  U R                  5      u  pEn[        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[        X{5        g)	zOCompare zgbtrf  LU factorisation with the LU factorisation result
of linalg.lu.r  r  r  rL   NrE   r   r  )r8   r  r(   rN   r   r  r  r  r-   r   r   r   )rv   r  r  zgbtrfr  r  r  r  r   r  r  r  s               rX   test_zgbtrfTestEigBanded.test_zgbtrf#  s     T]]#!'kR#)$*;*;TWWdgg#N D ail+,tww()Al1TWW9Q;q=!A#a%#78!A#>>A * !!<e!!+rZ   c                 R   [        S[        R                  SS9u  pU" U R                  U R                  U R
                  5      u  p4nU" X0R                  U R
                  U R                  U5      u  pe[        R                  " U R                  U R                  5      n[        Xg5        g)z]Compare dgbtrs  solutions for linear equation system  A*x = b
with solutions of linalg.solve.r  gbtrsr  r  N)r(   rN   r   r  r  r  r   r/   r   r  r   )rv   r  dgbtrsr  r  r  yy_lins           rX   test_dgbtrsTestEigBanded.test_dgbtrs3  s|     *bjj
 $*$*;*;TWWdgg#N DwwFT]]DFF3!!+rZ   c                 R   [        S[        R                  SS9u  pU" U R                  U R                  U R
                  5      u  p4nU" X0R                  U R
                  U R                  U5      u  pe[        R                  " U R                  U R                  5      n[        Xg5        g)z]Compare zgbtrs  solutions for linear equation system  A*x = b
with solutions of linalg.solve.r  r  r  N)r(   rN   r   r  r  r  r  r/   r   r  r   )rv   r  zgbtrsr  r  r  r  r  s           rX   test_zgbtrsTestEigBanded.test_zgbtrs@  s|     *bmm;
 $*$*;*;TWWdgg#N Dww$GT]]DGG4!!+rZ   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   rE   r   Teigvals_only)rN   r   r   r,   r8   rV   )rv   r   a_bandrx   rf   rO  v_ns          rX   r   TestEigBanded.test_emptyM  s    &+&!bhhAA'7rBCww$ww#))###ww&   ww#))###vD1ww$ww#))###rZ   )r  r  r   r  r  r  r  r  r  r  r  r  r  r  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   rN   r3   r   r4   r   r   r   rZ   rX   r  r  "  s    M$bFFFGG(?T8Jt, , ,, [[TC

GR\\#RS$ T$rZ   r  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 r  )create_trimatr  s    rX   r  TestEigTridiagonal.setup_method_  s    rZ   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`.r  r  rE   r  r   N)r.   re   er-   full_matr/   r
   r  r0   rx   r  )rv   r  r  r  r  s        rX   r   TestEigTridiagonal.create_trimatb  s     aac4dffTVVR(884?JDMM*WWr{q$wK	rZ   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   rK   r  lapack_driverfoor   r   r   r  )r2  r3  r#   re   r  r`   r  s    rX   test_degenerate"TestEigTridiagonal.test_degenerateq  s     	j"6sLi!5tvvtvv{Ki!5tvvtvv$&	(j"6$)	+ 	j"6 w	8rZ   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   rE   r  r  r  rL   rq   r  rf   N)	r#   re   r  r   r9   rx   r2  r3  r_   )	rv   driverrx   w_indr  r  r  r  w_vals	            rX   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+ 1rZ   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   rE   r"  rL   rq   r  rf   )r2  r3  r$   re   r  r0   r   r9   rx   r   r  r_   )	rv   r#  rx   r  r  r  r  r  r  s	            rX   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 1rZ   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-20075r  Tr  rE   r   r   r  rL   r  rf   )r   r   r   r   r   N)rN   r,   r$   rc  r   r   r8   )rv   rw   r   xrK  s        rX   test_eigh_tridiagonal_1x1,TestEigTridiagonal.test_eigh_tridiagonal_1x1  s    HHdVHHRLQ5vv{{SvFvv{{vv{{52$=)SwGvv{{ww$ww&   rZ   )re   r  r  r  rx   N)r   r   r   r   r  r  r  r&  r)  r-  r   r   rZ   rX   r
  r
  ^  s$     8 HD(FT!rZ   r
  c                   <   \ rS rSrS rS rS rS r\\	R                  R                  S5      S 5       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,                  \\R0                  /5      S 5       rSrg)TestEighi  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 )NrE   rL   rn   rU  )type)subset_by_valuesubset_by_indexr   r4  r   r3  wrongr#  gvxevrgvd)r#  r4  )r2  r3  r   rN   r   r  s    rX   test_wrong_inputsTestEigh.test_wrong_inputs  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	<rZ   c           	          [        [        [        [        R                  " SS/5      [        R                  " SS/5      5        g )Nrn   )r2  r'   r   rN   r   r  s    rX   test_nonpositive_bTestEigh.test_nonpositive_b  s(    k4!Q"''1a&/JrZ   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   rL   r6  rE   T)rU   rV   )	enumerateDTYPESrY   r   r   r8   r_   r   )rv   indr   rw   rx   rf   r   s          rX   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)**** )rZ   c                 |    [        SS/SS//5      n[        SS/SS//5      n[        U5      u  p4[        X5      u  p4g )NrE   rL      rn   rp   )r,   r   )rv   rw   r   rx   zs        rX   test_eigh_integerTestEigh.test_eigh_integer  sH    Aq6Aq6"#Aq6Aq6"#AwAz1rZ   zignore::DeprecationWarningc                     SS K nUR                  R                  S5      R                  5       n[        R
                  " U5      n[        [        [        U5        [        [        [        U5        g )Nr   rL   )	scipy.sparsesparse	eye_arraytocscrN   
atleast_2dr2  r3  r   )rv   scipyrw   r   s       rX   test_eigh_of_sparseTestEigh.test_eigh_of_sparse  sJ     	LL""1%++-MM!j$*j$*rZ   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 )NrB  )rT   rV   r8  r     r   r   )rY   r   r   rN   finfoeps)rv   r#  rV  rw   rx   rf   s         rX   test_various_drivers_standard&TestEigh.test_various_drivers_standard'  sJ     %r8A%!"((6"2"6"66	!rZ   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 )NrE   r8  r  V瞯<rC  rK   r   )r   r   r,   )rv   r#  rx   rf   s       rX   test_1x1_lworkTestEigh.test_1x1_lwork0  st    aSE&)5";U352$=u5 bTF6*5!:E252$=u5rZ   r2  rm   )gvr;  r9  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     @rB  T)rU   )rw   r   r#  r2  rE   r   r[  rL   )rN   spacingrY   r   r   )rv   r#  r2  r   rw   r   rx   rf   s           rX    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FrZ   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 )
Nrp   rE   rL   r5  )rE   333333??      ?rL   gffffff?r6  rj  rk  )rY   r   r   r_   r   rN   r-   r,   )rv   rw   rx   w2r   w3s         rX   test_eigvalsh_new_argsTestEigh.test_eigvalsh_new_argsI  s    $Q'QA/SVQa!Q0SWa GG)*a!S2SWa BHHc3Z01rZ   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   rL   r   Tr  )rN   r   r   r>   r8   rV   r   )rv   r   rw   rx   rf   rO  r  s          rX   r   TestEigh.test_emptyW  s    HHV2&Awq+,ww$ww#))###ww&   ww#))###&288D>*ww$ww#))###rZ   r   N)r   r   r   r   r<  r?  rF  rK  rC   r   r   rG  rT  r   rD  r^  rb  rg  ro  r^   r   rN   r3   r   r4   r   r   r   rZ   rX   r0  r0    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$rZ   r0  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\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\R"                  R-                  S\\\/5      \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%S&S'/5      S( 5       5       5       5       5       5       r S)r!g*)+TestSVD_GESDDij  gesddc                 \    [        [        [        S//SS9  [        [        [        S//SS9  g )Nr  r  r  )r2  r`   r   r3  r  s    rX   r  TestSVD_GESDD.test_degeneratem  s&    itfB?j#vUCrZ   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 )Nrm   rE   rB  rn   ro   TFfull_matricesr  rn   r   r   r  r   rR   r>   r1   r8   rV   charr   r_   rv   rw   r|  r  svhsigmar   s           rX   rz   TestSVD_GESDD.test_simpleq  s    
I.*M1)-););=HA"%accAgs1v6%bddRiQ81771:rxx{3QWW\\BE3q6]dd #%ai"na8 +rZ   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 )Nrm   ro   rz  r{  rn   r   r}  r  s           rX   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 +rZ   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 )Nrm   rU  rp   rq   rz  r{  r   r   r  r   rR   r>   r8   r1   rV   r~  r   r_   r  s           rX   test_simple_underdet"TestSVD_GESDD.test_simple_underdet  s    	"*M1)-););=HA"%accAgs1771:?1771:rxx{3QWW\\BE3q6]dd #%ai"na8 +rZ   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 )	NrE   rL   rU  rp   rn   rz  r{  r   r  r  s           rX   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 +rZ   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)  rB  r   rn   rz  r{  rE   r   )rN   rO   r*  r   r   r  r   rR   r>   r8   r1   rV   r~  r_   )rv   rc   rT   mr   rw   r|  r  r  r  r  s              rX   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 > rZ   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 )Nrm   )rE   y               @rn   ro   rz  r{  rE   r   )r   r  r   rQ   rR   r>   r8   r1   rV   r~  r   r_   r  s           rX   r   !TestSVD_GESDD.test_simple_complex  s    
I.*M1)-););=HA"%affhjj1nc!''!*oF%bggikkB&6BHHQK8HI1771:rxx{3QWW\\BE3q6]dd #%ai"na8 +rZ   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)  rB  r   rn   rz  rK   r{  rE   r   )rN   rO   r*  r   listr8   r   r  r   rQ   rR   r>   r1   rV   r~  r_   )rv   rc   rT   r  r   r|  rw   r  r  r  r  s              rX   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 "/ rZ   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  )rN   rO   r*  r3   r   r4   r   rP   rS   r   r  )rv   rc   sizesszr   rw   s         rX   test_crash_1580TestSVD_GESDD.test_crash_1580  so    ii##D)/Bzz2::r||R]]KHHbM((,A%7%78 L rZ   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 )Nrm   ry  ro   F)r   r  rn   r   r}  )rv   rw   r  r  r  r  r   s          rX   r.  TestSVD_GESDD.test_check_finite  s    
I.quD<N<NOb!!##'3q62!"$$)SV4qwwqz288A;/>s1vA$EQ$K !!)b.!4rZ   c                 n    [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        XR                  S9  g )N)K}\UU?vWUU?r  r   r   r   )r   r  r  r  r   r   )r   r   r  r  r  r   )r   r   r   r  r  r  r  )rN   r,   r   r  )rv   r   s     rX   test_gh_5039TestSVD_GESDD.test_gh_5039  s4     HH====?@
 	A//0rZ   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_mbrE   l        r   r  Fr|  r   r  r   )rA   rN   r1   r3   r   r   )rv   rW   r  r  r  s        rX   test_large_matrixTestSVD_GESDD.test_large_matrix  sb     	%(HHaZrzz2%q.b!c"$"U)+S1rZ   r  r   rE   rL   rT   rV   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)	rN   r1   minrV   r~  lowerr   r   r8   )rv   r  rT   rV   rw   r%  dchar
real_dcharr  r  rf   s              rX   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3rZ   r   r  rT   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 )Nrn   r   r   Fr  r   r  )rN   r>   r   r   r   identityrV   )rv   r   r  rT   a0u0s0r   rw   r  r  rf   s               rX   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"(("""rZ   r_  r`  ra  rb  rc  rL   rn   rd  TFr|  mn)rn   rp   )rp   rn   c                    Uu  px[         R                  " Xx-  5      R                  Xx5      n	U	R                  XS9n	US:X  a  [         R                  " U	SU	-  /5      n	U	R                  5       n
[        U	U R                  UUSS9u  pnU(       a  [        XU5      nOXUS:X  a  [         R                  " U5      nO;[         R                  " U Vs/ s H  n[         R                  " U5      PM     sn5      n[        X-  U-  U
SS9  U=(       a?    U	R                  [        :g  =(       a%    U	R                  S:H  =(       a    U	R                  S   nX:H  R                  5       U:w  d   eg s  snf )	Nrf  rn   rL   T)r  r|  rd  r  -q=rC  rh  )rN   r2   r1  rS   ri  r}   r   r  r   r-   r   rV   r^   rc  rj  r   )rv   r_  r`  rc  rd  r|  r  r  rT   rw   rk  r  r  r  diag_sr,  rl  s                    rX   test_overwriteTestSVD_GESDD.test_overwrite9  s9    IIacN""1(HH4H-19!QqS"A,,'#
b Q1%Fqyq"9q!2771:q"9:
RU;  $WW^$VVq[$ GGN#	 	 
!Y... #:s    E#r   N)"r   r   r   r   r  r  rz   r  r  r  r  r   r  r  r.  r  r   r   skipifrB   slowr  r   rD  r  r^   r   rN   r3   r   r4   r   r  r   r   rZ   rX   rt  rt  j  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#8 [[Vc5'%:;[[WsCj1[[VaV,[[]T5M:[[_tUm<[[TFF#34%/ 5 = ; - 2 <%/rZ   rt  c                       \ rS rSrSrSrg)TestSVD_GESVDig  gesvdr   N)r   r   r   r   r  r   r   rZ   rX   r  r  g  s    MrZ   r  zout of memory in WASMr  z#out of memory in 32-bit CI workflowrL   r  zdoes not fail; is too slowc                      [        SS9  [        R                  " S[        R                  S9n [	        [
        5         [        U 5        S S S 5        g ! , (       d  f       g = f)Ni8J  r  )i  i  r   )rA   rN   r   r   r2  r3  r   )dfs    rX   test_svd_gesdd_nosegfaultr  m  s;     f%	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)NrL   r   NaN)matchFr   )rN   r>   nanr   r	   r3  r   rW   s    rX   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   rn   r   r   rL   )rN   r   r   r,   r   r   r>   rV   )rv   r   rw   r  r  s        rX   r   TestSVDVals.test_empty  sz    rxx'8A%A
ABHHQK(,-B77bhh&&& 9rZ   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 )Nrm   ro   rn   r   rE   rL   r   r   r_   rv   rw   r  s      rX   rz   TestSVDVals.test_simple  sN    	9-AJA!!!$$!$%$%rZ   c                     / SQ/ SQ/n[        U5      n[        [        U5      S:H  5        [        US   US   :  5        g )Nrm   r  rL   r   rE   r  r  s      rX   r   TestSVDVals.test_simple_underdet  s9    	"AJA!!!rZ   c                     SS/SS/SS//n[        U5      n[        [        U5      S:H  5        [        US   US   :  5        g )NrE   rL   rU  rp   rn   r   r  r  s      rX   r  TestSVDVals.test_simple_overdet  sG    VaVaV$AJA!!!rZ   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 )Nrm   )rE   rB                @ro   rn   r   rE   rL   r  r  s      rX   r   TestSVDVals.test_simple_complex  sN    Y/AJA!!!$$!$%$%rZ   c                     / SQ/ SQ/n[        U5      n[        [        U5      S:H  5        [        US   US   :  5        g )Nrm   )rU  y              @rq   rL   r   rE   r  r  s      rX   test_simple_underdet_complex(TestSVDVals.test_simple_underdet_complex  s9    
#AJA!!!rZ   c                     SS/SS/SS//n[        U5      n[        [        U5      S:H  5        [        US   US   :  5        g )NrE   rL   rU  rp   r  r   r  r  s      rX   test_simple_overdet_complex'TestSVDVals.test_simple_overdet_complex  sG    VaVb!W%AJA!!!rZ   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 )	Nrm   ro   Fr   rn   r   rE   rL   r  r  s      rX   r.  TestSVDVals.test_check_finite  sQ    	9-AE*A!!!$$!$%$%rZ   c                 z    [         R                  R                  S5      nUR                  S5      n[        U5        g )Nr)  )i  i
  )rN   rO   rV  r   )rv   rc   rw   s      rX   test_crash_2609TestSVDVals.test_crash_2609  s+    ii##D)JJ|$
rZ   r   N)r   r   r   r   r   r   r   r^   r   rN   r3   r   r4   r   rz   r  r  r   r  r  r.  r  r  r   r   rZ   rX   r  r    sz    [[TC

GR\\#RS' T'&&& [[ rZ   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rE   r   r   rn   r  )r   r   r  s    rX   rz   TestDiagSVD.test_simple  s     !')Q":#,i"C	ErZ   r   N)r   r   r   r   rz   r   r   rZ   rX   r  r    s    ErZ   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>\8Rr                  Ru                  S9S;S:/5      \8Rr                  Ru                  SB/ SCQ5      \8Rr                  Ru                  S<\;5      SD 5       5       5       r?SE r@\8Rr                  Ru                  S<\;5      SF 5       rA\B\8Rr                  Ru                  S<\C\D/5      \8Rr                  Ru                  SG/ SHQ5      \8Rr                  Ru                  S9S;S:/5      \8Rr                  Ru                  SISJSK/5      \8Rr                  Ru                  SB/ SLQ5      SM 5       5       5       5       5       5       rESNrFgO)PTestQRi  c                     / SQ/ SQ/ SQ/n[        U5      u  p#[        UR                  U-  [        S5      5        [        X#-  U5        g N   rL   rn   rL   rr   rn   rp   rn   rq   rn   r   r   rR   r>   rv   rw   qrs       rX   rz   TestQR.test_simple  s;    	9-!u!!##'3q62!!%+rZ   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  rm   r   rn   r   r   r   r>   rv   rw   r   r  cqcr2s          rX   test_simple_leftTestQR.test_simple_left  s\    	9-!uQ6*!!%,!!(QA/!!(rZ   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  rm   rn   r  r  s          rX   test_simple_rightTestQR.test_simple_right  sX    	9-!uQ"!!%,!!(As1v&!!(rZ   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pivotingrE   r   rn   
rN   r;   r   r   r-   r   r   r   rR   r>   rv   rw   r   r  pre   q2r  s           rX   test_simple_pivotingTestQR.test_simple_pivoting  s    JJ	9i89Q&aQLqu#2'(!!##'3q62!!%1a41AadG!!(!!(rZ   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  rm   r   r   r   r   rv   rw   r   r  jpvtr  r  s          rX   test_simple_left_pivoting TestQR.test_simple_left_pivoting  sA    	9-D)
d!!5t!!%,rZ   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  rm   r  r  s          rX   test_simple_right_pivoting!TestQR.test_simple_right_pivoting  s?    	9-D)
d!!6t!!%,rZ   c                     / SQ/ SQ/n[        U5      u  p#[        UR                  U-  [        S5      5        [        X#-  U5        g )Nr  r  rL   r  r  s       rX   test_simple_trapTestQR.test_simple_trap  9    	"!u!!##'3q62!!%+rZ   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  rE   r   rL   r  r  s           rX   test_simple_trap_pivoting TestQR.test_simple_trap_pivoting  s    JJ	9-.Q&aQLqu#2'(!!##'3q62!!%1a41AadG!!(!!(rZ   c                     SS/SS/SS//n[        U5      u  p#[        UR                  U-  [        S5      5        [        X#-  U5        g Nr  rL   rr   rp   rn   r  r  s       rX   test_simple_tallTestQR.test_simple_tall  sG    VaVaV$!u!!##'3q62!!%+rZ   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  rL   rr   rp   rn   Tr  rE   r   r  r  s           rX   test_simple_tall_pivoting TestQR.test_simple_tall_pivoting  s    JJAAA/0Q&aQLqu#2'(!!##'3q62!!%1a41AadG!!(!!(rZ   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  rL   rr   rp   rn   economicmoderT  rL   rL   r   r   rR   r>   r   r8   r  s       rX   test_simple_tall_eTestQR.test_simple_tall_e  sf    VaVaV$!*%!!##'3q62!!%+QWWf%QWWf%rZ   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  rL   rr   rp   rn   Tr/  r  r1  rE   r   r0  r  r  s           rX   test_simple_tall_e_pivoting"TestQR.test_simple_tall_e_pivoting(  s    JJAAA/0QJ7aQLqu#2'(!!##'3q62!!%1a41AadG*-!!(!!(rZ   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  rL   rr   rp   rn   r/  r0  rE   r   rE   rL   r   Toverwrite_cr   r   r   r,   r>   r  s          rX   test_simple_tall_leftTestQR.test_simple_tall_left4  s    VaVaV$!*%FQ6*!!%,!!()Q6t<!!e)R0As1vv.!"(rZ   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  rL   rr   rp   rn   r/  Tr1  r  rE   r   )r   r   r   r   r>   )rv   rw   r   r  r  r  r  kpvts           rX   test_simple_tall_left_pivoting%TestQR.test_simple_tall_left_pivotingA  s{    VaVaV$
T:
dF!!5t4&!!%,!!SVVT:t!"(rZ   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  rL   rr   rp   rn   r/  r0  rm   r  rv   rw   r   r  r  cqr  s          rX   test_simple_tall_rightTestQR.test_simple_tall_rightK  sg    VaVaV$!*%Q"!!%,!!(As1v&!"(rZ   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  rL   rr   rp   rn   Tr/  r7  rm   r  r  rv   rw   r   r  r  r  rH  s          rX   test_simple_tall_right_pivoting&TestQR.test_simple_tall_right_pivotingU  sk    VaVaV$Dz:
d!!6t!!%,!!SVd;t!"(rZ   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  rL   rp   r  rL   r2  rL   rn   r3  r  s       rX   test_simple_fatTestQR.test_simple_fat^  sU    	"!u!!##'3q62!!%+QWWf%QWWf%rZ   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 )
NrP  r  Tr  rE   r   rL   r2  rQ  rN   r;   r   r   r-   r   r   r   rR   r>   r   r8   r  s           rX   test_simple_fat_pivotingTestQR.test_simple_fat_pivotingg  s    JJ	9-.Q&aQLqu#2'(!!##'3q62!!%1a41QWWf%QWWf%AadG!!(!!(rZ   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  rL   rr   rp   r/  r0  rL   r2  rQ  r3  r  s       rX   test_simple_fat_eTestQR.test_simple_fat_eu  sX    	"!*%!!##'3q62!!%+QWWf%QWWf%rZ   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  rY  Tr/  r7  rE   r   rL   r2  rQ  r0  rU  r  s           rX   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*-!!(!!(rZ   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  rY  r/  r0  rE   rL   r   r  r  s          rX   test_simple_fat_leftTestQR.test_simple_fat_left  sa    	"!*%FQ6*!!%,!!(As1vv.!"(rZ   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  rY  r/  TrB  rE   rL   r   r  r  s          rX   test_simple_fat_left_pivoting$TestQR.test_simple_fat_left_pivoting  se    	"
T:
dF!!5t!!%,!!SVVT:t!"(rZ   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  rY  r/  r0  rE   rL   r  rG  s          rX   test_simple_fat_rightTestQR.test_simple_fat_right  s]    	"!*%FQ"!!%,!!(As1v&!"(rZ   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  rY  Tr/  r7  rE   rL   r  r  rL  s          rX   test_simple_fat_right_pivoting%TestQR.test_simple_fat_right_pivoting  sa    	"Dz:
dF!!6t!!%,!!SVd;t!"(rZ   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rn         @      @rp   rp   rL   y       @      @rn   rL   rI  rn   )r   r   rQ   rR   r>   r  s       rX   r   TestQR.test_simple_complex  sA    <3!u!!&&(**q.#a&9!!%+rZ   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 )Nrm  ro  rp  rE   rL   rn  r   rn   r  rv   rw   r   r  r  r  s         rX   test_simple_complex_leftTestQR.test_simple_complex_left  sT    <3!uA&)!!%,As1vv.!!(rZ   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 )Nrm  ro  rp  rs  rn   r  rt  s         rX   test_simple_complex_right TestQR.test_simple_complex_right  sP    <3!uA!!!%,As1v&!!(rZ   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       @      @rL   rr   y      @      @rn   r/  r0  rE          @       @r   r;  Tr<  r>  r  s          rX   test_simple_tall_complex_left$TestQR.test_simple_tall_complex_left  s    YAq	*!*%IQ6*!!%,!!()Q6t<!!e)R0As1vv.!"(rZ   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 )Nrm  ro  rp  rs  r   T	conjugater   r   r   rQ   rt  s         rX   "test_simple_complex_left_conjugate)TestQR.test_simple_complex_left_conjugate  sB    <3!uA&D9!!&&(Q,3rZ   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 )Nrn   rn  rp   r{  rL   r/  r0  rE   r   Tr  r  rt  s         rX   'test_simple_complex_tall_left_conjugate.TestQR.test_simple_complex_tall_left_conjugate  sU    YD	Aq6*!*%IA&D9!!&&(Q,3rZ   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 )Nrm  ro  rp  rs  Tr  )r   rN   r,   r   r   rQ   rt  s         rX   #test_simple_complex_right_conjugate*TestQR.test_simple_complex_right_conjugate  sG    <3!uHH\"AD1!!ffh,3rZ   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 )	Nrm  ro  rp  Tr  rE   r   rn   )r,   r   r   r-   r   rN   r   r   rQ   rR   r>   r  s           rX   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!!(!!(rZ   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 )Nrm  ro  rp  Tr  rs  r   r,   r   r   r   r  s          rX   !test_simple_complex_left_pivoting(TestQR.test_simple_complex_left_pivoting  sF    <y9:D)
d!!5t!!%,rZ   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 )Nrm  ro  rp  Tr  rs  r  r  s          rX   "test_simple_complex_right_pivoting)TestQR.test_simple_complex_right_pivoting  sD    <y9:D)
d!!6t!!%,rZ   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)  rB  rL   rN   rO   r*  r   r   r   rR   r>   rv   rc   rT   r%  rw   r   r  s          rX   r  TestQR.test_random  sf    ii##D)qA

A6"Aa5DA%accAgs1v6%aeQ/	 rZ   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)  rB  rL   r   rN   rO   r*  r   r   r   r   r>   	rv   rc   rT   r%  rw   r   r  r  r  s	            rX   test_random_leftTestQR.test_random_left  s    ii##D)qA

A6"Aa5DA

A3Af-EB%aeR03q662EB%a, rZ   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  r  	rv   rc   rT   r%  rw   r   r  r  rH  s	            rX   test_random_rightTestQR.test_random_right  s    ii##D)qA

A6"Aa5DA

A3A%EB%aeR03q6*EB%a, rZ   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)  rB  rL   Tr  rE   r   rN   rO   r*  r   r   r   r-   r   r   r   rR   r>   rv   rc   rT   r%  rw   r   r  r  re   r  r  s              rX   test_random_pivotingTestQR.test_random_pivoting&  s    ii##D)qA

A6"AT*GA!DGABFF1QR5AcrF?+,%accAgs1v6%aeQq!tW5!Q$[FB%a,%a, rZ   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#  rL   r  rv   rc   r  rT   r%  rw   r   r  s           rX   test_random_tallTestQR.test_random_tall4  sk    ii##D)qA

A6"Aa5DA%accAgs1v6%aeQ/	 rZ   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)  r  r#  rL   r/  r0  r   r  )
rv   rc   r  rT   r%  rw   r   r  r  r  s
             rX   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, rZ   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)  r  r#  rL   r/  r0  r  )
rv   rc   r  rT   r%  rw   r   r  r  rH  s
             rX   test_random_tall_rightTestQR.test_random_tall_rightM  s    ii##D)qA

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

A3A%EB%aeR03q6*EB%b, rZ   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  r#  rL   Tr  rE   r   r  rv   rc   r  rT   r%  rw   r   r  r  re   r  r  s               rX   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, rZ   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  )
rN   rO   r*  r   r   r   rR   r>   r   r8   r  s           rX   test_random_tall_eTestQR.test_random_tall_ek  s    ii##D)qA

A6"Aaj)DA%accAgs1v6%aeQ/1&)1&) rZ   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)  r  r#  rL   Tr/  r7  rE   r   r0  )rN   rO   r*  r   r   r   r-   r   r   r   rR   r>   r   r8   r  s               rX   test_random_tall_e_pivoting"TestQR.test_random_tall_e_pivotingx  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, rZ   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#  r  rL   r  r  s           rX   test_random_trapTestQR.test_random_trap  sk    ii##D)qA

A6"Aa5DA%accAgs1v6%aeQ/	 rZ   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#  r  rL   Tr  rE   r   r  r  s               rX   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, rZ   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)  rB  rL   rK   )	rN   rO   r*  r   r   r   rQ   rR   r>   r  s          rX   r  TestQR.test_random_complex  s    ii##D)qA

A6"R

A6(:%::Aa5DA%affhjj1nc!f=%aeQ/	 rZ   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)  rB  rL   rK   r   r  r  s	            rX   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, rZ   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  r  r  s	            rX   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, rZ   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)  rB  rL   rK   Tr  rE   r   )rN   rO   r*  r   r   r   r-   r   r   r   rQ   rR   r>   r  s              rX   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, rZ   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   rn   r  r  s       rX   r.  TestQR.test_check_finite  s>    	9-!%(!!##'3q62!!%+rZ   c                 x   / SQ/ SQ/ SQ/n[         R                  " [        5         [        US S9u  p#S S S 5        [         R                  " [        5         [        US S9u  pE[	        UW5        [	        UW5        S S S 5        [         R                  " [        5         [        USS9u  pg[	        UW5        [	        UW5        S S S 5        [         R                  " [        5         [        USS9u  p[	        UW5        [	        U	W5        S S S 5        [        [        5         [        USS9  S S S 5        [        [        5         [        USS9  S S S 5        g ! , (       d  f       GN)= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nv= f! , (       d  f       g = f)	Nr  r  r  )lworkr  r   r   rL   )r   warnsDeprecationWarningr   r   r2  r3  )
rv   rw   r   r  r  r  q3r3q4r4s
             rX   
test_lworkTestQR.test_lwork  s7   	9-\\,-at$DA . \\,-&FB%b!,%b!, . \\,-_FB%b!,%b!, . \\,-_FB%b!,%b!, . :&qN ' :&qN '&3 .- .- .- .- '& '&sG   E%E'%E8#%F	FF+
E$'
E58
F	
F
F(+
F9r  r  rT   r  FTrV   c                 l   [        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(       aZ  U	u  n
[	        U
R
                  U45        [	        U
R                  [        (       a  [        R                  O[        R                  5        [        USUS9tp[	        UR
                  X45        [	        UR                  U5        [	        X5        [        U	5      U(       a  SOS:X  d   eU(       aZ  U	u  n
[	        U
R
                  U45        [	        U
R                  [        (       a  [        R                  O[        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(       aZ  U	u  n
[	        U
R
                  U45        [	        U
R                  [        (       a  [        R                  O[        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                  [        (       a  [        R                  O[        R                  5        g g )	Nr   r  rE   r   r  rB  r/  raw)r  rN   r1   r   r   r8   rV   r_   rB   int64int32)rv   r  rT   r  rV   r%  rw   r   r  otherr  r_rr  taus                 rX   r  TestQR.test_shape_dtype  s   
 IHHaV5)!/uQWWqf%QWWe$QWWqf%QWWe$5z8a333BA1$'ii"((RXXFx8SYY'SYY&Q5z8a333BA1$'ii"((RXXF!*x@uQWWqf%QWWe$QWWqf%QWWe$5z8a333BA1$'ii"((RXXF "158 D
ASYY'SYY&SYY%SYY&QWWqf%QWWe$5z8a333BA1$'ii"((RXXF rZ   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  r0  r/  r  )r  rN   r   r   r   r  r2   )
rv   r  rT   r%  rw   r   r  r  r  r  s
             rX   r   TestQR.test_empty,  s@   IHHaV!u2;;q>*288QF+,Q&a2;;q>*288QF+,299Q<(_288QF+,!*%288QF+,288QF+,15)
ARXXqf-.RXXqd^,288QF+,rZ   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   )rN   r   r   r   )rv   rw   r  rH  r  s        rX   test_multiply_emptyTestQR.test_multiply_emptyF  s    HHVHHVA!BHHV,-HHVHHVA!BHHV,-HHVHHVA!BHHV,-rZ   r8   )r  rT  rQ  r  )rn   r   c                    [         R                  R                  SS9n[        U5      nUR	                  US9n[         R
                  " U[         R                  5      (       a  USUR	                  US9-  -   nUR                  U5      n[        USUS9tu  pxpUR                  U:X  d   eUR                  U:X  d   eUR                  U4:X  d   eUR                  U:X  d   eU	R                  XQS   4:X  d   eU	R                  U:X  d   e[        U
5      U(       a  SOS:X  d   eU(       a_  U
S   nUR                  S   US   :X  d   e[        (       a   UR                  [         R                  :X  d   e[         R                  (       d   e[        [         R                   " U5      S U2S S 24   U	5        US   S:  a  US S 2S U24   n[#        S	U4S
S9S   nU" Xx5      u  n  nU(       a  [        X-  US S 2W4   5        O[        X-  U5        UR$                  S:w  aO  [        [         R&                  " UR(                  5      U-  [         R*                  " UR                  S   5      5        g g g )N90  seedr   rK   r  rB  rE   r   orgqrr  r  )rN   rO   rV  r  normal
issubdtypecomplexfloatingrS   r   r8   rV   r_   rB   r  r  r   triur(   r   rQ   rR   r>   )rv   r8   rV   r  rc   r  rw   q_rawr  r  r  r  	or_un_gqrr   _s                  rX   test_rawTestQR.test_rawV  s"    ii###/JJJEJ"== 2 233B///AHHUO"$QUX"Fa{{e###{{e###yyQD   yyE!!!wwAQx=(((ww%5z8a3338D::a=E!H,,,-6Y4::)DDBHHDD!"''%.!Q"7;8a<!RaR%LE(eX[QRSTI+GAq!)!%1d7<)!%3vv{)"''!##,*:BFF1771:<NO  rZ   c                 0   Sn[         R                  " U[         R                  S9n[         R                  " USU-  /5      n[	        USS9S   S   nUR
                  R                  nUR                  XUU-  4:X  d   eUR                  R                  (       d   eUR                  R                  SL d   e[	        USS9S   S   nUR                  X-  U-  XUU-  4:X  d   eUR                  R                  SL d   eUR                  R                  SL d   eg )Nrn   r   rL   r  r0  r   F)rN   r>   r3   ri  r   rV   itemsizestridesrj  f_contiguousc_contiguous)rv   rT   rw   aar   r  qqs          rX   test_raw_flagsTestQR.test_raw_flags  s    FF1BJJ'XXq!A#h qua #77##yyXz2222ww####ww##u,,, "1%zzac(lHqjAAAAxx$$---ww##u,,,rZ   c                 *   [         R                  R                  SS9nUR                  SS9n[         R                  " U[         R
                  5      (       a  USUR                  UR                  S9-  -   nUR                  U5      n[        USS9u  pEU[         R                  [         R                  4;   a  SOS	n[        XE-  X6S
9  [        [         R                  " UR                  5      U-  [         R                  " UR                  S   5      US
9  g )Nr  r  )i'  rL   r  rK   r/  r0  rp   r   decimalrE   )rN   rO   rV  r  r  r  r8   rS   r   r3   r4   r   rQ   rR   r>   )rv   rV   rc   rw   r   r  r  s          rX   test_smoke_economicTestQR.test_smoke_economic  s     ii###/JJJJ'== 2 233B111AHHUO!*% R\\ ::!!!%<!"''!##,"2BFF1771:4FPWXrZ   r1  )r  r  r/  r.   r`  ra  rb  ))rU  rn   )rn   rU  )rL   rU  rn   )rL   rn   rU  c                 8   [         R                  R                  SS9nUS:X  aI  / US S QUS   PUS   P7nUR                  US9R	                  U5      n[         R
                  " USS5      nOUR                  US9R	                  U5      n[         R                  " U5      n	[        U4X4S.UD6n
UR                  SS	5      nU=(       a)    [        U5      S
:H  =(       a    US:H  =(       a    U[        LnUS:X  Gam  U
tu  ppU	R                  S
:  a  [        U	R                  S   5       H  n[        SUSS S 2S S 24   4SS9S   nU" UUS S 2S [         R                  " USS  5      24   UUS S 24   5      u  n  nU(       a7  US   n[!        UUUS S 2S S 24   -  U	US S 2S S 24   S S 2UUS S 24   4   SS9  M  [!        UUUS S 2S S 24   -  U	US S 2S S 24   SS9  M     Ol[        SU4SS9S   nU" US S 2S [         R                  " USS  5      24   U5      u  n  nU(       a  US   n[!        UU-  U	S S 2U4   SS9  O[!        UU-  U	SS9  U[         R"                  " X5      :X  d   eg US:X  aU  [        U	SUS9tnnn[!        U
S   USS9  U(       a  [!        U
S   US   5        U[         R"                  " XS   5      :X  d   eg US:X  d  US:X  a  U(       a  U
S   nU	R                  S
:  aY  [        U	R                  S   5       H<  n[!        U
S   US S 2S S 24   U
S   US S 2S S 24   -  U	U   S S 2UUS S 24   4   SS9  M>     O0[!        U
S   U
S   -  U	S S 2U4   SS9  O[!        U
S   U
S   -  U	SS9  U[         R"                  " XUS:X  a  SOS   5      :X  d   eg g )Nr   r  rb  r   r   r  rB  rd  FrL   r  r   r  r  r  r  rC  r  r.   r/  rE   )rN   rO   rV  r  rS   swapaxesr}   r   getr_   r^   rc  r   r8   r(   r  r   shares_memory)rv   rV   overwrite_kwr1  r  r`  r8   rc   rw   rk  outrd  r  r  r  r  r   r  r   r  r  r_refs                         rX   test_overwrite_argsTestQR.test_overwrite_args  s    ii###,C< 8eCRj7%)7U2Y7E


&--e4AAr2&A


&--e4A
AALA"&&}e< Z1_c\ 	 	 5=&)#LU!zzA~u{{1~.A 0"U1a7^$5[!!I (a4GRVVE"#J5G4G.G(H#aQRd)TGAq!$Qx'!Q'
NE!Q'N1d1a4j=,IPU (AaAgJaAgUS / -Z%UVWX	#E!-@bffU23Z.@-@*@$A3G1a 8D#AE5D>F#AE5u=""2"21"<<<<S[!%fxHAuuCFE6Bq2""2"21!f"====Z46> 2w::>"5;;q>2'F1a7Oc!fQ1Wo=uQx4PQSTPT:?V!& 3 $CFSVOU1d7^%PAQUC ""2"2DJ.qA6#   % $2rZ   r   N)Gr   r   r   r   rz   r	  r  r  r  r  r!  r%  r)  r,  r4  r8  r?  rD  rI  rM  rR  rV  rZ  r]  r`  rc  rf  ri  r   ru  rx  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   rD  r  r   r  r  r  r  rF   r^   r   r  r   r   rZ   rX   r  r    s   ,))	)--,	),
)&
)))))&)&))))),)))444	)--0
-
--	0--- *-$0-0
-
--,> [[S),[[S),[[Z%7[[Wf-/G . 8 - -/Gb [[Z)AB- C-2.  [[Z$7[[W&NO[[Wf-%P . P 8%PN-( [[Wf-Y .Y  [[WsEl3[[V%EF[[Z$7[[WsCj1[[W&LMT N 2 8 G 4 TrZ   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   rR   r>   rv   rw   r  r   s       rX   rz   TestRQ.test_simple	  s9    	9-!u!!cc'3q62!!%+rZ   c                 ^    / SQ/ SQ/ SQ/n[        U5      u  p#[        USS9n[        X$5        g )Nr  r  r  r  r0  )r   r   )rv   rw   r  r   r  s        rX   test_rTestRQ.test_r		  s,    	9-!u_!!(rZ   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  rN   rO   r*  r   r   r   rR   r>   rv   rc   rT   r%  rw   r  r   s          rX   r  TestRQ.test_random	  sd    ii##D)qA

A6"Aa5DA%a##gs1v6%aeQ/	 rZ   c                     / SQ/ SQ/n[        U5      u  p#[        UR                  U-  [        S5      5        [        X#-  U5        g )Nr  r  rn   r  r  s       rX   r!  TestRQ.test_simple_trap	  r#  rZ   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       rX   r)  TestRQ.test_simple_tall	  sG    VaVaV$!u!!##'3q62!!%+rZ   c                     / SQ/ SQ/n[        U5      u  p#[        X3R                  -  [        S5      5        [        X#-  U5        g )NrP  r  rn   r  r  s       rX   rR  TestRQ.test_simple_fat$	  s7    	"!u!!cc'3q62!!%+rZ   c                     / SQ/ SQ/ SQ/n[        U5      u  p#[        X3R                  5       R                  -  [	        S5      5        [        X#-  U5        g rl  )r   r   rQ   rR   r>   r  s       rX   r   TestRQ.test_simple_complex*	  s?    <3!u!!ffhjj.#a&9!!%+rZ   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  rv   rc   r  rT   r%  rw   r  r   s           rX   r  TestRQ.test_random_tall0	  i    ii##D)qA

A6"Aa5DA%a##gs1v6%aeQ/	 rZ   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           rX   r  TestRQ.test_random_trap:	  r+  rZ   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#  r  rL   r/  r0  )
rN   rO   r*  r   r   r   rR   r>   r   r8   r)  s           rX   test_random_trap_economic TestRQ.test_random_trap_economicD	  s    ii##D)qA

A6"Aaj)DA%a##gs1v6%aeQ/1&)1&) rZ   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  )	rN   rO   r*  r   r   r   rQ   rR   r>   r  s          rX   r  TestRQ.test_random_complexP	  s    ii##D)qA

A6"R

A6(:%::Aa5DA%a&&(**nc!f=%aeQ/	 rZ   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#  r  rL   rK   r/  r0  )rN   rO   r*  r   r   r   rQ   rR   r>   r   r8   r)  s           rX   test_random_complex_economic#TestRQ.test_random_complex_economicY	  s    ii##D)qA

A6"R

A6(:%::Aaj)DA%a&&(**nc!f=%aeQ/1&)1&) rZ   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       rX   r.  TestRQ.test_check_finitee	  s<    	9-!%(!!cc'3q62!!%+rZ   r  r  rT   rV   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  r0  r/  )r  rN   r1   r   r   r8   rV   )rv   r  rT   rV   r%  rw   r  r   s           rX   r  TestRQ.test_shape_dtypek	  s     IHHaV5)!uQWWqf%QWWqf%QWWe$QWWe$qsOQWWqf%QWWe$!*%QWWqf%QWWe$QWWqf%QWWe$rZ   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  r0  r/  )r  rN   r   r   r   r  )rv   r  rT   r%  rw   r  r   s          rX   r   TestRQ.test_empty	  s    IHHaV!u288QF+,2;;q>*qsO288QF+,!*%288QF+,288QF+,rZ   r   N)r   r   r   r   rz   r  r  r!  r)  rR  r   r  r  r/  r  r4  r.  r   r   r   rD  r  r   r   r   rZ   rX   r  r  	  s    ,)0,,,,00
*0
*, [[S),[[S),[[Wf-% . - -%( [[Z)AB- C-rZ   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)	TestSchuri	  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   rQ   rR   rN   r>   r_   )rv   rw   tr  r   r   s         rX   check_schurTestSchur.check_schur	  sW    

*At H	J 	FFHJJA7 2	4rZ   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     rn   r  r  rn   rq   rB  +<r   r   r   )r   r@  r   rN   rJ  r5   r7   r   )rv   rw   r?  rJ  tczctc2zc2s           rX   rz   TestSchur.test_simple	  s    J/Qxqu59q)$uYr]+,Mim8L1MNU;2?5u=rZ   zsort, expected_diaglhprL         r\   rhpiucoucc                     U S:  $ )Nr   r   )r,  s    rX   <lambda>TestSchur.<lambda>	  s    AHrZ   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   r  r  g      g      r  r  r7        @      g      @rY  r>  r        @r9   rB  rF  rG  r  r   rL   )r   r@  r   rN   r-   r   )rv   r9   expected_diagrw   r?  r  sdims          rX   	test_sortTestSchur.test_sort	  s\     "! 1(
dqu59
M>QrZ   c                 p    / SQ/ SQ/ SQ/ SQ/n[        [        [        USS9  [        [        [        USS9  g )NrV  rW  rX  r[  unsupportedr]  rE   )r2  r3  r   )rv   rw   s     rX   test_sort_errorsTestSchur.test_sort_errors	  s3    "! 	j%?j%3rZ   c                     / SQ/ SQ/ SQ/n[        USS9u  p#[        X2-  UR                  5       R                  -  U5        g )NrC  r  rE  Fr   )r   r   rQ   rR   )rv   rw   r?  rJ  s       rX   r.  TestSchur.test_check_finite	  s7    J/QU+!!%!&&(**"4a8rZ   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   rL   rM  r]  r   )rN   r   r   r>   r   rV   r   )rv   r   rw   r?  rJ  t0z0r`  s           rX   r   TestSchur.test_empty	  s    HHV2&Qxrvvar*+288F+,288F+,ww"(("""ww"(("""15)
d288F+,288F+,T1ww"(("""ww"(("""rZ   r9   outputr  r   rV   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   rL   r9   rm  r   rP  r   )rN   r;   r   rS   )rv   r9   rm  rV   rW   r`  s         rX   test_gh_13137_sort_str TestSchur.test_gh_13137_sort_str	  s]      JJb	As8,- QXXe_4?C EMtqy88tqy88yyrZ   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 )
Nro  r   rL   r  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:  $ )NrK   ra  )rN   iscomplexobjisrealr   )r,  r  rJ  all_reals      rX   r9   1TestSchur.test_gh_13137_sort_custom.<locals>.sort
  so    ??1----}155"Hq))))y y66E>!rZ   rp  r   rE   r  )rN   r;   r3   r   r   rS   )rv   rm  rV   rW   r9   r`  rw  s         @rX   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)yrZ   r   N)r   r   r   r   r@  rz   r   r   r   rN   r6   ra  re  r.  r^   r   r3   r   r4   r   r   r   rq  ry  r   r   rZ   rX   r=  r=  	  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 <4rZ   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     r  ir  g     bgsE@g㥛 cg(m̀gkwc@gfjWr   g&S?g,eX@rE   calc_qrU  r  r   r   rR   rv   rw   h1rg   r   s        rX   rz   TestHessenberg.test_simple
  sT     ..!# !A&!!##'A+q1!!3rZ   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  rE   r  )r   r   rQ   rR   rv   rw   rg   r   s       rX   r   "TestHessenberg.test_simple_complex 
  s?     !A&!!&&(**q.1"4a8rZ   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)rE   rL   rn   rU  rp   rq   rI  )r   rL   rn   rU  rq   rI  rL   )r   rL   rL   rn   r   rn   rL   )r   r   rL   r  r   r   rL   )r   rn   rE   rL   r   rE   rL   )r   rE   rL   rn   r   rE   r   )r   r   r   r   r   rE   rL   rE   r  r  r  s       rX   test_simple2TestHessenberg.test_simple2'
  sD    """""""$ !A&!!##'A+q1rZ   c                     [         R                  " S5      nSUS'   [        USS9u  p#[        UR                  U-  U-  U5        g )Nrn   rL   )r   r   rE   r  )rN   r>   r   r   rR   r  s       rX   test_simple3TestHessenberg.test_simple32
  s<    FF1I%!A&!!##'A+q1rZ   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)  rB  rL   rE   r  )rN   rO   r*  r   r   r   rR   rv   rc   rT   r%  rw   rg   r   s          rX   r  TestHessenberg.test_random8
  s]    ii##D)qA

A6"Aa*DA%accAgk15 rZ   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)  rB  rL   rK   rE   r  )rN   rO   r*  r   r   r   rQ   rR   r  s          rX   r  "TestHessenberg.test_random_complex@
  sy    ii##D)qA

A6"R

A6(:%::Aa*DA%affhjj1nq&8!< rZ   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  rE   F)r  r   rU  r  r  r  s        rX   r.   TestHessenberg.test_check_finiteH
  sV     ..!# !AE:!!##'A+q1!!3rZ   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 )
NrL   rE   rI  rD  r  y       @      r   y      @      @y      (@       )r   r   rN   r>   )rv   rw   rg   r   r   h2r  s          rX   test_2x2TestHessenberg.test_2x2S
  sv    VaW!A&!!RVVAY/!!'D\D%=)Aa(!"bffQi0!"(rZ   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   rn   Tr  )rN   r   r   r8   rV   r>   )rv   r   rw   rg   r   h3r  s          rX   r   TestHessenberg.test_empty_
  s    HHV2&qMww&   ww*RVVAR%89?????!D)Ad+ww&   ww"(("""ww&   ww"(("""rZ   r   N)r   r   r   r   rz   r   r  r  r  r  r.  r  r   r   r   r^   r   r3   r   r4   r   r   r   rZ   rX   r|  r|  
  s[    	49	226=	4
) [[TC)#LM# N#rZ   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
)TestQZit
  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 )Nr  rp   r  r   )rN   rO   r*  rS   r3   r   r   rR   r>   r   r   r-   	rv   rc   rT   rW   r   AABBQr  s	            rX   test_qz_singleTestQZ.test_qz_singleu
  s    ii##E*JJv%%g.JJv%%g.!x!!&133,1=!!&133,1=!!cc'3q61=!!cc'3q61=tBx1}%&rZ   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 )Nr  rp   r   
rN   rO   r*  r   r   rR   r>   r   r   r-   r  s	            rX   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}%&rZ   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 )Nr  rp   rK   r   )rN   rO   r*  r   r   rQ   rR   r>   r   r   r-   r   r  s	            rX   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}})*+rZ   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 )Nr  rp   rK   r  r   )rN   rO   r*  rS   r4   r   r   rQ   rR   r>   r   r   r-   r   r  s	            rX   test_qz_complex64TestQZ.test_qz_complex64
  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}})*+rZ   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 )Nr  rp   r   )rm  r   )rN   rO   r*  r   rQ   rR   r   r  r   r>   r   r   r-   )rv   rc   rT   rW   r   r  r  r  r  r  bbs              rX   test_qz_double_complexTestQZ.test_qz_double_complex
  s    ii##E*JJvJJv!y1Vaffhjj !"''1-!"''1-Vaffhjj !"''1-!"''1-!!ffhjj.#a&9!!ffhjj.#a&9tBx1}%&rZ   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      @)r  rl       Er\  )皙@rY        GrY  )r  r  r  r  )r  r   g      r  )r  r=  rZ  r  )rj  r   rZ  r>  c                     US:H  $ )Nr   r   )araibetas      rX   rS  ,TestQZ.test_qz_double_sort.<locals>.<lambda>
  s    bAgrZ   r]  )	rN   r,   r2  r3  r   r   r   rR   r   )rv   rW   r   r  r  r  r  r`  s           rX   test_qz_double_sortTestQZ.test_qz_double_sort
  sX     HH--,,. /
 HH++++- .
 	j"a1MNrZ   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 )Nr  rp   Fr   r   r  r  s	            rX   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}%&rZ   r   N)r   r   r   r   r  r  r  r  r  r  r.  r   r   rZ   rX   r  r  t
  s'    
'
',,' 5FF
'rZ   r  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              )rK   y333333@y              y      @      )r  r  r  rN  r  )r  r  r  r\  )r  g      :@r  rY  )rE   rL   rE   )rE   rn   rU  )rE   rn   rn   )rE   rn   r  rU  )r$  r  r   r   )r>  r>  r=  rA  )rA  r>  r  r   )r   r>  rD  rA  )rD  r?  rY  r?  )rA  rA  r=  r7  )r7  r  rY  rY  )r$  r  r>  rA  rL   r   rE   )rN   r,   r>   r-   rW   r   )
clsA1B1A2B2A3B3A4B4A5s
             rX   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_$$rZ   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]  )rN   r  ziprW   r   r    tuple)rv   r9   AiBirets        rX   	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   rE   rL   T)rN   r>   r8   r   rR   rQ   r   trilr1   r   r
   r   r   r   r*   r,   )rv   rW   r   r9   r  r  alphar  r  r  Idr   evalsr  tmpsortfunlastsortcursorts                     rX   checkTestOrdQZ.checkd  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 #rZ   c                     U R                  U5      n[        X R                  U R                  5       H  u  p4nU R                  " XEU/UQ76   M     g r  )r  r  rW   r   r  )rv   r9   r  retir  r  s         rX   	check_allTestOrdQZ.check_all  s@    nnT"VVTVV4LDbJJrt+d+ 5rZ   c                 &    U R                  S5        g )NrM  r  r  s    rX   test_lhpTestOrdQZ.test_lhp      urZ   c                 &    U R                  S5        g )NrO  r  r  s    rX   test_rhpTestOrdQZ.test_rhp  r  rZ   c                 &    U R                  S5        g )NrP  r  r  s    rX   test_iucTestOrdQZ.test_iuc  r  rZ   c                 &    U R                  S5        g )NrQ  r  r  s    rX   test_oucTestOrdQZ.test_ouc  r  rZ   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rN   
empty_likeboolr   r,  r  r  nonzeros       rX   r9    TestOrdQZ.test_ref.<locals>.sort  D    --.CAvG!CMJqz1771<CLJrZ   r  rv   r9   s     rX   test_refTestOrdQZ.test_ref      	 	trZ   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       rX   r9    TestOrdQZ.test_cef.<locals>.sort  r  rZ   r  r  s     rX   test_cefTestOrdQZ.test_cef  r  rZ   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 )NrE   rL   rM  r]  )r    rW   r   r  )rv   r  s     rX   test_diff_input_typesTestOrdQZ.test_diff_input_types  s    DFF1Itvvayu5

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

466!9dffQi55rZ   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 )NrL   r   r\   rM  rN  rO  rP  rQ  y             ?y      ?      ?yٿɿ      ?      r   rE   r]  )	rN   r>   r-   r   r  r  r    r  r   )rv   r  r  	expected1r  r  	expected2r  r  	expected3r  r  	expected4r  B5	expected5rW   r   expectedr  r  	expectedisortstrexpected_eigvalsr  r  r  azerobzeror,  s                                 rX   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 "5rZ   r   N)r   r   r   r   classmethodr  r  r  r  r  r  r  r  r  r  r  r-  r   r   rZ   rX   r  r  '  sM    4% 4%l
,\,		6-5rZ   r  c                       \ rS rSr\R
                  R                  S5      S 5       r\R
                  R                  S 5       r	Sr
g)TestOrdQZWorkspaceSizei  rp   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 )Nr     c                 
    X:  $ r  r   r  r  s     rX   rS  7TestOrdQZWorkspaceSize.test_decompose.<locals>.<lambda>      U\rZ   r  rp  c                 
    X:  $ r  r   r5  s     rX   rS  r6    r7  rZ   r   )	rN   rO   r*  r3   r   rS   r    r   r4   )rv   rc   r  ddtyperW   r   r  s          rX   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 4rZ   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 )Nr  r3  rQ  r]  )	rN   rO   r*  r3   r   r   r4   rS   r    )rv   rc   r  r9  rW   r   SrR   r  r  UrK  s               rX   test_decompose_ouc)TestOrdQZWorkspaceSize.test_decompose_ouc  s    ii##E*zz2::r}}bllKF

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

A6"))&1A&+Au&=#A%q! LrZ   r   N)r   r   r   r   r   r   	fail_slowr:  r  r?  r   r   rZ   rX   r1  r1    sA    [[1( (" [[> >rZ   r1  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   )_datacopiedrE   rL   rn   c                   &   > \ rS rSrSU 4S jjrSrg)-TestDatacopied.test_datacopied.<locals>.Fake1i  Nc                    > T$ r  r   )rv   rV   r}   rW   s      rX   	__array__7TestDatacopied.test_datacopied.<locals>.Fake1.__array__  s    rZ   r   )NN)r   r   r   r   rI  r   r  s   rX   Fake1rG    s     rZ   rK  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   rX   Fake2rM    s    "#"7"7rZ   rO  FTr   )scipy.linalg._decomprE  r@   r;   tolistr}   r   repr)rv   rE  r  LM2rK  rO  F1F2itemstatusarrrW   s               @rX   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rZ   r   N)r   r   r   r   rZ  r   r   rZ   rX   rC  rC    s    -rZ   rC  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   rL   r#  offsetcountrV   r  r  Trg  N)	r2   rN   uint8
frombufferdatar3   r1  r
   rR   rw   rJ  s     rX   test_aligned_mem_floatre  *  sT     	s"((#A 	affQcAA			(AtrZ   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   rU  r#  r]  r`  Trg  N)	r2   rN   ra  rb  rc  r   r1  r
   rR   rd  s     rX   test_aligned_memrh  7  sT    
 	s"((#A 	affQc?A			(AtrZ   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`  Trg  N)	r1   rN   ra  rb  rc  r   r1  r
   rR   rd  s     rX   test_aligned_mem_complexrj  F  sT     	d"((#A 	affQcAA			(AtrZ   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   rU  r]  .rE   )r  r   r_   r]   rN   r=   r1   r   rV   r  ra  rb  rc  r1  r8   rR   )funcr  rZ  r   rw   r  s         rX   check_lapack_misalignedrm  T  s    :D3t9GadBJJ''!$))ADJJ$7$779JBrwwq		%&TZZ1BADJJ'BdBsGaD!v14::"tvva"6" rZ   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 )Nr  r   r#  r`  i N  rU  r]  Trg  )ru  rw  )rN   r>   r   r2   r1  ra  rb  rc  r   r   r
   rW  r   r   r   r   r   r   r   r   r   r   r   rm  )	r  Rr=  r   LUpivrl  r  rZ  s	            rX   test_lapack_misalignedrs  f  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%!rZ   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  )r?   r
   r  s    rX   test_eigTestOverwrite.test_eig  s    C&*C&&!12rZ   c                 J    [        [        S/5        [        [        SS/5        g rw  )r?   r   r  s    rX   	test_eighTestOverwrite.test_eigh  s    D6(+D66"23rZ   c                 &    [        [        S/5        g NrT  )r?   r   r  s    rX   r  TestOverwrite.test_eig_banded      J1rZ   c                 &    [        [        S/5        g rw  )r?   r   r  s    rX   test_eigvalsTestOverwrite.test_eigvals      GfX.rZ   c                 &    [        [        S/5        g rw  )r?   r   r  s    rX   test_eigvalshTestOverwrite.test_eigvalsh  s    Hvh/rZ   c                 &    [        [        S/5        g r~  )r?   r   r  s    rX   r  !TestOverwrite.test_eigvals_banded  s    NVH5rZ   c                 &    [        [        S/5        g rw  )r?   r   r  s    rX   test_hessenbergTestOverwrite.test_hessenberg  r  rZ   c                 &    [        [        S/5        g rw  )r?   r   r  s    rX   test_lu_factorTestOverwrite.test_lu_factor  s    Ix0rZ   c                 |   ^ [         R                  " / SQ/ SQ/ SQ/5      n[        U5      m[        U4S jS/5        g )Nrm   r  )rI  r  r  c                    > [        TU 5      $ r  )r   )r   xlus    rX   rS  -TestOverwrite.test_lu_solve.<locals>.<lambda>  s    hsA&6rZ   )rn   )rN   r,   r   r?   )rv   r,  r  s     @rX   test_lu_solveTestOverwrite.test_lu_solve  s.    HHiI67l6?rZ   c                 &    [        [        S/5        g rw  )r?   r   r  s    rX   test_luTestOverwrite.test_lu      B)rZ   c                 &    [        [        S/5        g rw  )r?   r   r  s    rX   test_qrTestOverwrite.test_qr  r  rZ   c                 &    [        [        S/5        g rw  )r?   r   r  s    rX   test_rqTestOverwrite.test_rq  r  rZ   c                 &    [        [        S/5        g rw  )r?   r   r  s    rX   
test_schurTestOverwrite.test_schur  s    EF8,rZ   c                 Z    [        S S/[        R                  [        R                  /S9  g )Nc                     [        U S5      $ )Nr   )r   rw   s    rX   rS  2TestOverwrite.test_schur_complex.<locals>.<lambda>  s    eAy&9rZ   r  )dtypes)r?   rN   r3   r   r  s    rX   test_schur_complex TestOverwrite.test_schur_complex  s!    9F8$&JJ

#;	=rZ   c                 B    [        [        S/5        [        S S/5        g )Nr  c                     [        U SS9$ )Nr  r  )r   r  s    rX   rS  (TestOverwrite.test_svd.<locals>.<lambda>  s    c!7&CrZ   )r?   r   r  s    rX   test_svdTestOverwrite.test_svd  s    C&*CfXNrZ   c                 &    [        [        S/5        g rw  )r?   r   r  s    rX   test_svdvalsTestOverwrite.test_svdvals  r  rZ   r   N)r   r   r   r   rx  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   rZ   rX   ru  ru    sT    342/0621@
***-=O/rZ   ru  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 )NrL   r   rZ  rE   gz]ʂ>r[  rL   rE   rC  rp   -C6?MbP?rcondư>rq   )rN   r   r   rS   r\  r]  r   r   r8   r   meanrR   rO   r*  rP   )rT   rV   skip_bigXr]  r   Yrc   s           rX   _check_orthr    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) urZ   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)r  z.memory error perhaps caused by orth regression)r  rN   r   MemoryErrorAssertionError)rT   r  s     rX   test_orth_memory_efficiencyr    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rE   rL   rn   r  r#  )rN   r3   r   r4   r   	itertoolsproductr  )r  r  r   rT   s       rX   	test_orthr    sD    jj"**bllBMMBFE""61A 2rZ   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   rL   )rN   r   r>   r   rV   r8   )r   rw   r  oas       rX   test_orth_emptyr    sW    
r"A		B	aB88tBx~~%%%88vrZ   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 )NrE   r  rL   r   rZ  r   rC  r  rp   r  r  r  r  rq   )rN   rO   r*  r3   r   r4   r   r  r  r   r\  r]  r%   r   r8   r   rR   randnrP   rS   )
rv   rc   r  r  r   rT   r  r]  r   r  s
             rX   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; 6rZ   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 r  )rN   r   r>   r%   r8   rV   )rv   r   rw   r  nsas        rX   test_null_space_empty#TestNullSpace.test_null_space_empty!  sY    HHV2&VVAR myyF"""yyJrN00000rZ   rd  TFr   r  ru  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 r  rE   rL   )rd  r   r  r   r#  rC  )
rN   rO   rV  standard_normalr%   r}   r   r\  rV   r]  )rv   rd  r   r  rc   rT   r  r  s           rX   test_null_space_options%TestNullSpace.test_null_space_options*  sw     ii##$;<QT1.qvvx[%24qrxx'8'<'<S'@ArZ   r   N)r   r   r   r   r  r   r   r   r^   r   rN   r3   r   r4   r  r  r   r   rZ   rX   r  r    s    #2J [[TC

GR\\#RS1 T1 [[]T5M:[[^dE];[[_w.@AB B < ;BrZ   r  c            	         [        S[        5      n U S S 2S S24   nU S S 2SS 24   n[        [        X5      [        R
                  S-  /S-  SS9  [        [        X!5      [        R
                  S-  /S-  SS9  X4 H8  n[        [        X35      [        R                  " UR                  S   5      SS9  M:     [        R                  " / SQ/ SQ/ S	Q/ S
Q/5      nSn[        [        US S 2S S24   US S 2SS 24   5      S   USS9  [        [        US S 2SS 24   US S 2S S24   5      S   USS9  Sn[        [        US S 2S S24   US S 2S/4   5      USS9  [        [        US S 2S/4   US S 2S S24   5      USS9  Sn[        [        US S 2S S24   US S 2S/4   5      USS9  [        [        US S 2S/4   US S 2S S24   5      USS9  Sn[        [        US S 2S S24   US S 2SS 24   5      US/SS9  [        [        [        US   U5        [        [        [        X3S   5        [        [        [        US S U5        [        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " [        R
                  S-  SS/5      n[        [        X5      USS9  S/S//nSS/SS//n[        [        XV5      SSS9  [        [        Xe5      SSS9  [        R                  " S5      n[        R                  " S5      n[        [        XV5      [        R                  " S5      5        [        R                  " S5      n[        R                  " S5      n[        [        XV5      [        R                  " S5      5        [        R                  " S5      n[        R                  " S5      n[        [        XV5      [        R                  " S5      5        g ) Nr  rn   r=  rB  rC  rE   )g4?gVRf?g8!@g6?)gN$ЗW?gJg~'@g3:]$)gvMg ۿgPT#ge,?)g΀?g+?gNG@gS<ʿg"	?rL   r   r  r^  gL0?gĹ-?gyv?r   r  )r   rE   r   )r   r   rE   r  r  r   r   r   r   r   r   r  )r"   r   r   r!   rN   pir1   r8   r,   r2  r3  r   )HrW   r   r,  r'  rw   r   s          rX   test_subspace_anglesr  6  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>:rZ   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)rN   einsum)rv   rw   r   s      rX   matmulTestCDF2RDF.matmul}  s    yy-q44rZ   c                 X    [        U R                  X!5      U R                  X25      5        g r  )r   r  )rv   rx   rf   r,  s       rX   assert_eig_validTestCDF2RDF.assert_eig_valid  s"    !KKKK	
rZ   c                     [         R                  " S5      n[         R                  " S5      [         R                  " S5      p2[        X#5      u  pEU R                  XEU5        g )Nr   r   )rN   r   r&   r  rv   r  rx   rf   wrr   s         rX   test_single_array0x0real$TestCDF2RDF.test_single_array0x0real  sC    HHVxx{BHHV,1ba(rZ   c                     [         R                  " SS/SS//5      n[         R                  R                  U5      u  p#[	        X#5      u  pEU R                  XEU5        g )NrE   rL   rn   r   rN   r,   r/   r
   r&   r  r  s         rX   test_single_array2x2_real%TestCDF2RDF.test_single_array2x2_real  sL    HHq!fq"g&'yy}}Qba(rZ   c                     [         R                  " SS/SS//5      n[         R                  R                  U5      u  p#[	        X#5      u  pEU R                  XEU5        g )NrE   rL   r   r  r  s         rX   test_single_array2x2_complex(TestCDF2RDF.test_single_array2x2_complex  sL    HHq!fr1g&'yy}}Qba(rZ   c                     [         R                  " / SQ/ SQ/ SQ/5      n[         R                  R                  U5      u  p#[	        X#5      u  pEU R                  XEU5        g )Nrm   ro   r  r  s         rX   test_single_array3x3_real%TestCDF2RDF.test_single_array3x3_real  sF    HHiI67yy}}Qba(rZ   c                     [         R                  " / SQ/ SQ/ SQ/5      n[         R                  R                  U5      u  p#[	        X#5      u  pEU R                  XEU5        g Nrm   )r   rU  rp   )r   r  rU  r  r  s         rX   test_single_array3x3_complex(TestCDF2RDF.test_single_array3x3_complex  sF    HHiJ78yy}}Qba(rZ   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)  rE   rI  r#  rN   rO   rV  r   r/   r
   r&   r  rv   rc   r  r  rx   rf   r  r   s           rX   test_random_1d_stacked_arrays)TestCDF2RDF.test_random_1d_stacked_arrays  sg    ii##D)q!A

C;'A99==#DAQ]FB!!"!,	 rZ   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)  rE   rI  r  r  r  s           rX   test_random_2d_stacked_arrays)TestCDF2RDF.test_random_2d_stacked_arrays  si    ii##D)q!A

BA>*A99==#DAQ]FB!!"!,	 rZ   c                     [         R                  " S5      [         R                  " S5      p![        [        [
        X5        g )Nr   )rL   )rN   r   r,   r2  r3  r&   rv   rx   rf   s      rX   test_low_dimensionality_error)TestCDF2RDF.test_low_dimensionality_error  s%    xx|RXXd^1j'10rZ   c                     [         R                  " S5      [         R                  " S5      R                  SS5      p![        [        [
        X5        g )Nrn   rq   rL   rN   r2   r1  r2  r3  r&   r  s      rX   r4  !TestCDF2RDF.test_not_square_error  s2    yy|RYYq\11!Q71j'10rZ   c                     [         R                  " / SQ/ SQ/ SQ/5      n[         R                  R                  U5      u  p#[	        [
        [        X25        g r  rN   r,   r/   r
   r2  r3  r&   rv   r  rx   rf   s       rX   test_swapped_v_w_error"TestCDF2RDF.test_swapped_v_w_error  s7    HHiJ78yy}}Qj'10rZ   c                     [         R                  " S5      [         R                  " S5      R                  SS5      p![        [        [
        X5        g )Nrn   r  rU  r  r  s      rX   test_non_associated_error%TestCDF2RDF.test_non_associated_error  s2    yy|RYYr]221a81j'10rZ   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 )Nrm   r   )rL   rp   y      @      r	  r
  s       rX   test_not_conjugate_pairs$TestCDF2RDF.test_not_conjugate_pairs  s    HHiL9:yy}}Qj'10 HH	<0	<0
  yy}}Qj'10rZ   r   N)r   r   r   r   r  r  r  r  r  r  r  r  r  r  r4  r  r  r  r   r   rZ   rX   r  r  {  sH    5
)))))--11
11
1rZ   r  )F)r  platformsysrE  numpyrN   numpy.testingr   r   r   r   r   r   r   r	   r2  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(   scipy.linalg._miscr)   scipy.linalg._decomp_qzr*   scipy.statsr+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   scipy.linalg._testutilsr?   scipy.sparse._sputilsr@   scipy._lib._testutilsrA   scipy.linalg.blasrB   scipy.conftestrC   scipy.__config__rD   
test_basicrF   machineIS_WASMr   rY   r   REAL_DTYPESr   rM   rD  rh   rj   r   r  r
  r0  rt  r  r   r  xfail_on_32bitparallel_threads_limitrA  r  r  r  r  r  r  r=  r|  blas_providerblas_versionr  r  r1  rC  re  rh  rj  rm  xfailrs  ru  r  r  rV   intpr  r  r  r   r^   r   r  r  r  r  r   rZ   rX   <module>r,     s     
  5 5  *N N N N N N N N 1 # 4 #; ; ; ; ; ; 8 ( 3 ' . # 1<<<'U8+;+;+=AU+U (-E   zz2::&,,.	~	%
4'= '=TY4 Y4xz$ z$x	~! ~!BI$ I$Vz/ z/zM  G$;<AB##A&rI&BC D  ' C =
#; ;|E Ex xv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 \1rZ   