
    doir                       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K-J.r.  S S	K/J0r0  \R                  \Rb                  \Rd                  4r3\Rh                  \Rj                  \Rl                  4r7\3\7-   r8\Rr                  Ru                  S
SS0SS00 /5      r;S r< " S S5      r= " S S5      r> " S S5      r? " S S5      r@ " S S5      rA " S S5      rBS0S jrC " S S5      rD " S S5      rE " S  S!5      rF\Rr                  Ru                  S"S#5      \Rr                  Ru                  S$\\45      S% 5       5       rG " S& S'5      rH " S( S)5      rI " S* S+5      rJ " S, S-5      rK " S. S/5      rLg)1    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_aTFc                     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/land-ocr/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_basic.py	_eps_castr6   "   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)TestSolveBanded,   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         r>   rD   r                 r>   rB   rD   rE   rA   r>   rI   r@   rE   rH   r   rD   rG   r   r   rD   rE         $@rK          @g      ,@rG   rE   rD   r@   rA      rE   r   r   r   r   r   r   rE   r   rE   r   r   r   reshaper   r   r   selfaablub4b4by1b4by2b4by4bxs              r5   	test_realTestSolveBanded.test_real.   s    ?! !# $ O""!# $ )*

2q!1vQx1v1v   |###% & U*AaVR+A%c!i3 +r7   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 )Nr<   r?   )               @rE   r>   rh   rF   rK   r>   rB   rh   rL   rM   )rh   rG   r   r   rO   rQ   rK   rR   y              ,@rG   rE   rD   r@   rA   rS   rT   )r   r   r                 ?rV   rW   rY   s              r5   test_complexTestSolveBanded.test_complexF   s    ?!"!# $ $"""$ % *+

2q!1vQx1v1v   |$##% & U*AaVR+A%c!i3 +r7   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 )NrJ   rL   rM   r   rE   rD   rG   rP   r@   rA   rS   rT   rU   rV   rE   rE   r   r,   diagrX   r   r   r   	rZ   r\   r[   r_   r`   ra   rb   rc   rd   s	            r5   test_tridiag_real!TestSolveBanded.test_tridiag_real^   s    O!!# $ GGBq!"uIq!BGGBq!tHa$88277@B1crc6
B<P P)*

2q!1vQx1v1v   |###% & U*AVR+A%c!i3 +r7   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 )Nri   rL   rM   r   rE   rD   rG   rj   r@   rA   rS   rT   rU   rV   ro   rp   rr   s	            r5   test_tridiag_complex$TestSolveBanded.test_tridiag_complexr   s    $!!# $ GGBq!"uIq!BGGBq!tHa$88277?A!SbS&z2<O O*+

2q!1vQx1v1v   |###% & U*AVR+A%c!i3 +r7   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 )Nr<   r?   rC   rF   rJ   rL   rM   rN   rO   rP   Fcheck_finite)r   r   r   r   )rZ   r[   r\   r]   r^   r_   rd   s          r5   test_check_finite!TestSolveBanded.test_check_finite   sj    ?! !# $ O""!# $ )*!e<!#a)R0r7   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 )NrJ   rL   rM   rN   rO   )r=   rR         @      @rG   rA   r=   rR   ro   )r   rX   assert_raises
ValueErrorr   )rZ   r\   r]   r^   bads        r5   test_bad_shapeTestSolveBanded.test_bad_shape   sy    O""!# $ ()11"a8j,@j,S#JG 	j,S#JGr7   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r=   rR   r~   )      ?r=   g      ?r   r   rD   V瞯<rtolro   r   f8)r   r   r   r   dtyper,   r   )rZ   rc   refrd   s       r5   test_1x1TestSolveBanded.test_1x1   s    
 <.!_%&1#*U+ 1#sQC!4U+QWWbhhtn-1/0r7   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 )Nr<   r?   rC   rF   rJ   rL   rM   rN   rO   rP   )r   r   r   )rZ   r[   r\   r]   r^   rc   rd   s          r5   test_native_list_arguments*TestSolveBanded.test_native_list_arguments   sT      "!'!#a)Q/r7   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   rE   )	r,   r   r   shaper   r   eyeonesemptyrZ   r   r   r\   rc   rd   s         r5   
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Ur7    N)__name__
__module____qualname____firstlineno__re   rl   rs   rv   r{   r   r   r   pytestmarkparametrizeintfloatr,   r
   complex	complex64r   __static_attributes__r   r7   r5   r9   r9   ,   s    40404(4(1H1"0 [[WsE2::w&UV[[Vc5"**gr||%TUV V WVr7   r9   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rK   rK   rR   rR   r=   r=   r=   r   r   r   r   r=   r   r=   rR   rK   r=   rK   rK   r   r   r   rZ   r\   rc   rd   s       r5   test_01_upperTestSolveHBanded.test_01_upper   s>     (((* + &'" !!%9:r7   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   rR   rK   r   rZ   r\   rc   rd   expecteds        r5   test_02_upperTestSolveHBanded.test_02_upper   s     (((* + C::::   " 3****& ' 	"!.r7   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   rG   rE   r   r   rX   r   r   r   s       r5   test_03_upperTestSolveHBanded.test_03_upper   s]     (((* + &'//A6" !!U+;%<%D%DR%KLr7   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   r=   r=   r=   r   rR   rR   rK   rK   r   Tlowerr   r   r   s       r5   test_01_lowerTestSolveHBanded.test_01_lower  s@     (((* + &'"t,!!%9:r7   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   r=   r   r   rR   Tr   rK   r   r   s        r5   test_02_lowerTestSolveHBanded.test_02_lower  s     (((* + C::::   "t,3****& ' 	"!.r7   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       r5   test_01_float32 TestSolveHBanded.test_01_float32(  sC     (((*18: &g6" !!%9:r7   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   r=   r   r   rR   rK   r   r   s        r5   test_02_float32 TestSolveHBanded.test_02_float326  s     (((*18: C:::: './ " 3****& ' 	"!.r7   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   )       @            @            @      ?       @      ?)rK   r=   r=   rK   r   r   s       r5   test_01_complex TestSolveHBanded.test_01_complexK  s>     (.(* + ./" !!%9:r7   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   rk   rK   r=   r   r   s        r5   test_02_complex TestSolveHBanded.test_02_complexY  s     (.(* + D$<E?D>":   " 3+***& ' 	"!.r7   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=   r   r=   rK   r=   rK   r   r   s       r5   test_tridiag_01_upper&TestSolveHBanded.test_tridiag_01_uppern  s1     O_56/"" !!_5r7   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   rR   rK   r   r   s        r5   test_tridiag_02_upper&TestSolveHBanded.test_tridiag_02_uppery  st     O#% &C:::   " 3***& ' 	"!.r7   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   rG   rE   r   r   r   s       r5   test_tridiag_03_upper&TestSolveHBanded.test_tridiag_03_upper  sP     O_56/"**2q1" !!U?%;%C%CB%JKr7   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=   r   r   Tr   r   r   r   s       r5   test_tridiag_01_lower&TestSolveHBanded.test_tridiag_01_lower  s8     O#% &/""t,!!_5r7   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   r=   r   rR   Tr   rK   r   r   s        r5   test_tridiag_02_lower&TestSolveHBanded.test_tridiag_02_lower  sv     O#% &C:::   "t,3***& ' 	"!.r7   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       r5   test_tridiag_01_float32(TestSolveHBanded.test_tridiag_01_float32  s5     O_5WE/1" !!_5r7   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   r=   r   rR   rK   r   r   s        r5   test_tridiag_02_float32(TestSolveHBanded.test_tridiag_02_float32  sz     O#%,35C:::&-/ " 3***& ' 	"!.r7   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   )rK   r=   r=   r   r   s       r5   test_tridiag_01_complex(TestSolveHBanded.test_tridiag_01_complex  s3     '9:'(" !!_5r7   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   rK   rk   r=   r   r   s        r5   test_tridiag_02_complex(TestSolveHBanded.test_tridiag_02_complex  sv     '#% &C;G$C=" # " 3+**& ' 	"!.r7   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   Fry   r   r   r   s       r5   r{   "TestSolveHBanded.test_check_finite  s3     O_56/""e4!!_5r7   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   r=   r   rR   )r   r   r   r   )rZ   r\   rc   s      r5   test_bad_shapes TestSolveHBanded.test_bad_shapes  s`    O#% &C::  j-7j-c3Z@j-cU;r7   c                     [        S/// SQ/5      n[        U/ SQ/5        [        UR                  [        R                  " S5      5        g )NrE   rE   rD   rS   r   r   )r   r   r   r   r,   )rZ   rd   s     r5   r   TestSolveHBanded.test_1x1  s7    A3%)-1/0QWWbhhtn-r7   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       r5   r   +TestSolveHBanded.test_native_list_arguments  s.    """$ !" !!%9:r7   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   rE   r   )	r,   r   r   r   r   r   r   r   r   r   s         r5   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Ur7   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   r,   r
   r   r   r   r   r   r7   r5   r   r      s    ;/*M;/*;/*;/*	6/"	L
6/"	6/"	6/"	6<.
; [[WsE2::w&UV[[Vc5"**gr||%TUV V WVr7   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S  rS! r \R0                  RC                  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                  S,\&RN                  \&RP                  \&RR                  \&RT                  /5      S- 5       5       5       r+\R0                  R3                  S.\,\-\&RN                  \.\&RR                  /5      \R0                  R3                  S/\,\-\&RN                  \.\&RR                  /5      S0 5       5       r/S1 r0\R0                  R3                  S,\&RP                  \&RT                  /5      \R0                  R3                  S/ S2Q5      \R0                  R3                  S3S4S5/5      \R0                  R3                  S6S7S8/5      \R0                  R3                  S9S7S8/5      \R0                  R3                  S:S7S8/5      S; 5       5       5       5       5       5       r1\R0                  Re                  \&Rf                  S<:  S=S#9\R0                  R3                  S/ S>Q5      S? 5       5       r4S@ r5SA r6\7SB 5       r8\7SC 5       r9\7SD 5       r:\7SE 5       r;\7SF 5       r<SG r=SH r>SI r?S4r@gJ)K	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 )NrE   r=   r                   333333?r   r   r   )rZ   r[   x0rc   s       r5   test_20Feb04_bugTestSolve.test_20Feb04_bug  sn    Vc1X1q"g!#a*q!f5 Vc1XG1[!#a*q!f5r7   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 )NrE   r>   r@   rA   r   rD   r  rZ   r[   rc   rd   s       r5   test_simpleTestSolve.test_simple*  s`    WsAhq6Aq6"a&q6C8$A aA%c!i3r7   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   rD   rh   rA   Drk   r   rE   r  )r   r   r   r   r  s       r5   test_simple_complexTestSolve.test_simple_complex3  sl    Aq6B7#S)q'8aV$b'A$A
 aA%c!i3r7   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 )	NrD   rS   r!  r   rE   rE   r   posassume_ar   r  rZ   r[   r   rc   rd   s        r5   test_simple_posTestSolve.test_simple_pos=  s_    VaVE1v1v&!f !e<)#a)Q7	 r7   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!  rD   rA   rk   r   r'  r)  r  r  s       r5   test_simple_pos_complexb"TestSolve.test_simple_pos_complexbF  sS    VaVq'8aV$A aU+A%c!i3	r7   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 )	NrD   rS   r&  rE   r   symr(  r  r*  s        r5   test_simple_symTestSolve.test_simple_symN  s_    VaWE1v1v&!f !e<)#a)Q7	 r7   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!  rD   rk   r   r3  r.  r  r  s       r5   test_simple_sym_complexb"TestSolve.test_simple_sym_complexbW  sS    VaWq'8aV$A aU+A%c!i3	r7   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   r7  rk   r   rE   rD   r3  r.  r  r  s       r5   test_simple_sym_complex!TestSolve.test_simple_sym_complex_  Z    Yr
#q'a&8aV$A aU+A%c!i3r7   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 )
NrD   rS   r2  r&  rE   r   rk   herr(  r  r*  s        r5   test_simple_her_actuallysym%TestSolve.test_simple_her_actuallysymh  sf    VaWE1v1v&!f1g !e<)#a)Q7 r7   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   r7  rk   r   rE   rD   r?  r.  r  r  s       r5   test_simple_herTestSolve.test_simple_herr  r=  r7   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  rD   rk   r"  r  r   )	r,   randomdefault_rngr   r   r   r   r   r   )	rZ   rngnAXAinvRirs	            r5   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  	"!*r7   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 )NrF  r>   皙?rA   rS   r,   rG  rH  ranger   r   r   rZ   rI  rJ  r[   rO  rc   rd   s          r5   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 r7   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 )NrF  r>   rk   rT  rD   rS   rU  rW  s          r5   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 r7   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 )NrF  r>   rT  rA   r'  r.  )r,   rG  rH  rV  absr   r   r   rZ   rI  rJ  r[   rO  jrc   rd   s           r5   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 r7   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 )	NrF  r>   rk   rT  rh   rD   r'  r.  )	r,   rG  rH  rV  r^  r   r   r   r   r_  s           r5   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 r7   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 )	NrE   r>   r@   rA   r   rD   Fry   r  r  s       r5   r{   TestSolve.test_check_finite  s`    WsAhq6Aq6"QFq6C8$&Aa/A%c!i3&r7   c                     Sn/ SQn[        X5      n[        UR                  5       U5        [        UR                  S:H  S5        g )NrE   r  rS   z'Scalar_a_1D_b test returned wrong shape)r   r   ravelr   r   r  s       r5   test_scalar_a_and_1D_b TestSolve.test_scalar_a_and_1D_b  s8    !K!!'')Q/4!JKr7   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=
)r=   rG   rS   r2  )rS   rD   rA   rE   )r,   r   r   r   Tr  s       r5   test_simple2TestSolve.test_simple2  s    HH/8113 4
 HHtUm'Vnen& '
 !K!!RXX/;/= &>>?a	Ar7   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              @)r,   r   r   r   r  s       r5   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> &? 	@r7   r)  r?  r3  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@r3  rA   generalr.  Tr(  )r,   r   ro  conjrq   r   r   r   )rZ   r)  r[   rc   a2a3r   rd   s           r5   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!!)r7   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 )	NrE   
   rS   	   r'  r.  )      "@rn  r=   r3  r,   r   rX   r   trilr   r   rZ   rK  rd   s      r5   test_pos_and_symTestSolve.test_pos_and_sym  sw    IIa$$Q*"''!*Q,
U;!!]3"''!*Q,
U;!!]3r7   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)	rE   r   r   r   r   r   rE   r   rE   )	rE   rE   rE   r   r   r   rE   r   rE   )	r   rE   rE   r   r   r   rE   r   rE   )	rE   r   rE   rE   rE   rE   r   r   r   )	rE   rE   rE   rE   rE   rE   rE   rE   rE   r  )r,   r   r   r   r   r   rZ   r[   rc   s      r5   test_singularityTestSolve.test_singularity  sT    HH1111111113 4 IIaLD!k5!/r7   	structure)
diagonaltridiagonallower triangularupper triangular	symmetric	hermitianpositive definiterw  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)matchr.  )	r,   rG  rH  logspacerq   r   warnsr"   r   )rZ   r  rI  rJ  drK  rc   messages           r5   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  rw  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)allr.  )r,   r   r   r   r   r   errstater   )rZ   r  rJ  rK  rc   s        r5   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c                     [         R                  " S5      n[         R                  R                  S5      nUR                  S5      n[	        X5      n[        XC5        g )NrD   rF  )rD      )r,   r   rG  rH  r   r   )rZ   r[   rI  rc   rd   s        r5   test_multiple_rhsTestSolve.test_multiple_rhs+  sB    FF1Iii##D)JJw!K!!'r7   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  rS   rE   T
transposed)r  g?rE   F)r  gg333333r  r  s      r5   test_transposed_keyword!TestSolve.test_transposed_keyword2  sy    IIaL  A&*"''!*Q,
t<!!]3"''!*Q,
u=!!_5r7   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)NrS   Tr  )r,   r   astyper   r   NotImplementedErrorr   rZ   r[   s     r5   test_transposed_notimplemented(TestSolve.test_transposed_notimplemented9  s9    FF1IW%./!4( 0//s   A
Ac                 4    [        [        [        SS/S5        g )NrE   rD   r   r   r   rZ   s    r5   test_nonsquare_aTestSolve.test_nonsquare_a?  s    j%!Q3r7   c                 $   [        [        [        R                  " S5      [        R                  " S5      5      [        R                  " S5      5        [        [        [        [        R                  " S5      [        R                  " S5      5        g )NrS   rA   )r   r   r,   r   r   r   r   r  s    r5   test_size_mismatch_with_1D_b&TestSolve.test_size_mismatch_with_1D_bB  sI    !%q	2771:">
Kj%BGGAJ?r7   c                 .    [        [        [        SSSS9  g )NrE   zxcvr.  r  r  s    r5   test_assume_a_keywordTestSolve.test_assume_a_keywordF  s    j%A?r7   r  r~  d   )genr3  r'  r?  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 )NrF  rk   r3  r?  r'  rT  r  rE   rG   -q=gư>)r  r3  r?  r~  r.  atolr   T)r)  r  )r,   rG  rH  r   r0   standard_normalr  ro  rx  r   rq   r.   r
   r   r   )
rZ   r  r   r)  rI  
is_complexr[   rc   tolrd   s
             r5   'test_all_type_size_routine_combinations1TestSolve.test_all_type_size_routine_combinationsI  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r7   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   rD   rS   r   rD   rD   rD   rA   )rS   r   rD   rA   )	r,   r   r   r  r   r   r   r   linalgrZ   r  r   r[   rc   rd   dt_nonemptys          r5   r   TestSolve.test_emptyr  s     HHV4(HHQd#!Kvv{{BFF1D12771D3IJPPww+%%%ww"))//!/55555GGL-GGF$'!Kww,&&&ww+%%%r7   c                     [         R                  " S5      n/ / /n[        X5      n[        UR                  S:H  S5        [        UR
                  S:H  S5        g NrD   r   zReturned array is not empty)rD   r   z#Returned empty array shape is wrong)r,   r   r   r   r  r   r  s       r5   test_empty_rhsTestSolve.test_empty_rhs  sH    FF1IH!K!:;6!#HIr7   )r  r  r  r  r  r'  r  r  r  r  rw  r3  r?  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)Nl   q~u r  r!  r>   r  rk   r  r  r  r  rG   rE   rD   >   r3  r  >   r?  r  >   r'  r  rK  orderz#scipy.linalg.solve can currently...r  )r*   overwrite_br  )r*   r  r  r)  r  r   r  )r,   rG  rH  
issubdtypecomplexfloatingrq   r  triuro  rx  asfortranarraycopyr   r   r  r   r  r   r   )rZ   r   r)  r  r  r  r  rI  rJ  rc   rK  A_copyb_copyr  resr   s                   r5   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2z(solve chokes on b.ndim == 1 in numpy < 2)Nr  rw  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 )NrD   rE      )rA   rS   rD   rE   rE   r.  rO   rD   rD   )r,   r   r   rX   r   r   r   r  )rZ   r)  er[   rc   s        r5   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Nr7   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   rA   rA   r  rA   rD   r'  Tr(  r   r  F)r,   rG  rH  normalr  matmulrx  ro  r   rq   r  r   )rZ   rI  r[   rc   outaa	result_nps          r5   test_pos_lowerTestSolve.test_pos_lower  s     ii##A&JJFJ#GGBIIa./JJFJ#A55Wrwwrwwqz**IIOOB*	U3 ACCU%8U3r7   c                     [         R                  " S5      nSUR                  l        [         R                  " S5      n[        X5      n[        X2SS9  g NrS   F+=r  )r,   r   flags	writeabler   r   r   r  s       r5   test_readonlyTestSolve.test_readonly  s;    FF1I!GGAJ!K5)r7   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   rD   rS   rG   .Nr   r  r  r  r,   r   rX   r   r   r   r   rZ   r)   r[   rc   rd   s        r5   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1r7   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        r5   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1r7   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   rD   rS   rA   .rG   r  r   r  r  r  r	  s        r5   test_core_non_contiguous"TestSolve.test_core_non_contiguous   s    IIe$$Q1a0c3Q3hKGGAJ!','ww!''#2,&&&iL(1,ae< GGAJssO!','ww!''#2,&&&iL(1,ae<r7   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  rD   rB   .rG   r  r   r  r  rD   rB   r  r	  s        r5   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1r7   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  rD   rS   rE   rA   r   rG   r  r  r  )r,   r   rX   r	   r   r   r   r   r	  s        r5   test_batch_weird_strides"TestSolve.test_batch_weird_strides>  s    IIe$$Q1a3KK1aA&GGAJ!','ww!''#2,&&&iL(1,ae<r7   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  rS   r  r  r'  r.  )
r,   r   rX   ro  r   r   r   r   r   r   )rZ   r[   rK  rc   r  s        r5   test_posdef_not_posdef TestSolve.test_posdef_not_posdefH  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rS   rS   rE   rA   rS   rE   .r  r  ꌠ9Y>)Fr   rD   r  r.  )r,   stackr  r   rq   r   r   r   asarrayr   r  r"   r   r   r  s       r5   test_diagonalTestSolve.test_diagonalV  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)NrA   rS   rE   rG   r  )             r(  r'  r   r  @xD)rE   r   r   r  r.  r   )rE   r   rE   )r,   rq   r   r!  r  r   r   r"  r   r  r"   r   r   )rZ   rJ  r[   rc   rd   s        r5   test_tridiagonalTestSolve.test_tridiagonalj  s   rwwrwwqz""RWWRWWQZ%;;bggbggajRT>UUHHbggbggqfo.23GGAJ!K 	&	2::.B#C%P '
\\-(!/ ) #$#'
QwZ]];'!/ (' )(
 ('s   -E8$F	8
F	
FN)Ar   r   r   r   r  r  r#  r+  r/  r4  r8  r;  r@  rC  rQ  rX  r[  ra  rd  r{   rk  rp  rt  r   r   r   r{  r  r  r  r  r  r  skipr  r  r  r  r,   r
   r.   r   r0   r  r   r   r   r   r  r  skipif__version__r  r  r  parametrize_overwrite_argr
  r  r  r  r  r  r#  r*  r   r   r7   r5   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,(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 *J K
 [[Vb$Z0[[\D%=9[[[4-8[[Yu6<$ 7 9 : 1K C<$| [[
%O   [[	
OO4"* 2 2 2 2 = = 2 2 = =(-(0r7   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.
rE   r   rD   Tr   Fr   r   transr=         N)r   r   r   ro  r   rZ   rK  rc   sols       r5   r  TestSolveTriangular.test_simple  s     Aq6Aq6"#Fq40!#1v. qssAU3!#Bx0 q4q9!#Bx0QKq4q9!#S	As8'<=r7   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
rs  r   rk   rD   TrE   r4  y      ?      y      п      пr         ?       @y             y      ?      ?y      ?      y            пFr6  N)r   r   r   r   r,   rq   ro  r7  s       r5   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$'@Ar7   c                 `    [        SS/SS//5      nSS/n[        XSSS9n[        USS/5        g)r3  rE   r   rD   TF)r   rz   N)r   r   r   r7  s       r5   r{   %TestSolveTriangular.test_check_finite  s@     Aq6Aq6"#Fq4eD!#1v.r7   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   rD   )r,   r   r   r  r   r   r   r  s          r5   r   TestSolveTriangular.test_empty  s     HHV4(HHQd#Q"vv{{&FF1D!2771D#9

% 	 ww+%%%r7   c                     [         R                  " S5      n/ / /n[        X5      n[        UR                  S:H  S5        [        UR
                  S:H  S5        g r  )r,   r   r   r   r  r   r  s       r5   r  "TestSolveTriangular.test_empty_rhs  sI    FF1IHQ"!:;6!#HIr7   r   N)r   r   r   r   r  r#  r{   r   r   r   r   r   r,   r
   r   r   r   r  r   r   r7   r5   r1  r1    s~    >*B:/ [[Vc5"**gr||%TU[[Vc5"**gr||%TU	& V V	&Jr7   r1  c                      \ rS rSrS rS rS rS rS r\	R                  R                  S\\\R                  \\R"                  /5      S 5       r\	R                  R'                  S	S
9S 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!\	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#)$TestInvi  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 )NrE   rD   rS   rA   r  rA   r!  rB   rH      r~  )r   r   r   r,   r   rZ   r[   a_invs      r5   r  TestInv.test_simple  s^    VaVA!#a-;	:.A!#a-;r7   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 )NrF  r>   rA   rT  r,   rG  rH  rV  r   r   r   r   rZ   rI  rJ  rO  r[   rK  s         r5   rX  TestInv.test_random  s~    ii##D)qA

A6"A1Xba4j/Q$ FE%c!m&.qk3 r7   c                 `    SS/SS//n[        U5      n[        [        X5      SS/SS//5        g )NrE   rD   rS   r  r   r   r   r   rJ  s      r5   r#  TestInv.test_simple_complex  s8    VaWA!#a-1a&1a&1ABr7   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 )NrF  r>   rA   rh   rT  rN  rO  s         r5   r[  TestInv.test_random_complex  s    ii##D)qA

A6"2cjj!&8#88A1Xba4j/Q$ FE%c!m&.qk3 r7   c                 ^    SS/SS//n[        USS9n[        [        X5      SS/SS//5        g )NrE   rD   rS   rA   Fry   r   rR  rJ  s      r5   r{   TestInv.test_check_finite  s;    VaVAE*!#a-1a&1a&1ABr7   r4   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   rD   r  )rS   rE   r   r   )r,   r   r   r  r   r   r   r   rZ   r4   r[   rK  s       r5   r   TestInv.test_empty  s    HHV2&AzzQ{{c"&&""56<<<<<GGL+A{{l***GGL+A{{l***r7   zTODO: re-enable overwrite_ar  c                 t   [         R                  " SS5      R                  SS5      n[        USS9n[	        X!-  [         R
                  " S5      SS9  [         R                  " X5      (       a   eUR                  [        5      R                  SS	9n[        USS9n[         R                  " X5      (       d   eg )
NrE   r!  rD   Tr*   r  r  Fr  )
r,   r   rX   r   r   r   shares_memoryr  r   r  rJ  s      r5   test_overwrite_aTestInv.test_overwrite_a	  s    IIaO##Aq)A4(	266!959##A---- HHUO  s +A4())))r7   c                 |    [         R                  " S5      nSUR                  l        [	        U5      n[        X!SS9  g r  )r,   r   r   r  r   r   rJ  s      r5   r  TestInv.test_readonly  s.    FF1I!Au-r7   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 )NrB   r   rS   rD   rE   r=   )r,   r   rX   r   r   r   rY  s       r5   test_batch_core_1x1TestInv.test_batch_core_1x1  sS    IIc$,,Q1a81<A{{agg%%%	2&r7   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   rS   rD   )N.g+=r  .)	r,   r   r   rX   r   r   r   broadcast_tor   )rZ   r)   r[   r  rK  s        r5   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Ur7   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  rD   rS   rG   vIh%,=r  r,   r   rX   r   r   r   rg  r   rZ   r)   r[   rK  s       r5   r
  "TestInv.test_batch_negative_stride0  s    IIcN""1aA.a2q!mA&&{{agg%%%	2??266!9agg#FUSr7   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 rk  rm  rn  s       r5   r  !TestInv.test_core_negative_stride8  s    IIcN""1aA.aDbD!mA&&{{agg%%%	2??266!9agg#FUSr7   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  rD   rS   rA   .rD   rS   rD   rD   rl  r  rm  rn  s       r5   r   TestInv.test_core_non_contiguous@  sx    IIe$$Q1a0c3Q3hKA&&{{l***	2??266!9agg#FUSr7   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  rD   rB   .rs  gvIh%L=r  rm  rn  s       r5   r  !TestInv.test_batch_non_contiguousH  sz    IIe$$Q1a0a1ckNA&&{{l***	2??266!9agg#FUSr7   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  )rS   rD   rD   r   rA   rD   )	r   r   r   r,   r   r!  r   r   rX   )rZ   r)   r[   s      r5   test_singularTestInv.test_singularP  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)Nr=   #B;rE   )r,   rq   r   r  r"   r   r!  )rZ   r[   ry  s      r5   test_ill_condTestInv.test_ill_condi  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)NrD   kaboomr.  )r   KeyErrorr   r,   r   r  s    r5   test_wrong_assume_aTestInv.test_wrong_assume_ar  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'  r.  r   r  rE   rG   r   Frz   r)  r   T)r,   r   r   rX   ro  r   r   r   wheretrir   nan)rZ   rd   yy_inv0y_inv1masky_inv2y_inv3s           r5   test_posdefTestInv.test_posdefv  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3r7   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  rS   rk   g [n<r  r'  r.  )
r,   r   rX   ro  r   r   r   r   r   rx  )rZ   r  r[   rc   b_inv0s        r5   r  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sym_hermr3  r?  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  rS   rk   r3  r  r  r.  r   rE   rG   r   Fr  T)r,   r   rX   ro  rx  r   r  r   r   r  r  r   r  )
rZ   r  r  r[   rc   r  b_inv1r  b_inv2b_inv3s
             r5   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3r7   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  r.  r'  )r,   r   r   rX   ro  r   r   allclose)rZ   rd   r  r  y_inv_posdefs        r5   test_triangular_1TestInv.test_triangular_1  ss    IIb&..q!4G	Rq	\Q!34 1u-;;v44444r7   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  r.  rE   rG   r   F)rz   r)  r  )r,   r   r   rX   r   r  r   r   r  r  r   r  r  ro  )	rZ   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	            r5   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	Fr7   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)
Nr  rE   rA   r  r  r   r   r  r.  )r,   r!  r  r   rq   r   r   r   r"  r   r  r"   r   r   )rZ   r[   inv_as      r5   r#  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  rX  r#  r[  r{   r   r   r   r   r   r,   r
   r   r   r   xfailr_  r  rd  r/  rh  r
  r  r  r  rx  r|  r  r  r  r  r  r  r#  r   r   r7   r5   rE  rE    s   <	3C
	3C
 [[TC

GR\\#RS+ T+ [[;<	* =	*. [[TC

GR\\#RS' T' 
V 
V T T T T T T T T  0.4& [[Z%7? 8?, [[Z%7[[Z%84 9 8485G4(r7   rE  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      S 5       rS 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 )
NrE   r  r=   fr   ro   y      ?      @r"  )rE   )	r,   r   r   r   charisscalarr   r   r   )rZ   r[   detas      r5   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$r7   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`/ )rA   r!  rE   rE   r   r  rA   r!  rk   r"  )r,   rG  rH  r
   r   r   r  r   r   squeezer   )rZ   rI  r[   r  s       r5   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,r7   r   rD   r>   )rS   rD   r>   r>   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        r=   r  rk   r6  r   )r,   rG  rH  uniformr   r  r   )	rZ   r   rI  r[   d1d2rc   d3d4s	            r5   #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r7   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)rE   rE   rE   rE   rE   rE   rE   rE   )rE   rG   rE   rG   rE   rG   rE   rG   )rE   rE   rG   rG   rE   rE   rG   rG   )rE   rG   rG   rE   rE   rG   rG   rE   )rE   rE   rE   rE   rG   rG   rG   rG   )rE   rG   rE   rG   rG   rE   rG   rE   )rE   rE   rG   rG   rG   rG   rE   rE   )rE   rG   rG   rE   rG   rE   rE   rG   g      @r  r!  rK   )r  r                y      ?      )r  r        ?        r  )rk   rs  r  r  )r  rk   r  r  r   y      @        )r'  r(  r=   rK   rK   rK   rK   rK   )r=   rK   rK   rK   rK   rK   rK   rK   )rK   g      rK   g      r=   rK   rK   rK   )rK   r=   rK   rK   rK   rK   rK   rK   )rK   rK   rK   g      rK   g      r=   rK   )rK   rK   rK   r=   rK   rK   rK   rK   )rK   rK   rK   rK   rK   g       rK   g      ")rK   rK   rK   rK   rK   r=   rK   rK   rk   r  )r,   r   r   r   r   rX   r   r  s     r5   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#r7   typAllNgGc                     [         R                  R                  S5      nSnUR                  X3/5      R                  U5      n[	        [        U5      [         R                  [         R                  -  5      (       d   eg )Nr  rA   )r,   rG  rH  r  
isinstancer   r.   r0   )rZ   r  rI  rJ  r[   s        r5   "test_sample_compatible_dtype_input*TestDet.test_sample_compatible_dtype_inputE  s]     ii##$45JJv%%c*#a&2::#=????r7   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  r[   rc   rD   r      a   bVr     zdatetime64[s]ztimedelta64[s])zipr   	TypeErrorr   r,   r   )rZ   msgcts       r5   test_incompatible_dtype_input%TestDet.test_incompatible_dtype_inputM  s    3<=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   r=   )r   r   r   rS   r   r   r=   r=   r=   zLast 2 dimensionsr  )r   r   rS   zat least two-dimensional)r   r   r,   r   r   r   r   r  s    r5   test_empty_edge_casesTestDet.test_empty_edge_cases[  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r4   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   rD   r  ri  )rS   rE   rE   )r,   r   r   r   r   r   r   )rZ   r4   r[   r  s       r5   test_empty_dtypeTestDet.test_empty_dtypeh  s    HHV2&Fww"}}ww#bffQb1288888HHYb)Fww$ww#bhhy;<BBBBBr7   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  rS   Tr\  rK   )	r,   r   rX   r  r
   r  r   r   r  )rZ   r[   acr  s       r5   r_  TestDet.test_overwrite_at  sc    
 IIaL  A&--bjj9VVX24(b!G==??""?r7   c                     [         R                  " / SQ/ SQ/ SQ/5      nUR                  SS9  [        [	        USS9S5        g )	N)rR   rK   r=   )      @r~   r  r  F)writeTr\  rQ   )r,   r   setflagsr   r   r  s     r5   test_readonly_arrayTestDet.test_readonly_array  s6    HHlM<@A	

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

GR\\#RS	C T	C	#7A%7s   &
C4Cr  c                 ~    [        U 5      nU(       a  [        U5      n[        X05      n[        X15      n[        XE5      $ )N)r	   r   r   r   )r[   rc   cmplxata1b1s         r5   direct_lstsqr    s3    	1Br]	RB	RB=r7   c            	       d   \ 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Srg)	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 )NrE   r>   r@   rA   r   TF)rE   r   r&  r  )rO   r@   rA   lapack_driverr*   r  r   rD   expected efficient rank 2, got r  driver: )r  r   err_msg)REAL_DTYPESr,   r   r   lapack_driversr  r   r   r   r   r6   r   )rZ   r   r[   r
  r  btr  rc   r  r  rd   rP  s               r5   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 "/ ": !r7   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 )NrE   rD   rA   r!  rS   r   r  r  r	  r   r  r  axisr  r  r   r  r  )gm۶mۿgm۶m?)r  r,   r   r   r  r  r   sumr   r   r   r^  r6   r   )rZ   r   r[   rc   r
  r  r  r  r  rd   	residualsrP  s               r5   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' "/ ": !r7   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 )Nr;  rD   rA   r!  rS   r   )rE   r   rS   r  r	  r   r  rE   r  r  r  r  r  )yu{޿E(B?yӽu{?(YJV?)COMPLEX_DTYPESr,   r   r   r  r  r   r   r  rx  r   r   r^  r6   r   )rZ   r   r[   rc   r
  r  r  r  r  rd   r  r  rP  s                r5   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+ "/ ": $r7   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  M     M     M     g )Nr  rG  r   rE   rD   r  r	  r   r  )gqqgqq?gdq?r  r  r  )r  r,   r   r   r  r  r   r   r   r6   r   )rZ   r   r[   rc   r
  r  r  r  r  rd   rP  s              r5   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 "/ ": !r7   r   rJ  )r>   r  r
  r  r  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 )NrF  r   r>   rT  rA   rS   r	  r   rD   expected efficient rank , got i  r  r    )r,   rG  RandomStater"  rV  r  r   r   r
   r   r   r6   r   rZ   r   rJ  r
  r  rI  r[   rO  rc   r  r  r  rd   rP  s                 r5   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"<	>) r7   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 )NrF  rk   r   r>   rT  rD   rS   r	  r   r#  r$  i  r  r  r%  )r,   rG  r&  r"  rV  r  r   r   r   r   r   r6   r   r'  s                 r5   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"<	>' r7   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 )NrF  )r>      )r  rD   r  r   r>   rT  rA   rS   r	  r   rD   r#  r$  r  r  r  r  )r,   rG  r&  r  r   r  r"  rV  r  r   r   r   r  r6   r   rZ   rI  r   rJ  mr
  r  r[   rO  rc   r  r  r  rd   rP  s                  r5   test_random_overdetTestLstsq.test_random_overdetM  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 &> / !r7   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 )NrF  r.  r  rk   r   r>   rT  rD   rS   r	  r   r#  r$  rE   r0  r  r  r  )r,   rG  r&  r  r   r  r"  rV  r  r   r   r   r  r6   r   r1  s                  r5   test_random_complex_overdet%TestLstsq.test_random_complex_overdeti  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 &> / $r7   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.))rE   r>   r  r  r  r   )r
  rz   r*   r  r   rD   r  r  r  r  )warningscatch_warningsfilterwarningsRuntimeWarningr,   r   	itertoolsproductr  r   r  r  r  r   r   r   r   r6   r   )rZ   r  r   r  r
  r  rz   r[   rc   r  r  r  rd   rP  s                 r5   r{   TestLstsq.test_check_finite  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   rD   r   ))r   rA   rA  )rA   r   )rA   )rB  r  rE   r   r   r  rD   zexpected rank 0)	r,   r   r   r   r   r   r  r   r   )	rZ   a_shapeb_shaperc   rd   residuesranksresidues_should_bes	            r5   r   TestLstsq.test_empty  s    !3G  A#('):A#> ABHHgaj]WQR[%@AB4;AJ"((4.')yy~~aa~'@!'C 6DAI01BHHTN+!3r7   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 r@  )r,   r   r   r  r   r   r   )
rZ   r  r   r[   rc   rd   rE  rF  rG  r  s
             r5   r  TestLstsq.test_empty_dtype  s     HHV4(HHQd#$Q{Tvv{{BFF1D12771D3IJ1MSSww+%%%r7   r   N)r   r   r   r   r  r  r  r  r   r   r   r   r  r(  r-  r&   r  r+  r3  r6  r{   r   r   r   r,   r
   r   r   r  r   r   r7   r5   r   r     s   6NL2H:DBH, [[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&r7   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
\\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  rG  rH  r   rS   r   r   r   r   r   r,   r   rZ   r[   a_pinvs      r5   test_simple_realTestPinv.test_simple_real  s4    9i4EBa!#a."&&)<r7   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  rG  rH  r   rk   )r~  rI  rH   )rB   r!  rA   )rS   rD   rE   rS   rP  rQ  s      r5   r#  TestPinv.test_simple_complex  sY    Iy*5
Iy'I-2"4 44 a!#a."&&)<r7   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  rG  rH   rI  r  r   g|qgԕVUUſgc8?gqg^0<gq?g9?gԕVUU?g:87ȿr   r   r   r   rZ   r[   rR  r   s       r5   test_simple_singularTestPinv.test_simple_singular  sB    9i35AaLKKM N 	"&3r7   c                     [        / SQ/ SQ/[        S9n[        U5      n[        SS/SS/SS	//5      n[        X#5        g )
Nr  rG  r   g֋8g#q?g#qg#q?gIq?g#q̿r]  r^  s       r5   test_simple_colsTestPinv.test_simple_cols  sL    9i(6a;
3&
3%{35 6 	"&3r7   c                     [        SS/SS/SS//[        S9n[        U5      n[        / SQ/ S	Q/5      n[        X#5        g )
NrE   rD   rS   rA   r!  rB   r   )gDpTUUgQUUտgvWUU?)gDpTUU?gQUU?g&>ڿr]  r^  s       r5   test_simple_rowsTestPinv.test_simple_rows  sI    Aq6Aq6Aq6*%8a@?A B!&3r7   c                     [        / SQ/ SQ/ SQ/5      n[        USS9n[        [        X5      [        R
                  " S5      5        g )Nr  )rA   r!  r   rH  Fry   rS   )r   r   r   r   r,   r   rQ  s      r5   r{   TestPinv.test_check_finite  s5    9j*56ae,!#a."&&)<r7   c                 n    / SQ/ SQ/ SQ/n[        U5      n[        / SQ/ SQ/ SQ/5      n[        X#5        g )Nr  rG  rY  rZ  r[  r\  )r   r   r   r^  s       r5   test_native_list_argument"TestPinv.test_native_list_argument  s;    	9-aLKKM N 	"&3r7   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 )NrF  r  g     A@rH   r!  gMbP?r   h㈵>g?rK   r  gMb@?r  rl  g;O@{Gz?r   )r,   rG  rH  r!   r   rX   r  r   r   r  r   )rZ   rI  rJ  q_a_mr[   r  r   a_padiff1adiff2s               r5   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Ar7   r4   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 r@  )r,   r   r   r  r   r   rZ   r4   r[   rR  s       r5   r   TestPinv.test_empty  sU    HHV2&a{{a||tBFF1B$78>>>>>r7   r   N)r   r   r   r   rS  r#  r_  rb  re  r{   rj  ru  r   r   r   r   r,   r
   r   r   r   r   r   r7   r5   rM  rM    sb    =
=444=
4B8 [[TE2::w#MN? O?r7   rM  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 rO  )r   r   r,   r   ro  r   r   r   rQ  s      r5   rS  "TestPinvSymmetric.test_simple_real  sJ    9i4EBFF1ccNq!"&&"3RVVAY?r7   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  rG  rY  r   r   rG   )
r   r   r,   r   ro  r  svdr   r   r   )rZ   r[   r^   rG  vtrR  a_pinvhs          r5   test_nonpositive"TestPinvSymmetric.test_nonpositive  su    9i35AFF1ccN99==#b	!
FF15"a(!&2r7   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 rV  )	r   r   r,   r   rx  ro  r   r   r   rQ  s      r5   r#  %TestPinvSymmetric.test_simple_complex'  sv    Iy*5
Iy'I-2"4 44 FF1ffhjj!q!"&&"3RVVAY?r7   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 rO  )	r   r   r,   r   ro  r   tolistr   r   rQ  s      r5   rj  +TestPinvSymmetric.test_native_list_argument/  sQ    9i4EBFF1ccNqxxz"!"&&"3RVVAY?r7   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)rE   rG   r   )rG   rD   rG   )r   rG   rE   r   r  )r,   r   r   r   )rZ   r[   ps      r5   test_zero_eigenvalue&TestPinvSymmetric.test_zero_eigenvalue5  sF     HHj+z:;!H	151	151r7   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 )NrF  r  )rA   rS   rD   rE   vk?gﭣ>gu>rB   )rA   rS   rD   rE   r  rK   rK   rm  g1?r  rT  r   r  gdy=r  -C6?)	r,   rG  rH  r!   rq   ro  r   r   r   )rZ   rI  rJ  ro  rp  r[   rq  r  r   rr  rs  rt  s               r5   ru   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5r7   r4   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 r@  )r,   r   r   r  r   r   r   rx  s       r5   r   TestPinvSymmetric.test_emptyY  sU    HHV2&q{{a||tBFF1B$78>>>>>r7   r   N)r   r   r   r   rS  r  r#  rj  r  ru  r   r   r   r   r,   r
   r   r   r   r   r   r7   r5   r{  r{    sZ    @3@@268 [[TE2::w#MN? O?r7   r{  scale)r{  r=   r)  pinv_c                     [         R                  " SS/SS//5      U -  n[         R                  " S[         R                  " U5      -  5      nU" U5      n[        XC5        g )NrE   r   g|=r=   )r,   r   rq   r   )r  r  rd   r   x_invs        r5   test_auto_rcondr  a  sO     	1a&1e*%&.AwwrBGGAJ'H!HEE$r7   c                       \ rS rSrS rS rS rS rS rS r	\
R                  R                  \(       + SS	9S
 5       rSrg)TestVectorNormsij  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   r>   rI   r   rD   Complex)rk   rh   y              @)
r,   r  r   maxr1   r2   realr   r   sqrt)rZ   r   rd   r  s       r5   
test_typesTestVectorNorms.test_typesl  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#>	 -r7   c                 L    [        S/[        S9n[        [        U5      U5        g )Nr)  r   )r   r
   r   r   r  s     r5   test_overflowTestVectorNorms.test_overflowy  s      4&(DGQ'r7   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     @rE   i'  r   r   rn  r  zO: Result should equal either 0.0 or 0.5 (depending on implementation of snrm2).rK   )r  )r   r
   r   r   AssertionErrorr   )rZ   r[   r  s      r5   test_stableTestVectorNorms.test_stable  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)rE   r   rS   r   rD   r  rS   )r   r   r  s    r5   test_zero_normTestVectorNorms.test_zero_norm  s$    T)Q'+T)Q'+r7   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 )
NrD   rE   rS   rA   r  r  5D+@6f~@r  )r,   r   r   r   r  s     r5   test_axis_kwdTestVectorNorms.test_axis_kwd  sc    HH1v1v&'!+S1QQ:z*B)Ca)GHQ*bTAXJN;r7   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 )NrD   rE   rS   rA   r  T)r  keepdimsr  r  )rD   rE   rD   r~   g      @)r,   r   r   r   r   r   r  s      r5   test_keepdims_kwd!TestVectorNorms.test_keepdims_kwd  s    HH1v1v&'!+S1T*j*567!;<9$%QD9bTB4L>A;MNr7   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   rE   rG   r=   )r%   r,   r   r.   r   r   )rZ   rd   r  s      r5   test_large_vector!TestVectorNorms.test_large_vector  s?    %(HHeWBJJ/"1gS!r7   r   N)r   r   r   r   r  r  r  r  r  r  r   r   r-  r'   r  r   r   r7   r5   r  r  j  sN    ?(A,<
O [[I.DE" F"r7   r  c                   ,    \ rS rSrS rS rS rS rSrg)TestMatrixNormsi  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 )NrF  )ro   )rE   rS   )rS   rE   r  r  )r!  rA   r~  y              $@frorE   rG   rD   r&  )ord)r,   rG  rH  r
   r.   r   r0   int64r  r  r  r   r  r  r   r  r  r   )
rZ   rI  rJ  r2  r  rK  t_highr  actualdesireds
             r5   test_matrix_norms!TestMatrixNorms.test_matrix_norms  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r7   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 )
NrD   rE   rS   rA   r  r  )r  r  r   r&  )r,   r   r   r  swapaxesr   r   r   )rZ   r[   rc   r  r  s        r5   r  TestMatrixNorms.test_axis_kwd  s   HH1v1v&'!+S1V,Q1%266?'177--agg-.'Q1%16:V,177--agg-.-.r7   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   rD   rS   rA   r!  r  T)r  r  r  rE   r&  )r,   r   rX   r   r  r   r   r   )rZ   r[   rc   r  s       r5   r  !TestMatrixNorms.test_keepdims_kwd  sd    IIc%--aAq9Vd;6177"#r7   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   rK   r   r  r   T)r  ro   )r   rS   ri  )r,   r   r   r   r   r  s     r5   r   TestMatrixNorms.test_empty  s    HHVQ$QQ$8Q.0@AHHVQ$QQ$8Q.0@Ar7   r   N)	r   r   r   r   r  r  r  r   r   r   r7   r5   r  r    s    9(/"$	Br7   r  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 Nr  ri  )r$   r   r  s    r5   
test_solveTestOverwrite.test_solve      EFD>2r7   c                 (    [        [        SS/5        g r  )r$   r   r  s    r5   test_solve_triangular#TestOverwrite.test_solve_triangular  s    ,vtn=r7   c                 "    [        S SS/5        g )Nc                     [        SX5      $ )NrO   )r   )r\   rc   s     r5   <lambda>1TestOverwrite.test_solve_banded.<locals>.<lambda>  s    ,vr*Er7   )rA   rB   rB   r#   r  s    r5   test_solve_bandedTestOverwrite.test_solve_banded  s    E#TN	,r7   c                 (    [        [        SS/5        g )Nr  r  )r$   r   r  s    r5   test_solveh_banded TestOverwrite.test_solveh_banded  s    MFD>:r7   c                 &    [        [        S/5        g Nr  )r$   r   r  s    r5   test_invTestOverwrite.test_inv      C&*r7   c                 &    [        [        S/5        g r  )r$   r   r  s    r5   test_detTestOverwrite.test_det  r  r7   c                 (    [        [        SS/5        g )N)rS   rD   ri  )r$   r   r  s    r5   
test_lstsqTestOverwrite.test_lstsq  r  r7   c                 &    [        [        S/5        g r  )r$   r   r  s    r5   	test_pinvTestOverwrite.test_pinv  s    D6(+r7   c                 &    [        [        S/5        g r  )r$   r   r  s    r5   
test_pinvhTestOverwrite.test_pinvh  s    EF8,r7   r   N)r   r   r   r   r  r  r  r  r  r  r  r  r  r   r   r7   r5   r  r    s/    3>,;++3,-r7   r  c            	       *   \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
\\\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)rE   rD   rS   r!  )rE   rG   rE   r   )r,   r   r   r   r   r   rZ   r  rc   rd   r  s        r5   test_basic1TestSolveCirculant.test_basic1 	  s@    HH\"HH]#A!)A,"r7   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rE   rD   r2  r  rA   rS   r,   r   r   rX   r   r   r   r   r  s        r5   test_basic2TestSolveCirculant.test_basic2	  sL    HH^$IIbM!!!Q'A!)A,"r7   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 )Nr  r  rA   rS   rD   rG   )	r,   r   r   rX   r   r   r   r   r   r  s        r5   test_basic3TestSolveCirculant.test_basic3	  sh    HH^$IIbM!!!Q*A!)A,		!R 0199!''Br7   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)r;  r  r  r!  rI  rA   rD   y              ?r  r  s        r5   rl   TestSolveCirculant.test_complex	  sR    HH&'IIaL  A&-A!)A,"r7   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  )r,   rG  r&  r  r   r   r   r   )rZ   rI  r  rc   rd   r  s         r5   test_random_b_and_c&TestSolveCirculant.test_random_b_and_c	  sX    ii##E*##A!)A,"r7   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rE   rE   r   r   )rE   rD   rS   rA   r   )r  )r,   r   r   r   r   r   r   r   )rZ   r  rc   rd   r  r  rnkrG  s           r5   rx   TestSolveCirculant.test_singular(	  sR    HH\"HH\"A73y|Q/k?A9r7   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)rG   g      @rS   g      @)rE   rB   rB   g      @)r   r   rE   rE   r  )rE   rG   r   r   rE   )baxis)rA   rD   rS   r   rG   )r  outaxis)rD   rS   rA   rD   )caxis)r,   r   r   r   r   
empty_liker   r   rj  ro  r   moveaxisr  )rZ   r  rc   rd   r   s        r5   test_axis_args!TestSolveCirculant.test_axis_args1	  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($r7   c                 j    / SQn/ SQn[        X5      n[        [        U5      U5      n[        X45        g r  )r   r   r   r   r  s        r5   r   -TestSolveCirculant.test_native_list_argumentsJ	  s.    A!)A,"r7   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   rS   r   )r,   r   r   r   r   r   r   r   )rZ   r  r   r  rc   rd   x1s          r5   r   TestSolveCirculant.test_emptyR	  s     HHRt$HHRt$A!ww$ww/"))AT*B*,''!4*@BBG%H 	H H HHV4(Q"xx6!!!xx177"""r7   r   N)r   r   r   r   r  r  r   rl   r  rx  r  r   r   r   r   r   r   r,   r
   r   r   r   r   r   r7   r5   r  r    s    :%2 [[Vc5"**gr||%TU[[Vc5"**gr||%TU# V V#r7   r  c                       \ rS rSr\S 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_Balanceib	  c                 .    [        [        [        S5        g )NzSome string for fail)r   r   r    r  s    r5   test_string_arg"TestMatrix_Balance.test_string_argc	  s    j.2HIr7   c           	          [        [        [        [        R                  " SS/S[        R
                  //5      5        [        [        [        [        R                  " SS/S[        R                  //5      5        g )NrE   rD   rS   )r   r   r    r,   r   r  r  r  s    r5   test_infnan_arg"TestMatrix_Balance.test_infnan_argg	  sT    j.hhABFF45	7j.hhABFF45	7r7   c           	          [        [        R                  " SS/SS//5      5      u  p[        [        R                  " [        R
                  " [        R                  " U5      5      5      S/5        g )Nr%  rE   r   r!  )r    r,   r   r   difflog2rq   )rZ   rp  r  s      r5   test_scalingTestMatrix_Balance.test_scalingm	  sL    bhhq	D!9'=>? 	
 34qc:r7   c                     [         R                  " / SQ/ SQ/ SQ/5      n[        U5      u  p#[        [	        X15      R                  U5      U5        g )N)rE   r   r  )rE   rE   rn  )r  g      Y@rE   )r,   r   r    r   r   r   )rZ   rK  rd   r  s       r5   test_scaling_order%TestMatrix_Balance.test_scaling_ordert	  s:    HHlL-@Aa a*A.r7   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 )Nr%  rE   r   separater!  rD   )r    r,   r   r   r"  r#  r   r   )rZ   rp  r  zs       r5   test_separate TestMatrix_Balance.test_separatey	  s\    "288dAYq	,B#C,-/	6ARWWRWWQZ(1#.299Q<(r7   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  r  rE   r*  )r   rE   rB   r!  rA   rS   rD   )r   r,   r   r  r    r   	ones_liker   )rZ   rK  rd   r  r,  s        r5   test_permutation#TestMatrix_Balance.test_permutation	  sl    rwwv(@wwv("1q1	6A2<<?+288$9:;r7   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)rK   rK   rK   rK   >)rK   rK   rK   rK   rK   )rR   rR   rK   rK   rK   )rK   rK   r4  rK   rK   )r6  rK   rK   rK   )rK   r  rK   rK   )r=   rK   r6  rK   )rK   r=   rK   r  )r(  rK   r=   rK   )r  r         r=   )r(  r5  r5  rK   )r  r5  r=   r  rE   r*  r   )
r,   r   r    r  r   r   r   rq   r   r   )rZ   casesrK  rd   r  rG  r  ips           r5   test_perm_and_scaling(TestMatrix_Balance.test_perm_and_scaling	  s     5///5	7 8 -,-,. /
 ,...0 1$ A!!$DA&q15IAvq!BIIaggaj)BEArwwqz"a%01E!KOOA.2 r7   r4   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   rD   Tr*  )r,   r   r    r  r   r   )rZ   r4   r[   rc   r  b_nt_nr  permscale_nperm_ns              r5   r   TestMatrix_Balance.test_empty	  s   HHV2&a vv{{vv{{!"&&""56ww#))###ww#))###)!d;=Evv{{zzQyyA~~!/D!Agww#))###{{gmm+++zzV\\)))r7   r   N)r   r   r   r   r(   r  r  r$  r'  r-  r1  r8  r   r   r   r   r   r,   r
   r   r   r   r   r   r7   r5   r  r  b	  sm    J J7;/
)<38 [[TC

GR\\#RS* T*r7   r  r   )Mr=  r9  numpyr,   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(   r.   r-   r  r   r0   r/   r  DTYPESr   r   r/  r6   r9   r   r  r1  rE  r  r  r   rM  r{  r  r  r  r  r  r  r   r7   r5   <module>rI     s       / /  *= = = = =
 8 < ' .zz2::r}}5,,r~~>	~	% #KK33mT*]E,BBG 
cV cVLIV IVX
^	0 ^	0BOJ OJd`( `(F	T Tnj& j&Z	R? R?jH? H?V "344-0% 1 5%9" 9"x7B 7Bt- -<a# a#HT* T*r7   