
    Bpj                    p   S SK r S SKrS SKrS SKrS SKrS SKrS SKJrJrJ	r	J
r
JrJrJrJr  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*  S SK+J,r,  S SK-J.r.J/r/  S SK0J1r1  S S	K2J3r3  \R                  \Rh                  \Rj                  4r6\Rn                  \Rp                  \Rr                  4r:\6\:-   r;\Rx                  R{                  S
SS0SS00 // SQS9r>\Rx                  R{                  SSS0SS00 // SQS9r?S r@ " S S5      rA " S S5      rB " S S5      rC " S S5      rD " S S5      rE " S S5      rFS7S jrG\Rx                  R                  S 5       " S! S"5      5       rI " S# S$5      rJ " S% S&5      rK\Rx                  R{                  S'S(5      \Rx                  R{                  S)\\45      S* 5       5       rL " S+ S,5      rM " S- S.5      rN " S/ S05      rO " S1 S25      rP " S3 S45      rQ\Rx                  R                  S 5       " S5 S65      5       rRg)8    N)arangearraydotzerosidentity	conjugate	transposefloat32)assert_equalassert_almost_equalassert_assert_array_almost_equalassert_allcloseassert_array_equal)raises)solveinvdetlstsqpinvpinvhnormsolve_bandedsolveh_bandedsolve_triangularsolve_circulant	circulantLinAlgError
block_diagmatrix_balanceqrLinAlgWarningassert_no_overwrite)check_free_memoryIS_MUSL)	HAS_ILP64)skip_xp_invalid_argoverwrite_kwoverwrite_aTF)TrueFalseNone)idsoverwrite_b_kwoverwrite_bc                     U nU[         R                  :X  a  [         R                  nO$U[         R                  :X  a  [         R                  n[         R
                  " U5      R                  $ )z;Get the epsilon for dtype, possibly downcast to BLAS types.)np
longdoublefloat64clongdouble
complex128finfoeps)dtypdts     Y/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_basic.py	_eps_castr<   ,   sE    	B	R]]ZZ	r~~	]]88B<    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
\\\R$                  \\R(                  /5      \R                  R                  S\\\R$                  \\R(                  /5      S 5       5       rSrg)TestSolveBanded6   c                 \   [        / SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/ SQ/ SQ/5      nS	u  p4[        / S
Q5      nUR                  SS5      n[        SS/SS/SS/SS//5      n[        / SQ/ SQ/ SQ/ SQ/5      nXVXx4 H%  n	[        X44X)5      n
[        [	        X5      U	5        M'     g )N      ?   r   r         r         rD   rJ   r                 rD   rH   rJ   rK   rG   rD   rO   rF   rK   rN   r   rJ   rM   r   r   rJ   rK         $@rQ          @g      ,@rM   rK   rJ   rF   rG      rK   r   r   r   r   r   r   rK   r   rK   r   r   r   reshaper   r   r   selfaablub4b4by1b4by2b4by4bxs              r;   	test_realTestSolveBanded.test_real8   s    ?! !# $ O""!# $ )*

2q!1vQx1v1v   |###% & U*AaVR+A%c!i3 +r=   c                 \   [        / SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/ SQ/ SQ/5      nS	u  p4[        / S
Q5      nUR                  SS5      n[        SS/SS/SS/SS//5      n[        / SQ/ SQ/ SQ/ SQ/5      nXVXx4 H%  n	[        X44X)5      n
[        [	        X5      U	5        M'     g )NrB   rE   )               @rK   rD   rn   rL   rQ   rD   rH   rn   rR   rS   )rn   rM   r   r   rU   rW   rQ   rX   y              ,@rM   rK   rJ   rF   rG   rY   rZ   )r   r   r                 ?r\   r]   r_   s              r;   test_complexTestSolveBanded.test_complexP   s    ?!"!# $ $"""$ % *+

2q!1vQx1v1v   |$##% & U*AaVR+A%c!i3 +r=   c                    [        / SQ/ SQ/ SQ/5      n[        R                  " USSS 24   S5      [        R                  " USS S 24   S5      -   [        R                  " USS S24   S5      -   n[        / SQ5      nUR                  SS5      n[        SS/S	S
/SS/SS//5      n[        / SQ/ SQ/ SQ/ SQ/5      nX4XV4 H$  n[	        SX5      n[        [        X(5      U5        M&     g )NrP   rR   rS   r   rK   rJ   rM   rV   rF   rG   rY   rZ   r[   r\   rK   rK   r   r2   diagr^   r   r   r   	r`   rb   ra   re   rf   rg   rh   ri   rj   s	            r;   test_tridiag_real!TestSolveBanded.test_tridiag_realh   s    O!!# $ GGBq!"uIq!BGGBq!tHa$88277@B1crc6
B<P P)*

2q!1vQx1v1v   |###% & U*AVR+A%c!i3 +r=   c                    [        / SQ/ SQ/ SQ/5      n[        R                  " USSS 24   S5      [        R                  " USS S 24   S5      -   [        R                  " USS S24   S5      -   n[        / SQ5      nUR                  SS5      n[        SS/S	S
/SS/SS//5      n[        / SQ/ SQ/ SQ/ SQ/5      nX4XV4 H$  n[	        SX5      n[        [        X(5      U5        M&     g )Nro   rR   rS   r   rK   rJ   rM   rp   rF   rG   rY   rZ   r[   r\   ru   rv   rx   s	            r;   test_tridiag_complex$TestSolveBanded.test_tridiag_complex|   s    $!!# $ GGBq!"uIq!BGGBq!tHa$88277?A!SbS&z2<O O*+

2q!1vQx1v1v   |###% & U*AVR+A%c!i3 +r=   c                     [        / SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/ SQ/ SQ/5      nS	u  p4[        / S
Q5      n[        X44X%SS9n[        [        X5      U5        g )NrB   rE   rI   rL   rP   rR   rS   rT   rU   rV   Fcheck_finite)r   r   r   r   )r`   ra   rb   rc   rd   re   rj   s          r;   test_check_finite!TestSolveBanded.test_check_finite   sj    ?! !# $ O""!# $ )*!e<!#a)R0r=   c                    [        / SQ/ SQ/ SQ/ SQ/5      nSu  p#[        / SQ5      R                  SS5      n[        [        [        X#4X5        [        [        [        X#4US	S
/5        [        [        [        SUS	S
/5        g )NrP   rR   rS   rT   rU   )rC   rX         @      @rM   rG   rC   rX   ru   )r   r^   assert_raises
ValueErrorr   )r`   rb   rc   rd   bads        r;   test_bad_shapeTestSolveBanded.test_bad_shape   sy    O""!# $ ()11"a8j,@j,S#JG 	j,S#JGr=   c                    [        / SQ/5      n[        / SQ/5      n[        SS//U5      n[        X2SS9  [        SS/S/S//U5      n[        X2SS9  [        UR                  [
        R                  " S	5      5        [        U/ SQ/5        g )
NrC   rX   r   )      ?rC   g      ?r   r   rJ   V瞯<rtolru   r   f8)r   r   r   r   dtyper2   r   )r`   ri   refrj   s       r;   test_1x1TestSolveBanded.test_1x1   s    
 <.!_%&1#*U+ 1#sQC!4U+QWWbhhtn-1/0r=   c                     / SQ/ SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/ SQ/nS	u  p4/ S
Qn[        X44X%5      n[        [        X5      U5        g )NrB   rE   rI   rL   rP   rR   rS   rT   rU   rV   )r   r   r   )r`   ra   rb   rc   rd   ri   rj   s          r;   test_native_list_arguments*TestSolveBanded.test_native_list_arguments   sT      "!'!#a)Q/r=   dt_abdt_bc           	      ,   [         R                  " / /US9n[         R                  " / US9n[        SX45      nUR                  S:X  d   eUR                  [        [         R                  " SUS9[         R                  " SUS95      R                  :X  d   e[         R                  " SUS9n[        SX45      nUR                  S:X  d   eUR                  [        [         R                  " SUS9[         R                  " SUS95      R                  :X  d   eg )Nr   r   r   rK   )	r2   r   r   shaper   r   eyeonesemptyr`   r   r   rb   ri   rj   s         r;   
test_emptyTestSolveBanded.test_empty   s     XXrd%(HHRt$'ww$ww%q 68NOUUUUUHHV4('ww&   ww%q 68NOUUUUUr=    N)__name__
__module____qualname____firstlineno__rk   rr   ry   r|   r   r   r   r   pytestmarkparametrizeintfloatr2   r
   complex	complex64r   __static_attributes__r   r=   r;   r?   r?   6   s    40404(4(1H1"0 [[WsE2::w&UV[[Vc5"**gr||%TUV V WVr=   r?   c            	       ~   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS r\R6                  R9                  S\\\R@                  \!\RD                  /5      \R6                  R9                  S\\\R@                  \!\RD                  /5      S 5       5       r#Sr$g)TestSolveHBanded   c                 x    [        / SQ/ SQ/ SQ/5      n[        / SQ5      n[        X5      n[        U/ SQ5        g NrQ   rQ   rX   rX   rC   rC   rC   r   r   r   r   rC   r   rC   rX   rQ   rC   rQ   rQ   r   r   r   r`   rb   ri   rj   s       r;   test_01_upperTestSolveHBanded.test_01_upper   s>     (((* + &'" !!%9:r=   c                     [        / SQ/ SQ/ SQ/5      n[        SS/SS/SS/SS//5      n[        X5      n[        SS/SS/SS/SS//5      n[        X45        g )	Nr   r   r   rC         @r   rX   rQ   r   r`   rb   ri   rj   expecteds        r;   test_02_upperTestSolveHBanded.test_02_upper   s     (((* + C::::   " 3****& ' 	"!.r=   c                     [        / SQ/ SQ/ SQ/5      n[        / SQ5      R                  SS5      n[        X5      n[        U[        / SQ5      R                  SS5      5        g )Nr   r   r   r   rM   rK   r   r   r^   r   r   r   s       r;   test_03_upperTestSolveHBanded.test_03_upper  s]     (((* + &'//A6" !!U+;%<%D%DR%KLr=   c                 v    [        / SQ/ SQ/ SQ/5      n[        / SQ5      n[        XSS9n[        U/ SQ5        g )Nr   rC   rC   rC   r   rX   rX   rQ   rQ   r   Tlowerr   r   r   s       r;   test_01_lowerTestSolveHBanded.test_01_lower  s@     (((* + &'"t,!!%9:r=   c                     [        / SQ/ SQ/ SQ/5      n[        SS/SS/SS/SS//5      n[        XSS	9n[        S
S/SS
/S
S/S
S
//5      n[        X45        g )Nr   r   r   rC   r   r   rX   Tr   rQ   r   r   s        r;   test_02_lowerTestSolveHBanded.test_02_lower  s     (((* + C::::   "t,3****& ' 	"!.r=   c                     [        / SQ/ SQ/ SQ/[        S9n[        / SQ[        S9n[        X5      n[        U/ SQ5        g )Nr   r   r   r   r   r   r   r
   r   r   r   s       r;   test_01_float32 TestSolveHBanded.test_01_float322  sC     (((*18: &g6" !!%9:r=   c                     [        / SQ/ SQ/ SQ/[        S9n[        SS/SS/SS/SS//[        S9n[        X5      n[        S	S/SS	/S	S/S	S	//5      n[        X45        g )
Nr   r   r   r   rC   r   r   rX   rQ   r   r   s        r;   test_02_float32 TestSolveHBanded.test_02_float32@  s     (((*18: C:::: './ " 3****& ' 	"!.r=   c                 x    [        / SQ/ SQ/ SQ/5      n[        / SQ5      n[        X5      n[        U/ SQ5        g )Nr   r                r   r   r   )       @            @            @      ?       @      ?)rQ   rC   rC   rQ   r   r   s       r;   test_01_complex TestSolveHBanded.test_01_complexU  s>     (.(* + ./" !!%9:r=   c                     [        / SQ/ SQ/ SQ/5      n[        SS/SS/SS	/S
S//5      n[        X5      n[        SS/SS/SS/SS//5      n[        X45        g )Nr   r   r   r          @      @r               r   y      @       @r   rq   rQ   rC   r   r   s        r;   test_02_complex TestSolveHBanded.test_02_complexc  s     (.(* + D$<E?D>":   " 3+***& ' 	"!.r=   c                 r    [        / SQ/ SQ/5      n[        / SQ5      n[        X5      n[        U/ SQ5        g )Nr   rC   rC   r   r   r   rC   r   rC   rQ   rC   rQ   r   r   s       r;   test_tridiag_01_upper&TestSolveHBanded.test_tridiag_01_upperx  s1     O_56/"" !!_5r=   c                     [        / SQ/ SQ/5      n[        SS/SS/SS//5      n[        X5      n[        SS/SS/SS//5      n[        X45        g )Nr   r   rC   r   rX   rQ   r   r   s        r;   test_tridiag_02_upper&TestSolveHBanded.test_tridiag_02_upper  st     O#% &C:::   " 3***& ' 	"!.r=   c                     [        / SQ/ SQ/5      n[        / SQ5      R                  SS5      n[        X5      n[        U[        / SQ5      R                  SS5      5        g )Nr   r   r   rM   rK   r   r   r   s       r;   test_tridiag_03_upper&TestSolveHBanded.test_tridiag_03_upper  sP     O_56/"**2q1" !!U?%;%C%CB%JKr=   c                 p    [        / SQ/ SQ/5      n[        / SQ5      n[        XSS9n[        U/ SQ5        g )Nr   rC   rC   r   r   Tr   r   r   r   s       r;   test_tridiag_01_lower&TestSolveHBanded.test_tridiag_01_lower  s8     O#% &/""t,!!_5r=   c                     [        / SQ/ SQ/5      n[        SS/SS/SS//5      n[        XSS9n[        SS/SS/SS//5      n[        X45        g )	Nr   r   rC   r   rX   Tr   rQ   r   r   s        r;   test_tridiag_02_lower&TestSolveHBanded.test_tridiag_02_lower  sv     O#% &C:::   "t,3***& ' 	"!.r=   c                 ~    [        / SQ/ SQ/[        S9n[        / SQ[        S9n[        X5      n[        U/ SQ5        g )Nr   r   r   r   r   r   r   s       r;   test_tridiag_01_float32(TestSolveHBanded.test_tridiag_01_float32  s5     O_5WE/1" !!_5r=   c                     [        / SQ/ SQ/[        S9n[        SS/SS/SS//[        S9n[        X5      n[        SS/SS/SS//5      n[        X45        g )Nr   r   r   rC   r   rX   rQ   r   r   s        r;   test_tridiag_02_float32(TestSolveHBanded.test_tridiag_02_float32  sz     O#%,35C:::&-/ " 3***& ' 	"!.r=   c                 r    [        / SQ/ SQ/5      n[        / SQ5      n[        X5      n[        U/ SQ5        g )Nr   r   r   r   )r   r   r   )rQ   rC   rC   r   r   s       r;   test_tridiag_01_complex(TestSolveHBanded.test_tridiag_01_complex  s3     '9:'(" !!_5r=   c                     [        / SQ/ SQ/5      n[        SS/SS/SS//5      n[        X5      n[        S	S
/SS	/SS//5      n[        X45        g )Nr  r   r                 @r   r   r   r   rQ   rq   rC   r   r   s        r;   test_tridiag_02_complex(TestSolveHBanded.test_tridiag_02_complex  sv     '#% &C;G$C=" # " 3+**& ' 	"!.r=   c                 p    [        / SQ/ SQ/5      n[        / SQ5      n[        XSS9n[        U/ SQ5        g )Nr   r   r   Fr   r   r   r   s       r;   r   "TestSolveHBanded.test_check_finite  s3     O_56/""e4!!_5r=   c                     [        / SQ/ SQ/5      n[        SS/SS//5      n[        [        [        X5        [        [        [        USS/5        [        [        [        US/5        g )Nr   r   rC   r   rX   )r   r   r   r   )r`   rb   ri   s      r;   test_bad_shapes TestSolveHBanded.test_bad_shapes  s`    O#% &C::  j-7j-c3Z@j-cU;r=   c                     [        S/// SQ/5      n[        U/ SQ/5        [        UR                  [        R                  " S5      5        g )NrK   rK   rJ   rY   r   r   )r   r   r   r   r2   )r`   rj   s     r;   r   TestSolveHBanded.test_1x1  s7    A3%)-1/0QWWbhhtn-r=   c                 T    / SQ/ SQ/ SQ/n/ SQn[        X5      n[        U/ SQ5        g r   )r   r   r   s       r;   r   +TestSolveHBanded.test_native_list_arguments  s.    """$ !" !!%9:r=   r   r   c           	      (   [         R                  " / /US9n[         R                  " / US9n[        X45      nUR                  S:X  d   eUR                  [        [         R                  " SUS9[         R                  " SUS95      R                  :X  d   e[         R                  " SUS9n[        X45      nUR                  S:X  d   eUR                  [        [         R                  " SUS9[         R                  " SUS95      R                  :X  d   eg )Nr   r   rK   r   )	r2   r   r   r   r   r   r   r   r   r   s         r;   r   TestSolveHBanded.test_empty  s     XXrd%(HHRt$" ww$ww%q 68NOUUUUUHHV4(" ww&   ww%q 68NOUUUUUr=   r   N)%r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r  r   r   r   r   r   r   r   r2   r
   r   r   r   r   r   r=   r;   r   r      s    ;/*M;/*;/*;/*	6/"	L
6/"	6/"	6/"	6<.
; [[WsE2::w&UV[[Vc5"**gr||%TUV V WVr=   r   c                   |   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS r\R0                  R3                  SSS/5      S 5       rS rS r\R0                  R3                  SS5      S 5       r\R0                  R3                  SS5      S 5       r\R0                  R3                  S S!S"S!S"//5      S# 5       rS$ r S% r!\R0                  RE                  S&S'9S( 5       r#S) r$S* r%S+ r&\R0                  R3                  S,S-S./5      \R0                  R3                  S/ S/Q5      \R0                  R3                  S0\'RP                  \'RR                  \'RT                  \'RV                  /5      S1 5       5       5       r,\R0                  R3                  S2\-\.\'RP                  \/\'RT                  /5      \R0                  R3                  S3\-\.\'RP                  \/\'RT                  /5      S4 5       5       r0S5 r1\R0                  R3                  S0\'RR                  \'RV                  /5      \R0                  R3                  S/ S6Q5      \R0                  R3                  S7S8S9/5      \R0                  R3                  S:S;S</5      \R0                  R3                  S=S;S</5      \R0                  R3                  S>S;S</5      S? 5       5       5       5       5       5       r2\R0                  R3                  S/ S@Q5      SA 5       r3SB r4SC r5SD r6\7SE 5       r8\7SF 5       r9\7SG 5       r:\7SH 5       r;\7SI 5       r<\7\=\R0                  R3                  SJ\-\./5      \R0                  R3                  SKSLSM/5      \R0                  R3                  SN\-\./5      \R0                  R3                  SOSLSM/5      \R0                  R3                  SPS"SQ/5      \R0                  R3                  S:S;S</5      \R0                  R3                  SSRSS/5      ST 5       5       5       5       5       5       5       5       5       r>SU r?SV r@SW rASX rBS8rCgR)Y	TestSolvei(  c                     SS/SS//n[        USS/5      n[        [        X5      SS/5        SS/SS//nSS/n[        X5      n[        [        X5      SS/5        g )NrK   rC   r                   333333?r   r   r   )r`   ra   x0ri   s       r;   test_20Feb04_bugTestSolve.test_20Feb04_bug)  sn    Vc1X1q"g!#a*q!f5 Vc1XG1[!#a*q!f5r=   c                     SS/SS//nSS/SS//SS/SS/SS//4 H#  n[        X5      n[        [        X5      U5        M%     g )NrK   rD   rF   rG   r   rJ   r  r`   ra   ri   rj   s       r;   test_simpleTestSolve.test_simple4  s`    WsAhq6Aq6"a&q6C8$A aA%c!i3r=   c                     [        SS/SS//S5      nSS/SS/SS//SS	/[        SS/S5      4 H#  n[        X5      n[        [        X5      U5        M%     g )
N   rJ   rn   rG   Drq   r   rK   r  )r   r   r   r   r#  s       r;   test_simple_complexTestSolve.test_simple_complex=  sl    Aq6B7#S)q'8aV$b'A$A
 aA%c!i3r=   c           	          SS/SS//nS H6  nSS/SS//SS/4 H#  n[        XSUS9n[        [        X5      U5        M%     M8     g )	NrJ   rY   r'  r   rK   rK   r   posassume_ar   r  r`   ra   r   ri   rj   s        r;   test_simple_posTestSolve.test_simple_posG  s_    VaVE1v1v&!f !e<)#a)Q7	 r=   c                 x    SS/SS//nSS/SS/SS//4 H"  n[        XSS9n[        [        X5      U5        M$     g )Nr'  rJ   rG   rq   r   r-  r/  r  r#  s       r;   test_simple_pos_complexb"TestSolve.test_simple_pos_complexbP  sS    VaVq'8aV$A aU+A%c!i3	r=   c           	          SS/SS//nS H6  nSS/SS//SS/4 H#  n[        XSUS9n[        [        X5      U5        M%     M8     g )	NrJ   rY   r,  rK   r   symr.  r  r0  s        r;   test_simple_symTestSolve.test_simple_symX  s_    VaWE1v1v&!f !e<)#a)Q7	 r=   c                 x    SS/SS//nSS/SS/SS//4 H"  n[        XSS9n[        [        X5      U5        M$     g )Nr'  rJ   rq   r   r9  r4  r  r#  s       r;   test_simple_sym_complexb"TestSolve.test_simple_sym_complexba  sS    VaWq'8aV$A aU+A%c!i3	r=   c                 ~    SS/SS//nSS/SS/SS/SS//4 H"  n[        XSS	9n[        [        X5      U5        M$     g )
Nr'  r   r=  rq   r   rK   rJ   r9  r4  r  r#  s       r;   test_simple_sym_complex!TestSolve.test_simple_sym_complexi  Z    Yr
#q'a&8aV$A aU+A%c!i3r=   c           	          SS/SS//nS H9  nSS/SS//SS/SS/4 H#  n[        XSUS	9n[        [        X5      U5        M%     M;     g )
NrJ   rY   r8  r,  rK   r   rq   herr.  r  r0  s        r;   test_simple_her_actuallysym%TestSolve.test_simple_her_actuallysymr  sf    VaWE1v1v&!f1g !e<)#a)Q7 r=   c                 ~    SS/SS//nSS/SS/SS/SS//4 H"  n[        XS	S
9n[        [        X5      U5        M$     g )Nr'  r   r   r=  rq   r   rK   rJ   rE  r4  r  r#  s       r;   test_simple_herTestSolve.test_simple_her|  rC  r=   c                 l   [         R                  R                  S5      nSnUR                  X"/5      UR                  X"/5      S-  -   n[        X"4S5      n[	        U5      n[        U5      [        U5      S-  -   n[        SU5       H  nUS S 2U4   n[        X85      US S 2U4'   M      [        XE5        g )N  rJ   rq   r(  r  r   )	r2   randomdefault_rngr   r   r   r   r   r   )	r`   rngnAXAinvRirs	            r;   test_nils_20Feb04TestSolve.test_nils_20Feb04  s    ii##D)JJvszz1&1"441&#1vQKB&1A!Q$AAkAadG  	"!*r=   c                 8   [         R                  R                  S5      nSnUR                  X"/5      n[        U5       H  nSSX4U4   -   -  X4U4'   M     [        S5       H6  nUR                  US/5      n[	        X55      n[        [        X65      U5        M8     g )NrL  rD   皙?rG   rY   r2   rM  rN  ranger   r   r   r`   rO  rP  ra   rU  ri   rj   s          r;   test_randomTestSolve.test_random  s    ii##D)JJvqA"Q!tW*oAdG qA

Aq6"AaA%c!i3 r=   c                 d   [         R                  R                  S5      nSnUR                  X"/5      SUR                  X"/5      -  -   n[        U5       H  nSSX4U4   -   -  X4U4'   M     [        S5       H6  nUR                  US/5      n[	        X55      n[        [        X65      U5        M8     g )NrL  rD   rq   rZ  rJ   rY   r[  r]  s          r;   test_random_complexTestSolve.test_random_complex  s    ii##D)JJvcjj!&8!88qA"Q!tW*oAdG qA

Aq6"AaA%c!i3 r=   c                 ~   [         R                  R                  S5      nSnUR                  X"/5      n[        U5       H8  n[	        SSX4U4   -   -  5      X4U4'   [        U5       H  nX5U4   X4U4'   M     M:     [        S5       H4  nUR                  U/5      n[        X6SS9n[        [        X75      U5        M6     g )NrL  rD   rZ  rG   r-  r4  )r2   rM  rN  r\  absr   r   r   r`   rO  rP  ra   rU  jri   rj   s           r;   test_random_symTestSolve.test_random_sym  s    ii##D)JJvqA"ba4j/*AdG1XqD'Q$   qA

A3AaU+A%c!i3 r=   c                    [         R                  R                  S5      nSnUR                  X"/5      nUSUR                  X"/5      -  -   n[        U5       HA  n[	        SSX4U4   -   -  5      X4U4'   [        U5       H  n[        X5U4   5      X4U4'   M     MC     UR                  U/5      SUR                  U/5      -  -   n[        S5       H"  n[        X6SS9n[        [        X75      U5        M$     g )	NrL  rD   rq   rZ  rn   rJ   r-  r4  )	r2   rM  rN  r\  rd  r   r   r   r   re  s           r;   test_random_sym_complex!TestSolve.test_random_sym_complex  s    ii##D)JJv3::qf%%%qA"ba4j/*AdG1X#AdG,Q$   JJsOBszz1#..qAaU+A%c!i3 r=   c                     SS/SS//nSS/SS//SS/SS/SS//4 H"  n[        XSS9n[        [        X5      U5        M$     g )	NrK   rD   rF   rG   r   rJ   Fr   r  r#  s       r;   r   TestSolve.test_check_finite  s`    WsAhq6Aq6"QFq6C8$&Aa/A%c!i3&r=   c                     Sn/ SQn[        X5      n[        UR                  5       U5        [        UR                  S:H  S5        g )NrK   r  rY   z'Scalar_a_1D_b test returned wrong shape)r   r   ravelr   r   r#  s       r;   test_scalar_a_and_1D_b TestSolve.test_scalar_a_and_1D_b  s8    !K!!'')Q/4!JKr=   c                    [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " SS/SS/S	S
/SS//5      n[        X5      n[        U[         R                  " / SQ/ SQ/5      R                  5        g )N)?g
ףp=
@gffffff @g{Gz)g     h@g     prg     Wg     w)gHzG?gQg333333gp=
ף)g(\gQgzGg?g
ףp=
#@gQx2@g     @g      l@gp=
ף?g(\*gzGgףp=
)rC   rM   rY   r8  )rY   rJ   rG   rK   )r2   r   r   r   Tr#  s       r;   test_simple2TestSolve.test_simple2  s    HH/8113 4
 HHtUm'Vnen& '
 !K!!RXX/;/= &>>?a	Ar=   c           
          [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " SS/SS/S	S
/SS//5      n[        X5      n[        U[         R                  " SS/SS/SS/SS//5      5        g )N)yq=
ףpffffff@yQ?\(\	@y(\y
ףp=
?q=
ףp)y333333333333,y̌@@      y      *@y)@+@)yRQ
Qy(\Gz@yQyQ??)yHzG@(\?yQ῅Q?y(\Gzy\(\q=
ףp?y(\B:@p=
I@yRQ?@y33333P@33333Uy33333c@ffffff,y      (\O9@y333333q=
ף0>@y(\?(\@y{Gz333333@      ?      ?y             y       @      y      @      ?y            y            @y              @)r2   r   r   r   r#  s       r;   test_simple_complex2TestSolve.test_simple_complex2  s    HHHMIIK L
 HH|[1#]3#\2!;/1 2
 !K!!RYY16170@14e0> &? 	@r=   r/  rE  r9  c                    [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " SS/SS/S	S
/SS//5      nUS:X  a  UR                  OUR                  5       R                  nX$-   n[         R                  " U5      U[         R
                  " S5      [         R
                  " S5      4'   [        XSSS9n[        X#US9n[        Xv5        [        XCUSS9n[        Xv5        g )N)gq=
ףpy)\(?)\(y{GzzGyHzG@      )r   gQyq=
ףpQ?yGz@zG?)r   r   g=
ףp!yHzG?)r   r   r   g(\yףp=
@\(\$yGz<@RCy)\(#
ףp=
@y
ףp=8 yp=
ף0yQ@zGQy)\(@Q@yRA(\2@r9  rG   generalr4  Tr.  )r2   r   ru  conjrw   r   r   r   )r`   r/  ra   ri   a2a3r   rj   s           r;   test_symmetric_hermitian"TestSolve.test_symmetric_hermitian  s     HHB9/&( ) HH{L1"L1#[1!=13 4
 %QSS1668::V)+299Q<1%&BI.!*!!) "($7!!)r=   c                 b   [         R                  " SS5      R                  SS5      n[        [         R                  " U5      S-  [         R
                  " S5      SS9n[        U/ SQ5        [        [         R                  " U5      S-  [         R
                  " S5      SS9n[        U/ SQ5        g )	NrK   
   rY   	   r-  r4  )      "@rt  rC   r9  r2   r   r^   r   trilr   r   r`   rQ  rj   s      r;   test_pos_and_symTestSolve.test_pos_and_sym  sw    IIa$$Q*"''!*Q,
U;!!]3"''!*Q,
U;!!]3r=   c                     [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	5      n[         R                  " S5      S S 2S 4   n[        [        [
        X5        g )N)	rK   r   r   r   r   r   rK   r   rK   )	rK   rK   rK   r   r   r   rK   r   rK   )	r   rK   rK   r   r   r   rK   r   rK   )	rK   r   rK   rK   rK   rK   r   r   r   )	rK   rK   rK   rK   rK   rK   rK   rK   rK   r  )r2   r   r   r   r   r   r`   ra   ri   s      r;   test_singularityTestSolve.test_singularity  sT    HH1111111113 4 IIaLD!k5!/r=   	structure)
diagonaltridiagonallower triangularupper triangular	symmetric	hermitianpositive definiter}  bandedNc                 >   [         R                  R                  S5      nSn[         R                  " SSU5      n[         R                  " U5      nUR                  US9nSn[
        R                  " [        US9   [        XVUS9  S S S 5        g ! , (       d  f       g = f)	Nl   Ej] r  r   2   sizez2(Ill-conditioned matrix|An ill-conditioned matrix)matchr4  )	r2   rM  rN  logspacerw   r   warnsr"   r   )r`   r  rO  rP  drQ  ri   messages           r;   test_ill_condition_warning$TestSolve.test_ill_condition_warning  su    
 ii##L1KK2q!GGAJJJAJF\\-w7!+ 877s   :B
B)	r  r  r  r  r  r  r  r}  Nc                 8   Sn[         R                  " X"45      n[         R                  " U5      n[        R                  " [
        SS9   [         R                  " SS9   [        X4US9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr  singularr  ignore)allr4  )r2   r   r   r   r   r   errstater   )r`   r  rP  rQ  ri   s        r;   test_exactly_singular_gh22263'TestSolve.test_exactly_singular_gh22263*  sc    
 HHaVGGAJmmKz:BKKH<U!+ =V::<U<U::s$   	BA:)B:
B	B
Bri   r   rK   c                    [         R                  " [        5         [        R                  " S5      n[        X!5        S S S 5        [         R                  " [        5         [        SU5        S S S 5        [         R                  " [        5         [        S//U5        S S S 5        g ! , (       d  f       No= f! , (       d  f       NQ= f! , (       d  f       g = f)Nru   r   )r   r   r   r2   r   r   )r`   ri   ra   s      r;   test_singular_scalarTestSolve.test_singular_scalar5  s    
 ]];' A!K ( ]];'!QK ( ]];'A3%O (' (' (' ('s#   "B&B7C&
B47
C
Cc                     [         R                  " S5      n[         R                  R                  S5      nUR                  S5      n[	        X5      n[        XC5        g )NrJ   rL  )rJ      )r2   r   rM  rN  r   r   )r`   ra   rO  ri   rj   s        r;   test_multiple_rhsTestSolve.test_multiple_rhsD  sB    FF1Iii##D)JJw!K!!'r=   c                 f   [         R                  " S5      R                  SS5      S-   n[        [         R                  " U5      S-  [         R
                  " S5      SS9n[        U/ SQ5        [        [         R                  " U5      S-  [         R
                  " S5      SS9n[        U/ SQ5        g )	Nr  rY   rK   T
transposed)r  皙?rK   F)r  gg333333r  r  s      r;   test_transposed_keyword!TestSolve.test_transposed_keywordK  sy    IIaL  A&*"''!*Q,
t<!!]3"''!*Q,
u=!!_5r=   z*1. why? 2. deprecate the kwarg altogether?reasonc                     [         R                  " S5      R                  [        5      n[	        [
        5         [        XSS9  S S S 5        g ! , (       d  f       g = f)NrY   Tr  )r2   r   astyper   r   NotImplementedErrorr   r`   ra   s     r;   test_transposed_notimplemented(TestSolve.test_transposed_notimplementedR  s9    FF1IW%./!4( 0//s   A
Ac                 4    [        [        [        SS/S5        g )NrK   rJ   r   r   r   r`   s    r;   test_nonsquare_aTestSolve.test_nonsquare_aX  s    j%!Q3r=   c                 $   [        [        [        R                  " S5      [        R                  " S5      5      [        R                  " S5      5        [        [        [        [        R                  " S5      [        R                  " S5      5        g )NrY   rG   )r   r   r2   r   r   r   r   r  s    r;   test_size_mismatch_with_1D_b&TestSolve.test_size_mismatch_with_1D_b[  sI    !%q	2771:">
Kj%BGGAJ?r=   c                 .    [        [        [        SSSS9  g )NrK   zxcvr4  r  r  s    r;   test_assume_a_keywordTestSolve.test_assume_a_keyword_  s    j%A?r=   r  r  d   )genr9  r-  rE  r  r   c                    [         R                  R                  S5      nU[         R                  [         R                  4;   nUR                  X45      R                  U5      nUR                  U5      R                  U5      nU(       a'  USUR                  X45      -  R                  U5      -  nUS:X  a  XfR                  -   nOUS:X  a  XfR                  R                  5       -   nOUS:X  a8  UR                  R                  5       U-  S[         R                  " U5      -  -   nOUS:X  a  [         R                  " [         R                  " U5      5      [         R                  " [         R                  " US5      S5      -   [         R                  " [         R                  " US	5      S	5      -   nU[         R                  [         R                  4;   a  S
OSnUS;   a)  U[         R                  [         R                  4;   a  US-  n[        XgUS9n	[        Xi-  XxU-  X-  S9  US:X  a&  U(       d  [        XgUSS9n	[        Xi-  XxU-  X-  S9  g g g )NrL  rq   r9  rE  r-  rZ  r  rK   rM   -q=gư>)r  r9  rE  r  r4  atolr   T)r/  r  )r2   rM  rN  r   r6   standard_normalr  ru  r~  r   rw   r4   r
   r   r   )
r`   r  r   r/  rO  
is_complexra   ri   tolrj   s
             r;   'test_all_type_size_routine_combinations1TestSolve.test_all_type_size_routine_combinationsb  s    ii##D)r||R]];;
-44U;%,,U3"S(($66>>uEEAuCCACCHHJA
QRVVD\!11A&$A*+B,-A
 R]] ;;e,, R\\22r	!*qTz
CuZaX$?AAE1:CJG &0r=   dt_ar   c                 R   [         R                  " SUS9n[         R                  " SUS9n[        X45      nUR                  S:X  d   e[        [         R                  " SUS9[         R
                  " SUS95      R                  nUR                  U:X  d   eUR                  [         R                  R                  X45      R                  :X  d   e[         R
                  " SUS9n[         R
                  " SUS9n[        X45      nUR                  S:X  d   eUR                  U:X  d   eg )Nr   r   r   rJ   rY   r   rJ   rJ   rJ   rG   )rY   r   rJ   rG   )	r2   r   r   r  r   r   r   r   linalgr`   r  r   ra   ri   rj   dt_nonemptys          r;   r   TestSolve.test_empty  s     HHV4(HHQd#!Kvv{{BFF1D12771D3IJPPww+%%%ww"))//!/55555GGL-GGF$'!Kww,&&&ww+%%%r=   c                     [         R                  " S5      n/ / /n[        X5      n[        UR                  S:H  S5        [        UR
                  S:H  S5        g NrJ   r   zReturned array is not emptyrJ   r   z#Returned empty array shape is wrong)r2   r   r   r   r  r   r#  s       r;   test_empty_rhsTestSolve.test_empty_rhs  sH    FF1IH!K!:;6!#HIr=   )r  r  r  r  r  r-  r  r  r  r}  r9  rE  r  nrhsr   )r'  r  TF	overwritefortranc           	         [         R                  R                  S5      nUS:X  d  SOSnUR                  U4U-   S9n	UR                  X4S9n
[         R                  " U[         R                  5      (       a-  XR                  U4U-   S9S-  -   n	XR                  X4S9S-  -   n
US:X  a,  [         R
                  " [         R
                  " U
5      5      n
GOTUS:X  a  [         R                  " U
5      n
GO6US	:X  a  [         R                  " U
5      n
GOUS
:X  a  [         R
                  " [         R
                  " U
5      5      [         R
                  " [         R
                  " U
S5      S5      -   [         R
                  " [         R
                  " U
S5      S5      -   n
OUS:X  a-  [         R                  " [         R                  " U
S5      S5      n
OZUS;   a  XR                  -   n
OEUS;   a  XR                  5       R                  -   n
O"US;   a  XR                  R                  5       -  n
U(       a  [         R                  " U
5      n
U
R                  SS9nU	R                  5       n[         R                  " U[         R                  5      (       a7  U(       a0  Sn[        R                  " [        US9   [        XXUUS9  S S S 5        g [        XXUXBS9n[         R                   R                  U(       a  UR                  OUU5      n[#        X5        US:w  a  [#        [        XUS9USS9  U(       d  [%        X5        [%        X5        g g ! , (       d  f       g = f)N   q~u r  r'  rD   r  rq   r  r  r  r  rM   rK   rJ   >   r9  r  >   rE  r  >   r-  r  rQ  orderz#scipy.linalg.solve can currently...r  )r*   r0   r  )r*   r0   r  r/  r  r   r  )r2   rM  rN  
issubdtypecomplexfloatingrw   r  triuru  r~  asfortranarraycopyr   r   r  r   r  r   r   )r`   r   r/  r  r  r  r  rO  rP  ri   rQ  A_copyb_copyr  resr   s                   r;   test_structure_detection"TestSolve.test_structure_detection  s    ii##O4)ArJJQD4KJ(JJQFJ#== 2 233JJQD4KJ0255AJJQFJ+b00Az!
#A++
A++
A&$772771b>2./772771a=!,-A !1r*A--CCA--FFHJJA55CCHHJA!!!$Ac"== 2 233
;G2'Ba	!+- C Ai)> iioo*fhh&&I! xf<c
 ## ) CB s   2M
M)Nr  r}  r  r  r-  c                 6   [         R                  " S5      n[         R                  " SS5      R                  S5      U-  n[         R                  " S5      n[        [        X4US9[         R                  R                  X45      5        [         R                  " S5      n[        [        X4US9[         R                  R                  X45      5        [         R                  " S5      SS/-  n[        [        X4US9[         R                  R                  X45      5        g )NrJ   rK      )rG   rY   rJ   rK   rK   r4  rU   rJ   rJ   )r2   r   r   r^   r   r   r   r  )r`   r/  era   ri   s        r;   test_vs_np_solveTestSolve.test_vs_np_solve  s     FF1IIIa#++O<q@GGAJaX6		8MNGGFOaX6		8MNGGFOq!f$aX6		8MNr=   c                 *   [         R                  R                  S5      nUR                  SS9n[         R                  " [         R
                  " U[         R                  " UR                  5      5      5      nUR                  SS9n[        X#SSS9nX"R                  -   [         R                  " [         R                  " U5      5      -
  n[         R                  R                  XS5      n[        XFSS	9  [        UR                  USS
S9n[        XFSS	9  g )Nr   rG   rG   r  rG   rJ   r-  Tr.  r   r  F)r2   rM  rN  normalr  matmulr~  ru  r   rw   r  r   )r`   rO  ra   ri   outaa	result_nps          r;   test_pos_lowerTestSolve.test_pos_lower  s     ii##A&JJFJ#GGBIIa./JJFJ#A55Wrwwrwwqz**IIOOB*	U3 ACCU%8U3r=   c                 \   [         R                  " SS/SS//5      n[         R                  " S5      n[        X5      n[	        X1-  [         R                  " S5      SS9  [        XSS9n[	        XCSS9  [        XS	S9n[         R
                  " X5SS9(       a   e[        US	S9n[	        XVSS9  g )
N	I<<f@B)sVxP''f('&@''f@('&rJ   +=r  r9  r4  r-  )r2   asarrayr   r   r   allcloser   )r`   ra   ri   ainvainv_sym	ainv_cholainv_invs          r;   test_pos_fails_sym_complex$TestSolve.test_pos_fails_sym_complex  s     JJ35NP26NPR SFF1IQ{"&&)%8.U3
 !/	;;tU;;; q5)	%8r=   c                     [         R                  " S5      nSUR                  l        [         R                  " S5      n[        X5      n[        X2SS9  g NrY   Fr  r  )r2   r   flags	writeabler   r   r   r#  s       r;   test_readonlyTestSolve.test_readonly(  s;    FF1I!GGAJ!K5)r=   c                    [         R                  " S5      R                  SSSS5      nUS S 2S S S2S S 2S S 24   n[         R                  " S5      n[	        X#40 UD6nUR
                  UR
                  S S :X  d   e[        X$S   -  U-
  SSS9  [         R                  " S	5      S S 2S S S24   n[	        X#40 UD6nUR
                  UR
                  S S UR
                  S   4-   :X  d   e[        X$-  U-
  SSS9  g 
N   rJ   rY   rM   .Nr   r  r  r  r2   r   r^   r   r   r   r   r`   r)   ra   ri   rj   s        r;   test_batch_negative_stride$TestSolve.test_batch_negative_stride/  s    IIcN""1aA.a2q!mGGAJ!','ww!''#2,&&&iL(1,ae< GGFOAttG$!','ww!''#2,!''"+7777	151r=   c                    [         R                  " S5      R                  SSSS5      nUS S 2S S 2S S S2S S 24   n[         R                  " S5      n[	        X#40 UD6nUR
                  UR
                  S S :X  d   e[        X$S   -  U-
  SSS9  [         R                  " S	5      S S S2S S 24   n[	        X#40 UD6nUR
                  UR
                  S S UR
                  S   4-   :X  d   e[        X$-  U-
  SSS9  g r  r  r  s        r;   test_core_negative_stride#TestSolve.test_core_negative_stride>  s    IIcN""1aA.aDbD!mGGAJ!','ww!''#2,&&&iL(1,ae< GGFODbD!G$!','ww!''#2,!''"+7777	151r=   c                    [         R                  " S5      R                  SSSS5      nUSS S S24   n[         R                  " S5      n[	        X#40 UD6nUR
                  UR
                  S S :X  d   e[        X$S   -  U-
  SS	S
9  [         R                  " S5      S S S2   n[	        X#40 UD6nUR
                  UR
                  S S :X  d   e[        X$S   -  U-
  SS	S
9  g )N0   rJ   rY   rG   .rM   r  r   r  r  r  r  s        r;   test_core_non_contiguous"TestSolve.test_core_non_contiguousN  s    IIe$$Q1a0c3Q3hKGGAJ!','ww!''#2,&&&iL(1,ae< GGAJssO!','ww!''#2,&&&iL(1,ae<r=   c                    [         R                  " S5      R                  SSSS5      nUS S 2S S S2S4   n[         R                  " S5      n[	        X#40 UD6nUR
                  UR
                  S S :X  d   e[        X$S   -  U-
  SSS	9  [         R                  " S
5      S S 2S S S24   n[	        X#40 UD6nUR
                  UR
                  S S UR
                  S   4-   :X  d   e[        X$-  U-
  SSS	9  g )Nr&  rJ   rH   .rM   r  r   r  r  rJ   rH   r  r  s        r;   test_batch_non_contiguous#TestSolve.test_batch_non_contiguous]  s    IIe$$Q1a0a1ckNGGAJ!','ww!''#2,&&&iL(1,ae< GGFOAssF#!','ww!''#2,!''"+7777	151r=   c                 (   [         R                  " S5      R                  SSSSS5      nUR                  SSSSS5      n[         R                  " S5      n[        X#40 UD6nUR                  UR                  S S :X  d   e[        X$S   -  U-
  SS	S
9  g )Nr&  rJ   rY   rK   rG   r   rM   r  r  r  )r2   r   r^   r	   r   r   r   r   r  s        r;   test_batch_weird_strides"TestSolve.test_batch_weird_stridesl  s    IIe$$Q1a3KK1aA&GGAJ!','ww!''#2,&&&iL(1,ae<r=   a_dtypea_orderCFb_dtypeb_orderb_ndimrJ   Nr  c
                    Sn
[         R                  " SU
S-  S-   5      R                  X5      [         R                  " U
5      -   nUR	                  X4S9n[         R                  " U
5      nUS:  a<  [         R
                  " [        U5       Vs/ s H  oU-  PM	     sn5      R                  nUR	                  XVS9nUR                  5       nUR                  5       n[        X40 UDUDXS.D6nU(       a  UR                  OUn[        UU-  USS9  UR                  SS	5      nU=(       a)    UR                  [        :g  =(       a    UR                  S
   nUR                  SS	5      nU=(       a)    UR                  [        :g  =(       a    UR                  S
   n[         R                  " UU5      U:X  d   eX:H  R!                  5       U:w  d   eX:H  R!                  5       U:w  d	  U	S:X  d   eg g s  snf )NrY   rK   rJ   r  )r  r/  r  r  r*   FF_CONTIGUOUSr0   r  )r2   r   r^   r   r  stackr\  ru  r  r   r   getr   r   r  shares_memoryr  )r`   r)   r/   r0  r1  r4  r5  r6  r  r/  rP  ra   ri   rf  a_refb_refrj   a_or_aTr*   	a_inplacer0   	b_inplaces                         r;   test_overwrite_argsTestSolve.test_overwrite_argsv  s    IIaA"**10266!9<HHWH,IIaLA:uV}5}!A#}5688AHHWH, ! :, :. :%:'%''U!U7 #&&}e<PQWW^P9P	$((>PQWW^P9P	1%222 
!Y...
!Y.(h2FFF2F./ 6s   G.c                 \   [         R                  " S5      R                  SS5      nXR                  -   [         R                  " S5      -   n[         R
                  " S5      n[        X#5      n[        X$-  USS9  [        [        5         [        X#SS9  S S S 5        g ! , (       d  f       g = f)Nr  rY   r  r  r-  r4  )
r2   r   r^   ru  r   r   r   r   r   r   )r`   ra   rQ  ri   r  s        r;   test_posdef_not_posdef TestSolve.test_posdef_not_posdef  sz    IIaL  A&GbffQiGGAJ 1[. ;'!' (''s   	B
B+c           	      $   [         R                  " [         R                  " [         R                  " S5      5      [         R                  " [         R
                  " SS5      5      /5      n[         R                  " S5      n[        X5      n[        US   S[         R
                  " SS5      -  SS9  [         R                  " SS	/S	S//5      n[         R                  " S
5      n[        R                  " [        5         [        XSS9  S S S 5        [         R                  " S	S	/S	S//5      n[         R                  " S
5      n[        R                  " [        5         [        XSS9  S S S 5        g ! , (       d  f       Nn= f! , (       d  f       g = f)NrY   rY   rK   rG   rY   rK   .r  r  ꌠ9Y>)Fr   rJ   r  r4  )r2   r9  r  r   rw   r   r   r   r  r   r  r"   r   r   r#  s       r;   test_diagonalTestSolve.test_diagonal  s   HHbggbggfo.		!Q0HIJGGAJ!K 	&	1ryyA#6UC JJq	Aq6*+GGAJ\\-(!, ) JJAA'(GGAJ]];'!, (' )( ('s   =E0F0
E>
Fc                 4   SnS[         R                  " [         R                  " U5      5      -  [         R                  " [         R                  " S5      S5      -   [         R                  " [         R                  " S5      S5      -   n[         R                  " [         R                  " [         R                  " X45      5      U/5      n[         R                  " S5      n[        X#5      n[        US   [         R                  " / SQ5      SS	9  S
US'   [        R                  " [        5         [        X#SS9  S S S 5        S=US'   US'   [        R                  " [        5         [        X#SS9  S S S 5        g ! , (       d  f       NF= f! , (       d  f       g = f)NrG   rY   rK   rM   rH  )             rO  rN  r   r  @xD)rK   r   r   r  r4  r   )rK   r   rK   )r2   rw   r   r9  r  r   r   r  r   r  r"   r   r   )r`   rP  ra   ri   rj   s        r;   test_tridiagonalTestSolve.test_tridiagonal  s   rwwrwwqz""RWWRWWQZ%;;bggbggajRT>UUHHbggbggqfo.23GGAJ!K 	&	2::.B#C%P '
\\-(!/ ) #$#'
QwZ]];'!/ (' )(
 ('s   -E8$F	8
F	
Fc                    [         R                  R                  S5      nSnUR                  X"45      nUR                  U5      n[         R                  R	                  X45      n[	        X4SS9n[        XVSS9  [         R                  " [         R                  " USS9S	S9n[         R                  R	                  X45      n[	        X4SS9n[        XVSS9  S
US'   [        R                  " [        5         [	        X4SS9  S S S 5        SUSS S 24'   [        R                  " [        5         [	        X4SS9  S S S 5        g ! , (       d  f       NE= f! , (       d  f       g = f)Nr  rD   r  r4  r  r  r'  )kig\)c=Hr   r   rM   )r2   rM  rN  r  r   r   r  r  r   r  r"   r   r   )r`   rO  rP  rQ  ri   r   r  s          r;   test_bandedTestSolve.test_banded  s   ii##O4JJvJJqM iiooa#A8,u- GGBGGAOr*iiooa#A8,u- $\\-(!* ) "a%]];'!* (' )(
 ('s   2D<(E<
E

E)Dr   r   r   r   r   r$  r)  r1  r5  r:  r>  rA  rF  rI  rW  r^  ra  rg  rj  r   rq  rv  rz  r   r   r   r  r  r  r  r  r  r  r  skipr  r  r  r  r2   r
   r4   r   r6   r  r   r   r   r   r  r  r  r  r  r  parametrize_overwrite_argr   r#  r'  r+  r.  parametrize_overwrite_b_argrA  rD  rJ  rQ  rU  r   r   r=   r;   r  r  (  s   	6448484484
+	4	4444LA@" [[Z%8* 9*.40 [[[NO,	O, [[[DE,	E, [[S1a!Q.1 2(6 [[IJ) K)
4@@ [[Vb#Y/[[Z)TU[["**bjj",,F"H V 0
"HH [[Vc5"**gr||%TU[[Vc5"**gr||%TU& V V& J [[Wrzz2==&AB[[Z *? @
 [[Vb$Z0[[\D%=9[[[4-8[[Yu6<$ 7 9 : 1@ C<$| [[	
OO4"90* 2 2 2 2 = = 2 2 = =  [[Ye5[[Yc
3[[Ye5[[Yc
3[[X1v.[[\D%=9[[Z$)9:!G ; : / 4 6 4 6 ! !GF(-(0(+r=   r  c            	          \ rS rSrS rS rS r\R                  R                  S\
\\R                  \\R                  /5      \R                  R                  S\
\\R                  \\R                  /5      S 5       5       rS rS	rg
)TestSolveTriangulari  c                 &   [        SS/SS//5      nSS/n[        XSS9n[        USS/5        [        UR                  USS9n[        USS/5        [        XSSS9n[        USS/5        [	        S5      n[        XSSS9n[        US	S
/SS//5        g)*
solve_triangular on a simple 2x2 matrix.
rK   r   rJ   Tr   Fr   r   transrC         N)r   r   r   ru  r   r`   rQ  ri   sols       r;   r$  TestSolveTriangular.test_simple  s     Aq6Aq6"#Fq40!#1v. qssAU3!#Bx0 q4q9!#Bx0QKq4q9!#S	As8'<=r=   c                 D   [        SS/SS//5      n[        S5      n[        XSSS9n[        USS	/SS
//5        [        R
                  " SS/5      n[        XSSS9n[        USS/SS//5        [        XSSS9n[        USS/SS//5        [        XSSS9n[        USS/SS//5        [        UR                  USSS9n[        USS/SS//5        [        UR                  USSS9n[        USS/SS//5        [        UR                  USSS9n[        USS/SS//5        g)z1
solve_triangular on a simple 2x2 complex matrix
ry  r   rq   rJ   TrK   r^  y      ?      y      п      пr         ?       @y             y      ?      ?y      ?      y            пFr`  N)r   r   r   r   r2   rw   ru  ra  s       r;   r)  'TestSolveTriangular.test_simple_complex  sO    D!9r1g&'QKq4q9!#(;aX'FG GGT4L!q4q9!#A'@Aq4q9!#J!V'EFq4q9!#[(9Av;'GHqssAU!<!#J!V'EFqssAU!<!#A'@AqssAU!<!#Q$'@Ar=   c                 `    [        SS/SS//5      nSS/n[        XSSS9n[        USS/5        g)r]  rK   r   rJ   TF)r   r   N)r   r   r   ra  s       r;   r   %TestSolveTriangular.test_check_finite)  s@     Aq6Aq6"#Fq4eD!#1v.r=   r  r   c                 .   [         R                  " SUS9n[         R                  " SUS9n[        X45      nUR                  S:X  d   e[        [         R                  " SUS9[         R
                  " SUS95      R                  nUR                  U:X  d   eg Nr   r   r   rJ   )r2   r   r   r  r   r   r   r  s          r;   r   TestSolveTriangular.test_empty2  s     HHV4(HHQd#Q"vv{{&FF1D!2771D#9

% 	 ww+%%%r=   c                     [         R                  " S5      n/ / /n[        X5      n[        UR                  S:H  S5        [        UR
                  S:H  S5        g r  )r2   r   r   r   r  r   r#  s       r;   r  "TestSolveTriangular.test_empty_rhs?  sI    FF1IHQ"!:;6!#HIr=   r   N)r   r   r   r   r$  r)  r   r   r   r   r   r   r2   r
   r   r   r   r  r   r   r=   r;   r[  r[    s~    >*B:/ [[Vc5"**gr||%TU[[Vc5"**gr||%TU	& V V	&Jr=   r[  c                   h   \ rS rSrS rS rS rS rS r\	R                  R                  S\\\R                  \\R"                  /5      S 5       r\S	 5       r\	R                  R+                  S
5      \	R                  R                  S\R,                  \R                  \R.                  \R0                  /5      S 5       5       rS r\	R                  R                  S\\\R                  \\R"                  /5      S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r \S 5       r!S r"S r#S r$\	R                  R                  SSS/5      S 5       r%S r&\	R                  R                  SSS/5      \	R                  R                  SSS/5      S  5       5       r'S! r(S" r)S# r*S$r+g%)&TestInviG  c                     SS/SS//n[        U5      n[        [        X5      [        R                  " S5      5        / SQ/ SQ/ SQ/n[        U5      n[        [        X5      [        R                  " S5      5        g )NrK   rJ   rY   rG   r  rG   r'  rH   rN      r  )r   r   r   r2   r   r`   ra   a_invs      r;   r$  TestInv.test_simpleH  s^    VaVA!#a-;	:.A!#a-;r=   c                 $   [         R                  R                  S5      nSn[        S5       H`  nUR                  X"/5      n[        U5       H  nSSXCU4   -   -  XCU4'   M     [	        U5      n[        [        XE5      [        U5      5        Mb     g )NrL  rD   rG   rZ  r2   rM  rN  r\  r   r   r   r   r`   rO  rP  rU  ra   ru  s         r;   r^  TestInv.test_randomP  s~    ii##D)qA

A6"A1Xba4j/Q$ FE%c!m&.qk3 r=   c                 `    SS/SS//n[        U5      n[        [        X5      SS/SS//5        g )NrK   rJ   rY   r
  r   r   r   r   rt  s      r;   r)  TestInv.test_simple_complex[  s8    VaWA!#a-1a&1a&1ABr=   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       H  nSSXCU4   -   -  XCU4'   M     [	        U5      n[        [        XE5      [        U5      5        Mx     g )NrL  rD   rG   rn   rZ  rx  ry  s         r;   ra  TestInv.test_random_complex`  s    ii##D)qA

A6"2cjj!&8#88A1Xba4j/Q$ FE%c!m&.qk3 r=   c                 ^    SS/SS//n[        USS9n[        [        X5      SS/SS//5        g )NrK   rJ   rY   rG   Fr   r   r|  rt  s      r;   r   TestInv.test_check_finitek  s;    VaVAE*!#a-1a&1a&1ABr=   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[         R                  " SUS9n[        U5      nUR                  S:X  d   e[         R                  " SUS9n[        U5      nUR                  S:X  d   eg )Nr   r   r   rJ   r  )rY   rK   r   r   )r2   r   r   r  r   r   r   r   r`   r:   ra   ru  s       r;   r   TestInv.test_emptyp  s    HHV2&AzzQ{{c"&&""56<<<<<GGL+A{{l***GGL+A{{l***r=   c                 r   Sn[         R                  " SUS-  S-   5      R                  X"5      [         R                  " U5      -   nUR	                  5       n[        U40 UD6n[        XT-  [         R                  " U5      SS9  [        XC5        [         R                  " XE5      (       a   eUR	                  5       R                  [        5      n[        U40 UD6n[        XS-  [         R                  " U5      SS9  [        XC5        [         R                  " XE5      (       a   eUR                  [        5      R	                  SS9n[        U40 UD6n[        XS-  [         R                  " U5      SS9  UR                  SS	5      nXC:H  R                  5       U:w  d   e[         R                  " XE5      U:X  d   eg )
NrY   rK   rJ   r  r  r3  r  r*   F)r2   r   r^   r   r  r   r   r   r;  r  r   r:  r  )r`   r)   rP  a0ra   ru  r*   s          r;   test_overwrite_aTestInv.test_overwrite_a  sh   YYq!Q$(#++A1BFF1I= GGIA&&	266!959Q##A---- GGIU#A&&
BFF1IE:Q##A----
 IIe!!!,A&&
BFF1IE:"&&}e<}}+---)[888r=   ignore::DeprecationWarningr9   c                    [         R                  " S5      R                  SS5      R                  U5      n[	        U5      n[        X#-  [         R                  " UR                  S   5      S[         R                  " UR                  5      R                  -  S9  SSSSS	.nUR                  R                  XBR                  R                     :X  d   eg )
NrG   rJ   r   r  r  fr  r(  )r  r  gG)r2   r   r^   r  r   r   r   r   r7   r   r8   char)r`   r9   ra   ru  dt_maps        r;   test_dtypesTestInv.test_dtypes  s     IIaL  A&--d3A	266!''!*#5C@Q@U@U<UV 	
 {{6'',,#7777r=   c                 |    [         R                  " S5      nSUR                  l        [	        U5      n[        X!SS9  g r  )r2   r   r  r  r   r   rt  s      r;   r  TestInv.test_readonly  s.    FF1I!Au-r=   c                     [         R                  " SUS9R                  SSSS5      S-   n[        U5      nUR                  UR                  :X  d   e[        X#-  S5        g )NrH   r   rY   rJ   rK   rC   )r2   r   r^   r   r   r   r  s       r;   test_batch_core_1x1TestInv.test_batch_core_1x1  sS    IIc$,,Q1a81<A{{agg%%%	2&r=   c                    [         R                  " S[        S9R                  SSS5      nUS   n[	        U40 UD6nUR
                  UR
                  :X  d   e[        X4-  [         R                  " [         R                  " S5      UR
                  5      SS9  US S 2S S4   n[	        U40 UD6nUR
                  UR
                  :X  d   e[        X4-  [         R                  " [         R                  " S5      UR
                  5      SS9  g )	Nr  r   rY   rJ   )N.g+=r  .)	r2   r   r   r^   r   r   r   broadcast_tor   )r`   r)   ra   r  ru  s        r;   test_batch_zero_strideTestInv.test_batch_zero_stride  s    IIe5)11!Q:y\B','{{bhh&&&
BOOBFF1Irxx$HuUq$|_B','{{bhh&&&
BOOBFF1Irxx$HuUr=   c                 H   [         R                  " S5      R                  SSSS5      nUS S 2S S S2S S 2S S 24   n[        U40 UD6nUR                  UR                  :X  d   e[        X#-  [         R                  " [         R                  " S5      UR                  5      SS9  g Nr  rJ   rY   rM   vIh%,=r  r2   r   r^   r   r   r   r  r   r`   r)   ra   ru  s       r;   r   "TestInv.test_batch_negative_stride  s    IIcN""1aA.a2q!mA&&{{agg%%%	2??266!9agg#FUSr=   c                 H   [         R                  " S5      R                  SSSS5      nUS S 2S S 2S S S2S S 24   n[        U40 UD6nUR                  UR                  :X  d   e[        X#-  [         R                  " [         R                  " S5      UR                  5      SS9  g r  r  r  s       r;   r#  !TestInv.test_core_negative_stride  s    IIcN""1aA.aDbD!mA&&{{agg%%%	2??266!9agg#FUSr=   c                 $   [         R                  " S5      R                  SSSS5      nUSS S S24   n[        U40 UD6nUR                  S:X  d   e[        X#-  [         R                  " [         R                  " S5      UR                  5      SS9  g )	Nr&  rJ   rY   rG   .rJ   rY   rJ   rJ   r  r  r  r  s       r;   r'   TestInv.test_core_non_contiguous  sx    IIe$$Q1a0c3Q3hKA&&{{l***	2??266!9agg#FUSr=   c                 *   [         R                  " S5      R                  SSSS5      nUS S 2S S S2S4   n[        U40 UD6nUR                  S:X  d   e[        X#-  [         R                  " [         R                  " S5      UR                  5      SS9  g )Nr&  rJ   rH   .r  gvIh%L=r  r  r  s       r;   r+  !TestInv.test_batch_non_contiguous  sz    IIe$$Q1a0a1ckNA&&{{l***	2??266!9agg#FUSr=   c                 2   [        [        5         [        [        R                  " S5      5        S S S 5        [        [        5         [        [        R                  " S5      5        S S S 5        [        R
                  " [        R                  " S[        S9[        R                  " S5      R                  SS5      45      n[        [        5         [        U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr  )rY   rJ   rJ   r   rG   rJ   )	r   r   r   r2   r   r9  r   r   r^   )r`   r)   ra   s      r;   test_singularTestInv.test_singular  s     ;'  ( ;'	"# ( HHbggfG4biil6J6J1a6PQR;'F (' (' (' ('s#    C& C7D&
C47
D
Dc                    [         R                  " SS/5      n[        R                  " [        5         [        U5        S S S 5        [         R                  " [         R                  " SS/5      [         R                  " SS/5      [         R                  " SS/5      /5      n[        R                  " [        5         [        U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NrC   #B;rK   )r2   rw   r   r  r"   r   r9  )r`   ra   r  s      r;   test_ill_condTestInv.test_ill_cond  s    GGRK \\-(F ) XXrwwE{+RWWaV_bggq%j>QRS\\-(G )(	 )( )(s   C<C"
C"
C0c                     [        [        5         [        [        R                  " S5      SS9  S S S 5        g ! , (       d  f       g = f)NrJ   kaboomr4  )r   KeyErrorr   r2   r   r  s    r;   test_wrong_assume_aTestInv.test_wrong_assume_a  s(    8$q	H- %$$s	   8
Ac                    [         R                  " S[        S9R                  SS5      nXR                  -   nUS[         R
                  " S5      -  -  n[        U5      n[        USS9n[        XCSS9  [         R                  " S	[         R                  " / UR                  QS
P76 -
  S:H  [         R                  S	5      n[        X%-  SSSS9n[        XcSS9  [        X%R                  -  SSSS9n[        XsSS9  g )Nr  r   r'     r-  r4  r   r  rK   rM   r   Fr   r/  r   T)r2   r   r   r^   ru  r   r   r   wheretrir   nan)r`   rj   yy_inv0y_inv1masky_inv2y_inv3s           r;   test_posdefTestInv.test_posdef  s    IIb&..q!4G	Rq	\QQ'U3 xxBFF0AGG0R00A5rvvqAQV%%uMU3 QvvXEENU3r=   complex_FTc                    [         R                  " S5      R                  SS5      nX"R                  -   [         R                  " S5      -   nU(       a  USU-  -   n[        U5      n[        XC-  [         R                  " S5      SS9  [        [        5         [        USS9  S S S 5        U(       a  [         R                  " S5      R                  SS5      nUSU-  -   nX"R                  R                  5       -   [         R                  " S5      -   n[        [        U5      U-  [         R                  " S5      SS9  g g ! , (       d  f       N= f)Nr  rY   rq   g [n<r  r-  r4  )
r2   r   r^   ru  r   r   r   r   r   r~  )r`   r  ra   ri   b_inv0s        r;   rD  TestInv.test_posdef_not_posdef$  s     IIaL  A&GbffQiBqDA Q
BFF1IE: ;'E" ( 		!$$Q*ABqDACCHHJ*ACFQJq	>	 	 ('s   D>>
Ec                    [         R                  " SS/SS//5      n[        U5      n[        X!-  [         R                  " S5      SS9  [        USS9n[        X2SS9  [        US	S9n[         R
                  " X$SS9(       a   e[        U[         R                  " S5      S	S9n[        XESS9  [         R                  " S
5      [         R                  " S
5      -   n[        U5      n[        Xa-  [         R                  " S
5      SS9  [         R                  " S
5      * [         R                  " S
5      -   n[        U5      n[        Xa-  [         R                  " S
5      SS9  [         R                  " S
5      * [         R                  " S
5      -   nSUS'   [        U5      n[        Xa-  [         R                  " S
5      SS9  [         R                  " S
5      [         R                  " S
5      -   R                  [         R                  5      n[        U5      n[        Xa-  [         R                  " S
5      SS9  [         R                  " S
5      S-  [         R                  " S
5      -   R                  [         R                  5      n[        U5      n[        Xa-  [         R                  " S
5      SS9  [         R                  " S
5      * [         R                  " S
5      -   R                  [         R                  5      n[        U5      n[        Xa-  [         R                  " S
5      SS9  [         R                  " S
5      * [         R                  " S
5      -   R                  [         R                  5      nSUS'   [        U5      n[        Xa-  [         R                  " S
5      SS9  [         R                  " SS/SS//[         R                  S9n[        U5      n[        Xa-  [         R                  " S5      SS9  [         R                  " SS/SS//[         R                  S9n[        U5      n[        Xa-  [         R                  " S5      SS9  g )Nr  r	  r
  rJ   r  r  r9  r4  r-  rG   rX   )r   rM   rq   ry        ?      r   rM   )r2   r  r   r   r   r  r   r   r  r6   r   )r`   ra   r  r  r  ainv_slvr  s          r;   r  "TestInv.test_pos_fails_sym_complex;  s!    JJ35NP26NPR S 1v"&&)%8q5)U3
 E*	;;tU;;; BFF1I6	%8 FF1I
"!f7 VVAYJ#!f7 VVAYJ#%!f7 VVAY#++BMM:!f7 VVAYt^bggaj(00?!f7 ffQiZ"''!*$,,R]];!f7 ffQiZ"''!*$,,R]];%!f7 HHq$i$+2==A!f7 HHr4j4*-R]]C!f7r=   sym_hermr9  rE  c                    [         R                  " S5      R                  SS5      nU(       a  USU-  -   nUS:X  a  X3R                  -   nOX3R                  R	                  5       -   nU[         R
                  " S5      -   n[         R                  R                  U5      n[        XT-  [         R
                  " S5      SS9  [        XBS9n[        XVSS9  [         R                  " S	[         R                  " / UR                  QS
P76 -
  S:H  [         R                  S	5      n[        XG-  SUSS9n[        XSS9  [        XGR                  -  SUSS9n	[        XSS9  g )Nr  rY   rq   r9  r  r  r4  r   rK   rM   r   Fr  T)r2   r   r^   ru  r~  r   r  r   r   r  r  r   r  )
r`   r  r  ra   ri   r  b_inv1r  b_inv2b_inv3s
             r;   test_sym_herTestInv.test_sym_her  s    IIaL  A&BqDAuCCACCHHJAq	Mq!
BFF1IE:Q*U3 xxBFF0AGG0R00A5rvvqAQV%(%PU3 QvvXEHDQU3r=   c                    [         R                  " S[        S9R                  SS5      nXR                  -   nUS[         R
                  " S5      -  -  n[        USS9n[        USS9n[         R                  " X45      (       a   eg )Nr  r   r'  r  r  r4  r-  )r2   r   r   r^   ru  r   r   r  )r`   rj   r  r  y_inv_posdefs        r;   test_triangular_1TestInv.test_triangular_1  ss    IIb&..q!4G	Rq	\Q!34 1u-;;v44444r=   c                    [         R                  " S[        S9R                  SS5      n[	        [         R
                  " U5      5      n[        U[         R
                  " U5      -  [         R                  " S5      SS9  [	        USS9n[        U[         R
                  " U5      -  [         R                  " S5      SS9  [         R                  " S[         R                  " / UR                  QS	P76 -
  S
:H  [         R                  S5      n[	        X-  SSS9n[        U[         R
                  " U5      -  [         R                  " S5      SS9  [	        [         R                  " U5      5      n[        U[         R                  " U5      -  [         R                  " S5      SS9  [	        USS9n[        U[         R                  " U5      -  [         R                  " S5      SS9  [         R                  " S[         R                  " / UR                  QS	P76 -
  S
:H  [         R                  S5      n[	        XR                  -  SSS9n[        U[         R                  " U5      -  [         R                  " S5      SS9  g )Nr  r   r'  r   r  r  r4  rK   rM   r   F)r   r/  r  )r2   r   r   r^   r   r  r   r   r  r  r   r  r  ru  )	r`   r  	y_inv_0_u	y_inv_1_ur  	y_inv_2_u	y_inv_0_l	y_inv_1_l	y_inv_2_ls	            r;   test_triangular_2TestInv.test_triangular_2  s   GGBe$,,Q2
O		BGGAJ.q	F$67		BGGAJ.q	F xxBFF0AGG0R00A5rvvqAU=OP		BGGAJ.q	F 
O		BGGAJ.q	F$67		BGGAJ.q	F xxBFF0AGG0R00A5rvvqA&&u?QR		BGGAJ.q	Fr=   c           
         [         R                  " [         R                  " [         R                  " S5      5      [         R                  " [         R
                  " SS5      5      /5      n[        U5      n[        US   [         R                  " S[         R
                  " SS5      -  5      SS9  [         R                  " SS/SS//5      n[        R                  " [        5         [        USS	9  S S S 5        [         R                  " SS/SS//5      n[        R                  " [        5         [        USS	9  S S S 5        g ! , (       d  f       NX= f! , (       d  f       g = f)
NrG  rK   rG   r  r  rI  r   r  r4  )r2   r9  r  r   rw   r   r   r   r  r   r  r"   r   r   )r`   ra   inv_as      r;   rJ  TestInv.test_diagonal  s    HHbggbggfo.		!Q0HIJA 	a"''!bii1o*=">UK JJq	Aq6*+\\-(J' ) JJAA'(]];'J' (' )(
 ('s   %E.E
E
E!r   N),r   r   r   r   r$  r^  r)  ra  r   r   r   r   r   r   r2   r
   r   r   r   rX  r  filterwarningsfloat16r3   r5   r  r  r  r  r   r#  r'  r+  r  r  r  r  rD  r  r  r  r  rJ  r   r   r=   r;   ro  ro  G  s   <	3C
	3C
 [[TC

GR\\#RS+ T+ 9 9: [[ <=[[RZZG8 >8. [[TC

GR\\#RS' T' 
V 
V T T T T T T T T  0.4& [[Z%7? 8?,N8` [[Z%7[[Z%84 9 8485G4(r=   ro  c            	       .   \ rS rSrS rS r\R                  R                  SSS/SS// SQ/5      S 5       r	S	 r
\R                  R                  S
\R                  S   SS  V Vs/ s H  nUS;  d  M  UPM     snn 5      \R                  R                  S5      S 5       5       r\R                  R                  S5      S 5       rS r\R                  R                  S\\\R&                  \\R*                  /5      S 5       rS rS rS rSrgs  snn f )TestDeti  c                 d   [         R                  " S//5      n[        U5      nUR                  R                  S:X  d   e[         R
                  " U5      (       d   eUS:X  d   e[         R                  " S////SS9n[        U5      nUR                  R                  S:X  d   eUR                  S:X  d   e[        US//5        [         R                  " S///[         R                  S9n[        U5      nUR                  R                  S:X  d   eUR                  S	:X  d   e[        US/5        g )
NrK   r  rC   r  r   ru   y      ?      @r(  )rK   )	r2   r   r   r   r  isscalarr   r   r   )r`   ra   detas      r;   test_1x1_all_singleton_dims#TestDet.test_1x1_all_singleton_dims  s   HHqcUO1vzz#%%%{{4    rzzHHugYc*1vzz#%%%zzV###TSE7#HHyk]",,71vzz#%%%zzT!!!TF8$r=   c                 T   [         R                  R                  S5      nUR                  / SQ[         R                  S9n[	        U5      nUR
                  R                  S:X  d   eUR                  S:X  d   e[        U[         R                  " U5      5        UR                  / SQ[         R                  S9[         R                  " S5      -  n[	        U5      nUR
                  R                  S:X  d   eUR                  S:X  d   e[        U[         R                  " U5      5        g )N   *n`/ )rG   r'  rK   rK   r   r  rG   r'  rq   r(  )r2   rM  rN  r
   r   r   r  r   r   squeezer   )r`   rO  ra   r  s       r;   test_1by1_stacked_input_output&TestDet.test_1by1_stacked_input_output  s    ii##$45JJ|2::J61vzz#%%%zzV###bjjm,JJ|2::J6r||C7HH1vzz#%%%zzV###bjjm,r=   r   rJ   rD   )rY   rJ   rD   rD   c                    [         R                  R                  S5      nUR                  SSUS9n[	        U5      [         R
                  R	                  U5      pT[        XE5        UR                  SSUS9S-  nXbR                  SSUS9-  n[	        U5      [         R
                  R	                  U5      p[        Xx5        g )Nr        rC   r  rq   r`  r   )r2   rM  rN  uniformr   r  r   )	r`   r   rO  ra   d1d2ri   d3d4s	            r;   #test_simple_det_shapes_real_complex+TestDet.test_simple_det_shapes_real_complex  s    ii##$45KKReK,Qq)BKKReK,R/	[[s[//Qq)Br=   c                    [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        [        U5      S	5        [        [        [         R                  " S
5      R                  SS5      5      S5        [         R                  " / SQ/ SQ/ SQ/ SQ/[         R                  S9n[        [        U5      S5        [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      S-  n[        [        U5      S5        g )N)rK   rK   rK   rK   rK   rK   rK   rK   )rK   rM   rK   rM   rK   rM   rK   rM   )rK   rK   rM   rM   rK   rK   rM   rM   )rK   rM   rM   rK   rK   rM   rM   rK   )rK   rK   rK   rK   rM   rM   rM   rM   )rK   rM   rK   rM   rM   rK   rM   rK   )rK   rK   rM   rM   rM   rM   rK   rK   )rK   rM   rM   rK   rM   rK   rK   rM   g      @r  r'  rQ   )r  r                r  )r  r        ?        r  )rq   ry  r  r  )r  rq   r  r  r   y      @        )rN  rO  rC   rQ   rQ   rQ   rQ   rQ   )rC   rQ   rQ   rQ   rQ   rQ   rQ   rQ   )rQ   g      rQ   g      rC   rQ   rQ   rQ   )rQ   rC   rQ   rQ   rQ   rQ   rQ   rQ   )rQ   rQ   rQ   g      rQ   g      rC   rQ   )rQ   rQ   rQ   rC   rQ   rQ   rQ   rQ   )rQ   rQ   rQ   rQ   rQ   g       rQ   g      ")rQ   rQ   rQ   rQ   rQ   rC   rQ   rQ   rq   r  )r2   r   r   r   r   r^   r   r  s     r;   test_for_known_det_values!TestDet.test_for_known_det_values  s    HH.22222224 5 	A& 	BIIbM11!Q78"=
 HH66668 @B||M 	A' HH868686868 9 :== 	A#r=   typAllNgGr  c                     [         R                  R                  S5      nSnUR                  X3/5      R                  U5      n[	        [        U5      [         R                  [         R                  -  5      (       d   eg )Nr  rG   )r2   rM  rN  r  
isinstancer   r4   r6   )r`   r  rO  rP  ra   s        r;   "test_sample_compatible_dtype_input*TestDet.test_sample_compatible_dtype_input0  s]     ii##$45JJv%%c*#a&2::#=????r=   c           	         Sn[        S/ SQ5       H@  u  p#[        [        US9   [        [        R
                  " SS//S-  US95        S S S 5        MB     [        [        US9   [        [        R
                  " S	S
//S-  SS95        S S S 5        [        [        US9   [        [        R
                  " SS//S-  SS95        S S S 5        [        [        US9   [        [        R
                  " SS//S-  SS95        S S S 5        g ! , (       d  f       GM  = f! , (       d  f       N= f! , (       d  f       Nn= f! , (       d  f       g = f)Nz!cannot be cast to float\(32, 64\)SUO)bytes8str32objectr  ra   ri   rJ   r      a   bVr     zdatetime64[s]ztimedelta64[s])zipr   	TypeErrorr   r2   r   )r`   msgcts       r;   test_incompatible_dtype_input%TestDet.test_incompatible_dtype_input9  s     4<=DAy4BHHsCj\!^156 54 > 9C04,)56 19C03*a?@ 19C03*a/?@A 10 54000000s/   %D#%D%D+%D<
D	
D(+
D9<
E
c                    [        [        [        R                  " SS/5      5      S5        [        [        [        R                  " / SQ5      5      [        R                  " / 5      5        [        [        [        R                  " / SQ5      5      [        R                  " / SQ5      5        [        [        SS9   [        [        R                  " / SQ5      5        S S S 5        [        [        S	S9   [        [        R                  " / 5      5        S S S 5        [        [        SS9   [        [        R                  " / /5      5        S S S 5        [        [        SS9   [        [        R                  " / //5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ni= f! , (       d  f       g = f)
Nr   rC   )r   r   r   rY   r   r   rC   rC   rC   zLast 2 dimensionsr  )r   r   rY   zat least two-dimensional)r   r   r2   r   r   r   r   r  s    r;   test_empty_edge_casesTestDet.test_empty_edge_casesH  s   BHHaV,-r2BHHY/0"((2,?BHHY/0"((<2HI:-@A#$ B:-GH I:-@A" B:-@A2$ ! BA BAHHAAAAs0   :"F
2 F(!F,"F=

F
F),
F:=
G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[         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g )Nr   r   r   rJ   r  ro  )rY   rK   rK   )r2   r   r   r   r   r   r   )r`   r:   ra   r  s       r;   test_empty_dtypeTestDet.test_empty_dtypeU  s    HHV2&Fww"}}ww#bffQb1288888HHYb)Fww$ww#bhhy;<BBBBBr=   c                    [         R                  " S5      R                  SS5      R                  [         R                  5      nUR                  5       n[        USS9n[        US5        X:H  R                  5       (       a   eg )Nr  rY   Tr*   rQ   )	r2   r   r^   r  r
   r  r   r   r  )r`   ra   acr  s       r;   r  TestDet.test_overwrite_aa  sc    
 IIaL  A&--bjj9VVX24(b!G==??""?r=   c                     [         R                  " / SQ/ SQ/ SQ/5      nUR                  SS9  [        [	        USS9S5        g )	N)rX   rQ   rC   )      @r   r  r  F)writeTr  rW   )r2   r   setflagsr   r   r  s     r;   test_readonly_arrayTestDet.test_readonly_arrayl  s6    HHlM<@A	


A40#6r=   c                     SS/S[         R                  //n[        [        SS9   [	        U5        S S S 5        g ! , (       d  f       g = f)NrK   rJ   rY   zarray must not containr  )r2   infr   r   r   r  s     r;   test_simple_check_finite TestDet.test_simple_check_finiter  s7    Va[!:-EFF GFFs	   :
Ar   )r   r   r   r   r  r  r   r   r   r  r  r2   	typecodesr  r  r  r  r   r   r
   r   r   r  r  r%  r)  r   ).0rj   s   00r;   r  r    s2   %"- [[W1vBx&HI	  J	 "$J [[UU0CCR0H %70H1() &'0H %7 8[[ <=@ >8@ [[ <=B >B" [[TC

GR\\#RS	C T	C	#7E%7s   &
D4Dr  c                 ~    [        U 5      nU(       a  [        U5      n[        X05      n[        X15      n[        XE5      $ )N)r	   r   r   r   )ra   ri   cmplxata1b1s         r;   direct_lstsqr2  x  s3    	1Br]	RB	RB=r=   r  c                   r   \ rS rSrSrS rS rS rS r\	R                  R                  S\5      \	R                  R                  SS	5      \	R                  R                  S
\5      \	R                  R                  SS5      S 5       5       5       5       r\	R                  R                  \SS9\	R                  R                  S\5      \	R                  R                  SS	5      \	R                  R                  S
\5      \	R                  R                  SS5      S 5       5       5       5       5       rS rS rS rS r\	R                  R                  S\\\R2                  \\R6                  /5      \	R                  R                  S\\\R2                  \\R6                  /5      S 5       5       r\	R                  R                  S/ SQ5      S 5       r\	R                  R                  S/ SQ5      S 5       r\	R                  R                  S/ SQ5      S 5       r\	R                  R                  S/ SQ5      \	R                  R                  SSS /5      \	R                  R                  S!/ S"Q5      S# 5       5       5       r S$ r!\"\#\	R                  R                  S/ S%Q5      \	R                  R                  S\\/5      \	R                  R                  S&/ S'Q5      \	R                  R                  S(S)S*/5      \	R                  R                  S+S,S-/5      S. 5       5       5       5       5       5       5       r$S/r%g0)1	TestLstsqi  )gelsdgelssgelsyNc                    [          H  n[        R                  " SS/SS//US9n[        R                   H  nS H  nS H  nUR                  5       n[        R                  " XQS9nUR                  5       n[        XhUUUS9n	U	S	   n
U	S
   n[        US
:H  SU 35        [        [        X*5      US[        UR                  5      -  S[        UR                  5      -  SU 3S9  M     M     M     M     g )NrK   rD   rF   rG   r   TF)rK   r   r,  r;  )rU   rF   rG   lapack_driverr*   r0   r   rJ   expected efficient rank 2, got r  driver: )r  r   err_msg)REAL_DTYPESr2   r   r4  lapack_driversr  r   r   r   r   r<   r   )r`   r   ra   r>  r  btr0  ri   r1  r  rj   rV  s               r;   test_simple_exactTestLstsq.test_simple_exact  s     E1b'C8,E:A!*!9!9!.I3 VVXHHR5VVX#B2?0909;  FFQ"A! EG'A	1-/)BHH2E-E-/)BHH2E-E2:=/0JL3 "/ ": !r=   c                 
   [          GHx  n[        R                  " SS/SS/SS//US9n[        R                  " / SQUS9n[        R                   GH*  nS GH  nUR                  5       nUR                  5       n[        XgUUUS	9nUS
   n	US:X  a+  [        R                  " X2R                  U	5      -
  S-  5      n
OUS   n
US   n[        US:H  SU 35        [        [        [        X)5      U-
  S-  5      R                  S
S9U
S[        UR                  5      -  S[        UR                  5      -  SU 3S9  [        U	SS[        UR                  5      -  S[        UR                  5      -  SU 3S9  GM"     GM-     GM{     g )NrK   rJ   rG   r'  rY   r   r  r9  r=  r   r7  r?  axisr  r@  r   r  rA  )gm۶mۿgm۶m?)rB  r2   r   r4  rC  r  r   sumr   r   r   rd  r<   r   )r`   r   ra   ri   r>  r  r0  r1  r  rj   	residualsrV  s               r;   test_simple_overdetTestLstsq.test_simple_overdet  ss    [E1a&1a&1a&1?A%0A!*!9!9!.IBBm,5,57C AA$/$&FFAaL1+<$=	$'F	AAAF&EaS$IJ#CQQ(:$;$?$?Q$?$G$-)+i.A)A)+i.A)A.6}o,F	H
 $A'M)+i.A)A)+i.A)A.6}o,FH' "/ ": !r=   c                 (   [          GH  n[        R                  " SS/SS/SS//US9n[        R                  " / SQUS9n[        R                   GH9  nS GH.  nUR                  5       nUR                  5       n[        XgUUUS	9nUS
   n	US:X  a:  X2R                  U	5      -
  n
[        R                  " XR                  5       -  5      nOUS   nUS   n[        US:H  SU 35        [        [        [        X)5      U-
  S-  5      R                  S
S9US[        UR                  5      -  S[        UR                  5      -  SU 3S9  [        U	SS[        UR                  5      -  S[        UR                  5      -  SU 3S9  GM1     GM<     GM     g )Nre  rJ   rG   r'  rY   r   )rK   r   rY   r9  r=  r   r7  rK   r?  rH  r  r@  rJ  )yu{޿E(B?yӽu{?(YJV?)COMPLEX_DTYPESr2   r   r4  rC  r  r   r   rK  r~  r   r   rd  r<   r   )r`   r   ra   ri   r>  r  r0  r1  r  rj   r  rL  rV  s                r;   test_simple_overdet_complex%TestLstsq.test_simple_overdet_complex  s   #^E4)aVaV4EBAU3A!*!9!9!.IBBm,5,57C AA$/%%(l$&FF3+;$<	$'F	AAAF&EaS$IJ#CQQ(:$;$?$?Q$?$G$-)+i.A)A)+i.A)A.6}o,F	H
 $ ! $L%')BHH*=%=%')BHH*=%=*2=/(BD+ "/ ": $r=   c                    [          H  n[        R                  " / SQ/ SQ/US9n[        R                  " SS/US9n[        R                   H  nS H  nUR                  5       nUR                  5       n[        XgUUUS9nUS   n	US   n
[        U
S:H  S	U
 35        [        U	S
S[        UR                  5      -  S[        UR                  5      -  SU 3S9  US   nUR                  S:X  a  M   e   M     M     g )Nr  rq  r   rK   rJ   r9  r=  r   r?  )gqqgqq?gdq?r  r@  rJ  )rB  r2   r   r4  rC  r  r   r   r   r<   r   r  )r`   r   ra   ri   r>  r  r0  r1  r  rj   rV  rL  s               r;   test_simple_underdetTestLstsq.test_simple_underdet  s     E)Y/u=A!Qu-A!*!9!9!.IBBm,5,57C AAAAAF&EaS$IJ#A (;)+i.A)A)+i.A)A.6}o,F	H !$AI$>>Q...' "/ ": !r=   r   rP  )rD   r  r>  r  r9  c           
         [         R                  R                  S5      n[         R                  " UR                  X"/5      US9n[	        U5       H  nSSXgU4   -   -  XgU4'   M     [	        S5       GH  n[         R                  " UR                  US/5      US9nUR                  5       n	UR                  5       n
[        XUUUS9nUS   nUS	   n[        X:H  S
U SU 35        U[         R                  L aG  [        [        Xl5      US[        U	R                  5      -  S[        U	R                  5      -  SU 3S9  M  [        [        Xl5      US[        U	R                  5      -  S[        U	R                  5      -  SU 3S9  GM     g )NrL  r   rD   rZ  rG   rY   r=  r   rJ   expected efficient rank , got i  r@  rJ    )r2   rM  RandomStater  r\  r  r   r   r
   r   r   r<   r   r`   r   rP  r>  r  rO  ra   rU  ri   r0  r1  r  rj   rV  s                 r;   test_random_exactTestLstsq.test_random_exact  so   
 ii##D)JJszz1&)7qAC!qD'M*AdG qA

3::q!f-U;ABB&3$-$-/C AAAAAF6qc :#  

"a)Q"Yrxx%88"Yrxx%88$,]O"<	>  a)Q#i&99#i&99$,]O"<	>) r=   z$may segfault on Alpine, see gh-17630r  c           
      B   [         R                  R                  S5      n[         R                  " UR                  X"/5      SUR                  X"/5      -  -   US9n[	        U5       H  nSSXgU4   -   -  XgU4'   M     [	        S5       GH  n[         R                  " UR                  US/5      US9nUR                  5       n	UR                  5       n
[        XUUUS9nUS	   nUS   n[        X:H  S
U SU 35        U[         R                  L aG  [        [        Xl5      US[        U	R                  5      -  S[        U	R                  5      -  SU 3S9  M  [        [        Xl5      US[        U	R                  5      -  S[        U	R                  5      -  SU 3S9  GM     g )NrL  rq   r   rD   rZ  rJ   rY   r=  r   rW  rX  i  r@  rJ  rY  )r2   rM  rZ  r  r\  r  r   r   r   r   r   r<   r   r[  s                 r;   test_random_complex_exact#TestLstsq.test_random_complex_exact  s    ii##D)JJszz1&)Bszz1&/A,AA"$qAC!qD'M*AdG qA

3::q!f-U;ABBm$-$-/C AAAAAF6qc :#  $a)Q"Yrxx%88"Yrxx%88$,]O"<	>  a)Q#i&99#i&99$,]O"<	>' r=   c                    [         R                  R                  S5      n[         GHB  nS GH7  u  p4[        R
                   GH  nS GH  n[         R                  " UR                  X4/5      US9n[        U5       H  nSSXxU4   -   -  XxU4'   M     [        S5       H  n[         R                  " UR                  US/5      US9n	UR                  5       n
U	R                  5       n[        XUUUS	9nUS
   nUS   n[        X:H  SU SU 35        [        U[        XyS
S9S[        U
R                  5      -  S[        U
R                  5      -  SU 3S9  M     GM     GM     GM:     GME     g )NrL  )rD      )r  rJ   r9  r   rD   rZ  rG   rY   r=  r   rJ   rW  rX  r.  r  r@  rJ  )r2   rM  rZ  rB  r4  rC  r  r\  r  r   r   r   r2  r<   r   r`   rO  r   rP  mr>  r  ra   rU  ri   r0  r1  r  rj   rV  s                  r;   test_random_overdetTestLstsq.test_random_overdet?  sY   ii##D) [E.%.%=%=M%2	JJszz1&'9G!&qA&(C!qD'M&:AdG "*!&qA "

3::q!f+=U KA!"B!"B"'6C4=4=#?C !$AA #AA#AF.Fqc J++,#-/ 0+*+\!a-H/1Ibhh4G/G/1Ibhh4G/G4<]O2L	N "*	 &3 &> / !r=   c                    [         R                  R                  S5      n[         GHX  nS GHM  u  p4[        R
                   GH2  nS GH'  n[         R                  " UR                  X4/5      SUR                  X4/5      -  -   US9n[        U5       H  nSSXxU4   -   -  XxU4'   M     [        S5       H  n[         R                  " UR                  US	/5      US9n	UR                  5       n
U	R                  5       n[        XUUUS
9nUS   nUS   n[        X:H  SU SU 35        [        U[        XySS9S[        U
R                  5      -  S[        U
R                  5      -  SU 3S9  M     GM*     GM5     GMP     GM[     g )NrL  rb  r9  rq   r   rD   rZ  rJ   rY   r=  r   rW  rX  rK   rd  r  r@  rJ  )r2   rM  rZ  rP  r4  rC  r  r\  r  r   r   r   r2  r<   r   re  s                  r;   test_random_complex_overdet%TestLstsq.test_random_complex_overdet[  ss   ii##D)#^E.%.%=%=M%2	JJszz1&'9Bszz1&?Q<Q'Q-24!&qA&(C!qD'M&:AdG "*!&qA "

3::q!f+=U KA "#B!"B"'6C4=4=#?C !$AA #AA#AF.Fqc J++,#-/ 0+&'a!)D+-	"((0C+C+-	"((0C+C08.H	J "* &3 &> / $r=   c           
         [         R                  " 5          [         R                  " SS[        5        S S S 5        [        R
                  " S5      n[        R                  " [        S[        R                  SS5       H  u  p#pEnUR                  U5      n[        R
                  " X2S9nUR                  5       n	UR                  5       n
[        XUXeUS9nUS   nUS	   n[        US	:H  S
U 35        [        [!        X|5      US[#        UR$                  5      -  S[#        UR$                  5      -  SU 3S9  M     g ! , (       d  f       GN= f)Nr  zIinternal gelsd driver lwork query error,.*Falling back to 'gelss' driver.))rK   rD   r<  r:  r9  r   )r>  r   r*   r0   r   rJ   r?  r  r@  rJ  )warningscatch_warningsr  RuntimeWarningr2   r   	itertoolsproductrB  r4  rC  r  r  r   r   r   r   r<   r   )r`   r/  r   rD  r>  r  r   ra   ri   r0  r1  r  rj   rV  s                 r;   r   TestLstsq.test_check_finitey  s*   $$&##H%FGUW ' XX)*kL'66++	- >E} 		% A)A BBm%1$-/C AAAAAF=aSABCIq!#i&8!8!#i&8!8&.}o$>@%- '&s   D;;
E
c           
         S H  u  p[         R                  " U5      n[        [         R                  " U5      U5      u  pEpg[	        U[         R                  " US   4USS  -   5      5        US   (       a  [         R
                  " S5      O [         R                  R                  USS9S-  n[	        XX5        [        US:H  S5        [	        U[         R
                  " S5      5        M     g )N))r   rJ   r   ))r   rG   rt  )rG   r   )rG   )ru  r  rK   r   r   rH  rJ   zexpected rank 0)	r2   r   r   r   r   r   r  r   r   )	r`   a_shapeb_shaperi   rj   residuesranksresidues_should_bes	            r;   r   TestLstsq.test_empty  s    !3G  A#('):A#> ABHHgaj]WQR[%@AB4;AJ"((4.')yy~~aa~'@!'C 6DAI01BHHTN+!3r=   r  r   c                 :   [         R                  " SUS9n[         R                  " SUS9n[        X45      u  pVpxUR                  S:X  d   e[        [         R                  " SUS9[         R
                  " SUS95      S   R                  n	UR                  U	:X  d   eg rj  )r2   r   r   r  r   r   r   )
r`   r  r   ra   ri   rj   rx  ry  rz  r  s
             r;   r  TestLstsq.test_empty_dtype  s     HHV4(HHQd#$Q{Tvv{{BFF1D12771D3IJ1MSSww+%%%r=   driver)r6  r7  r5  c                    [         R                  " S5      R                  SS5      S-   n[         R                  " USU-  45      n[         R                  " [         R                  " S5      S-   SS[         R                  " S5      -  -   45      R                  n[        X4US9u  pVpx[        U[         R                  " SS/S	S
/SS/SS//SS/SS/SS/SS///5      SS9  g )Nr  rY   rG   rK   rJ   r>  ggffffff?g?g?rZ  gffffff?gɿggffffff?g?r  皙?gffffff?gr   r  r2   r   r^   r9  ru  r   r   r  	r`   r  ra   r  bbrj   rx  ry  rz  s	            r;   test_m_less_than_nTestLstsq.test_m_less_than_n  s    
 IIcN""1a(1,XXq!A#hXXryy|a'Qryy|^);<=??$R6BT

e%7',%7'*%7',t%7%9
 '-%7'-%7'+%7'-t%7%9$: ; BG
	
r=   c           
         [         R                  " S5      R                  SS5      S-   n[         R                  " USU-  45      n[         R                  " [         R                  " S5      S-   SS[         R                  " S5      -  -   45      R                  n[        X4US9u  pVpx[        U[         R                  " SS/S	S
/SS//SS/SS/SS///5      SS9  g )Nr  rG   rY   rK   rJ   r  g6Bqg|
q?#q?#q?gn)t?g:ؿg6Bqg|
q?g6Bq?g#q?gn)t?gF2X/ȿr   r  r  r  s	            r;   test_m_larger_than_nTestLstsq.test_m_larger_than_n  s     IIcN""1a(1,XXq!A#hXXryy|a'Qryy|^);<=??$R6BT

kJ%?'1J%?'1;%?%A '2J%?'1J%?'1;%?%A	$B C JO	
r=   c                 L   [         R                  " SS/SS/SS//[        S9n[         R                  " / SQ[        S9nUR                  u  pEXE:  d   e[	        X#US9u  pgpX:X  d   eUS	:w  a[  UR
                  S
:X  d   eX2U-  -
  n
[         R                  " XR                  5       -  S
S9n[        R                  " X{SS9(       d   eO"UR
                  S:X  a  UR                  S
:X  d   e[         R                  " USU-  SU-  SU-  4SS9nUR                  S   n[	        X,US9u  pnnUU:X  d   eUS	:w  aL  UR                  U4:X  d   eXU-  -
  n[         R                  " UUR                  5       -  S
S9n[        UUSS9  O"UR
                  S:X  a  UR                  S
:X  d   e[         R                  " USU-  45      nUR                  5       nUR                  S S n[	        UUUS9u  nnnn[        U[         R                  " XU/5      5        US	:w  a#  UR                  U4:X  d   e[        UU/U-  SS9  OUR                  S:X  d   e[         R                  " USU-  45      nUR                  S S nUR                  5       n[	        UUUS9u  nnnn [        U[         R                  " XU/5      5        US	:w  aW  UR                  SU4:X  d   eUUU-  -
  n![         R                  " U!U!R                  5       -  [!        U5      S9n"[        UU"SS9  g UR                  S:X  d   eg )NrK   rJ   rG   r'  rY   r   r  r  r7  r   rH  r  )abs_tolrM   r  rM  r  )r2   r   r   r   r   ndimrK  r~  mathiscloser  r9  r   r  r   r  len)#r`   r  ra   ri   rf  rP  rj   residry  rz  deltamanual_residualsb2r  x2resid2rank2s2delta2manual_residuals2r  b3batch_shapex3resid3ranks3s3a4re   x4resid4rank4s4delta4manual_residual4s#                                      r;   test_residualsTestLstsq.test_residuals  s    HHq!fq!fq!f-U;HHYe,wwuu "!f=$yyW::?"?AIE!vvejjl&:C<<GGG::?uzzQ66 XXq!A#qsAaC(q1xx| %a6 BE2zzW<<D7***b&[F "(>Q HF$5EB::?uzzQ66 XXq!A#hVVXhhsm!&r2V!DFFBVRZZ/0W<<A4'''FUGAIE:<<6))) XXq!A#hhhsmWWY %b"F CFE2UBJJv./W<<At9,,,"r'\F!vvv'=CDTVF$45A<<6)))r=   )r5  r6  r7  shape_arY   rJ   )rG   rY   rJ   shape_b)ro  rY   rK   )rY   r'  c                    [         R                  R                  SS9n[        U5      S:X  a  [         R                  " U5      nOO[         R                  " U5      nSUSS 2S S 2S4'   UR                  US   S-
  US   US   S-
  4S9USS 2S S 2SS 24'   UR                  US9n[        XVUS9u  pxpUS	:w  a  UR                  S:X  a  US S 2S 4   nUS
   nUS
   nXW-  U-
  n[         R                  " XR                  5       -  SS9nXS   :H  n[        X   X   5        [         R                  " [         R                  " X)    5      5      (       d   eg UR                  UR                  S S S-   :X  d   eg )N*   seedrJ   rK   r   rM   r  r  r7  r  rM  rH  r   )r2   rM  rN  r  r   r   r   r  rK  r~  r   r  isnanr   )r`   r  r  r  rO  ra   ri   rj   r  ry  _res_refr  s                r;   test_rank_deficient_residuals'TestLstsq.test_rank_deficient_residuals	  se    ii###, w<1!A!AAab!QhK::GAJqL'!*gbkRSm+T:UAab!QRiLJJGJ$F; Wvv{agJiL)neaiGffW||~5B?G2;&DCIw}566"((3u:.////99"!4555r=   c                     [         R                  " S5      n[         R                  " S5      n[        R                  " [        SS9   [        XSS9  S S S 5        [        R                  " [        SS9   [        X5        S S S 5        [        R                  " [        SS9   [        [         R                  " S	5      [         R                  " S	5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nv= f! , (       d  f       g = f)
NrY   rG   rG   zLAPACK driverr  krampusr  zShape mismatchzInput arrayrY   )r2   r   r   r   r   r   r  s      r;   test_errorsTestLstsq.test_errorsB	  s    GGFOGGAJ]]:_=!i0 > ]]:-=>!K ? ]]:];"''!*bggaj) <; >= ?> <;s$   C2C.5C?
C+.
C<?
D)r6  r5  r7  r   ))rJ   rG   rY   )rG   rY   r  r  rK   r'  r  r2  r3  c           	         [         R                  R                  SS9nU[        LaM  [         R                  " UR                  US9US9n	[         R                  " UR                  / US S QUP7S9US9n
ON[         R                  " UR                  SUS9US9n	[         R                  " UR                  S/ US S QUP7S9US9n
[         R                  " U	5      n[         R                  " U
5      n[        X40 UDUDSU0D6u  pnnUR                  SS5      nUS   US   :  a  [        UU-  UU-  5      nOU[        UU-  U5      -  n[        UUS	S
9  US:w  aE  US   US   :  a9  X-  U-
  n[         R                  " UUR                  5       -  SS9n[        UUS	S
9  O1[        [         R                  " US S S-   UR                  5      U5        UR!                  SS5      nU=(       a4    U[        L=(       a%    U	R"                  S   =(       a    U	R$                  S:*  nUR!                  SS5      nU=(       a0    U[        L=(       a!    U
R"                  S   =(       a    US   US   :  n[         R&                  " X:H  5      U:w  d   e[         R&                  " X:H  5      U:w  d   e[         R(                  " X5      U:X  d   eg )Ni@ r  r  r  rM   rY  r>  rM  r  r  r7  rH  r   r*   Fr8  rJ   r0   r   rK   )r2   rM  rN  r   r  r   integersr  r   swapaxesr   r   rK  r~  r   r   r:  r  r  r  r;  )r`   r)   r/   r  r   r   r  r  rO  ra   ri   r<  r=  rj   r  ry  Sa_Tx_refr  r*   r0   s                         r;   test_overwriteTestLstsq.test_overwriteO	  s    ii###0

3::5:1?A

3::+>U3BZ+>+>:?uMA

3<<5<9GA

3<<3FU3BZ3F3F<GuUA


 
$2
BH
a
 nnR$9b	!#+sU{3E%U33Equ-WreBi!7i%'GffWw||~5B?GGSu5BHHU3BZ$%6@#F"&&}e< #GGN# FFaK	 	 %((> !#!GGN#! !Ha 	 	 vvej![000vvej![000%444r=   r   N)&r   r   r   r   rC  rE  rM  rQ  rT  r   r   r   rB  r\  skipifr&   rP  r_  rg  rj  r   r   r   r   r2   r
   r   r   r  r  r  r  r  r  rX  rY  r  r   r   r=   r;   r4  r4    s$   6NL2H:DB/4 [[Wk2[[S),[[_n=[[[-8> 9 > - 3>@ [[(NO[[Wn5[[S),[[_n=[[[-8> 9 > - 6 P
>@N8J<@@, [[Vc5"**gr||%TU[[Vc5"**gr||%TU& V V& [[X'BC
 D
* [[X'BC
 D
" [[X'BCA* DA*F [[X'BC[[Y(;<[[Y(>?6 @ = D6@*  [[X'BC[[WsEl3[[W&AB[[VaV,[[WsCj175 2 - C 4 D ! 75r=   r4  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
\\R"                  \\R&                  /5      S 5       rSrg)TestPinvi	  c                     [        / SQ/ SQ/ SQ/[        S9n[        U5      n[        [	        X5      [
        R                  " S5      5        g Nr  rq  rr  r   rY   r   r   r   r   r   r2   r   r`   ra   a_pinvs      r;   test_simple_realTestPinv.test_simple_real	  s4    9i4EBa!#a."&&)<r=   c                     [        / SQ/ SQ/ SQ/[        S9S[        / SQ/ SQ/ SQ/[        S9-  -   n[        U5      n[        [	        X5      [
        R                  " S	5      5        g 
Nr  rq  rr  r   rq   )r  rs  rN   )rH   r'  rG   )rY   rJ   rK   rY   r  r  s      r;   r)  TestPinv.test_simple_complex	  sY    Iy*5
Iy'I-2"4 44 a!#a."&&)<r=   c                     [        / SQ/ SQ/ SQ/[        S9n[        U5      n[        / SQ/ SQ/ SQ/5      n[        X#5        g )Nr  rq  rN   rs  r  r   g|qgԕVUUſgc8?gqg^0<gq?g9?gԕVUU?g:87ȿr   r   r   r   r`   ra   r  r   s       r;   test_simple_singularTestPinv.test_simple_singular	  sB    9i35AaLKKM N 	"&3r=   c                     [        / SQ/ SQ/[        S9n[        U5      n[        SS/SS/SS	//5      n[        X#5        g )
Nr  rq  r   g֋8r  g#qr  gIq?g#q̿r  r  s       r;   test_simple_colsTestPinv.test_simple_cols	  sL    9i(6a;
3&
3%{35 6 	"&3r=   c                     [        SS/SS/SS//[        S9n[        U5      n[        / SQ/ S	Q/5      n[        X#5        g )
NrK   rJ   rY   rG   r'  rH   r   )gDpTUUgQUUտgvWUU?)gDpTUU?gQUU?g&>ڿr  r  s       r;   test_simple_rowsTestPinv.test_simple_rows	  sI    Aq6Aq6Aq6*%8a@?A B!&3r=   c                     [        / SQ/ SQ/ SQ/5      n[        USS9n[        [        X5      [        R
                  " S5      5        g )Nr  )rG   r'  r   rr  Fr   rY   )r   r   r   r   r2   r   r  s      r;   r   TestPinv.test_check_finite	  s5    9j*56ae,!#a."&&)<r=   c                 n    / SQ/ SQ/ SQ/n[        U5      n[        / SQ/ SQ/ SQ/5      n[        X#5        g )Nr  rq  r  r  r  r  )r   r   r   r  s       r;   test_native_list_argument"TestPinv.test_native_list_argument	  s;    	9-aLKKM N 	"&3r=   c                    [         R                  R                  S5      nSn[        UR                  X"45      5      u  p4[         R                  " S5      R                  SS5      nUR                  5       nSUS'   SnS	n[        XWS
S9n	Xi-  U-  U-
  n
XY-  U-  U-
  n[        [         R                  R                  U
5      SSS9  [        [         R                  R                  U5      SSS9  [        XWUS9n	Xi-  U-  U-
  n
XY-  U-  U-
  n[        [         R                  R                  U
5      SSS9  [        [         R                  R                  U5      SSS9  g )NrL  r  g     A@rN   r'  gMbP?r   h㈵>r  rQ   r  gMb@?r  r  g(3=g;O@{Gz?r   )r2   rM  rN  r!   r   r^   r  r   r   r  r   )r`   rO  rP  qr  a_mra   r  r   a_padiff1adiff2s               r;   test_atol_rtolTestPinv.test_atol_rtol	  s*   ii##D)#**aV$%iio%%a+HHJ$ 3+1qS3& 			v.5A		v.FC 3-1qS3&		v.DA		v.DAr=   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g rj  )r2   r   r   r  r   r   r`   r:   ra   r  s       r;   r   TestPinv.test_empty	  sU    HHV2&a{{a||tBFF1B$78>>>>>r=   r   N)r   r   r   r   r  r)  r  r  r  r   r  r  r   r   r   r   r2   r
   r   r   r   r   r   r=   r;   r  r  	  sb    =
=444=
4B8 [[TE2::w#MN? O?r=   r  c                       \ rS rSrS rS rS rS rS rS r	\
R                  R                  S\\R                  \\R"                  /5      S	 5       rS
rg)TestPinvSymmetrici	  c                     [        / SQ/ SQ/ SQ/[        S9n[        R                  " XR                  5      n[        U5      n[        [        R                  " X5      [        R                  " S5      5        g r  )r   r   r2   r   ru  r   r   r   r  s      r;   r  "TestPinvSymmetric.test_simple_real	  sJ    9i4EBFF1ccNq!"&&"3RVVAY?r=   c                 D   [        / SQ/ SQ/ SQ/[        S9n[        R                  " XR                  5      n[        R
                  R                  U5      u  p#nUS==   S-  ss'   [        R                  " X#-  U5      n[        U5      n[        U5      n[        XV5        g )Nr  rq  r  r   r   rM   )
r   r   r2   r   ru  r  svdr   r   r   )r`   ra   rd   rz  vtr  a_pinvhs          r;   test_nonpositive"TestPinvSymmetric.test_nonpositive	  su    9i35AFF1ccN99==#b	!
FF15"a(!&2r=   c                 B   [        / SQ/ SQ/ SQ/[        S9S[        / SQ/ SQ/ SQ/[        S9-  -   n[        R                  " XR	                  5       R
                  5      n[        U5      n[        [        R                  " X5      [        R                  " S	5      5        g r  )	r   r   r2   r   r~  ru  r   r   r   r  s      r;   r)  %TestPinvSymmetric.test_simple_complex	  sv    Iy*5
Iy'I-2"4 44 FF1ffhjj!q!"&&"3RVVAY?r=   c                    [        / SQ/ SQ/ SQ/[        S9n[        R                  " XR                  5      n[        UR                  5       5      n[        [        R                  " X5      [        R                  " S5      5        g r  )	r   r   r2   r   ru  r   tolistr   r   r  s      r;   r  +TestPinvSymmetric.test_native_list_argument	  sQ    9i4EBFF1ccNqxxz"!"&&"3RVVAY?r=   c                     [         R                  " / SQ/ SQ/ SQ/5      n[        U5      n[        X!-  U-  USS9  [        X-  U-  USS9  g )N)rK   rM   r   )rM   rJ   rM   )r   rM   rK   r   r  )r2   r   r   r   )r`   ra   ps      r;   test_zero_eigenvalue&TestPinvSymmetric.test_zero_eigenvalue
  sF     HHj+z:;!H	151	151r=   c                 p   [         R                  R                  S5      nSn[        UR                  X"45      5      u  p4[         R                  " / SQS/US-
  -  -   5      nUR
                  U-  U-  n[         R                  " / SQS/US-
  -  -   5      nUR
                  U-  U-  nSnS	n[        XWSS
9n	XY-  U-  U-
  n
Xi-  U-  U-
  n[        [        U
5      USS9  [        [        U5      SSS9  [        XWUS
9n	XY-  U-  U-
  n
Xi-  U-  U-
  n[        [        U
5      SSS9  [        [        U5      SSS9  g )NrL  r  )rG   rY   rJ   rK   vk?gﭣ>gu>rH   )rG   rY   rJ   rK   r  rQ   rQ   r  g1?r  rZ  r   r  gdy=r  -C6?)	r2   rM  rN  r!   rw   ru  r   r   r   )r`   rO  rP  r  r  ra   r  r  r   r  r  r  s               r;   r   TestPinvSymmetric.test_atol_rtol
  s4   ii##D)#**aV$%GG2gY!_DECC!GaKgg/2$!*<=ccCi!m!Ar*1qS3& 	Vd5Ve%8 At,1qS3&Vd5Vd5r=   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g rj  )r2   r   r   r  r   r   r   r  s       r;   r   TestPinvSymmetric.test_empty(
  sU    HHV2&q{{a||tBFF1B$78>>>>>r=   r   N)r   r   r   r   r  r  r)  r  r  r  r   r   r   r   r2   r
   r   r   r   r   r   r=   r;   r  r  	  sZ    @3@@268 [[TE2::w#MN? O?r=   r  scale)r  rC   rP  pinv_c                     [         R                  " SS/SS//5      U -  n[         R                  " S[         R                  " U5      -  5      nU" U5      n[        XC5        g )NrK   r   g|=rC   )r2   r   rw   r   )r  r  rj   r   x_invs        r;   test_auto_rcondr  0
  sO     	1a&1e*%&.AwwrBGGAJ'H!HEE$r=   c                       \ rS rSr\R
                  R                  S5      S 5       rS rS r	S r
S rS r\R
                  R                  \(       + S	S
9S 5       rSrg)TestVectorNormsi9
  r  c                    [         R                  S    H  n[         R                  " / SQUS9n[        S[         R                  " U5      R
                  R                  S-  5      n[        [        U5      [         R                  " S5      US9  [        [        US5      [         R                  " S5      US9  M     [         R                  S	    H  n[         R                  " / S
QUS9n[        S[         R                  " U5      R
                  R                  S-  5      n[        [        U5      [         R                  " S5      US9  [        [        US5      [         R                  " S5      US9  M     g )NAllFloatr  r   r   rD   rO   r   rJ   Complex)rq   rn   y              @)
r2   r+  r   maxr7   r8   realr   r   sqrt)r`   r   rj   r  s       r;   
test_typesTestVectorNorms.test_types;
  s    \\*-E%0AeRXXe_0055:;CDGRWWR[s;DAJ#>	 . \\),EU3AeRXXe_0055:;CDGRWWR[s;DAJ#>	 -r=   c                 L    [        S/[        S9n[        [        U5      U5        g )NrP  r   )r   r
   r   r   r  s     r;   test_overflowTestVectorNorms.test_overflowI
  s      4&(DGQ'r=   c                     [        S/S/S-  -   [        S9n [        [        U5      S-
  SSS9  g ! [         a    Sn[        [        U5      S-
  S	US
9   g f = f)N     @rK   i'  r   r   r  r  zO: Result should equal either 0.0 or 0.5 (depending on implementation of snrm2).rQ   )rA  )r   r
   r   r   AssertionErrorr   )r`   ra   r  s      r;   test_stableTestVectorNorms.test_stableO
  sc    3%1#e)#73	A DGcM3T: 	A.CQ#sC@		As   0 #AAc                 d    [        [        / SQS5      S5        [        [        / SQS5      S5        g )N)rK   r   rY   r   rJ   r  rY   )r   r   r  s    r;   test_zero_normTestVectorNorms.test_zero_norm\
  s$    T)Q'+T)Q'+r=   c                     [         R                  " SS/SS///S-  S5      n[        [        USS9SS//S-  5        [        [        USSS9S	/S-  /S-  5        g )
NrJ   rK   rY   rG   r  rH  5D+@6f~@r"  )r2   r   r   r   r  s     r;   test_axis_kwdTestVectorNorms.test_axis_kwd`
  sc    HH1v1v&'!+S1QQ:z*B)Ca)GHQ*bTAXJN;r=   c           	          [         R                  " SS/SS///S-  S5      n[        USSS9n[        USS	///S-  5        [	        UR
                  S
:H  5        [        [        USSSS9S/S///S-  5        g )NrJ   rK   rY   rG   r  T)rI  keepdimsr(  r)  )rJ   rK   rJ   r   g      @)r2   r   r   r   r   r   r  s      r;   test_keepdims_kwd!TestVectorNorms.test_keepdims_kwde
  s    HH1v1v&'!+S1T*j*567!;<9$%QD9bTB4L>A;MNr=   z64-bit BLAS requiredr  c                     [        SS9  [        R                  " S/[        R                  S9nSUS'   [	        U5      nA[        US5        g )NihB  )free_mbl        r   rK   rM   rC   )r%   r2   r   r4   r   r   )r`   rj   r  s      r;   test_large_vector!TestVectorNorms.test_large_vectorl
  s?    %(HHeWBJJ/"1gS!r=   r   N)r   r   r   r   r   r   r  r  r  r"  r%  r*  r.  r  r'   r2  r   r   r=   r;   r  r  9
  sk    [[ <=? >?(A,<
O [[I.DE" F"r=   r  c                   ,    \ rS rSrS rS rS rS rSrg)TestMatrixNormsiv
  c           
      |   [         R                  R                  S5      nS GH  u  p#[         R                  [         R                  [         R
                  [         R                  [         R                  4 GH>  nSUR                  X#45      R                  U5      -  n[         R                  " UR                  [         R                  5      (       a)  USUR                  X#45      -  -  n[         R                  nO[         R                  nS SSSSS	[         R                  [         R                  * 4 H~  n[        XWS
9n[         R                  R                  XWS
9n	[         R                   " X5      (       a  MF  [         R                  R                  UR                  U5      US
9n	[#        X5        M     GMA     GM     g )NrL  )ru   )rK   rY   r  r  r  )r'  rG   r  y              $@frorK   rM   rJ   rM  )ord)r2   rM  rN  r
   r4   r   r6   int64r  r  r  r   r  r(  r   r  r  r   )
r`   rO  rP  rf  r  rQ  t_highr  actualdesireds
             r;   test_matrix_norms!TestMatrixNorms.test_matrix_normsx
  s4   ii##D)BDAZZR\\2=="((R,,aV4;;A>>=="*<*<==s22A6:::A]]FZZF"E1b!R"&&IE!!/F iinnQn:G ;;v77"$))..&1Au."M'8 J S Cr=   c                    [         R                  " SS/SS///S-  S5      n[        U[         R                  SS9n[        [         R                  " USS5      [         R                  S	S9n[        USS	S9n[        X#5        [        X45        [        X$5        [        UR                  UR                  s=:H  =(       a    UR                  :H  Os  5        [        USSS9n[        [         R                  " USS5      SS	S9n[        U[         R                  S	S9n[        X#5        [        X45        [        X$5        [        UR                  UR                  s=:H  =(       a    UR                  :H  5        g s  5        g )
NrJ   rK   rY   rG   r  r;  )r8  rI  r   r,  )r2   r   r   r(  r  r   r   r   )r`   ra   ri   r  r  s        r;   r*  TestMatrixNorms.test_axis_kwd
  s   HH1v1v&'!+S1V,Q1%266?'177--agg-.'Q1%16:V,177--agg-.-.r=   c                     [         R                  " SSS9R                  SSSS5      n[        U[         R                  SS	S
9n[        USSS	S
9n[        X#5        [        UR                  UR                  :H  5        g )Nx   r  r   rJ   rY   rG   r'  r;  T)r8  rI  r-  rK   r,  )r2   r   r^   r   r(  r   r   r   )r`   ra   ri   r  s       r;   r.  !TestMatrixNorms.test_keepdims_kwd
  sd    IIc%--aAq9Vd;6177"#r=   c                    [         R                  " S5      n[        [        U5      S5        [        [        USS9[         R                  " S5      5        [        [        USS9[         R                  " S5      5        [         R                  " S	5      n[        [        U5      S5        [        [        USS9[         R                  " S
5      5        [        [        USS9[         R                  " S5      5        g )Nr   rQ   r   rH  r   T)r-  ru   )r   rY   ro  )r2   r   r   r   r   r  s     r;   r   TestMatrixNorms.test_empty
  s    HHVQ$QQ$8Q.0@AHHVQ$QQ$8Q.0@Ar=   r   N)	r   r   r   r   r=  r*  r.  r   r   r   r=   r;   r5  r5  v
  s    9(/"$	Br=   r5  c                   J    \ 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                 (    [        [        SS/5        g NrG  ro  )r$   r   r  s    r;   
test_solveTestOverwrite.test_solve
      EFD>2r=   c                 (    [        [        SS/5        g rI  )r$   r   r  s    r;   test_solve_triangular#TestOverwrite.test_solve_triangular
  s    ,vtn=r=   c                 "    [        S SS/5        g )Nc                     [        SX5      $ )NrU   )r   )rb   ri   s     r;   <lambda>1TestOverwrite.test_solve_banded.<locals>.<lambda>
  s    ,vr*Er=   )rG   rH   rH   r#   r  s    r;   test_solve_bandedTestOverwrite.test_solve_banded
  s    E#TN	,r=   c                 (    [        [        SS/5        g )Nr*  rT  )r$   r   r  s    r;   test_solveh_banded TestOverwrite.test_solveh_banded
  s    MFD>:r=   c                 &    [        [        S/5        g NrG  )r$   r   r  s    r;   test_invTestOverwrite.test_inv
      C&*r=   c                 &    [        [        S/5        g r[  )r$   r   r  s    r;   test_detTestOverwrite.test_det
  r^  r=   c                 (    [        [        SS/5        g )Nr  ro  )r$   r   r  s    r;   
test_lstsqTestOverwrite.test_lstsq
  rL  r=   c                 &    [        [        S/5        g r[  )r$   r   r  s    r;   	test_pinvTestOverwrite.test_pinv
  s    D6(+r=   c                 &    [        [        S/5        g r[  )r$   r   r  s    r;   
test_pinvhTestOverwrite.test_pinvh
  s    EF8,r=   r   N)r   r   r   r   rJ  rN  rU  rX  r\  r`  rc  rf  ri  r   r   r=   r;   rG  rG  
  s/    3>,;++3,-r=   rG  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
\\\R$                  \\R(                  /5      \R                  R                  S\\\R$                  \\R(                  /5      S 5       5       rSrg)TestSolveCirculanti
  c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[        X5      n[        [	        U5      U5      n[        X45        g N)rK   rJ   rY   r'  )rK   rM   rK   r   )r2   r   r   r   r   r   r`   r  ri   rj   r  s        r;   test_basic1TestSolveCirculant.test_basic1
  s@    HH\"HH]#A!)A,"r=   c                     [         R                  " / SQ5      n[         R                  " S5      R                  SS5      n[	        X5      n[        [        U5      U5      n[        X45        g )NrK   rJ   r8  r  rG   rY   r2   r   r   r^   r   r   r   r   ro  s        r;   test_basic2TestSolveCirculant.test_basic2
  sL    HH^$IIbM!!!Q'A!)A,"r=   c                 *   [         R                  " / SQ5      n[         R                  " S5      R                  SSS5      n[	        X5      n[        [        U5      UR                  SS5      5      R                  UR                  5      n[        X45        g )Nrs  r  rG   rY   rJ   rM   )	r2   r   r   r^   r   r   r   r   r   ro  s        r;   test_basic3TestSolveCirculant.test_basic3
  sh    HH^$IIbM!!!Q*A!)A,		!R 0199!''Br=   c                     [         R                  " / SQ5      n[         R                  " S5      R                  SS5      S-   n[	        X5      n[        [        U5      U5      n[        X45        g )N)re  rt  r
  r'  rs  rG   rJ   y              ?ru  ro  s        r;   rr   TestSolveCirculant.test_complex
  sR    HH&'IIaL  A&-A!)A,"r=   c                     [         R                  R                  S5      nUR                  S5      nUR                  S5      n[	        X#5      n[        [        U5      U5      n[        XE5        g )Ni1  r  )r2   rM  rZ  r  r   r   r   r   )r`   rO  r  ri   rj   r  s         r;   test_random_b_and_c&TestSolveCirculant.test_random_b_and_c
  sX    ii##E*##A!)A,"r=   c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[        XSS9n[        [	        U5      U5      u  pEpg[        X45        [        [        [        X45        g )NrK   rK   r   r   )rK   rJ   rY   rG   r   )r  )r2   r   r   r   r   r   r   r   )r`   r  ri   rj   r  r  rnkrz  s           r;   r   TestSolveCirculant.test_singular
  sR    HH\"HH\"A73y|Q/k?A9r=   c                    [         R                  " / SQ// SQ//5      n[         R                  " / SQ/ SQ/ SQ/5      n[        XSS9n[        UR                  S5        [         R
                  " U5      n[        [        US	   R                  5       5      UR                  5      US S 2S	S S 24'   [        [        US   R                  5       5      UR                  5      US S 2SS S 24'   [        X45        [        XSS
S9n[        UR                  S5        [        [         R                  " US
S	5      U5        [        [         R                  " USS5      UR                  SS9n[        UR                  S5        [        X45        g )N)rM   g      @rY   g      @)rK   rH   rH   g      @)r   r   rK   rK   r  )rK   rM   r   r   rK   )baxis)rG   rJ   rY   r   rM   )r  outaxis)rJ   rY   rG   rJ   )caxis)r2   r   r   r   r   
empty_liker   r   rp  ru  r   moveaxisr  )r`   r  ri   rj   r   s        r;   test_axis_args!TestSolveCirculant.test_axis_args  s#    HH()N+;<= HHlL-@AA*QWWi(==#!)AaDJJL"9133?Aq!)AaDJJL"9133?Aq$A26QWWi(Ar1-x8 BKK1a0!##Q?QWWi($r=   c                 j    / SQn/ SQn[        X5      n[        [        U5      U5      n[        X45        g rn  )r   r   r   r   ro  s        r;   r   -TestSolveCirculant.test_native_list_arguments  s.    A!)A,"r=   dt_cr   c           	         [         R                  " / US9n[         R                  " / US9n[        X45      nUR                  S:X  d   eUR                  [        [         R
                  " SUS9[         R                  " SUS95      R                  :X  d   e[         R                  " SUS9n[        X45      nUR                  S:X  d   eUR                  UR                  :X  d   eg )Nr   r   rY   r   )r2   r   r   r   r   r   r   r   )r`   r  r   r  ri   rj   x1s          r;   r   TestSolveCirculant.test_empty"  s     HHRt$HHRt$A!ww$ww/"))AT*B*,''!4*@BBG%H 	H H HHV4(Q"xx6!!!xx177"""r=   r   N)r   r   r   r   rp  rv  ry  rr   r~  r  r  r   r   r   r   r   r   r2   r
   r   r   r   r   r   r=   r;   rl  rl  
  s    :%2 [[Vc5"**gr||%TU[[Vc5"**gr||%TU# V V#r=   rl  c                       \ rS rSr\R
                  R                  S5      \S 5       5       rS r	S r
S rS rS rS	 r\R
                  R                  S
\\\R&                  \\R*                  /5      S 5       rSrg)TestMatrix_Balancei2  r  c                 .    [        [        [        S5        g )NzSome string for fail)r   r   r    r  s    r;   test_string_arg"TestMatrix_Balance.test_string_arg3  s     	j.2HIr=   c           	          [        [        [        [        R                  " SS/S[        R
                  //5      5        [        [        [        [        R                  " SS/S[        R                  //5      5        g )NrK   rJ   rY   )r   r   r    r2   r   r(  r  r  s    r;   test_infnan_arg"TestMatrix_Balance.test_infnan_arg8  sT    j.hhABFF45	7j.hhABFF45	7r=   c           	          [        [        R                  " SS/SS//5      5      u  p[        [        R                  " [        R
                  " [        R                  " U5      5      5      S/5        g )NrY  rK   r   r'  )r    r2   r   r   difflog2rw   )r`   r  r  s      r;   test_scalingTestMatrix_Balance.test_scaling>  sL    bhhq	D!9'=>? 	
 34qc:r=   c                     [         R                  " / SQ/ SQ/ SQ/5      n[        U5      u  p#[        [	        X15      R                  U5      U5        g )N)rK   r   r	  )rK   rK   r  )r   g      Y@rK   )r2   r   r    r   r   r   )r`   rQ  rj   r  s       r;   test_scaling_order%TestMatrix_Balance.test_scaling_orderE  s:    HHlL-@Aa a*A.r=   c                     [        [        R                  " SS/SS//5      SS9u  nu  p#[        [        R                  " [        R
                  " U5      5      S/5        [        U[        R                  " S5      5        g )NrY  rK   r   separater'  rJ   )r    r2   r   r   r  r  r   r   )r`   r  r  zs       r;   test_separate TestMatrix_Balance.test_separateJ  s\    "288dAYq	,B#C,-/	6ARWWRWWQZ(1#.299Q<(r=   c                 `   [        [        R                  " S5      [        R                  " [        R                  " S5      5      [        R                  " S5      5      n[	        USS9u  nu  p4[        U[        R                  " U5      5        [        U[        R                  " / SQ5      5        g )Nr  rG  rK   r  )r   rK   rH   r'  rG   rY   rJ   )r   r2   r   r  r    r   	ones_liker   )r`   rQ  rj   r  r  s        r;   test_permutation#TestMatrix_Balance.test_permutationP  sl    rwwv(@wwv("1q1	6A2<<?+288$9:;r=   c           	      *   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      [         R                  " / SQ/ SQ/ SQ/ SQ/5      [         R                  " / S	Q/ S
Q/ SQ/ SQ/5      4nU H  n[        U5      u  p4[        USS9u  nu  pV[         R                  " U5      n[         R                  " UR
                  S   5      Xv'   [        U[         R                  " U5      US S 24   5        [        [        XB5      R                  U5      U5        M     g )N)rQ   rQ   rQ   rQ   >)rQ   rQ   rQ   rQ   rQ   )rX   rX   rQ   rQ   rQ   )rQ   rQ   r  rQ   rQ   )r`  rQ   rQ   rQ   )rQ   r  rQ   rQ   )rC   rQ   r`  rQ   )rQ   rC   rQ   r  )rO  rQ   rC   rQ   )r  r         rC   )rO  r  r  rQ   )r  r  rC   r  rK   r  r   )
r2   r   r    r  r   r   r   rw   r   r   )r`   casesrQ  rj   r  rz  r  ips           r;   test_perm_and_scaling(TestMatrix_Balance.test_perm_and_scalingW  s     5///5	7 8 -,-,. /
 ,...0 1$ A!!$DA&q15IAvq!BIIaggaj)BEArwwqz"a%01E!KOOA.2 r=   r:   c                    [         R                  " SUS9n[        U5      u  p4UR                  S:X  d   eUR                  S:X  d   e[        [         R                  " SUS95      u  pVUR
                  UR
                  :X  d   eUR
                  UR
                  :X  d   e[        USS9u  nu  pxUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   e[        USS9u  nu  pUR
                  UR
                  :X  d   eUR
                  U	R
                  :X  d   eUR
                  U
R
                  :X  d   eg )Nr   r   r   rJ   Tr  )r2   r   r    r  r   r   )r`   r:   ra   ri   r  b_nt_nr  permscale_nperm_ns              r;   r   TestMatrix_Balance.test_emptys  s   HHV2&a vv{{vv{{!"&&""56ww#))###ww#))###)!d;=Evv{{zzQyyA~~!/D!Agww#))###{{gmm+++zzV\\)))r=   r   N)r   r   r   r   r   r   r  r(   r  r  r  r  r  r  r  r   r   r   r2   r
   r   r   r   r   r   r=   r;   r  r  2  s    [[ <=J  >J7;/
)<38 [[TC

GR\\#RS* T*r=   r  c                      \ rS rSrSrS rS r\R                  R                  S\
R                  S   5      S 5       r\R                  R                  S\
R                  S   5      S 5       r\R                  R                  S	5      \R                  R                  S
\
R                  S   5      \R                  R                  S\
R                  S   5      S 5       5       5       rSrg)
TestDTypesi  z7Check backwards compatibility for dtypes vs scipy 1.16.c                     US:X  a  [         R                  " SSS9$ US:X  a  [         R                  " SSS9$ US:X  a  [         R                  " SS	/S
S//SS9$ [         R                  " SUS9$ )NMrJ   datetime64[ms]r   rf  timedelta64[ms]r  r
  r     c   d)r2   r   r  r`   tcodes     r;   	get_arr2DTestDTypes.get_arr2D  sj    C<66!#344c\66!#455c\::d|dD\:#FF66!5))r=   c                     US:X  a  [         R                  " SSS9$ US:X  a  [         R                  " SSS9$ US:X  a  [         R                  " SS	/SS9$ [         R                  " SUS9$ )
Nr  rJ   r  r   rf  r  r  r
  r  )r2   r   r  r  s     r;   	get_arr1DTestDTypes.get_arr1D  sa    C<771$455S[771$566c\::tTl#66771E**r=   r  r  c                     U R                  U5      nUS;   a/  [        R                  " [        5         [	        U5        S S S 5        g [	        U5        g ! , (       d  f       g = f)NSUVO)r  r   r   r   r   )r`   r  ra   s      r;   r\  TestDTypes.test_inv  sF     NN5!F?z*A +* F	 +*s   A
A!c                    U R                  U5      n[        R                  " 5       S:H  n[        R                  " 5       S:H  n[        R                  S:H  nSnU(       d  U(       d  U(       d  US-  nX;   a/  [
        R                  " [        5         [        U5        S S S 5        g [        U5        g ! , (       d  f       g = f)Narm64armv8lntSUVOmMr   )	r  platformmachineosnamer   r   r  r   )r`   r  ra   is_armis_armhf
is_windowsfailing_tcodess          r;   r`  TestDTypes.test_det  s    NN5!!!#w.##%1WW_
!(jd"N"y)A *) F	 *)s   B11
B?zignore:Casting complex valuestcode_atcode_bc                    U R                  U5      nU R                  U5      nSn [        R                  " X5        U(       d/  [
        R                  " [        5         [        X45        S S S 5        g US;   d  US;   a/  [
        R                  " [        5         [        X45        S S S 5        g [        X45        g ! [         a    Sn Nf = f! , (       d  f       g = f! , (       d  f       g = f)NTFr  VO)	r  r  r2   result_typer  r   r   r   r   )r`   r  r  ra   ri   can_combines         r;   rJ  TestDTypes.test_solve  s     NN7#NN7#	 NN7, y)a *)'T/z*a +* !K  	 K	 
 *) +*s)   B9 CC9CC
C
C*r   N)r   r   r   r   __doc__r  r  r   r   r   r2   r+  r\  r`  r  rJ  r   r   r=   r;   r  r    s    A	*	+ [[Wbll5&9:	 ;	 [[Wbll5&9: ;& [[ ?@[[YU(;<[[YU(;< = = Ar=   r  r   )Sr  r  r  rp  rm  numpyr2   r   r   r   r   r   r   r	   r
   numpy.testingr   r   r   r   r   r   r   r   r   scipy.linalgr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   scipy.linalg._testutilsr$   scipy._lib._testutilsr%   r&   scipy.linalg.blasr'   scipy.conftestr(   r4   r3   rB  r   r6   r5   rP  DTYPESr   r   rX  rY  r<   r?   r   r  r[  ro  r  r2  r  r4  r  r  r  r  r5  rG  rl  r  r  r   r=   r;   <module>r     sS   	       / /  *= = = = =
 8 < ' .zz2::r}}5,,r~~>	~	% #KK33mT*]E,BBG! 4   %kk55t,}e.DbI! 6  cV cVLIV IVX
J+ J+ZOJ OJdU( U(pV Vr 89K5 K5 :K5\R? R?jH? H?V "344-0% 1 5%:" :"z7B 7Bt- -<a# a#HU* U*p 89N N :Nr=   