
    (ph#4                    8   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  S SKJr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/J0r0  \R                  \Rb                  \Rd                  4r3\Rh                  \Rj                  \Rl                  4r7\3\7-   r8S
 r9 " S S5      r: " S S5      r; " S S5      r< " S S5      r= " S S5      r> " S S5      r?S,S jr@ " S S5      rA " S S5      rB " S S5      rC\R                  R                  SS5      \R                  R                  S \\45      S! 5       5       rF " S" S#5      rG " S$ S%5      rH " S& S'5      rI " S( S)5      rJ " S* S+5      rKg)-    N)arangearraydotzerosidentity	conjugate	transposefloat32)random)assert_equalassert_almost_equalassert_assert_array_almost_equalassert_allcloseassert_array_equalsuppress_warnings)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_ILP64c                     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     P/var/www/html/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_basic.py	_eps_castr5      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                  \R                  R                  S
\\\R&                  \\R*                  /5      \R                  R                  S\\\R&                  \\R*                  /5      S 5       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=   rC   r                 r=   rA   rC   rD   r@   r=   rH   r?   rD   rG   r   rC   rF   r   r   rC   rD         $@rJ          @g      ,@rF   rD   rC   r?   r@      rD   r   r   r   r   r   r   rD   r   rD   r   r   r   reshaper   r   r   selfaablub4b4by1b4by2b4by4bxs              r4   	test_realTestSolveBanded.test_real(   s    ?! !# $ O""!# $ )*

2q!1vQx1v1v   |###% & U*AaVR+A%c!i3 +r6   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>   )               @rD   r=   rg   rE   rJ   r=   rA   rg   rK   rL   )rg   rF   r   r   rN   rP   rJ   rQ   y              ,@rF   rD   rC   r?   r@   rR   rS   )r   r   r                 ?rU   rV   rX   s              r4   test_complexTestSolveBanded.test_complex@   s    ?!"!# $ $"""$ % *+

2q!1vQx1v1v   |$##% & U*AaVR+A%c!i3 +r6   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   rK   rL   r   rD   rC   rF   rO   r?   r@   rR   rS   rT   rU   rD   rD   r   r+   diagrW   r   r   r   	rY   r[   rZ   r^   r_   r`   ra   rb   rc   s	            r4   test_tridiag_real!TestSolveBanded.test_tridiag_realX   s    O!!# $ GGBq!"uIq!BGGBq!tHa$88277@B1crc6
B<P P)*

2q!1vQx1v1v   |###% & U*AVR+A%c!i3 +r6   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 )Nrh   rK   rL   r   rD   rC   rF   ri   r?   r@   rR   rS   rT   rU   rn   ro   rq   s	            r4   test_tridiag_complex$TestSolveBanded.test_tridiag_complexl   s    $!!# $ GGBq!"uIq!BGGBq!tHa$88277?A!SbS&z2<O O*+

2q!1vQx1v1v   |###% & U*AVR+A%c!i3 +r6   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>   rB   rE   rI   rK   rL   rM   rN   rO   Fcheck_finite)r   r   r   r   )rY   rZ   r[   r\   r]   r^   rc   s          r4   test_check_finite!TestSolveBanded.test_check_finite   sj    ?! !# $ O""!# $ )*!e<!#a)R0r6   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 )NrI   rK   rL   rM   rN   )r<   rQ         @      @rF   r@   r<   rQ   rn   )r   rW   assert_raises
ValueErrorr   )rY   r[   r\   r]   bads        r4   test_bad_shapeTestSolveBanded.test_bad_shape   sy    O""!# $ ()11"a8j,@j,S#JG 	j,S#JGr6   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<   rQ   r}   )      ?r<   g      ?r   r   rC   V瞯<rtolrn   r   f8)r   r   r   r   dtyper+   r   )rY   rb   refrc   s       r4   test_1x1TestSolveBanded.test_1x1   s    
 <.!_%&1#*U+ 1#sQC!4U+QWWbhhtn-1/0r6   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>   rB   rE   rI   rK   rL   rM   rN   rO   )r   r   r   )rY   rZ   r[   r\   r]   rb   rc   s          r4   test_native_list_arguments*TestSolveBanded.test_native_list_arguments   sT      "!'!#a)Q/r6   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   rD   )	r+   r   r   shaper   r   eyeonesemptyrY   r   r   r[   rb   rc   s         r4   
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Ur6    N)__name__
__module____qualname____firstlineno__rd   rk   rr   ru   rz   r   r   r   pytestmarkthread_unsafeparametrizeintfloatr+   r
   complex	complex64r   __static_attributes__r   r6   r4   r8   r8   &   s    40404(4(1H1"0 [[[[WsE2::w&UV[[Vc5"**gr||%TUV V W Vr6   r8   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rJ   rJ   rQ   rQ   r<   r<   r<   r~   r~   r~   r~   r<   r~   r<   rQ   rJ   r<   rJ   rJ   r   r   r   rY   r[   rb   rc   s       r4   test_01_upperTestSolveHBanded.test_01_upper   s>     (((* + &'" !!%9:r6   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~   rQ   rJ   r   rY   r[   rb   rc   expecteds        r4   test_02_upperTestSolveHBanded.test_02_upper   s     (((* + C::::   " 3****& ' 	"!.r6   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   rF   rD   r   r   rW   r   r   r   s       r4   test_03_upperTestSolveHBanded.test_03_upper   s]     (((* + &'//A6" !!U+;%<%D%DR%KLr6   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   rQ   rQ   rJ   rJ   r   Tlowerr   r   r   s       r4   test_01_lowerTestSolveHBanded.test_01_lower   s@     (((* + &'"t,!!%9:r6   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~   rQ   Tr   rJ   r   r   s        r4   test_02_lowerTestSolveHBanded.test_02_lower  s     (((* + C::::   "t,3****& ' 	"!.r6   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       r4   test_01_float32 TestSolveHBanded.test_01_float32#  sC     (((*18: &g6" !!%9:r6   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~   rQ   rJ   r   r   s        r4   test_02_float32 TestSolveHBanded.test_02_float321  s     (((*18: C:::: './ " 3****& ' 	"!.r6   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   )       @            @            @      ?       @      ?)rJ   r<   r<   rJ   r   r   s       r4   test_01_complex TestSolveHBanded.test_01_complexF  s>     (.(* + ./" !!%9:r6   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   rj   rJ   r<   r   r   s        r4   test_02_complex TestSolveHBanded.test_02_complexT  s     (.(* + D$<E?D>":   " 3+***& ' 	"!.r6   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<   rJ   r<   rJ   r   r   s       r4   test_tridiag_01_upper&TestSolveHBanded.test_tridiag_01_upperi  s1     O_56/"" !!_5r6   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~   rQ   rJ   r   r   s        r4   test_tridiag_02_upper&TestSolveHBanded.test_tridiag_02_uppert  st     O#% &C:::   " 3***& ' 	"!.r6   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   rF   rD   r   r   r   s       r4   test_tridiag_03_upper&TestSolveHBanded.test_tridiag_03_upper  sP     O_56/"**2q1" !!U?%;%C%CB%JKr6   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       r4   test_tridiag_01_lower&TestSolveHBanded.test_tridiag_01_lower  s8     O#% &/""t,!!_5r6   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~   rQ   Tr   rJ   r   r   s        r4   test_tridiag_02_lower&TestSolveHBanded.test_tridiag_02_lower  sv     O#% &C:::   "t,3***& ' 	"!.r6   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       r4   test_tridiag_01_float32(TestSolveHBanded.test_tridiag_01_float32  s5     O_5WE/1" !!_5r6   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~   rQ   rJ   r   r   s        r4   test_tridiag_02_float32(TestSolveHBanded.test_tridiag_02_float32  sz     O#%,35C:::&-/ " 3***& ' 	"!.r6   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   )rJ   r<   r<   r   r   s       r4   test_tridiag_01_complex(TestSolveHBanded.test_tridiag_01_complex  s3     '9:'(" !!_5r6   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~   rJ   rj   r<   r   r   s        r4   test_tridiag_02_complex(TestSolveHBanded.test_tridiag_02_complex  sv     '#% &C;G$C=" # " 3+**& ' 	"!.r6   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   Frx   r   r   r   s       r4   rz   "TestSolveHBanded.test_check_finite  s3     O_56/""e4!!_5r6   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~   rQ   )r   r   r   r   )rY   r[   rb   s      r4   test_bad_shapes TestSolveHBanded.test_bad_shapes  s`    O#% &C::  j-7j-c3Z@j-cU;r6   c                     [        S/// SQ/5      n[        U/ SQ/5        [        UR                  [        R                  " S5      5        g )NrD   rD   rC   rR   r   r   )r   r   r   r   r+   )rY   rc   s     r4   r   TestSolveHBanded.test_1x1  s7    A3%)-1/0QWWbhhtn-r6   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       r4   r   +TestSolveHBanded.test_native_list_arguments  s.    """$ !" !!%9:r6   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   rD   r   )	r+   r   r   r   r   r   r   r   r   r   s         r4   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Ur6   r   N)%r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  rz   r
  r   r   r   r   r   r   r   r+   r
   r   r   r   r   r   r6   r4   r   r      s    ;/*M;/*;/*;/*	6/"	L
6/"	6/"	6/"	6<.
; [[WsE2::w&UV[[Vc5"**gr||%TUV V WVr6   r   c            
          \ rS rSrS r\R                  R                  S 5       rS r	S r
S rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\R                  R                  \R                  R=                  SS5      S 5       5       rS r S r!S r"S r#S  r$S! r%\R                  RM                  S"S#9S$ 5       r'\R                  R                  \R                  R=                  S%\(\)\*RV                  \,\*RZ                  /5      \R                  R=                  S&\(\)\*RV                  \,\*RZ                  /5      S' 5       5       5       r.S( r/\R                  R=                  S)\*R`                  \*Rb                  /5      \R                  R=                  S*/ S+Q5      \R                  R=                  S,S-S./5      \R                  R=                  S/S0S1/5      \R                  R=                  S2S0S1/5      \R                  R=                  S3S0S1/5      S4 5       5       5       5       5       5       r2S-r3g5)6	TestSolvei  c                 B    [         R                  R                  S5        g N  r+   r   seedrY   s    r4   setup_methodTestSolve.setup_method      
		tr6   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 )NrD   r<   r                   333333?r   r   r   )rY   rZ   x0rb   s       r4   test_20Feb04_bugTestSolve.test_20Feb04_bug  sn    Vc1X1q"g!#a*q!f5 Vc1XG1[!#a*q!f5r6   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 )NrD   r=   r?   r@   r   rC   r!  rY   rZ   rb   rc   s       r4   test_simpleTestSolve.test_simple)  s`    WsAhq6Aq6"a&q6C8$A aA%c!i3r6   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   rC   rg   r@   Drj   r   rD   r  )r   r   r   r   r&  s       r4   test_simple_complexTestSolve.test_simple_complex2  sl    Aq6B7#S)q'8aV$b'A$A
 aA%c!i3r6   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 )	NrC   rR   r*  r   rD   rD   r   posassume_ar   r!  rY   rZ   r   rb   rc   s        r4   test_simple_posTestSolve.test_simple_pos<  s_    VaVE1v1v&!f !e<)#a)Q7	 r6   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*  rC   r@   rj   r   r0  r2  r!  r&  s       r4   test_simple_pos_complexb"TestSolve.test_simple_pos_complexbE  sS    VaVq'8aV$A aU+A%c!i3	r6   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 )	NrC   rR   r/  rD   r   symr1  r!  r3  s        r4   test_simple_symTestSolve.test_simple_symM  s_    VaWE1v1v&!f !e<)#a)Q7	 r6   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*  rC   rj   r   r<  r7  r!  r&  s       r4   test_simple_sym_complexb"TestSolve.test_simple_sym_complexbV  sS    VaWq'8aV$A aU+A%c!i3	r6   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@  rj   r   rD   rC   r<  r7  r!  r&  s       r4   test_simple_sym_complex!TestSolve.test_simple_sym_complex^  Z    Yr
#q'a&8aV$A aU+A%c!i3r6   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 )
NrC   rR   r;  r/  rD   r   rj   herr1  r!  r3  s        r4   test_simple_her_actuallysym%TestSolve.test_simple_her_actuallysymg  sf    VaWE1v1v&!f1g !e<)#a)Q7 r6   c                 ~    SS/SS//nSS/SS/SS/SS//4 H"  n[        XS	S
9n[        [        X5      U5        M$     g )Nr*  r   r   r@  rj   r   rD   rC   rH  r7  r!  r&  s       r4   test_simple_herTestSolve.test_simple_herq  rF  r6   c                    Sn[        X/5      [        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[        X'5      US S 2U4'   M      [        X45        g )NrC   rj   r+  r  r   )r   r   r   r   r   r   r   )rY   nAXAinvRirs           r4   test_nils_20Feb04TestSolve.test_nils_20Feb04z  s    A6N61&>",,1&#1vQKB&1A!Q$AAkAadG  	"!*r6   c                     Sn[        X/5      n[        U5       H  nSSX#U4   -   -  X#U4'   M     [        S5       H0  n[        US/5      n[        X$5      n[        [	        X%5      U5        M2     g )Nr=   皙?r@   rR   r   ranger   r   r   rY   rO  rZ   rT  rb   rc   s         r4   test_randomTestSolve.test_random  sk    A6NqA"Q!tW*oAdG qA1vAaA%c!i3 r6   c                    Sn[        X/5      S[        X/5      -  -   n[        U5       H  nSSX#U4   -   -  X#U4'   M     [        S5       H0  n[        US/5      n[        X$5      n[        [	        X%5      U5        M2     g )Nr=   rj   rY  rC   rR   rZ  r\  s         r4   test_random_complexTestSolve.test_random_complex  s{    A6NR&!.00qA"Q!tW*oAdG qA1vAaA%c!i3 r6   c                 (   Sn[        X/5      n[        U5       H8  n[        SSX#U4   -   -  5      X#U4'   [        U5       H  nX$U4   X#U4'   M     M:     [        S5       H.  n[        U/5      n[        X%SS9n[	        [        X&5      U5        M0     g )Nr=   rY  r@   r0  r7  )r   r[  absr   r   r   rY   rO  rZ   rT  jrb   rc   s          r4   test_random_symTestSolve.test_random_sym  s    A6NqA"ba4j/*AdG1XqD'Q$   qAsAaU+A%c!i3 r6   c                 ~   Sn[        X/5      nUS[        X/5      -  -   n[        U5       HA  n[        SSX#U4   -   -  5      X#U4'   [        U5       H  n[        X$U4   5      X#U4'   M     MC     [        U/5      S[        U/5      -  -   n[        S5       H"  n[	        X%SS9n[        [        X&5      U5        M$     g )Nr=   rj   rY  rg   rC   r0  r7  )r   r[  rc  r   r   r   r   rd  s          r4   test_random_sym_complex!TestSolve.test_random_sym_complex  s    A6N61&>!!qA"ba4j/*AdG1X#AdG,Q$   A3K61#;&qAaU+A%c!i3 r6   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 )	NrD   r=   r?   r@   r   rC   Frx   r!  r&  s       r4   rz   TestSolve.test_check_finite  s`    WsAhq6Aq6"QFq6C8$&Aa/A%c!i3&r6   c                     Sn/ SQn[        X5      n[        UR                  5       U5        [        UR                  S:H  S5        g )NrD   r  rR   z'Scalar_a_1D_b test returned wrong shape)r   r   ravelr   r   r&  s       r4   test_scalar_a_and_1D_b TestSolve.test_scalar_a_and_1D_b  s8    !K!!'')Q/4!JKr6   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<   rF   rR   r;  )rR   rC   r@   rD   )r+   r   r   r   Tr&  s       r4   test_simple2TestSolve.test_simple2  s    HH/8113 4
 HHtUm'Vnen& '
 !K!!RXX/;/= &>>?a	Ar6   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       r4   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> &? 	@r6   c                 X   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " SS/SS/S	S
/SS//5      n[         R                  " SS/SS/SS/SS//5      n[        XSS9n[        XC5        [        UR	                  5       R
                  USSS9n[        XC5        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@r   y             @y      @       y      @       y             @y            @      ?      y      @      rH  r7  Tr1  )r+   r   r   r   conjrt  )rY   rZ   rb   resrc   s        r4   test_hermitianTestSolve.test_hermitian  s    HHB9/&( ) HH{L1"L1#[1!=13 4 hh' ( !'!!)!&&(**a%t<!!)r6   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 )	NrD   
   rR   	   r0  r7  )      "@rs  r<   r<  r+   r   rW   r   trilr   r   rY   rP  rc   s      r4   test_pos_and_symTestSolve.test_pos_and_sym  sw    IIa$$Q*"''!*Q,
U;!!]3"''!*Q,
U;!!]3r6   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)	rD   r   r   r   r   r   rD   r   rD   )	rD   rD   rD   r   r   r   rD   r   rD   )	r   rD   rD   r   r   r   rD   r   rD   )	rD   r   rD   rD   rD   rD   r   r   r   )	rD   rD   rD   rD   rD   rD   rD   rD   rD   r  )r+   r   r   r   r    r   rY   rZ   rb   s      r4   test_singularityTestSolve.test_singularity  sT    HH1111111113 4 IIaLD!k5!/r6   	structure)	diagonaltridiagonallower triangularupper triangular	symmetric	hermitianpositive definitegeneralNc                 >   [         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   sizezIll-conditioned matrix...matchr7  )	r+   r   default_rnglogspacerp   r   warnsr$   r   )rY   r  rngrO  drP  rb   messages           r4   test_ill_condition_warning$TestSolve.test_ill_condition_warning	  su     ii##L1KK2q!GGAJJJAJ-\\-w7!+ 877s   :B
Bc                     [         R                  " S5      n[         R                  R                  SSS5      n[	        X5      n[        X25        g )NrC   rR   r@   )r+   r   r   randr   r   r&  s       r4   test_multiple_rhsTestSolve.test_multiple_rhs  s6    FF1IIINN1a#!K!!'r6   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  rR   rD   T
transposed)r   g?rD   F)r  gg333333r  r  s      r4   test_transposed_keyword!TestSolve.test_transposed_keyword  sy    IIaL  A&*"''!*Q,
t<!!]3"''!*Q,
u=!!_5r6   c                     [         R                  " S5      R                  [        5      n[	        [
        5         [        XSS9  S S S 5        g ! , (       d  f       g = f)NrR   Tr  )r+   r   astyper   r   NotImplementedErrorr   rY   rZ   s     r4   test_transposed_notimplemented(TestSolve.test_transposed_notimplemented%  s9    FF1IW%./!4( 0//s   A
Ac                 4    [        [        [        SS/S5        g )NrD   rC   r   r   r   r  s    r4   test_nonsquare_aTestSolve.test_nonsquare_a*  s    j%!Q3r6   c                 $   [        [        [        R                  " S5      [        R                  " S5      5      [        R                  " S5      5        [        [        [        [        R                  " S5      [        R                  " S5      5        g )NrR   r@   )r   r   r+   r   r   r   r   r  s    r4   test_size_mismatch_with_1D_b&TestSolve.test_size_mismatch_with_1D_b-  sI    !%q	2771:">
Kj%BGGAJ?r6   c                 .    [        [        [        SSSS9  g )NrD   zxcvr7  r  r  s    r4   test_assume_a_keywordTestSolve.test_assume_a_keyword1  s    j%A?r6   z5Failure on OS X (gh-7500), crash on Windows (gh-8064)reasonc           	      8   SS/n/ SQn[         R                  [         R                  [         R                  [         R                  /n[
        R                  " XU5       GH8  u  pEnU[         R                  [         R                  4;   nUS:X  a	  U(       d  M9  SU SU SU 3n[         R                  R                  XD5      R                  U5      n	[         R                  R                  U5      R                  U5      n
U(       a4  U	S[         R                  R                  XD5      -  R                  U5      -   n	US	:X  a  XR                  -   n	OlUS:X  a  XR                  R                  5       -   n	OIUS
:X  aC  U	R                  5       R                  R                  U	5      S[         R                  " U5      -  -   n	U[         R                  [         R                  4;   a  SOSnUS;   a)  U[         R                  [         R                  4;   a  US-  n[        XUS9n[        U	R                  U5      U
X-  X-  US9  US	:X  d  GM  U[         R                  [         R                  4;  d  GM  [        XUSS9n[        U	R                  U5      U
X-  X-  US9  GM;     g )Nr  d   )genr<  r0  rH  rH  zFailed for size: z, assume_a: z,dtype: rj   r<  r0  rY  -q=gư>)r  r<  rH  r7  atolr   err_msgT)r2  r  )r+   r
   r-   r   r/   	itertoolsproductr   randnr  rt  r}  r   r   r   r   )rY   sizes	assume_asdtypesr  r2  r   
is_complexr  rZ   rb   tolrc   s                r4   'test_all_type_size_routine_combinations1TestSolve.test_all_type_size_routine_combinations4  s    S	0	**bjj",,F%.%6%6u7=&?!DE2<<"??J5 *4&XJ G!!&)G 		+2259A		%,,U3ABIIOOD77??FF5 GU"
NU"FFHJJNN1%BFF4L(88 RZZ$??%TC00 RZZ662ICaX.AAEE!Ha!$!$$+-
 5 U2<<35==3B &B!dCa!%(Z%(Z(/1M&?r6   dt_ar   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   rC   )r+   r   r   r  r   r   r   rY   r  r   rZ   rb   rc   dt_nonemptys          r4   r   TestSolve.test_emptye  sw     HHV4(HHQd#!Kvv{{BFF1D12771D3IJPPww+%%%r6   c                     [         R                  " S5      n/ / /n[        X5      n[        UR                  S:H  S5        [        UR
                  S:H  S5        g NrC   r   zReturned array is not empty)rC   r   z#Returned empty array shape is wrong)r+   r   r   r   r  r   r&  s       r4   test_empty_rhsTestSolve.test_empty_rhsq  sH    FF1IH!K!:;6!#HIr6   r   r2  )r  r  bandedr  r  r  r  r  r<  rH  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OlUS:X  a  [         R                  " U
5      n
GONUS	:X  a  [         R                  " U
5      n
GO0U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
OrUS;   a  XR                  -   n
O]US;   a  XR                  5       R                  -   n
O:US;   a4  XR                  -   n
U
[         R
                  " U
R                  SS9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5        U(       d  ['        X5        ['        X5        g g ! , (       d  f       g = f)Nl   q~u r  r*  r=   r  rj   r  r  r  r  rF   rD   rC   >   r<  r  >   rH  r  >   r0  r  axisrP  )orderz#scipy.linalg.solve can currently...r  )overwrite_aoverwrite_br  )r  r  r  r2  r  )r+   r   r  
issubdtypecomplexfloatingrp   r  triurt  r}  sumasfortranarraycopyr   r   r  r   linalgr   r   )rY   r   r2  r  r  r  r  r  rO  rb   rP  A_copyb_copyr  r~  r   s                   r4   test_structure_detection"TestSolve.test_structure_detectionx  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CCAA''A!!!$Ac"== 2 233
;G2'Ba	!+- C Ai)> iioo*fhh&&I! xv*EsK ## % CB s   
M!!
M/N)4r   r   r   r   r  r   r   r   r#  r'  r,  r4  r8  r=  rA  rD  rI  rL  rV  r]  r`  rf  ri  rz   rp  ru  ry  r  r  r  r   r  r  r  r  r  r  r  skipr  r   r   r+   r
   r   r   r   r  r-   r/   r  r   r   r6   r4   r  r    sd    [[	6 	6448484484	+	44
444LA@"*(40 [[[[[DE,	E 
,(6)
4@@ [[ : ;-1;-1^ [[[[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;$r6   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.
rD   r   rC   Tr   Fr   r   transr<         N)r   r   r   rt  r   rY   rP  rb   sols       r4   r'  TestSolveTriangular.test_simple  s     Aq6Aq6"#Fq40!#1v. qssAU3!#Bx0 q4q9!#Bx0QKq4q9!#S	As8'<=r6   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
rx  r   rj   rC   TrD   r  y      ?      y      п      пr         ?       @y             y      ?      ?y      ?      y            пFr  N)r   r   r   r   r+   rp   rt  r  s       r4   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$'@Ar6   c                 `    [        SS/SS//5      nSS/n[        XSSS9n[        USS/5        g)r  rD   r   rC   TF)r   ry   N)r   r   r   r  s       r4   rz   %TestSolveTriangular.test_check_finite  s@     Aq6Aq6"#Fq4eD!#1v.r6   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 r  )r+   r   r   r  r   r   r   r  s          r4   r   TestSolveTriangular.test_empty  s     HHV4(HHQd#Q"vv{{&FF1D!2771D#9

% 	 ww+%%%r6   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       r4   r  "TestSolveTriangular.test_empty_rhs
  sI    FF1IHQ"!:;6!#HIr6   r   N)r   r   r   r   r'  r,  rz   r   r   r   r   r   r+   r
   r   r   r   r  r   r   r6   r4   r  r    s~    >*B:/ [[Vc5"**gr||%TU[[Vc5"**gr||%TU	& V V	&Jr6   r  c                       \ rS rSrS rS rS rS rS rS r	\
R                  R                  S\\\R                   \\R$                  /5      S	 5       rS
rg)TestInvi  c                 B    [         R                  R                  S5        g r  r  r  s    r4   r  TestInv.setup_method  r  r6   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 )NrD   rC   rR   r@   r  r@   r*  rA   rG      r  )r   r   r   r+   r   rY   rZ   a_invs      r4   r'  TestInv.test_simple  s^    VaVA!#a-;	:.A!#a-;r6   c                     Sn[        S5       HZ  n[        X/5      n[        U5       H  nSSX2U4   -   -  X2U4'   M     [        U5      n[        [	        X45      [        U5      5        M\     g )Nr=   r@   rY  r[  r   r   r   r   r   rY   rO  rT  rZ   r  s        r4   r]  TestInv.test_random  se    qAvA1Xba4j/Q$ FE%c!m&.qk3 r6   c                 `    SS/SS//n[        U5      n[        [        X5      SS/SS//5        g )NrD   rC   rR   r  r   r   r   r   r  s      r4   r,  TestInv.test_simple_complex(  s8    VaWA!#a-1a&1a&1ABr6   c                     Sn[        S5       Hj  n[        X/5      S[        X/5      -  -   n[        U5       H  nSSX2U4   -   -  X2U4'   M     [        U5      n[        [	        X45      [        U5      5        Ml     g )Nr=   r@   rg   rY  r  r  s        r4   r`  TestInv.test_random_complex-  su    qAvr&!.00A1Xba4j/Q$ FE%c!m&.qk3 r6   c                 ^    SS/SS//n[        USS9n[        [        X5      SS/SS//5        g )NrD   rC   rR   r@   Frx   r   r  r  s      r4   rz   TestInv.test_check_finite7  s;    VaVAE*!#a-1a&1a&1ABr6   r3   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   )rY   r3   rZ   r  s       r4   r   TestInv.test_empty<  sS    HHV2&AzzQ{{c"&&""56<<<<<r6   r   N)r   r   r   r   r  r'  r]  r,  r`  rz   r   r   r   r   r   r+   r
   r   r   r   r   r   r6   r4   r  r    s[    <3C
3C
 [[TC

GR\\#RS= T=r6   r  c            	          \ rS 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 )TestDetiD  c                 L    [         R                  R                  S5      U l        g )Nl   *n`/ )r+   r   r  r  r  s    r4   r  TestDet.setup_methodE  s    99(()9:r6   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 )
NrD   r  r<   fr   rn   y      ?      @r+  )rD   )	r+   r   r   r   charisscalarr   r   r   rY   rZ   detas      r4   test_1x1_all_singleton_dims#TestDet.test_1x1_all_singleton_dimsH  s   HHqcUO1vzz#%%%{{4    rzzHHugYc*1vzz#%%%zzV###TSE7#HHyk]",,71vzz#%%%zzT!!!TF8$r6   c                 >   U R                   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                   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)r@   r*  rD   rD   r   r  r@   r*  rj   r+  )r  r   r+   r
   r   r   r#  r   r   squeezer   r%  s      r4   test_1by1_stacked_input_output&TestDet.test_1by1_stacked_input_outputY  s    HHOOL

O;1vzz#%%%zzV###bjjm,HHOOL

O;BLL<MM1vzz#%%%zzV###bjjm,r6   r   rC   r=   )rR   rC   r=   r=   c                    U R                   R                  SSUS9n[        U5      [        R                  R                  U5      pC[        X45        U R                   R                  SSUS9S-  nXPR                   R                  SSUS9-  n[        U5      [        R                  R                  U5      pv[        Xg5        g )N      r<   r  rj   r  r   )r  uniformr   r+   r  r   )rY   r   rZ   d1d2rb   d3d4s           r4   #test_simple_det_shapes_real_complex+TestDet.test_simple_det_shapes_real_complexf  s    HHS"51Qq)BHHS"51"4	XXdCe44Qq)Br6   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)rD   rD   rD   rD   rD   rD   rD   rD   )rD   rF   rD   rF   rD   rF   rD   rF   )rD   rD   rF   rF   rD   rD   rF   rF   )rD   rF   rF   rD   rD   rF   rF   rD   )rD   rD   rD   rD   rF   rF   rF   rF   )rD   rF   rD   rF   rF   rD   rF   rD   )rD   rD   rF   rF   rF   rF   rD   rD   )rD   rF   rF   rD   rF   rD   rD   rF   g      @   r*  rJ   )r  r                r|  )r  r        ?        r9  )rj   rx  r  r  )r:  rj   r  r  r   y      @        )g             r<   rJ   rJ   rJ   rJ   rJ   )r<   rJ   rJ   rJ   rJ   rJ   rJ   rJ   )rJ   g      rJ   g      r<   rJ   rJ   rJ   )rJ   r<   rJ   rJ   rJ   rJ   rJ   rJ   )rJ   rJ   rJ   g      rJ   g      r<   rJ   )rJ   rJ   rJ   r<   rJ   rJ   rJ   rJ   )rJ   rJ   rJ   rJ   rJ   g       rJ   g      ")rJ   rJ   rJ   rJ   rJ   r<   rJ   rJ   rj   r  )r+   r   r   r   r   rW   r   r  s     r4   test_for_known_det_values!TestDet.test_for_known_det_valuesq  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#r6   typAllNgGc                     SnU R                   R                  X"/5      R                  U5      n[        [	        U5      [
        R                  [
        R                  -  5      (       d   eg )Nr@   )r  r   r  
isinstancer   r+   r-   r/   )rY   r>  rO  rZ   s       r4   "test_sample_compatible_dtype_input*TestDet.test_sample_compatible_dtype_input  sL     HHOOQF#**3/#a&2::#=????r6   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  rZ   rb   rC   r      a   bVr     zdatetime64[s]ztimedelta64[s])zipr   	TypeErrorr   r+   r   )rY   msgcts       r4   test_incompatible_dtype_input%TestDet.test_incompatible_dtype_input  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   rR   r   r   r<   r<   r<   zLast 2 dimensionsr  )r   r   rR   zat least two-dimensional)r   r   r+   r   r   r   r   r  s    r4   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r3   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   rC   rV  rn  )rR   rD   rD   )r+   r   r   r   r   r   r   )rY   r3   rZ   r  s       r4   test_empty_dtypeTestDet.test_empty_dtype  s    HHV2&Fww"}}ww#bffQb1288888HHYb)Fww$ww#bhhy;<BBBBBr6   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  rR   Tr  rJ   )	r+   r   rW   r  r
   r  r   r   all)rY   rZ   acr&  s       r4   test_overwrite_aTestDet.test_overwrite_a  sc    
 IIaL  A&--bjj9VVX24(b!G==??""?r6   c                     [         R                  " / SQ/ SQ/ SQ/5      nUR                  SS9  [        [	        USS9S5        g )	N)rQ   rJ   r<   )      @r}   r/  rW  F)writeTr^  rP   )r+   r   setflagsr   r   r  s     r4   test_readonly_arrayTestDet.test_readonly_array  s6    HHlM<@A	


A40#6r6   c                     SS/S[         R                  //n[        [        SS9   [	        U5        S S S 5        g ! , (       d  f       g = f)NrD   rC   rR   zarray must not containr  )r+   infr   r   r   r  s     r4   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   r5  r<  r+   	typecodesrC  rS  rX  r   r   r
   r   r   r[  ra  rg  rk  r   ).0rc   s   00r4   r  r  D  s    ;%"- [[W1vBx&HI  J "$J [[UU0CCR0H %70H1() &'0H %7 8@8@
B" [[TC

GR\\#RS	C T	C	#7%7s   )
C7Cr  c                 ~    [        U 5      nU(       a  [        U5      n[        X05      n[        X15      n[        XE5      $ )N)r	   r   r   r   )rZ   rb   cmplxata1b1s         r4   direct_lstsqrt    s3    	1Br]	RB	RB=r6   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 )NrD   r=   r?   r@   r   TF)rD   r   r/  r}  )rN   r?   r@   lapack_driverr  r  r   rC   expected efficient rank 2, got r8  driver: r  )REAL_DTYPESr+   r   rv  lapack_driversr  r   r   r   r   r5   r   )rY   r   rZ   r  r  btrr  rb   rs  outrc   rU  s               r4   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 "/ ": !r6   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 )NrD   rC   r@   r*  rR   r   r  r{  r  r   ry  r  r  r8  r  r   r  r  )gm۶mۿgm۶m?)r  r+   r   rv  r  r  r   r  r   r   r   rc  r5   r   )rY   r   rZ   rb   r  r  rr  rs  r  rc   	residualsrU  s               r4   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' "/ ": !r6   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  rC   r@   r*  rR   r   )rD   r   rR   r{  r  r   ry  rD   r  r  r8  r  r  )yu{޿E(B?yӽu{?(YJV?)COMPLEX_DTYPESr+   r   rv  r  r  r   r   r  r}  r   r   rc  r5   r   )rY   r   rZ   rb   r  r  rr  rs  r  rc   r~  r  rU  s                r4   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+ "/ ": $r6   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  r
  r   rD   rC   r{  r  r   r  )gqqgqq?gdq?r8  r  r  )r  r+   r   rv  r  r  r   r   r   r5   r   )rY   r   rZ   rb   r  r  rr  rs  r  rc   rU  s              r4   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 "/ ": !r6   r   rO  )r=   rM  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 )Nr  r   r=   rY  r@   rR   r  r   rC   expected efficient rank , got i  r  r    )r+   r   RandomStateasarrayr[  r  r   r   r
   r   r   r5   r   rY   r   rO  r  r  r  rZ   rT  rb   rr  rs  r  rc   rU  s                 r4   test_random_exactTestLstsq.test_random_exactT  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"<	>) r6   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 )Nr  rj   r   r=   rY  rC   rR   r  r   r  r  i  r  r  r  )r+   r   r  r  r[  r  r   r   r   r   r   r5   r   r  s                 r4   test_random_complex_exact#TestLstsq.test_random_complex_exactx  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"<	>' r6   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 )Nr  )r=      )rM  rC   r{  r   r=   rY  r@   rR   r  r   rC   r  r  rp  r8  r  r  )r+   r   r  r  rv  r  r  r[  r  r   r   r   rt  r5   r   rY   r  r   rO  mr  r  rZ   rT  rb   rr  rs  r  rc   rU  s                  r4   test_random_overdetTestLstsq.test_random_overdet  sY   ii##D) [E.%.%=%=M%2	JJszz1&'9G!&qA&(C!qD'M&:AdG "*!&qA "

3::q!f+=U KA!"B!"B"'6C4=4=#?C !$AA #AA#AF.Fqc J++,#-/ 0+*+\!a-H/1Ibhh4G/G/1Ibhh4G/G4<]O2L	N "*	 &3 &> / !r6   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 )Nr  r  r{  rj   r   r=   rY  rC   rR   r  r   r  r  rD   r  r8  r  r  )r+   r   r  r  rv  r  r  r[  r  r   r   r   rt  r5   r   r  s                  r4   test_random_complex_overdet%TestLstsq.test_random_complex_overdet  ss   ii##D)#^E.%.%=%=M%2	JJszz1&'9Bszz1&?Q<Q'Q-24!&qA&(C!qD'M&:AdG "*!&qA "

3::q!f+=U KA "#B!"B"'6C4=4=#?C !$AA #AA#AF.Fqc J++,#-/ 0+&'a!)D+-	"((0C+C+-	"((0C+C08.H	J "* &3 &> / $r6   c           
      x   [        5        nUR                  [        S5        S S S 5        [        R                  " S5      n[
        R                  " [        S[        R                  SS5       H  u  p4pVnUR                  U5      n[        R                  " XCS9n	UR                  5       n
U	R                  5       n[        XUXvUS9nUS   nUS   n[        US:H  S	U 35        [        [        X5      U	S
[!        UR"                  5      -  S
[!        UR"                  5      -  SU 3S9  M     g ! , (       d  f       GN= f)NzIinternal gelsd driver lwork query error,.*Falling back to 'gelss' driver.))rD   r=   r~  r|  r{  r   )r  ry   r  r  r   rC   r  r8  r  r  )r   filterRuntimeWarningr+   r   r  r  r  rv  r  r  r  r   r   r   r   r5   r   )rY   suprq  r   r  r  r  ry   rZ   rb   rr  rs  r  rc   rU  s                  r4   rz   TestLstsq.test_check_finite  s    CJJ~9: ! 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**
D9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   rC   r   ))r   r@   r  )r@   r   )r@   )r  )r@   rC   rD   r   r   r  rC   zexpected rank 0)	r+   r   r   r   r   r   r  r   r   )	rY   a_shapeb_shaperb   rc   residuesranksresidues_should_bes	            r4   r   TestLstsq.test_empty  s    !3G  A#('):A#> ABHHgaj]WQR[%@AB4;AJ"((4.')yy~~aa~'@!'C 6DAI01BHHTN+!3r6   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   )
rY   r  r   rZ   rb   rc   r  r  r  r  s
             r4   r[  TestLstsq.test_empty_dtype  s     HHV4(HHQd#$Q{Tvv{{BFF1D12771D3IJ1MSSww+%%%r6   r   N)r   r   r   r   r  r  r  r  r  r   r   r   r  r  skipifr(   r  r  r  r  rz   r   r   r   r+   r
   r   r   r[  r   r   r6   r4   rv  rv    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&r6   rv  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 r\R                  R                  S\\R$                  \\R(                  /5      S 5       rSrg)TestPinvi  c                 B    [         R                  R                  S5        g r  r  r  s    r4   r  TestPinv.setup_method  r  r6   c                     [        / SQ/ SQ/ SQ/[        S9n[        U5      n[        [	        X5      [
        R                  " S5      5        g Nr  r
  r  r   rR   r   r   r   r   r   r+   r   rY   rZ   a_pinvs      r4   test_simple_realTestPinv.test_simple_real  s4    9i4EBa!#a."&&)<r6   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  r
  r  r   rj   )r  r  rG   )rA   r*  r@   )rR   rC   rD   rR   r  r  s      r4   r,  TestPinv.test_simple_complex  sY    Iy*5
Iy'I-2"4 44 a!#a."&&)<r6   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  r
  rG   r  r  r   g|qgԕVUUſgc8?gqg^0<gq?g9?gԕVUU?g:87ȿr   r   r   r   rY   rZ   r  r   s       r4   test_simple_singularTestPinv.test_simple_singular!  sB    9i35AaLKKM N 	"&3r6   c                     [        / SQ/ SQ/[        S9n[        U5      n[        SS/SS/SS	//5      n[        X#5        g )
Nr  r
  r   g֋8g#q?g#qg#q?gIq?g#q̿r  r  s       r4   test_simple_colsTestPinv.test_simple_cols)  sL    9i(6a;
3&
3%{35 6 	"&3r6   c                     [        SS/SS/SS//[        S9n[        U5      n[        / SQ/ S	Q/5      n[        X#5        g )
NrD   rC   rR   r@   r*  rA   r   )gDpTUUgQUUտgvWUU?)gDpTUU?gQUU?g&>ڿr  r  s       r4   test_simple_rowsTestPinv.test_simple_rows1  sI    Aq6Aq6Aq6*%8a@?A B!&3r6   c                     [        / SQ/ SQ/ SQ/5      n[        USS9n[        [        X5      [        R
                  " S5      5        g )Nr  )r@   r*  r   r  Frx   rR   )r   r   r   r   r+   r   r  s      r4   rz   TestPinv.test_check_finite8  s5    9j*56ae,!#a."&&)<r6   c                 n    / SQ/ SQ/ SQ/n[        U5      n[        / SQ/ SQ/ SQ/5      n[        X#5        g )Nr  r
  r  r  r  r  )r   r   r   r  s       r4   test_native_list_argument"TestPinv.test_native_list_argument=  s;    	9-aLKKM N 	"&3r6   c                    Sn[        [        R                  R                  X5      5      u  p#[        R                  " S5      R                  SS5      nUR                  5       nSUS'   SnSn[        XFS	S
9nXX-  U-  U-
  n	XH-  U-  U-
  n
[        [        R                  R                  U	5      SSS9  [        [        R                  R                  U
5      SSS9  [        XFUS
9nXX-  U-  U-
  n	XH-  U-  U-
  n
[        [        R                  R                  U	5      SSS9  [        [        R                  R                  U
5      SSS9  g )N   g     A@rG   r*  gMbP?r   h㈵>g?rJ   r  r   gMb@?r  gvIh%,=g;O@{Gz?r   )r#   r+   r   r  r   rW   r  r   r   r  r   )rY   rO  q_a_mrZ   r  r   a_padiff1adiff2s              r4   test_atol_rtolTestPinv.test_atol_rtolE  s   "))..&'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Ar6   r3   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   rY   r3   rZ   r  s       r4   r   TestPinv.test_empty`  sU    HHV2&a{{a||tBFF1B$78>>>>>r6   r   N)r   r   r   r   r  r  r,  r  r  r  rz   r  r  r   r   r   r   r+   r
   r   r   r   r   r   r6   r4   r  r    sg    =
=444=
4B6 [[TE2::w#MN? O?r6   r  c                       \ 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)TestPinvSymmetricih  c                 B    [         R                  R                  S5        g r  r  r  s    r4   r  TestPinvSymmetric.setup_methodj  r  r6   c                     [        / SQ/ SQ/ SQ/[        S9n[        R                  " XR                  5      n[        U5      n[        [        R                  " X5      [        R                  " S5      5        g r  )r   r   r+   r   rt  r   r   r   r  s      r4   r  "TestPinvSymmetric.test_simple_realm  sJ    9i4EBFF1ccNq!"&&"3RVVAY?r6   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  r
  r  r   r   rF   )
r   r   r+   r   rt  r  svdr   r   r   )rY   rZ   r]   r  vtr  a_pinvhs          r4   test_nonpositive"TestPinvSymmetric.test_nonpositives  su    9i35AFF1ccN99==#b	!
FF15"a(!&2r6   c                 B   [        / SQ/ SQ/ SQ/[        S9S[        / SQ/ SQ/ SQ/[        S9-  -   n[        R                  " XR	                  5       R
                  5      n[        U5      n[        [        R                  " X5      [        R                  " S	5      5        g r  )	r   r   r+   r   r}  rt  r   r   r   r  s      r4   r,  %TestPinvSymmetric.test_simple_complex}  sv    Iy*5
Iy'I-2"4 44 FF1ffhjj!q!"&&"3RVVAY?r6   c                    [        / SQ/ SQ/ SQ/[        S9n[        R                  " XR                  5      n[        UR                  5       5      n[        [        R                  " X5      [        R                  " S5      5        g r  )	r   r   r+   r   rt  r   tolistr   r   r  s      r4   r  +TestPinvSymmetric.test_native_list_argument  sQ    9i4EBFF1ccNqxxz"!"&&"3RVVAY?r6   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)rD   rF   r   )rF   rC   rF   )r   rF   rD   r   r  )r+   r   r   r   )rY   rZ   ps      r4   test_zero_eigenvalue&TestPinvSymmetric.test_zero_eigenvalue  sF     HHj+z:;!H	151	151r6   c                 L   Sn[        [        R                  R                  X5      5      u  p#[        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[        XFSS	9nXH-  U-  U-
  n	XX-  U-  U-
  n
[        [        U	5      US
S9  [        [        U
5      SSS9  [        XFUS	9nXH-  U-  U-
  n	XX-  U-  U-
  n
[        [        U	5      SS
S9  [        [        U
5      SS
S9  g )Nr  )r@   rR   rC   rD   vk?gﭣ>gu>rA   )r@   rR   rC   rD   r  rJ   rJ   r  g1?r  rY  r   r  gdy=r  -C6?)	r#   r+   r   r  rp   rt  r   r   r   )rY   rO  r  r  rZ   r  r  r   r  r  r  s              r4   r   TestPinvSymmetric.test_atol_rtol  s"   "))..&'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5r6   r3   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   r  s       r4   r   TestPinvSymmetric.test_empty  sU    HHV2&q{{a||tBFF1B$78>>>>>r6   r   N)r   r   r   r   r  r  r  r,  r  r  r  r   r   r   r   r+   r
   r   r   r   r   r   r6   r4   r  r  h  s_    @3@@266 [[TE2::w#MN? O?r6   r  scale)g#B;r<   @xDpinv_c                     [         R                  " SS/SS//5      U -  n[         R                  " S[         R                  " U5      -  5      nU" U5      n[        XC5        g )NrD   r   g|=r<   )r+   r   rp   r   )r  r  rc   r   x_invs        r4   test_auto_rcondr    sO     	1a&1e*%&.AwwrBGGAJ'H!HEE$r6   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)TestVectorNormsi  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=   rH   r   rC   Complex)rj   rg   y              @)
r+   rm  r   maxr0   r1   realr   r   sqrt)rY   r   rc   r  s       r4   
test_typesTestVectorNorms.test_types  s    \\*-E%0AeRXXe_0055:;CDGRWWR[s;DAJ#>	 . \\),EU3AeRXXe_0055:;CDGRWWR[s;DAJ#>	 -r6   c                 L    [        S/[        S9n[        [        U5      U5        g )Nr  r   )r   r
   r   r   r  s     r4   test_overflowTestVectorNorms.test_overflow  s      4&(DGQ'r6   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     @rD   i'  r   r   r  r  zO: Result should equal either 0.0 or 0.5 (depending on implementation of snrm2).rJ   )r  )r   r
   r   r   AssertionErrorr   )rY   rZ   rP  s      r4   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)rD   r   rR   r   rC   r  rR   )r   r   r  s    r4   test_zero_normTestVectorNorms.test_zero_norm  s$    T)Q'+T)Q'+r6   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 )
NrC   rD   rR   r@   r  r  5D+@6f~@rd  )r+   r   r   r   r  s     r4   test_axis_kwdTestVectorNorms.test_axis_kwd  sc    HH1v1v&'!+S1QQ:z*B)Ca)GHQ*bTAXJN;r6   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 )NrC   rD   rR   r@   r  T)r  keepdimsr(  r)  )rC   rD   rC   r}   g      @)r+   r   r   r   r   r   r  s      r4   test_keepdims_kwd!TestVectorNorms.test_keepdims_kwd  s    HH1v1v&'!+S1T*j*567!;<9$%QD9bTB4L>A;MNr6   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   rD   rF   r<   )r'   r+   r   r-   r   r   )rY   rc   r~  s      r4   test_large_vector!TestVectorNorms.test_large_vector  s?    %(HHeWBJJ/"1gS!r6   r   N)r   r   r   r   r  r  r"  r%  r*  r.  r   r   r  r)   r2  r   r   r6   r4   r  r    sN    ?(A,<
O [[I.DE" F"r6   r  c                   ,    \ rS rSrS rS rS rS rSrg)TestMatrixNormsi  c           
         [         R                  R                  S5        S GH  u  p[         R                  [         R                  [         R
                  [         R                  [         R                  4 GHg  nS[         R                  R                  X5      R                  U5      -  n[         R                  " UR                  [         R                  5      (       aE  US[         R                  R                  X5      -  -   R                  U5      n[         R                  nO[         R                  nS SSSSS	[         R                  [         R                  * 4 H~  n[        XFS
9n[         R                  R                  XFS
9n[         R                   " Xx5      (       a  MF  [         R                  R                  UR                  U5      US
9n[#        Xx5        M     GMj     GM     g )Nr  )rn   )rD   rR   )rR   rD   )r@   r@   r*  )r*  r@   r  y              $@frorD   rF   rC   )ord)r+   r   r  r
   r-   r   r/   int64r  r  r  r   r  rj  r   r  allcloser   )	rY   rO  r  rR  rP  t_highr  actualdesireds	            r4   test_matrix_norms!TestMatrixNorms.test_matrix_norms  s;   
		tBDAZZR\\2=="((R.55a88=="*<*<==S299??1#888@@CA]]FZZF"E1b!R"&&IE!!/F iinnQn:G ;;v77"$))..&1Au."M'8 J S Cr6   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 )
NrC   rD   rR   r@   r  r}  )r9  r  r   r/  )r+   r   r   rj  swapaxesr   r   r   )rY   rZ   rb   rQ  r  s        r4   r*  TestMatrixNorms.test_axis_kwd  s   HH1v1v&'!+S1V,Q1%266?'177--agg-.'Q1%16:V,177--agg-.-.r6   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   rC   rR   r@   r*  r}  T)r9  r  r-  rD   r/  )r+   r   rW   r   rj  r   r   r   )rY   rZ   rb   rQ  s       r4   r.  !TestMatrixNorms.test_keepdims_kwd"  sd    IIc%--aAq9Vd;6177"#r6   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   rJ   r   r  r   T)r-  rn   )r   rR   rn  )r+   r   r   r   r   r  s     r4   r   TestMatrixNorms.test_empty)  s    HHVQ$QQ$8Q.0@AHHVQ$QQ$8Q.0@Ar6   r   N)	r   r   r   r   r?  r*  r.  r   r   r   r6   r4   r5  r5    s    9(/"$	Br6   r5  c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)TestOverwritei5  c                 (    [        [        SS/5        g NrR   rR   rn  )r&   r   r  s    r4   
test_solveTestOverwrite.test_solve6      EFD>2r6   c                 (    [        [        SS/5        g rL  )r&   r   r  s    r4   test_solve_triangular#TestOverwrite.test_solve_triangular9  s    ,vtn=r6   c                 "    [        S SS/5        g )Nc                     [        SX5      $ )NrN   )r   )r[   rb   s     r4   <lambda>1TestOverwrite.test_solve_banded.<locals>.<lambda>=  s    ,vr*Er6   )r@   rA   rA   r%   r  s    r4   test_solve_bandedTestOverwrite.test_solve_banded<  s    E#TN	,r6   c                 (    [        [        SS/5        g )N)rC   rA   rX  )r&   r   r  s    r4   test_solveh_banded TestOverwrite.test_solveh_banded@  s    MFD>:r6   c                 &    [        [        S/5        g NrM  )r&   r   r  s    r4   test_invTestOverwrite.test_invC      C&*r6   c                 &    [        [        S/5        g r_  )r&   r   r  s    r4   test_detTestOverwrite.test_detF  rb  r6   c                 (    [        [        SS/5        g )N)rR   rC   rn  )r&   r   r  s    r4   
test_lstsqTestOverwrite.test_lstsqI  rP  r6   c                 &    [        [        S/5        g r_  )r&   r   r  s    r4   	test_pinvTestOverwrite.test_pinvL  s    D6(+r6   c                 &    [        [        S/5        g r_  )r&   r   r  s    r4   
test_pinvhTestOverwrite.test_pinvhO  s    EF8,r6   r   N)r   r   r   r   rN  rR  rY  r\  r`  rd  rg  rj  rm  r   r   r6   r4   rJ  rJ  5  s/    3>,;++3,-r6   rJ  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)TestSolveCirculantiS  c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[        X5      n[        [	        U5      U5      n[        X45        g N)rD   rC   rR   r*  )rD   rF   rD   r   )r+   r   r   r   r   r   rY   rQ  rb   rc   ys        r4   test_basic1TestSolveCirculant.test_basic1U  s@    HH\"HH]#A!)A,"r6   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rD   rC   r;  r  r@   rR   r+   r   r   rW   r   r   r   r   rs  s        r4   test_basic2TestSolveCirculant.test_basic2\  sL    HH^$IIbM!!!Q'A!)A,"r6   c                     [         R                  " / SQ5      n[         R                  " S5      R                  SSS5      n[	        X5      n[        [        U5      U5      n[        X45        g )Nrx     r@   rR   rC   rz  rs  s        r4   test_basic3TestSolveCirculant.test_basic3d  sN    HH^$IIbM!!!Q*A!)A,"r6   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  ry  r  r*  r  r@   rC   y              ?rz  rs  s        r4   rk   TestSolveCirculant.test_complexl  sR    HH&'IIaL  A&-A!)A,"r6   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+   r   r  r  r   r   r   r   )rY   r  rQ  rb   rc   rt  s         r4   test_random_b_and_c&TestSolveCirculant.test_random_b_and_ct  sR    ii##E*IIbMIIbMA!)A,"r6   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rD   rD   r   r   )rD   rC   rR   r@   r   )singular)r+   r   r   r   r   r   r   r    )rY   rQ  rb   rc   rt  r~  rnkr  s           r4   test_singular TestSolveCirculant.test_singular}  sR    HH\"HH\"A73y|Q/k?A9r6   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)rF   g      @rR   g      @)rD   rA   rA   g      @)r   r   rD   rD   r  )rD   rF   r   r   rD   )baxis)r@   rC   rR   r   rF   )r  outaxis)rC   rR   r@   rC   )caxis)r+   r   r   r   r   
empty_liker   r   ro  rt  r   moveaxisrB  )rY   rQ  rb   rc   r   s        r4   test_axis_args!TestSolveCirculant.test_axis_args  s#    HH()N+;<= HHlL-@AA*QWWi(==#!)AaDJJL"9133?Aq!)AaDJJL"9133?Aq$A26QWWi(Ar1-x8 BKK1a0!##Q?QWWi($r6   c                 j    / SQn/ SQn[        X5      n[        [        U5      U5      n[        X45        g rr  )r   r   r   r   rs  s        r4   r   -TestSolveCirculant.test_native_list_arguments  s.    A!)A,"r6   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   rR   r   )r+   r   r   r   r   r   r   r   )rY   r  r   rQ  rb   rc   x1s          r4   r   TestSolveCirculant.test_empty  s     HHRt$HHRt$A!ww$ww/"))AT*B*,''!4*@BBG%H 	H H HHV4(Q"xx6!!!xx177"""r6   r   N)r   r   r   r   ru  r{  r  rk   r  r  r  r   r   r   r   r   r   r+   r
   r   r   r   r   r   r6   r4   rp  rp  S  s    :%2 [[Vc5"**gr||%TU[[Vc5"**gr||%TU# V V#r6   rp  c                       \ 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)TestMatrix_Balancei  c                 .    [        [        [        S5        g )NzSome string for fail)r   r   r"   r  s    r4   test_string_arg"TestMatrix_Balance.test_string_arg  s    j.2HIr6   c           	          [        [        [        [        R                  " SS/S[        R
                  //5      5        [        [        [        [        R                  " SS/S[        R                  //5      5        g )NrD   rC   rR   )r   r   r"   r+   r   rj  nanr  s    r4   test_infnan_arg"TestMatrix_Balance.test_infnan_arg  sT    j.hhABFF45	7j.hhABFF45	7r6   c           	          [        [        R                  " SS/SS//5      5      u  p[        [        R                  " [        R
                  " [        R                  " U5      5      5      S/5        g )Nr  rD   r   r*  )r"   r+   r   r   difflog2rp   )rY   r  rt  s      r4   test_scalingTestMatrix_Balance.test_scaling  sL    bhhq	D!9'=>? 	
 34qc:r6   c                     [         R                  " / SQ/ SQ/ SQ/5      n[        U5      u  p#[        [	        X15      R                  U5      U5        g )N)rD   r   r  )rD   rD   r  )r   g      Y@rD   )r+   r   r"   r   r   r   )rY   rP  rc   rt  s       r4   test_scaling_order%TestMatrix_Balance.test_scaling_order  s:    HHlL-@Aa a*A.r6   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  rD   r   separater*  rC   )r"   r+   r   r   r  r  r   r   )rY   r  rt  zs       r4   test_separate TestMatrix_Balance.test_separate  s\    "288dAYq	,B#C,-/	6ARWWRWWQZ(1#.299Q<(r6   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 )N)rC   rC   rM  rD   r  )r   rD   rA   r*  r@   rR   rC   )r!   r+   r   r  r"   r   	ones_liker   )rY   rP  rc   rt  r  s        r4   test_permutation#TestMatrix_Balance.test_permutation  sl    rwwv(@wwv("1q1	6A2<<?+288$9:;r6   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)rJ   rJ   rJ   rJ   >)rJ   rJ   rJ   rJ   rJ   )rQ   rQ   rJ   rJ   rJ   )rJ   rJ   r  rJ   rJ   )r  rJ   rJ   rJ   )rJ   r/  rJ   rJ   )r<   rJ   r  rJ   )rJ   r<   rJ   r/  )r;  rJ   r<   rJ   )r/  r/         r<   )r;  r  r  rJ   )r/  r  r<   r/  rD   r  r   )
r+   r   r"   r  r   r   r   rp   r   r   )rY   casesrP  rc   rt  r  r  ips           r4   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 r6   r3   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   rC   Tr  )r+   r   r"   r  r   r   )rY   r3   rZ   rb   rR  b_nt_nr  permscale_nperm_ns              r4   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\\)))r6   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   r6   r4   r  r    s_    J7;/
)<38 [[TC

GR\\#RS* T*r6   r  r   )Lr  numpyr+   r   r   r   r   r   r   r	   r
   numpy.randomr   numpy.testingr   r   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)   r-   r,   r  r   r/   r.   r  DTYPESr5   r8   r   r  r  r  r  rt  rv  r  r  r   r   r  r  r5  rJ  rp  r  r   r6   r4   <module>r     s       B B B  *= = = = =
 8 < 'zz2::r}}5,,r~~>	~	%dV dVNIV IVX
d$ d$NOJ OJd/= /=dT Tnj& j&Z	T? T?nK? K?\ "344-0% 1 5%9" 9"x7B 7Bt- -<a# a#HT* T*r6   