
    Jiכ                       S SK r S SKrS SKrS SKrS SKrS SKJrJrJrJ	r	J
r
JrJrJr  S SKJrJrJrJrJrJr  S SKrS SKJr  S SKJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)  S SK*J+r+  S SK,J-r-J.r.  S SK/J0r0  S S	K1J2r2  \R                  \Rf                  \Rh                  4r5\Rl                  \Rn                  \Rp                  4r9\5\9-   r:\Rv                  Ry                  S
SS0SS00 // SQS9r=\Rv                  Ry                  SSS0SS00 // SQS9r>S r? " S S5      r@ " S S5      rA " S S5      rB " S S5      rC " S S5      rD " S S5      rES6S jrF " S  S!5      rG " S" S#5      rH " S$ S%5      rI\Rv                  Ry                  S&S'5      \Rv                  Ry                  S(\\45      S) 5       5       rJ " S* S+5      rK " S, S-5      rL " S. S/5      rM " S0 S15      rN " S2 S35      rO " S4 S55      rPg)7    N)arangearraydotzerosidentity	conjugate	transposefloat32)assert_equalassert_almost_equalassert_assert_array_almost_equalassert_allcloseassert_array_equal)raises)solveinvdetlstsqpinvpinvhnormsolve_bandedsolveh_bandedsolve_triangularsolve_circulant	circulantLinAlgError
block_diagmatrix_balanceqrLinAlgWarningassert_no_overwrite)check_free_memoryIS_MUSL)	HAS_ILP64)skip_xp_invalid_argoverwrite_kwoverwrite_aTF)TrueFalseNone)idsoverwrite_b_kwoverwrite_bc                     U nU[         R                  :X  a  [         R                  nO$U[         R                  :X  a  [         R                  n[         R
                  " U5      R                  $ )z;Get the epsilon for dtype, possibly downcast to BLAS types.)np
longdoublefloat64clongdouble
complex128finfoeps)dtypdts     _/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_basic.py	_eps_castr<   +   sE    	B	R]]ZZ	r~~	]]88B<    c            	       *   \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
\\\R$                  \\R(                  /5      \R                  R                  S\\\R$                  \\R(                  /5      S 5       5       rSrg)TestSolveBanded5   c                 \   [        / SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/ SQ/ SQ/5      nS	u  p4[        / S
Q5      nUR                  SS5      n[        SS/SS/SS/SS//5      n[        / SQ/ SQ/ SQ/ SQ/5      nXVXx4 H%  n	[        X44X)5      n
[        [	        X5      U	5        M'     g )N      ?   r   r         r         rD   rJ   r                 rD   rH   rJ   rK   rG   rD   rO   rF   rK   rN   r   rJ   rM   r   r   rJ   rK         $@rQ          @g      ,@rM   rK   rJ   rF   rG      rK   r   r   r   r   r   r   rK   r   rK   r   r   r   reshaper   r   r   selfaablub4b4by1b4by2b4by4bxs              r;   	test_realTestSolveBanded.test_real7   s    ?! !# $ O""!# $ )*

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3::q!f+=U KA "#B!"B"'6C4=4=#?C !$AA #AA#AF.Fqc J++,#-/ 0+&'a!)D+-	"((0C+C+-	"((0C+C08.H	J "* &3 &> / $r=   c           
         [         R                  " 5          [         R                  " SS[        5        S S S 5        [        R
                  " S5      n[        R                  " [        S[        R                  SS5       H  u  p#pEnUR                  U5      n[        R
                  " X2S9nUR                  5       n	UR                  5       n
[        XUXeUS9nUS   nUS	   n[        US	:H  S
U 35        [        [!        X|5      US[#        UR$                  5      -  S[#        UR$                  5      -  SU 3S9  M     g ! , (       d  f       GN= f)Nr  zIinternal gelsd driver lwork query error,.*Falling back to 'gelss' driver.))rK   rD   r6  r4  r3  r   )r8  r   r*   r0   r   rJ   r9  r  r:  rD  )warningscatch_warningsfilterwarningsRuntimeWarningr2   r   	itertoolsproductr<  r.  r=  r  r  r   r   r   r   r<   r   )r`   r)  r   r>  r8  r  r   ra   ri   r*  r+  r   rj   rV  s                 r;   r   TestLstsq.test_check_finiteT  s*   $$&##H%FGUW ' XX)*kL'66++	- >E} 		% A)A BBm%1$-/C AAAAAF=aSABCIq!#i&8!8!#i&8!8&.}o$>@%- '&s   D;;
E
c           
         S H  u  p[         R                  " U5      n[        [         R                  " U5      U5      u  pEpg[	        U[         R                  " US   4USS  -   5      5        US   (       a  [         R
                  " S5      O [         R                  R                  USS9S-  n[	        XX5        [        US:H  S5        [	        U[         R
                  " S5      5        M     g )N))r   rJ   r   ))r   rG   ro  )rG   r   )rG   )rp  r  rK   r   r   rB  rJ   zexpected rank 0)	r2   r   r   r   r   r   r  r   r   )	r`   a_shapeb_shaperi   rj   residuesranksresidues_should_bes	            r;   r   TestLstsq.test_emptyt  s    !3G  A#('):A#> ABHHgaj]WQR[%@AB4;AJ"((4.')yy~~aa~'@!'C 6DAI01BHHTN+!3r=   r  r   c                 :   [         R                  " SUS9n[         R                  " SUS9n[        X45      u  pVpxUR                  S:X  d   e[        [         R                  " SUS9[         R
                  " SUS95      S   R                  n	UR                  U	:X  d   eg rf  )r2   r   r   r  r   r   r   )
r`   r  r   ra   ri   rj   rs  rt  ru  r  s
             r;   r  TestLstsq.test_empty_dtype  s     HHV4(HHQd#$Q{Tvv{{BFF1D12771D3IJ1MSSww+%%%r=   r   N)r   r   r   r   r=  r?  rG  rK  rN  r   r   r   r<  rV  rR  r&   rJ  rY  ra  rd  r   r   r   r   r2   r
   r   r   r  r   r   r=   r;   r.  r.  a  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&r=   r.  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
\\R"                  \\R&                  /5      S 5       rSrg)TestPinvi  c                     [        / SQ/ SQ/ SQ/[        S9n[        U5      n[        [	        X5      [
        R                  " S5      5        g Nr  rm  rn  r   rY   r   r   r   r   r   r2   r   r`   ra   a_pinvs      r;   test_simple_realTestPinv.test_simple_real  s4    9i4EBa!#a."&&)<r=   c                     [        / SQ/ SQ/ SQ/[        S9S[        / SQ/ SQ/ SQ/[        S9-  -   n[        U5      n[        [	        X5      [
        R                  " S	5      5        g 
Nr  rm  rn  r   rq   )r  ro  rN   )rH   r'  rG   )rY   rJ   rK   rY   r~  r  s      r;   r)  TestPinv.test_simple_complex  sY    Iy*5
Iy'I-2"4 44 a!#a."&&)<r=   c                     [        / SQ/ SQ/ SQ/[        S9n[        U5      n[        / SQ/ SQ/ SQ/5      n[        X#5        g )Nr  rm  rN   ro  r  r   g|qgԕVUUſgc8?gqg^0<gq?g9?gԕVUU?g:87ȿr   r   r   r   r`   ra   r  r   s       r;   test_simple_singularTestPinv.test_simple_singular  sB    9i35AaLKKM N 	"&3r=   c                     [        / SQ/ SQ/[        S9n[        U5      n[        SS/SS/SS	//5      n[        X#5        g )
Nr  rm  r   g֋8g#q?g#qg#q?gIq?g#q̿r  r  s       r;   test_simple_colsTestPinv.test_simple_cols  sL    9i(6a;
3&
3%{35 6 	"&3r=   c                     [        SS/SS/SS//[        S9n[        U5      n[        / SQ/ S	Q/5      n[        X#5        g )
NrK   rJ   rY   rG   r'  rH   r   )gDpTUUgQUUտgvWUU?)gDpTUU?gQUU?g&>ڿr  r  s       r;   test_simple_rowsTestPinv.test_simple_rows  sI    Aq6Aq6Aq6*%8a@?A B!&3r=   c                     [        / SQ/ SQ/ SQ/5      n[        USS9n[        [        X5      [        R
                  " S5      5        g )Nr  )rG   r'  r   rn  Fr   rY   )r   r   r   r   r2   r   r  s      r;   r   TestPinv.test_check_finite  s5    9j*56ae,!#a."&&)<r=   c                 n    / SQ/ SQ/ SQ/n[        U5      n[        / SQ/ SQ/ SQ/5      n[        X#5        g )Nr  rm  r  r  r  r  )r   r   r   r  s       r;   test_native_list_argument"TestPinv.test_native_list_argument  s;    	9-aLKKM N 	"&3r=   c                    [         R                  R                  S5      nSn[        UR                  X"45      5      u  p4[         R                  " S5      R                  SS5      nUR                  5       nSUS'   SnS	n[        XWS
S9n	Xi-  U-  U-
  n
XY-  U-  U-
  n[        [         R                  R                  U
5      SSS9  [        [         R                  R                  U5      SSS9  [        XWUS9n	Xi-  U-  U-
  n
XY-  U-  U-
  n[        [         R                  R                  U
5      SSS9  [        [         R                  R                  U5      SSS9  g )NrL  r  g     A@rN   r'  gMbP?r   h㈵>g?rQ   r  gMb@?r  r  g;O@{Gz?r   )r2   rM  rN  r!   r   r^   r  r   r   r  r   )r`   rO  rP  q_a_mra   r  r   a_padiff1adiff2s               r;   test_atol_rtolTestPinv.test_atol_rtol  s*   ii##D)#**aV$%iio%%a+HHJ$ 3+1qS3& 			v.5A		v.FC 3-1qS3&		v.DA		v.DAr=   r:   c                     [         R                  " SUS9n[        U5      nUR                  S:X  d   eUR                  [        [         R
                  " SUS95      R                  :X  d   eg rf  )r2   r   r   r  r   r   r`   r:   ra   r  s       r;   r   TestPinv.test_empty  sU    HHV2&a{{a||tBFF1B$78>>>>>r=   r   N)r   r   r   r   r  r)  r  r  r  r   r  r  r   r   r   r   r2   r
   r   r   r   r   r   r=   r;   r{  r{    sb    =
=444=
4B8 [[TE2::w#MN? O?r=   r{  c                       \ rS rSrS rS rS rS rS rS r	\
R                  R                  S\\R                  \\R"                  /5      S	 5       rS
rg)TestPinvSymmetrici  c                     [        / SQ/ SQ/ SQ/[        S9n[        R                  " XR                  5      n[        U5      n[        [        R                  " X5      [        R                  " S5      5        g r}  )r   r   r2   r   ru  r   r   r   r  s      r;   r  "TestPinvSymmetric.test_simple_real  sJ    9i4EBFF1ccNq!"&&"3RVVAY?r=   c                 D   [        / SQ/ SQ/ SQ/[        S9n[        R                  " XR                  5      n[        R
                  R                  U5      u  p#nUS==   S-  ss'   [        R                  " X#-  U5      n[        U5      n[        U5      n[        XV5        g )Nr  rm  r  r   r   rM   )
r   r   r2   r   ru  r  svdr   r   r   )r`   ra   rd   ru  vtr  a_pinvhs          r;   test_nonpositive"TestPinvSymmetric.test_nonpositive  su    9i35AFF1ccN99==#b	!
FF15"a(!&2r=   c                 B   [        / SQ/ SQ/ SQ/[        S9S[        / SQ/ SQ/ SQ/[        S9-  -   n[        R                  " XR	                  5       R
                  5      n[        U5      n[        [        R                  " X5      [        R                  " S	5      5        g r  )	r   r   r2   r   r~  ru  r   r   r   r  s      r;   r)  %TestPinvSymmetric.test_simple_complex  sv    Iy*5
Iy'I-2"4 44 FF1ffhjj!q!"&&"3RVVAY?r=   c                    [        / SQ/ SQ/ SQ/[        S9n[        R                  " XR                  5      n[        UR                  5       5      n[        [        R                  " X5      [        R                  " S5      5        g r}  )	r   r   r2   r   ru  r   tolistr   r   r  s      r;   r  +TestPinvSymmetric.test_native_list_argument  sQ    9i4EBFF1ccNqxxz"!"&&"3RVVAY?r=   c                     [         R                  " / SQ/ SQ/ SQ/5      n[        U5      n[        X!-  U-  USS9  [        X-  U-  USS9  g )N)rK   rM   r   )rM   rJ   rM   )r   rM   rK   r   r  )r2   r   r   r   )r`   ra   ps      r;   test_zero_eigenvalue&TestPinvSymmetric.test_zero_eigenvalue	  sF     HHj+z:;!H	151	151r=   c                 p   [         R                  R                  S5      nSn[        UR                  X"45      5      u  p4[         R                  " / SQS/US-
  -  -   5      nUR
                  U-  U-  n[         R                  " / SQS/US-
  -  -   5      nUR
                  U-  U-  nSnS	n[        XWSS
9n	XY-  U-  U-
  n
Xi-  U-  U-
  n[        [        U
5      USS9  [        [        U5      SSS9  [        XWUS
9n	XY-  U-  U-
  n
Xi-  U-  U-
  n[        [        U
5      SSS9  [        [        U5      SSS9  g )NrL  r  )rG   rY   rJ   rK   vk?gﭣ>gu>rH   )rG   rY   rJ   rK   r  rQ   rQ   r  g1?r  rZ  r   r  gdy=r  -C6?)	r2   rM  rN  r!   rw   ru  r   r   r   )r`   rO  rP  r  r  ra   r  r  r   r  r  r  s               r;   r   TestPinvSymmetric.test_atol_rtol
	  s4   ii##D)#**aV$%GG2gY!_DECC!GaKgg/2$!*<=ccCi!m!Ar*1qS3& 	Vd5Ve%8 At,1qS3&Vd5Vd5r=   r:   c                     [         R                  " SUS9n[        U5      nUR                  S:X  d   eUR                  [        [         R                  " SUS95      R                  :X  d   eg rf  )r2   r   r   r  r   r   r   r  s       r;   r   TestPinvSymmetric.test_empty&	  sU    HHV2&q{{a||tBFF1B$78>>>>>r=   r   N)r   r   r   r   r  r  r)  r  r  r  r   r   r   r   r2   r
   r   r   r   r   r   r=   r;   r  r    sZ    @3@@268 [[TE2::w#MN? O?r=   r  scale)r  rC   rN  pinv_c                     [         R                  " SS/SS//5      U -  n[         R                  " S[         R                  " U5      -  5      nU" U5      n[        XC5        g )NrK   r   g|=rC   )r2   r   rw   r   )r  r  rj   r   x_invs        r;   test_auto_rcondr  .	  sO     	1a&1e*%&.AwwrBGGAJ'H!HEE$r=   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)TestVectorNormsi7	  c                    [         R                  S    H  n[         R                  " / SQUS9n[        S[         R                  " U5      R
                  R                  S-  5      n[        [        U5      [         R                  " S5      US9  [        [        US5      [         R                  " S5      US9  M     [         R                  S	    H  n[         R                  " / S
QUS9n[        S[         R                  " U5      R
                  R                  S-  5      n[        [        U5      [         R                  " S5      US9  [        [        US5      [         R                  " S5      US9  M     g )NAllFloatr  r   r   rD   rO   r   rJ   Complex)rq   rn   y              @)
r2   r%  r   maxr7   r8   realr   r   sqrt)r`   r   rj   r  s       r;   
test_typesTestVectorNorms.test_types9	  s    \\*-E%0AeRXXe_0055:;CDGRWWR[s;DAJ#>	 . \\),EU3AeRXXe_0055:;CDGRWWR[s;DAJ#>	 -r=   c                 L    [        S/[        S9n[        [        U5      U5        g )NrN  r   )r   r
   r   r   r  s     r;   test_overflowTestVectorNorms.test_overflowF	  s      4&(DGQ'r=   c                     [        S/S/S-  -   [        S9n [        [        U5      S-
  SSS9  g ! [         a    Sn[        [        U5      S-
  S	US
9   g f = f)N     @rK   i'  r   r   r  r  zO: Result should equal either 0.0 or 0.5 (depending on implementation of snrm2).rQ   )r;  )r   r
   r   r   AssertionErrorr   )r`   ra   r
  s      r;   test_stableTestVectorNorms.test_stableL	  sc    3%1#e)#73	A DGcM3T: 	A.CQ#sC@		As   0 #AAc                 d    [        [        / SQS5      S5        [        [        / SQS5      S5        g )N)rK   r   rY   r   rJ   r  rY   )r   r   r  s    r;   test_zero_normTestVectorNorms.test_zero_normY	  s$    T)Q'+T)Q'+r=   c                     [         R                  " SS/SS///S-  S5      n[        [        USS9SS//S-  5        [        [        USSS9S	/S-  /S-  5        g )
NrJ   rK   rY   rG   r  rB  5D+@6f~@r  )r2   r   r   r   r  s     r;   test_axis_kwdTestVectorNorms.test_axis_kwd]	  sc    HH1v1v&'!+S1QQ:z*B)Ca)GHQ*bTAXJN;r=   c           	          [         R                  " SS/SS///S-  S5      n[        USSS9n[        USS	///S-  5        [	        UR
                  S
:H  5        [        [        USSSS9S/S///S-  5        g )NrJ   rK   rY   rG   r  T)rC  keepdimsr  r  )rJ   rK   rJ   r   g      @)r2   r   r   r   r   r   r  s      r;   test_keepdims_kwd!TestVectorNorms.test_keepdims_kwdb	  s    HH1v1v&'!+S1T*j*567!;<9$%QD9bTB4L>A;MNr=   z64-bit BLAS requiredr  c                     [        SS9  [        R                  " S/[        R                  S9nSUS'   [	        U5      nA[        US5        g )NihB  )free_mbl        r   rK   rM   rC   )r%   r2   r   r4   r   r   )r`   rj   r  s      r;   test_large_vector!TestVectorNorms.test_large_vectori	  s?    %(HHeWBJJ/"1gS!r=   r   N)r   r   r   r   r  r  r  r  r  r  r   r   rR  r'   r  r   r   r=   r;   r  r  7	  sN    ?(A,<
O [[I.DE" F"r=   r  c                   ,    \ rS rSrS rS rS rS rSrg)TestMatrixNormsis	  c           
      |   [         R                  R                  S5      nS GH  u  p#[         R                  [         R                  [         R
                  [         R                  [         R                  4 GH>  nSUR                  X#45      R                  U5      -  n[         R                  " UR                  [         R                  5      (       a)  USUR                  X#45      -  -  n[         R                  nO[         R                  nS SSSSS	[         R                  [         R                  * 4 H~  n[        XWS
9n[         R                  R                  XWS
9n	[         R                   " X5      (       a  MF  [         R                  R                  UR                  U5      US
9n	[#        X5        M     GMA     GM     g )NrL  )ru   )rK   rY   )rY   rK   r  r  )r'  rG   r  y              $@frorK   rM   rJ   rK  )ord)r2   rM  rN  r
   r4   r   r6   int64r  r  r  r   r  r"  r   r  r  r   )
r`   rO  rP  r`  r  rQ  t_highr  actualdesireds
             r;   test_matrix_norms!TestMatrixNorms.test_matrix_normsu	  s4   ii##D)BDAZZR\\2=="((R,,aV4;;A>>=="*<*<==s22A6:::A]]FZZF"E1b!R"&&IE!!/F iinnQn:G ;;v77"$))..&1Au."M'8 J S Cr=   c                    [         R                  " SS/SS///S-  S5      n[        U[         R                  SS9n[        [         R                  " USS5      [         R                  S	S9n[        USS	S9n[        X#5        [        X45        [        X$5        [        UR                  UR                  s=:H  =(       a    UR                  :H  Os  5        [        USSS9n[        [         R                  " USS5      SS	S9n[        U[         R                  S	S9n[        X#5        [        X45        [        X$5        [        UR                  UR                  s=:H  =(       a    UR                  :H  5        g s  5        g )
NrJ   rK   rY   rG   r  r5  )r  rC  r   r,  )r2   r   r   r"  swapaxesr   r   r   )r`   ra   ri   r  r  s        r;   r  TestMatrixNorms.test_axis_kwd	  s   HH1v1v&'!+S1V,Q1%266?'177--agg-.'Q1%16:V,177--agg-.-.r=   c                     [         R                  " SSS9R                  SSSS5      n[        U[         R                  SS	S
9n[        USSS	S
9n[        X#5        [        UR                  UR                  :H  5        g )Nx   r  r   rJ   rY   rG   r'  r5  T)r  rC  r  rK   r,  )r2   r   r^   r   r"  r   r   r   )r`   ra   ri   r  s       r;   r  !TestMatrixNorms.test_keepdims_kwd	  sd    IIc%--aAq9Vd;6177"#r=   c                    [         R                  " S5      n[        [        U5      S5        [        [        USS9[         R                  " S5      5        [        [        USS9[         R                  " S5      5        [         R                  " S	5      n[        [        U5      S5        [        [        USS9[         R                  " S
5      5        [        [        USS9[         R                  " S5      5        g )Nr   rQ   r   rB  r   T)r  ru   )r   rY   ro  )r2   r   r   r   r   r  s     r;   r   TestMatrixNorms.test_empty	  s    HHVQ$QQ$8Q.0@AHHVQ$QQ$8Q.0@Ar=   r   N)	r   r   r   r   r  r  r  r   r   r   r=   r;   r  r  s	  s    9(/"$	Br=   r  c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)TestOverwritei	  c                 (    [        [        SS/5        g NrE  ro  )r$   r   r  s    r;   
test_solveTestOverwrite.test_solve	      EFD>2r=   c                 (    [        [        SS/5        g r  )r$   r   r  s    r;   test_solve_triangular#TestOverwrite.test_solve_triangular	  s    ,vtn=r=   c                 "    [        S SS/5        g )Nc                     [        SX5      $ )NrU   )r   )rb   ri   s     r;   <lambda>1TestOverwrite.test_solve_banded.<locals>.<lambda>	  s    ,vr*Er=   )rG   rH   rH   r#   r  s    r;   test_solve_bandedTestOverwrite.test_solve_banded	  s    E#TN	,r=   c                 (    [        [        SS/5        g )Nr(  r	  )r$   r   r  s    r;   test_solveh_banded TestOverwrite.test_solveh_banded	  s    MFD>:r=   c                 &    [        [        S/5        g NrE  )r$   r   r  s    r;   test_invTestOverwrite.test_inv	      C&*r=   c                 &    [        [        S/5        g r  )r$   r   r  s    r;   test_detTestOverwrite.test_det	  r  r=   c                 (    [        [        SS/5        g )N)rY   rJ   ro  )r$   r   r  s    r;   
test_lstsqTestOverwrite.test_lstsq	  r  r=   c                 &    [        [        S/5        g r  )r$   r   r  s    r;   	test_pinvTestOverwrite.test_pinv	  s    D6(+r=   c                 &    [        [        S/5        g r  )r$   r   r  s    r;   
test_pinvhTestOverwrite.test_pinvh	  s    EF8,r=   r   N)r   r   r   r   r  r  r
  r  r  r  r  r  r  r   r   r=   r;   r  r  	  s/    3>,;++3,-r=   r  c            	       *   \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
\\\R$                  \\R(                  /5      \R                  R                  S\\\R$                  \\R(                  /5      S 5       5       rSrg)TestSolveCirculanti	  c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[        X5      n[        [	        U5      U5      n[        X45        g N)rK   rJ   rY   r'  )rK   rM   rK   r   )r2   r   r   r   r   r   r`   r  ri   rj   r  s        r;   test_basic1TestSolveCirculant.test_basic1	  s@    HH\"HH]#A!)A,"r=   c                     [         R                  " / SQ5      n[         R                  " S5      R                  SS5      n[	        X5      n[        [        U5      U5      n[        X45        g )NrK   rJ   r8  r  rG   rY   r2   r   r   r^   r   r   r   r   r$  s        r;   test_basic2TestSolveCirculant.test_basic2	  sL    HH^$IIbM!!!Q'A!)A,"r=   c                 *   [         R                  " / SQ5      n[         R                  " S5      R                  SSS5      n[	        X5      n[        [        U5      UR                  SS5      5      R                  UR                  5      n[        X45        g )Nr(  r  rG   rY   rJ   rM   )	r2   r   r   r^   r   r   r   r   r   r$  s        r;   test_basic3TestSolveCirculant.test_basic3	  sh    HH^$IIbM!!!Q*A!)A,		!R 0199!''Br=   c                     [         R                  " / SQ5      n[         R                  " S5      R                  SS5      S-   n[	        X5      n[        [        U5      U5      n[        X45        g )N)ra  r)  r
  r'  ro  rG   rJ   y              ?r*  r$  s        r;   rr   TestSolveCirculant.test_complex	  sR    HH&'IIaL  A&-A!)A,"r=   c                     [         R                  R                  S5      nUR                  S5      nUR                  S5      n[	        X#5      n[        [        U5      U5      n[        XE5        g )Ni1  r  )r2   rM  rT  r  r   r   r   r   )r`   rO  r  ri   rj   r  s         r;   test_random_b_and_c&TestSolveCirculant.test_random_b_and_c	  sX    ii##E*##A!)A,"r=   c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[        XSS9n[        [	        U5      U5      u  pEpg[        X45        [        [        [        X45        g )NrK   rK   r   r   )rK   rJ   rY   rG   r   )r  )r2   r   r   r   r   r   r   r   )r`   r  ri   rj   r  r  rnkru  s           r;   r   TestSolveCirculant.test_singular	  sR    HH\"HH\"A73y|Q/k?A9r=   c                    [         R                  " / SQ// SQ//5      n[         R                  " / SQ/ SQ/ SQ/5      n[        XSS9n[        UR                  S5        [         R
                  " U5      n[        [        US	   R                  5       5      UR                  5      US S 2S	S S 24'   [        [        US   R                  5       5      UR                  5      US S 2SS S 24'   [        X45        [        XSS
S9n[        UR                  S5        [        [         R                  " US
S	5      U5        [        [         R                  " USS5      UR                  SS9n[        UR                  S5        [        X45        g )N)rM   g      @rY   g      @)rK   rH   rH   g      @)r   r   rK   rK   r6  )rK   rM   r   r   rK   )baxis)rG   rJ   rY   r   rM   )r:  outaxis)rJ   rY   rG   rJ   )caxis)r2   r   r   r   r   
empty_liker   r   rp  ru  r   moveaxisr  )r`   r  ri   rj   r   s        r;   test_axis_args!TestSolveCirculant.test_axis_args	  s#    HH()N+;<= HHlL-@AA*QWWi(==#!)AaDJJL"9133?Aq!)AaDJJL"9133?Aq$A26QWWi(Ar1-x8 BKK1a0!##Q?QWWi($r=   c                 j    / SQn/ SQn[        X5      n[        [        U5      U5      n[        X45        g r#  )r   r   r   r   r$  s        r;   r   -TestSolveCirculant.test_native_list_arguments
  s.    A!)A,"r=   dt_cr   c           	         [         R                  " / US9n[         R                  " / US9n[        X45      nUR                  S:X  d   eUR                  [        [         R
                  " SUS9[         R                  " SUS95      R                  :X  d   e[         R                  " SUS9n[        X45      nUR                  S:X  d   eUR                  UR                  :X  d   eg )Nr   r   rY   r   )r2   r   r   r   r   r   r   r   )r`   rC  r   r  ri   rj   x1s          r;   r   TestSolveCirculant.test_empty
  s     HHRt$HHRt$A!ww$ww/"))AT*B*,''!4*@BBG%H 	H H HHV4(Q"xx6!!!xx177"""r=   r   N)r   r   r   r   r%  r+  r.  rr   r3  r  r?  r   r   r   r   r   r   r2   r
   r   r   r   r   r   r=   r;   r!  r!  	  s    :%2 [[Vc5"**gr||%TU[[Vc5"**gr||%TU# V V#r=   r!  c                       \ rS rSr\S 5       rS rS rS rS r	S r
S r\R                  R                  S	\\\R$                  \\R(                  /5      S
 5       rSrg)TestMatrix_Balancei/
  c                 .    [        [        [        S5        g )NzSome string for fail)r   r   r    r  s    r;   test_string_arg"TestMatrix_Balance.test_string_arg0
  s    j.2HIr=   c           	          [        [        [        [        R                  " SS/S[        R
                  //5      5        [        [        [        [        R                  " SS/S[        R                  //5      5        g )NrK   rJ   rY   )r   r   r    r2   r   r"  r  r  s    r;   test_infnan_arg"TestMatrix_Balance.test_infnan_arg4
  sT    j.hhABFF45	7j.hhABFF45	7r=   c           	          [        [        R                  " SS/SS//5      5      u  p[        [        R                  " [        R
                  " [        R                  " U5      5      5      S/5        g )NrS  rK   r   r'  )r    r2   r   r   difflog2rw   )r`   r  r  s      r;   test_scalingTestMatrix_Balance.test_scaling:
  sL    bhhq	D!9'=>? 	
 34qc:r=   c                     [         R                  " / SQ/ SQ/ SQ/5      n[        U5      u  p#[        [	        X15      R                  U5      U5        g )N)rK   r   r  )rK   rK   r  )r  g      Y@rK   )r2   r   r    r   r   r   )r`   rQ  rj   r  s       r;   test_scaling_order%TestMatrix_Balance.test_scaling_orderA
  s:    HHlL-@Aa a*A.r=   c                     [        [        R                  " SS/SS//5      SS9u  nu  p#[        [        R                  " [        R
                  " U5      5      S/5        [        U[        R                  " S5      5        g )NrS  rK   r   separater'  rJ   )r    r2   r   r   rP  rQ  r   r   )r`   r  r  zs       r;   test_separate TestMatrix_Balance.test_separateF
  s\    "288dAYq	,B#C,-/	6ARWWRWWQZ(1#.299Q<(r=   c                 `   [        [        R                  " S5      [        R                  " [        R                  " S5      5      [        R                  " S5      5      n[	        USS9u  nu  p4[        U[        R                  " U5      5        [        U[        R                  " / SQ5      5        g )Nr  rE  rK   rX  )r   rK   rH   r'  rG   rY   rJ   )r   r2   r   r  r    r   	ones_liker   )r`   rQ  rj   r  rZ  s        r;   test_permutation#TestMatrix_Balance.test_permutationL
  sl    rwwv(@wwv("1q1	6A2<<?+288$9:;r=   c           	      *   [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      [         R                  " / SQ/ SQ/ SQ/ SQ/5      [         R                  " / S	Q/ S
Q/ SQ/ SQ/5      4nU H  n[        U5      u  p4[        USS9u  nu  pV[         R                  " U5      n[         R                  " UR
                  S   5      Xv'   [        U[         R                  " U5      US S 24   5        [        [        XB5      R                  U5      U5        M     g )N)rQ   rQ   rQ   rQ   >)rQ   rQ   rQ   rQ   rQ   )rX   rX   rQ   rQ   rQ   )rQ   rQ   rb  rQ   rQ   )r\  rQ   rQ   rQ   )rQ   r  rQ   rQ   )rC   rQ   r\  rQ   )rQ   rC   rQ   r  )rM  rQ   rC   rQ   )r  r         rC   )rM  rc  rc  rQ   )r  rc  rC   r  rK   rX  r   )
r2   r   r    r=  r   r   r   rw   r   r   )r`   casesrQ  rj   r  ru  r  ips           r;   test_perm_and_scaling(TestMatrix_Balance.test_perm_and_scalingS
  s     5///5	7 8 -,-,. /
 ,...0 1$ A!!$DA&q15IAvq!BIIaggaj)BEArwwqz"a%01E!KOOA.2 r=   r:   c                    [         R                  " SUS9n[        U5      u  p4UR                  S:X  d   eUR                  S:X  d   e[        [         R                  " SUS95      u  pVUR
                  UR
                  :X  d   eUR
                  UR
                  :X  d   e[        USS9u  nu  pxUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   e[        USS9u  nu  pUR
                  UR
                  :X  d   eUR
                  U	R
                  :X  d   eUR
                  U
R
                  :X  d   eg )Nr   r   r   rJ   TrX  )r2   r   r    r  r   r   )r`   r:   ra   ri   r  b_nt_nr  permscale_nperm_ns              r;   r   TestMatrix_Balance.test_emptyo
  s   HHV2&a vv{{vv{{!"&&""56ww#))###ww#))###)!d;=Evv{{zzQyyA~~!/D!Agww#))###{{gmm+++zzV\\)))r=   r   N)r   r   r   r   r(   rJ  rM  rR  rU  r[  r_  rf  r   r   r   r   r   r2   r
   r   r   r   r   r   r=   r;   rH  rH  /
  sm    J J7;/
)<38 [[TC

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