
    e!h#4                    6   d dl Z d dlZd dlmZmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZmZmZmZmZmZmZ d dlZd dlmZ d dlmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z-m.Z. d d	l/m0Z0 ej                  ejb                  ejd                  fZ3ejh                  ejj                  ejl                  fZ7e3e7z   Z8d
 Z9 G d d      Z: G d d      Z; G d d      Z< G d d      Z= G d d      Z> G d d      Z?d,dZ@ G d d      ZA G d d      ZB G d d      ZCej                  j                  dd      ej                  j                  d eef      d!               ZF G d" d#      ZG G d$ d%      ZH G d& d'      ZI G d( d)      ZJ G d* d+      ZKy)-    N)arangearraydotzerosidentity	conjugate	transposefloat32)random)assert_equalassert_almost_equalassert_assert_array_almost_equalassert_allcloseassert_array_equalsuppress_warnings)raises)solveinvdetlstsqpinvpinvhnormsolve_bandedsolveh_bandedsolve_triangularsolve_circulant	circulantLinAlgError
block_diagmatrix_balanceqrLinAlgWarningassert_no_overwrite)check_free_memoryIS_MUSL)	HAS_ILP64c                     | }|t         j                  k(  rt         j                  }n#|t         j                  k(  rt         j                  }t        j
                  |      j                  S )z;Get the epsilon for dtype, possibly downcast to BLAS types.)np
longdoublefloat64clongdouble
complex128finfoeps)dtypdts     e/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_basic.py	_eps_castr5      sE    	B	R]]ZZ	r~~	]]88B<    c            
       T   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                  j                  ej                  j                  d	eeej$                  eej(                  g      ej                  j                  d
eeej$                  eej(                  g      d                      Zy)TestSolveBandedc                 d   t        g dg dg dg dg      }t        g dg dg dg dg      }d	\  }}t        g d
      }|j                  dd      }t        ddgddgddgddgg      }t        g dg dg dg dg      }||||fD ]'  }	t        ||f||	      }
t        t	        ||
      |	       ) y )N      ?   r   r         r         r<   rB   r                 r<   r@   rB   rC   r?   r<   rG   r>   rC   rF   r   rB   rE   r   r   rB   rC         $@rI          @g      ,@rE   rC   rB   r>   r?      rC   r   r   r   r   r   r   rC   r   rC   r   r   r   reshaper   r   r   selfaablub4b4by1b4by2b4by4bxs              r4   	test_realzTestSolveBanded.test_real(   s    ?! !# $ O""!# $ 1)*

2q!1vQx1v1v   |###% & eUE* 	4AaVR+A%c!Qi3	4r6   c                 d   t        g dg dg dg dg      }t        g dg dg dg dg      }d	\  }}t        g d
      }|j                  dd      }t        ddgddgddgddgg      }t        g dg dg dg dg      }||||fD ]'  }	t        ||f||	      }
t        t	        ||
      |	       ) y )Nr:   r=   )               @rC   r<   re   rD   rI   r<   r@   re   rJ   rK   )re   rE   r   r   rM   rO   rI   rP   y              ,@rE   rC   rB   r>   r?   rQ   rR   )r   r   r                 ?rT   rU   rW   s              r4   test_complexzTestSolveBanded.test_complex@   s    ?!"!# $ $"""$ % 1*+

2q!1vQx1v1v   |$##% & eUE* 	4AaVR+A%c!Qi3	4r6   c                    t        g dg dg dg      }t        j                  |ddd f   d      t        j                  |dd d f   d      z   t        j                  |dd df   d      z   }t        g d      }|j                  dd      }t        ddgd	d
gddgddgg      }t        g dg dg dg dg      }||||fD ]%  }t	        d||      }t        t        ||      |       ' y )NrH   rJ   rK   r   rC   rB   rE   rN   r>   r?   rQ   rR   rS   rT   rC   rC   r   r+   diagrV   r   r   r   	rX   rZ   rY   r]   r^   r_   r`   ra   rb   s	            r4   test_tridiag_realz!TestSolveBanded.test_tridiag_realX   s	   O!!# $ GGBq!"uIq!BGGBq!tHa$88277@B1crc6
B<P P)*

2q!1vQx1v1v   |###% & eUE* 	4AVR+A%c!Qi3	4r6   c                    t        g dg dg dg      }t        j                  |ddd f   d      t        j                  |dd d f   d      z   t        j                  |dd df   d      z   }t        g d      }|j                  dd      }t        ddgd	d
gddgddgg      }t        g dg dg dg dg      }||||fD ]%  }t	        d||      }t        t        ||      |       ' y )Nrf   rJ   rK   r   rC   rB   rE   rg   r>   r?   rQ   rR   rS   rT   rk   rl   rn   s	            r4   test_tridiag_complexz$TestSolveBanded.test_tridiag_complexl   s
   $!!# $ GGBq!"uIq!BGGBq!tHa$88277?A!SbS&z2<O O*+

2q!1vQx1v1v   |###% & eUE* 	4AVR+A%c!Qi3	4r6   c                     t        g dg dg dg dg      }t        g dg dg dg dg      }d	\  }}t        g d
      }t        ||f||d      }t        t        ||      |       y )Nr:   r=   rA   rD   rH   rJ   rK   rL   rM   rN   Fcheck_finite)r   r   r   r   )rX   rY   rZ   r[   r\   r]   rb   s          r4   test_check_finitez!TestSolveBanded.test_check_finite   sr    ?! !# $ O""!# $ 1)*!QRe<!#a)R0r6   c                    t        g dg dg dg dg      }d\  }}t        g d      j                  dd      }t        t        t        ||f||       t        t        t        ||f|d	d
g       t        t        t        d|d	d
g       y )NrH   rJ   rK   rL   rM   )r;   rP         @      @rE   r?   r;   rP   rk   )r   rV   assert_raises
ValueErrorr   )rX   rZ   r[   r\   bads        r4   test_bad_shapezTestSolveBanded.test_bad_shape   s    O""!# $ 1()11"a8j,AC@j,AS#JG 	j,S#JGr6   c                 (   t        g dg      }t        g dg      }t        ddgg|      }t        ||d       t        ddgdgdgg|      }t        ||d       t        |j                  t        j                  d	             t        |g dg       y )
Nr;   rP   rw   )      ?r;   g      ?r   r   rB   V瞯<rtolrk   r   f8)r   r   r   r   dtyper+   r   )rX   ra   refrb   s       r4   test_1x1zTestSolveBanded.test_1x1   s    
 <.!_%&1#*3U+ 1#sQC!43U+QWWbhhtn-1/0r6   c                     g dg dg dg dg}g dg dg dg dg}d	\  }}g d
}t        ||f||      }t        t        ||      |       y )Nr:   r=   rA   rD   rH   rJ   rK   rL   rM   rN   )r   r   r   )rX   rY   rZ   r[   r\   ra   rb   s          r4   test_native_list_argumentsz*TestSolveBanded.test_native_list_arguments   s\      1"!QQ'!#a)Q/r6   dt_abdt_bc                 D   t        j                  g g|      }t        j                  g |      }t        d||      }|j                  dk(  sJ |j                  t        t        j                  d|      t        j                  d|            j                  k(  sJ t        j                  d|      }t        d||      }|j                  dk(  sJ |j                  t        t        j                  d|      t        j                  d|            j                  k(  sJ y )Nr   r   r   rC   )	r+   r   r   shaper   r   eyeonesemptyrX   r   r   rZ   ra   rb   s         r4   
test_emptyzTestSolveBanded.test_empty   s    
 XXrd%(HHRt$Q'ww$ww%q 68NOUUUUUHHV4(Q'ww&   ww%q 68NOUUUUUr6   N)__name__
__module____qualname__rc   ri   ro   rq   ru   r|   r   r   pytestmarkthread_unsafeparametrizeintfloatr+   r
   complex	complex64r    r6   r4   r8   r8   &   s    40404(4(1H1"0 [[[[WsE2::w&UV[[Vc5"**gr||%TUV V W Vr6   r8   c            	       v   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej4                  j7                  deeej>                  e ejB                  g      ej4                  j7                  deeej>                  e ejB                  g      d               Z"y)TestSolveHBandedc                 z    t        g dg dg dg      }t        g d      }t        ||      }t        |g d       y NrI   rI   rP   rP   r;   r;   r;   rx   rx   rx   rx   r;   rx   r;   rP   rI   r;   rI   rI   r   r   r   rX   rZ   ra   rb   s       r4   test_01_upperzTestSolveHBanded.test_01_upper   s@     (((* + &'"a !!%9:r6   c                     t        g dg dg dg      }t        ddgddgddgddgg      }t        ||      }t        ddgddgddgddgg      }t        ||       y )	Nr   r   r   r;         @rx   rP   rI   r   rX   rZ   ra   rb   expecteds        r4   test_02_upperzTestSolveHBanded.test_02_upper   s     (((* + C::::   "a 3****& ' 	"!X.r6   c                     t        g dg dg dg      }t        g d      j                  dd      }t        ||      }t        |t        g d      j                  dd             y )Nr   r   r   r   rE   rC   r   r   rV   r   r   r   s       r4   test_03_upperzTestSolveHBanded.test_03_upper   s_     (((* + &'//A6"a !!U+;%<%D%DR%KLr6   c                 ~    t        g dg dg dg      }t        g d      }t        ||d      }t        |g d       y )Nr   r;   r;   r;   r   rP   rP   rI   rI   r   Tlowerr   r   r   s       r4   test_01_lowerzTestSolveHBanded.test_01_lower   sB     (((* + &'"at,!!%9:r6   c                     t        g dg dg dg      }t        ddgddgddgddgg      }t        ||d	      }t        d
dgdd
gd
dgd
d
gg      }t        ||       y )Nr   r   r   r;   r   rx   rP   Tr   rI   r   r   s        r4   test_02_lowerzTestSolveHBanded.test_02_lower  s     (((* + C::::   "at,3****& ' 	"!X.r6   c                     t        g dg dg dgt              }t        g dt              }t        ||      }t        |g d       y )Nr   r   r   r   r   r   r   r
   r   r   r   s       r4   test_01_float32z TestSolveHBanded.test_01_float32#  sE     (((*18: &g6"a !!%9:r6   c                     t        g dg dg dgt              }t        ddgddgddgddggt              }t        ||      }t        d	dgdd	gd	dgd	d	gg      }t        ||       y )
Nr   r   r   r   r;   r   rx   rP   rI   r   r   s        r4   test_02_float32z TestSolveHBanded.test_02_float321  s     (((*18: C:::: './ "a 3****& ' 	"!X.r6   c                 z    t        g dg dg dg      }t        g d      }t        ||      }t        |g d       y )Nr   r                r   r   r   )       @            @            @      ?       @      ?)rI   r;   r;   rI   r   r   s       r4   test_01_complexz TestSolveHBanded.test_01_complexF  s@     (.(* + ./"a !!%9:r6   c                     t        g dg dg dg      }t        ddgddgdd	gd
dgg      }t        ||      }t        ddgddgddgddgg      }t        ||       y )Nr   r   r   r          @      @r               r   y      @       @r   rh   rI   r;   r   r   s        r4   test_02_complexz TestSolveHBanded.test_02_complexT  s     (.(* + D$<E?D>":   "a 3+***& ' 	"!X.r6   c                 t    t        g dg dg      }t        g d      }t        ||      }t        |g d       y )Nr   r;   r;   rx   rx   rx   r;   rx   r;   rI   r;   rI   r   r   s       r4   test_tridiag_01_upperz&TestSolveHBanded.test_tridiag_01_upperi  s3     O_56/""a !!_5r6   c                     t        g dg dg      }t        ddgddgddgg      }t        ||      }t        ddgddgddgg      }t        ||       y )Nr   r   r;   rx   rP   rI   r   r   s        r4   test_tridiag_02_upperz&TestSolveHBanded.test_tridiag_02_uppert  sx     O#% &C:::   "a 3***& ' 	"!X.r6   c                     t        g dg dg      }t        g d      j                  dd      }t        ||      }t        |t        g d      j                  dd             y )Nr   r   r   rE   rC   r   r   r   s       r4   test_tridiag_03_upperz&TestSolveHBanded.test_tridiag_03_upper  sR     O_56/"**2q1"a !!U?%;%C%CB%JKr6   c                 x    t        g dg dg      }t        g d      }t        ||d      }t        |g d       y )Nr   r;   r;   r   r   Tr   r   r   r   s       r4   test_tridiag_01_lowerz&TestSolveHBanded.test_tridiag_01_lower  s:     O#% &/""at,!!_5r6   c                     t        g dg dg      }t        ddgddgddgg      }t        ||d      }t        ddgddgddgg      }t        ||       y )	Nr   r   r;   rx   rP   Tr   rI   r   r   s        r4   test_tridiag_02_lowerz&TestSolveHBanded.test_tridiag_02_lower  sz     O#% &C:::   "at,3***& ' 	"!X.r6   c                     t        g dg dgt              }t        g dt              }t        ||      }t        |g d       y )Nr   r   r   r   r   r   r   s       r4   test_tridiag_01_float32z(TestSolveHBanded.test_tridiag_01_float32  s7     O_5WE/1"a !!_5r6   c                     t        g dg dgt              }t        ddgddgddggt              }t        ||      }t        ddgddgddgg      }t        ||       y )Nr   r   r   r;   rx   rP   rI   r   r   s        r4   test_tridiag_02_float32z(TestSolveHBanded.test_tridiag_02_float32  s~     O#%,35C:::&-/ "a 3***& ' 	"!X.r6   c                 t    t        g dg dg      }t        g d      }t        ||      }t        |g d       y )Nr   r   r   r   )r   r   r   )rI   r;   r;   r   r   s       r4   test_tridiag_01_complexz(TestSolveHBanded.test_tridiag_01_complex  s5     '9:'("a !!_5r6   c                     t        g dg dg      }t        ddgddgddgg      }t        ||      }t        d	d
gdd	gddgg      }t        ||       y )Nr   r   r                 @r   r   r   rx   rI   rh   r;   r   r   s        r4   test_tridiag_02_complexz(TestSolveHBanded.test_tridiag_02_complex  sz     '#% &C;G$C=" # "a 3+**& ' 	"!X.r6   c                 x    t        g dg dg      }t        g d      }t        ||d      }t        |g d       y )Nr   r   r   Frs   r   r   r   s       r4   ru   z"TestSolveHBanded.test_check_finite  s5     O_56/""ae4!!_5r6   c                     t        g dg dg      }t        ddgddgg      }t        t        t        ||       t        t        t        |ddg       t        t        t        |dg       y )Nr   r   r;   rx   rP   )r   ry   rz   r   )rX   rZ   ra   s      r4   test_bad_shapesz TestSolveHBanded.test_bad_shapes  sb    O#% &C::  j-Q7j-c3Z@j-cU;r6   c                     t        dggg dg      }t        |g dg       t        |j                  t	        j                  d             y )NrC   rC   rB   rQ   r~   r   )r   r   r   r   r+   )rX   rb   s     r4   r   zTestSolveHBanded.test_1x1  s7    A3%)-1/0QWWbhhtn-r6   c                 V    g dg dg dg}g d}t        ||      }t        |g d       y r   )r   r   r   s       r4   r   z+TestSolveHBanded.test_native_list_arguments  s0    """$ !"a !!%9:r6   r   r   c                 @   t        j                  g g|      }t        j                  g |      }t        ||      }|j                  dk(  sJ |j                  t        t        j                  d|      t        j                  d|            j                  k(  sJ t        j                  d|      }t        ||      }|j                  dk(  sJ |j                  t        t        j                  d|      t        j                  d|            j                  k(  sJ y )Nr   r   rC   r   )	r+   r   r   r   r   r   r   r   r   r   s         r4   r   zTestSolveHBanded.test_empty  s     XXrd%(HHRt$"a ww$ww%q 68NOUUUUUHHV4("a ww&   ww%q 68NOUUUUUr6   N)#r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ru   r   r   r   r   r   r   r   r   r+   r
   r   r   r   r   r6   r4   r   r      s    ;/*M;/*;/*;/*	6/"	L
6/"	6/"	6/"	6<.
; [[WsE2::w&UV[[Vc5"**gr||%TUV V WVr6   r   c            
       ~   e Zd Zd Zej
                  j                  d        Zd Zd Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej
                  j                  ej
                  j;                  dd      d               Zd Zd Z d Z!d Z"d Z#d  Z$ej
                  jK                  d!"      d#        Z&ej
                  j                  ej
                  j;                  d$e'e(e)jT                  e+e)jX                  g      ej
                  j;                  d%e'e(e)jT                  e+e)jX                  g      d&                      Z-d' Z.ej
                  j;                  d(e)j^                  e)j`                  g      ej
                  j;                  d)g d*      ej
                  j;                  d+d,d-g      ej
                  j;                  d.d/d0g      ej
                  j;                  d1d/d0g      ej
                  j;                  d2d/d0g      d3                                           Z1y4)5	TestSolvec                 B    t         j                  j                  d       y N  r+   r   seedrX   s    r4   setup_methodzTestSolve.setup_method      
		tr6   c                     ddgddgg}t        |ddg      }t        t        ||      ddg       ddgddgg}ddg}t        ||      }t        t        ||      ddg       y )NrC   r;   r                   333333?r   r   r   )rX   rY   x0ra   s       r4   test_20Feb04_bugzTestSolve.test_20Feb04_bug  st    Vc1X1q"g!#a*q!f5 Vc1XG1a[!#a*q!f5r6   c                     ddgddgg}ddgddggddgddgddggfD ]$  }t        ||      }t        t        ||      |       & y )NrC   r<   r>   r?   r   rB   r   rX   rY   ra   rb   s       r4   test_simplezTestSolve.test_simple)  si    WsAhq6Aq6"a&q6C8$ 	4A aA%c!Qi3	4r6   c                     t        ddgddggd      }ddgddgddggdd	gt        ddgd      fD ]$  }t        ||      }t        t        ||      |       & y )
N   rB   re   r?   Drh   r   rC   r   )r   r   r   r   r   s       r4   test_simple_complexzTestSolve.test_simple_complex2  su    Aq6B7#S)q'8aV$b'A$ 	4A
 aA%c!Qi3	4r6   c                     ddgddgg}dD ]8  }ddgddggddgfD ]'  }t        ||d|      }t        t        ||      |       ) : y )	NrB   rQ   r  r   rC   rC   r   posassume_ar   r   rX   rY   r   ra   rb   s        r4   test_simple_poszTestSolve.test_simple_pos<  sm    VaV 	8E1v1v&!f 8 !Qe<)#a)Q7	8	8r6   c                 ~    ddgddgg}ddgddgddggfD ]&  }t        ||d      }t        t        ||      |       ( y )Nr  rB   r?   rh   r   r  r
  r   r   s       r4   test_simple_pos_complexbz"TestSolve.test_simple_pos_complexbE  s\    VaVq'8aV$ 	4A aU+A%c!Qi3		4r6   c                     ddgddgg}dD ]8  }ddgddggddgfD ]'  }t        ||d|      }t        t        ||      |       ) : y )	NrB   rQ   r  rC   r   symr	  r   r  s        r4   test_simple_symzTestSolve.test_simple_symM  sm    VaW 	8E1v1v&!f 8 !Qe<)#a)Q7	8	8r6   c                 ~    ddgddgg}ddgddgddggfD ]&  }t        ||d      }t        t        ||      |       ( y )Nr  rB   rh   r   r  r  r   r   s       r4   test_simple_sym_complexbz"TestSolve.test_simple_sym_complexbV  s\    VaWq'8aV$ 	4A aU+A%c!Qi3		4r6   c                     ddgddgg}ddgddgddgddggfD ]&  }t        ||d	      }t        t        ||      |       ( y )
Nr  r   r  rh   r   rC   rB   r  r  r   r   s       r4   test_simple_sym_complexz!TestSolve.test_simple_sym_complex^  c    Yr
#q'a&8aV$ 	4A aU+A%c!Qi3	4r6   c                     ddgddgg}dD ];  }ddgddggddgddgfD ]'  }t        ||d|	      }t        t        ||      |       ) = y )
NrB   rQ   r  r  rC   r   rh   herr	  r   r  s        r4   test_simple_her_actuallysymz%TestSolve.test_simple_her_actuallysymg  st    VaW 	8E1v1v&!f1g 8 !Qe<)#a)Q78	8r6   c                     ddgddgg}ddgddgddgddggfD ]&  }t        ||d	
      }t        t        ||      |       ( y )Nr  r   r   r  rh   r   rC   rB   r  r  r   r   s       r4   test_simple_herzTestSolve.test_simple_herq  r  r6   c                    d}t        ||g      t        ||g      dz  z   }t        ||fd      }t        |      }t        |      t        |      dz  z   }t	        d|      D ]  }|d d |f   }t        ||      |d d |f<     t        ||       y )NrB   rh   r  r   r   )r   r   r   r   r   r   r   )rX   nAXAinvRirs           r4   test_nils_20Feb04zTestSolve.test_nils_20Feb04z  s    Aq6N61a&>",,1a&#1vQKB&1 	"A!Q$AAqkAadG	" 	"!T*r6   c                     d}t        ||g      }t        |      D ]  }dd|||f   z   z  |||f<    t        d      D ]1  }t        |dg      }t        ||      }t        t	        ||      |       3 y )Nr<   皙?r?   rQ   r   ranger   r   r   rX   r   rY   r%  ra   rb   s         r4   test_randomzTestSolve.test_random  s    Aq6Nq 	&A"Qq!tW*oAadG	&q 	4A1vAaA%c!Qi3	4r6   c                    d}t        ||g      dt        ||g      z  z   }t        |      D ]  }dd|||f   z   z  |||f<    t        d      D ]1  }t        |dg      }t        ||      }t        t	        ||      |       3 y )Nr<   rh   r)  rB   rQ   r*  r,  s         r4   test_random_complexzTestSolve.test_random_complex  s    Aq6NR&!Q.00q 	&A"Qq!tW*oAadG	&q 	4A1vAaA%c!Qi3	4r6   c                 0   d}t        ||g      }t        |      D ]9  }t        dd|||f   z   z        |||f<   t        |      D ]  }|||f   |||f<    ; t        d      D ]2  }t        |g      }t        ||d      }t	        t        ||      |       4 y )Nr<   r)  r?   r  r  )r   r+  absr   r   r   rX   r   rY   r%  jra   rb   s          r4   test_random_symzTestSolve.test_random_sym  s    Aq6Nq 	"A"b1a4j/*AadG1X "AqD'!Q$"	" q 	4AsAaU+A%c!Qi3	4r6   c                    d}t        ||g      }|dt        ||g      z  z   }t        |      D ]B  }t        dd|||f   z   z        |||f<   t        |      D ]  }t        |||f         |||f<    D t        |g      dt        |g      z  z   }t        d      D ]&  }t	        ||d      }t        t        ||      |       ( y )Nr<   rh   r)  re   rB   r  r  )r   r+  r1  r   r   r   r   r2  s          r4   test_random_sym_complexz!TestSolve.test_random_sym_complex  s    Aq6N61a&>!!q 	-A"b1a4j/*AadG1X -#AadG,!Q$-	- A3K61#;&q 	4AaU+A%c!Qi3	4r6   c                     ddgddgg}ddgddggddgddgddggfD ]&  }t        ||d      }t        t        ||      |       ( y )	NrC   r<   r>   r?   r   rB   Frs   r   r   s       r4   ru   zTestSolve.test_check_finite  si    WsAhq6Aq6"QFq6C8$& 	4Aa/A%c!Qi3	4r6   c                     d}g d}t        ||      }t        |j                         |       t        |j                  dk(  d       y )NrC   r   rQ   z'Scalar_a_1D_b test returned wrong shape)r   r   ravelr   r   r   s       r4   test_scalar_a_and_1D_bz TestSolve.test_scalar_a_and_1D_b  s:    !QK!!'')Q/4!JKr6   c                     t        j                  g dg dg dg dg      }t        j                  ddgddgd	d
gddgg      }t        ||      }t        |t        j                  g dg dg      j                         y )N)?g
ףp=
@gffffff @g{Gz)g     h@g     prg     Wg     w)gHzG?gQg333333gp=
ף)g(\gQgzGg?g
ףp=
#@gQx2@g     @g      l@gp=
ף?g(\*gzGgףp=
)r;   rE   rQ   r  )rQ   rB   r?   rC   )r+   r   r   r   Tr   s       r4   test_simple2zTestSolve.test_simple2  s    HH/8113 4
 HHtUm'Vnen& '
 !QK!!RXX/;/= &>>?a	Ar6   c           
          t        j                  g dg dg dg dg      }t        j                  ddgddgd	d
gddgg      }t        ||      }t        |t        j                  ddgddgddgddgg             y )N)yq=
ףpffffff@yQ?\(\	@y(\y
ףp=
?q=
ףp)y333333333333,y̌@@      y      *@y)@+@)yRQ
Qy(\Gz@yQyQ??)yHzG@(\?yQ῅Q?y(\Gzy\(\q=
ףp?y(\B:@p=
I@yRQ?@y33333P@33333Uy33333c@ffffff,y      (\O9@y333333q=
ף0>@y(\?(\@y{Gz333333@      ?      ?y             y       @      y      @      ?y            y            @y              @)r+   r   r   r   r   s       r4   test_simple_complex2zTestSolve.test_simple_complex2  s    HHHMIIK L
 HH|[1#]3#\2!;/1 2
 !QK!!RYY16170@14e0> &? 	@r6   c                 d   t        j                  g dg dg dg dg      }t        j                  ddgddgd	d
gddgg      }t        j                  ddgddgddgddgg      }t        ||d      }t        ||       t        |j	                         j
                  |dd      }t        ||       y )N)gq=
ףpy)\(?)\(y{GzzGyHzG@      )r   gQyq=
ףpQ?yGz@zG?)r   r   g=
ףp!yHzG?)r   r   r   g(\yףp=
@\(\$yGz<@RCy)\(#
ףp=
@y
ףp=8 yp=
ף0yQ@zGQy)\(@Q@yRA(\2@r   y             @y      @       y      @       y             @y            @      ?      y      @      r  r  Tr	  )r+   r   r   r   conjr>  )rX   rY   ra   resrb   s        r4   test_hermitianzTestSolve.test_hermitian  s    HHB9/&( ) HH{L1"L1#[1!=13 4 hh' ( !Q'!!S)!&&(**a%t<!!S)r6   c                 d   t        j                  dd      j                  dd      }t        t        j                  |      dz  t        j
                  d      d      }t        |g d       t        t        j                  |      dz  t        j
                  d      d      }t        |g d       y )	NrC   
   rQ   	   r  r  )      "@r=  r;   r  r+   r   rV   r   trilr   r   rX   r!  rb   s      r4   test_pos_and_symzTestSolve.test_pos_and_sym  sw    IIa$$Q*"''!*Q,
U;!!]3"''!*Q,
U;!!]3r6   c                     t        j                  g dg dg dg dg dg dg dg dg dg	      }t        j                  d      d d d f   }t        t        t
        ||       y )N)	rC   r   r   r   r   r   rC   r   rC   )	rC   rC   rC   r   r   r   rC   r   rC   )	r   rC   rC   r   r   r   rC   r   rC   )	rC   r   rC   rC   rC   rC   r   r   r   )	rC   rC   rC   rC   rC   rC   rC   rC   rC   rJ  )r+   r   r   ry   r    r   rX   rY   ra   s      r4   test_singularityzTestSolve.test_singularity  sV    HH1111111113 4 IIaLD!k5!Q/r6   	structure)	diagonaltridiagonallower triangularupper triangular	symmetric	hermitianpositive definitegeneralNc                 B   t         j                  j                  d      }d}t        j                  dd|      }t        j                  |      }|j                  |      }d}t        j                  t        |      5  t        |||       d d d        y # 1 sw Y   y xY w)	Nl   Ej] rI  r   2   sizezIll-conditioned matrix...matchr  )	r+   r   default_rnglogspacerm   r   warnsr$   r   )rX   rS  rngr   dr!  ra   messages           r4   test_ill_condition_warningz$TestSolve.test_ill_condition_warning	  s     ii##L1KK2q!GGAJJJAJ-\\-w7 	,!Q+	, 	, 	,s   =BBc                     t        j                  d      }t         j                  j                  ddd      }t	        ||      }t        ||       y )NrB   rQ   r?   )r+   r   r   randr   r   r   s       r4   test_multiple_rhszTestSolve.test_multiple_rhs  s:    FF1IIINN1a#!QK!!Q'r6   c                 h   t        j                  d      j                  dd      dz   }t        t        j                  |      dz  t        j
                  d      d      }t        |g d       t        t        j                  |      dz  t        j
                  d      d      }t        |g d       y )	NrJ  rQ   rC   T
transposed)r   g?rC   F)rJ  gg333333rL  rN  s      r4   test_transposed_keywordz!TestSolve.test_transposed_keyword  sy    IIaL  A&*"''!*Q,
t<!!]3"''!*Q,
u=!!_5r6   c                     t        j                  d      j                  t              }t	        t
              5  t        ||d       d d d        y # 1 sw Y   y xY w)NrQ   Trm  )r+   r   astyper   ry   NotImplementedErrorr   rX   rY   s     r4   test_transposed_notimplementedz(TestSolve.test_transposed_notimplemented%  sD    FF1IW%./ 	)!Q4(	) 	) 	)s   AAc                 4    t        t        t        ddgd       y )NrC   rB   ry   rz   r   r   s    r4   test_nonsquare_azTestSolve.test_nonsquare_a*  s    j%!Q3r6   c                    t        t        t        j                  d      t        j                  d            t        j                  d             t        t        t        t        j                  d      t        j                  d             y )NrQ   r?   )r   r   r+   r   r   ry   rz   r   s    r4   test_size_mismatch_with_1D_bz&TestSolve.test_size_mismatch_with_1D_b-  sI    !%q	2771:">
Kj%BGGAJ?r6   c                 4    t        t        t        ddd       y )NrC   zxcvr  rv  r   s    r4   test_assume_a_keywordzTestSolve.test_assume_a_keyword1  s    j%A?r6   z5Failure on OS X (gh-7500), crash on Windows (gh-8064)reasonc                 *   ddg}g d}t         j                  t         j                  t         j                  t         j                  g}t        j                  |||      D ]2  \  }}}|t         j                  t         j                  fv }|dk(  r|s2d| d| d| }t         j                  j                  ||      j                  |      }	t         j                  j                  |      j                  |      }
|r5|	dt         j                  j                  ||      z  j                  |      z   }	|d	k(  r|	|	j                  z   }	nj|dk(  r|	|	j                  j                         z   }	nG|d
k(  rB|	j                         j                  j                  |	      dt        j                  |      z  z   }	|t         j                  t         j                  fv rdnd}|dv r'|t         j                  t         j                  fv r|dz  }t        |	|
|      }t        |	j                  |      |
||z  ||z  |       |d	k(  s|t         j                  t         j                  fvst        |	|
|d      }t        |	j                  |      |
||z  ||z  |       5 y )NrI  d   )genr  r  r  r  zFailed for size: z, assume_a: z,dtype: rh   r  r  r)  -q=gư>)r  r  r  r  atolr   err_msgT)r
  rn  )r+   r
   r-   r   r/   	itertoolsproductr   randnrq  r>  rE  r   r   r   r   )rX   sizes	assume_asdtypesr_  r
  r   
is_complexr  rY   ra   tolrb   s                r4   'test_all_type_size_routine_combinationsz1TestSolve.test_all_type_size_routine_combinations4  s9    S	0	**bjj",,F%.%6%6ui7=&? )	1!D(E2<<"??J5 *4&XJ G!!&)G 		d+2259A		%,,U3ABIIOOD$77??FF5 GU"
NU"FFHJJNN1%BFF4L(88 RZZ$??%TC00 RZZ662ICaX.AAEE!Ha!$t!$t$+-
 5 U2<<35==3B &B!QdCa!%(4Z%(4Z(/1M)	1r6   dt_ar   c                 <   t        j                  d|      }t        j                  d|      }t        ||      }|j                  dk(  sJ t        t        j                  d|      t        j
                  d|            j                  }|j                  |k(  sJ y Nr   r   r   rB   )r+   r   r   r_  r   r   r   rX   r  r   rY   ra   rb   dt_nonemptys          r4   r   zTestSolve.test_emptye  sy     HHV4(HHQd#!QKvv{{BFF1D12771D3IJPPww+%%%r6   c                     t        j                  d      }g g g}t        ||      }t        |j                  dk(  d       t        |j
                  dk(  d       y NrB   r   zReturned array is not empty)rB   r   z#Returned empty array shape is wrong)r+   r   r   r   r_  r   r   s       r4   test_empty_rhszTestSolve.test_empty_rhsq  sJ    FF1IH!QK!:;6!#HIr6   r   r
  )rT  rU  bandedrV  rW  rX  rY  r[  r  r  r  nrhsr   )r  rn  TF	overwritefortranc                    t         j                  j                  d      }|dk(  sdnd}|j                  |f|z         }	|j                  ||f      }
t        j                  |t         j                        r6|	|j                  |f|z         dz  z   }	|
|j                  ||f      dz  z   }
|dk(  r*t        j
                  t        j
                  |
            }
n]|dk(  rt        j                  |
      }
nA|d	k(  rt        j                  |
      }
n%|d
k(  rt        j
                  t        j
                  |
            t        j
                  t        j
                  |
d      d      z   t        j
                  t        j
                  |
d      d      z   }
n|dk(  r+t        j                  t        j                  |
d      d      }
nq|dv r|
|
j                  z   }
n]|dv r|
|
j                         j                  z   }
n;|dv r7|
|
j                  z   }
|
t        j
                  |
j                  d            z  }
|rt        j                  |
      }
|
j                  d      }|	j                         }t        j                  |t         j                        r9|r7d}t        j                  t        |      5  t!        |
|	|||       d d d        y t!        |
|	||||      }t         j"                  j!                  |r|j                  n||      }t%        ||       |dk7  rt'        t!        |||      |       |st'        |
|       t'        |	|       y y # 1 sw Y   y xY w)Nl   q~u r  r  r<   r^  rh   rT  rV  rW  rU  rE   rC   rB   >   r  rX  >   r  rY  >   r  rZ  axisr!  )orderz#scipy.linalg.solve can currently...r`  )overwrite_aoverwrite_brn  )r  r  rn  r
  rm  )r+   r   rb  
issubdtypecomplexfloatingrm   rM  triur>  rE  sumasfortranarraycopyr   r   rr  r   linalgr   r   )rX   r   r
  r  rn  r  r  re  r   ra   r!  A_copyb_copyrg  rF  r   s                   r4   test_structure_detectionz"TestSolve.test_structure_detectionx  s    ii##O4)ArJJQD4KJ(JJQFJ#== 2 23CJJQD4KJ0255ACJJQFJ+b00Az!
#A++
A++
A&$772771b>2./772771a=!,-A !1r*A--ACCA--AFFHJJA55ACCAA''A!!!$Ac"== 2 23
;G2'B -a	y!+-- AqiY)H> iioo*fhh&&IS! xvv*EsK F#F# %- s   5MMN)2r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r'  r-  r/  r4  r6  ru   r;  r?  rB  rG  rO  rR  r   rh  rk  ro  rt  rw  ry  r|  skipr  r   r   r+   r
   r   r   r   r  r-   r/   r  r   r6   r4   r   r     sd    [[	6 	6448484484	+	44
444LA@"*(40 [[[[[DE,	E 
,(6)
4@@ [[ : ;-1;-1^ [[[[Vc5"**gr||%TU[[Vc5"**gr||%TU& V V &J [[Wrzz2==&AB[[Z *J K [[Vb$Z0[[\D%=9[[[4-8[[Yu6;$ 7 9 : 1	K C;$r6   r   c            	       
   e Zd Zd Zd Zd Zej                  j                  de	e
ej                  eej                  g      ej                  j                  de	e
ej                  eej                  g      d               Zd Zy)	TestSolveTriangularc                 D   t        ddgddgg      }ddg}t        ||d      }t        |ddg       t        |j                  |d      }t        |ddg       t        ||dd      }t        |ddg       t	        d      }t        ||dd      }t        |d	d
gddgg       y):
        solve_triangular on a simple 2x2 matrix.
        rC   r   rB   Tr   Fr   r   transr;         N)r   r   r   r>  r   rX   r!  ra   sols       r4   r  zTestSolveTriangular.test_simple  s     Aq6Aq6"#Fq!40!#1v. qssAU3!#Bx0 q!4q9!#Bx0QKq!4q9!#S	As8'<=r6   c                 t   t        ddgddgg      }t        d      }t        ||dd      }t        |dd	gdd
gg       t	        j
                  ddg      }t        ||dd      }t        |ddgddgg       t        ||dd      }t        |ddgddgg       t        ||dd      }t        |ddgddgg       t        |j                  |dd      }t        |ddgddgg       t        |j                  |dd      }t        |ddgddgg       t        |j                  |dd      }t        |ddgddgg       y)zA
        solve_triangular on a simple 2x2 complex matrix
        rA  r   rh   rB   TrC   r  y      ?      y      п      пr         ?       @y             y      ?      ?y      ?      y            пFr  N)r   r   r   r   r+   rm   r>  r  s       r4   r  z'TestSolveTriangular.test_simple_complex  sW    D!9r1g&'QKq!4q9!#(;aX'FG GGT4L!q!4q9!#A'@Aq!4q9!#J!V'EFq!4q9!#[(9Av;'GHqssAU!<!#J!V'EFqssAU!<!#A'@AqssAU!<!#Q$'@Ar6   c                 h    t        ddgddgg      }ddg}t        ||dd      }t        |ddg       y)r  rC   r   rB   TF)r   rt   N)r   r   r   r  s       r4   ru   z%TestSolveTriangular.test_check_finite  sB     Aq6Aq6"#Fq!4eD!#1v.r6   r  r   c                 <   t        j                  d|      }t        j                  d|      }t        ||      }|j                  dk(  sJ t        t        j                  d|      t        j
                  d|            j                  }|j                  |k(  sJ y r  )r+   r   r   r_  r   r   r   r  s          r4   r   zTestSolveTriangular.test_empty  s     HHV4(HHQd#Q"vv{{&FF1D!2771D#9

% 	 ww+%%%r6   c                     t        j                  d      }g g g}t        ||      }t        |j                  dk(  d       t        |j
                  dk(  d       y r  )r+   r   r   r   r_  r   r   s       r4   r  z"TestSolveTriangular.test_empty_rhs
  sK    FF1IHQ"!:;6!#HIr6   N)r   r   r   r  r  ru   r   r   r   r   r   r+   r
   r   r   r   r  r   r6   r4   r  r    s~    >*B:/ [[Vc5"**gr||%TU[[Vc5"**gr||%TU	& V V	&Jr6   r  c                       e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  deeej                  eej"                  g      d        Zy	)
TestInvc                 B    t         j                  j                  d       y r   r   r   s    r4   r   zTestInv.setup_method  r   r6   c                     ddgddgg}t        |      }t        t        ||      t        j                  d             g dg dg dg}t        |      }t        t        ||      t        j                  d             y )NrC   rB   rQ   r?   r   r?   r  r@   rF      rI  )r   r   r   r+   r   rX   rY   a_invs      r4   r  zTestInv.test_simple  sb    VaVA!#a-;	:.A!#a-;r6   c                     d}t        d      D ][  }t        ||g      }t        |      D ]  }dd|||f   z   z  |||f<    t        |      }t        t	        ||      t        |             ] y )Nr<   r?   r)  r+  r   r   r   r   r   rX   r   r%  rY   r  s        r4   r-  zTestInv.test_random  sw    q 	3A1vA1X *b1a4j/!Q$*FE%c!Um&.qk3	3r6   c                 b    ddgddgg}t        |      }t        t        ||      ddgddgg       y )NrC   rB   rQ   r   r   r   r   r   r  s      r4   r  zTestInv.test_simple_complex(  s:    VaWA!#a-1a&1a&1ABr6   c                     d}t        d      D ]l  }t        ||g      dt        ||g      z  z   }t        |      D ]  }dd|||f   z   z  |||f<    t        |      }t        t	        ||      t        |             n y )Nr<   r?   re   r)  r  r  s        r4   r/  zTestInv.test_random_complex-  s    q 	3A1vr&!Q.00A1X *b1a4j/!Q$*FE%c!Um&.qk3	3r6   c                 f    ddgddgg}t        |d      }t        t        ||      ddgddgg       y )NrC   rB   rQ   r?   Frs   r   r  r  s      r4   ru   zTestInv.test_check_finite7  s=    VaVAE*!#a-1a&1a&1ABr6   r3   c                     t        j                  d|      }t        |      }|j                  dk(  sJ |j                  t        t        j
                  d|            j                  k(  sJ y r  )r+   r   r   r_  r   r   )rX   r3   rY   r  s       r4   r   zTestInv.test_empty<  sS    HHV2&AzzQ{{c"&&""56<<<<<r6   N)r   r   r   r   r  r-  r  r/  ru   r   r   r   r   r   r+   r
   r   r   r   r   r6   r4   r  r    s[    <3C
3C
 [[TC

GR\\#RS= T=r6   r  c            	          e Zd Zd Zd Zd Zej                  j                  dddgddgg dg      d        Z	d	 Z
ej                  j                  d
ej                  d   dd D  cg c]  }|dvr|
 c}}       d        Zd Zd Zej                  j                  deeej$                  eej(                  g      d        Zd Zd Zd Zyc c}} w )TestDetc                 L    t         j                  j                  d      | _        y )Nl   *n`/ )r+   r   rb  re  r   s    r4   r   zTestDet.setup_methodE  s    99(()9:r6   c                 R   t        j                  dgg      }t        |      }|j                  j                  dk(  sJ t        j
                  |      sJ |dk(  sJ t        j                  dggggd      }t        |      }|j                  j                  dk(  sJ |j                  dk(  sJ t        |dgg       t        j                  dgggt         j                        }t        |      }|j                  j                  dk(  sJ |j                  d	k(  sJ t        |dg       y )
NrC   rf  r;   fr   rk   y      ?      @r  )rC   )	r+   r   r   r   charisscalarr   r   r   rX   rY   detas      r4   test_1x1_all_singleton_dimsz#TestDet.test_1x1_all_singleton_dimsH  s    HHqcUO1vzz#%%%{{4   rzzHHugYc*1vzz#%%%zzV###TSE7#HHyk]",,71vzz#%%%zzT!!!TF8$r6   c                 <   | j                   j                  g dt        j                        }t	        |      }|j
                  j                  dk(  sJ |j                  dk(  sJ t        |t        j                  |             | j                   j                  g dt        j                        t        j                  d      z  }t	        |      }|j
                  j                  dk(  sJ |j                  dk(  sJ t        |t        j                  |             y )N)r?   r  rC   rC   r   rf  r?   r  rh   r  )re  r   r+   r
   r   r   r  r   r   squeezer   r  s      r4   test_1by1_stacked_input_outputz&TestDet.test_1by1_stacked_input_outputY  s    HHOOL

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

O;BLL<MM1vzz#%%%zzV###bjjm,r6   r   rB   r<   )rQ   rB   r<   r<   c                    | j                   j                  dd|      }t        |      t        j                  j                  |      }}t        ||       | j                   j                  dd|      dz  }|| j                   j                  dd|      z  }t        |      t        j                  j                  |      }}t        ||       y )N      r;   r^  rh   r  r   )re  uniformr   r+   r  r   )rX   r   rY   d1d2ra   d3d4s           r4   #test_simple_det_shapes_real_complexz+TestDet.test_simple_det_shapes_real_complexf  s    HHS"51Qq)BBHHS"51"4	TXXdCe44Qq)BBr6   c                    t        j                  g dg dg dg dg dg dg dg dg      }t        t        |      d	       t        t        t        j                  d
      j                  dd            d       t        j                  g dg dg dg dgt         j                        }t        t        |      d       t        j                  g dg dg dg dg dg dg dg dg      dz  }t        t        |      d       y )N)rC   rC   rC   rC   rC   rC   rC   rC   )rC   rE   rC   rE   rC   rE   rC   rE   )rC   rC   rE   rE   rC   rC   rE   rE   )rC   rE   rE   rC   rC   rE   rE   rC   )rC   rC   rC   rC   rE   rE   rE   rE   )rC   rE   rC   rE   rE   rC   rE   rC   )rC   rC   rE   rE   rE   rE   rC   rC   )rC   rE   rE   rC   rE   rC   rC   rE   g      @   r  rI   )r   r                 rD  )r   r         ?        r  )rh   rA  r   r   )r  rh   r   r   r   y      @        )g             r;   rI   rI   rI   rI   rI   )r;   rI   rI   rI   rI   rI   rI   rI   )rI   g      rI   g      r;   rI   rI   rI   )rI   r;   rI   rI   rI   rI   rI   rI   )rI   rI   rI   g      rI   g      r;   rI   )rI   rI   rI   r;   rI   rI   rI   rI   )rI   rI   rI   rI   rI   g       rI   g      ")rI   rI   rI   rI   rI   r;   rI   rI   rh   rK  )r+   r   r   r   r   rV   r   rs  s     r4   test_for_known_det_valuesz!TestDet.test_for_known_det_valuesq  s    HH.22222224 5 	A& 	BIIbM11!Q78"=
 HH66668 @B||M 	A' HH868686868 9 :== 	A#r6   typAllNgGc                     d}| j                   j                  ||g      j                  |      }t        t	        |      t
        j                  t
        j                  z        sJ y )Nr?   )re  r   rq  
isinstancer   r+   r-   r/   )rX   r  r   rY   s       r4   "test_sample_compatible_dtype_inputz*TestDet.test_sample_compatible_dtype_input  sK     HHOOQF#**3/#a&2::#=???r6   c                    d}t        dg d      D ]E  \  }}t        t        |      5  t        t	        j
                  ddggdz  |             d d d        G t        t        |      5  t        t	        j
                  d	d
ggdz  d             d d d        t        t        |      5  t        t	        j
                  ddggdz  d             d d d        t        t        |      5  t        t	        j
                  ddggdz  d             d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   cxY w# 1 sw Y   y xY w)Nz!cannot be cast to float\(32, 64\)SUO)bytes8str32objectr`  rY   ra   rB   r      a   bVr     zdatetime64[s]ztimedelta64[s])zipry   	TypeErrorr   r+   r   )rX   msgcts       r4   test_incompatible_dtype_inputz%TestDet.test_incompatible_dtype_input  s)   3<= 	7DAqy4 7BHHsCj\!^1567 7	7 9C0 	74,)56	79C0 	A3*a?@	A9C0 	B3*a/?@A	B 	B7 7	7 	7	A 	A	B 	Bs/   'D*'D'*'D3*'D?D$	'D03D<?Ec                 z   t        t        t        j                  ddg            d       t        t        t        j                  g d            t        j                  g              t        t        t        j                  g d            t        j                  g d             t        t        d      5  t        t        j                  g d             d d d        t        t        d	      5  t        t        j                  g              d d d        t        t        d      5  t        t        j                  g g             d d d        t        t        d      5  t        t        j                  g gg             d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   \xY w# 1 sw Y   y xY w)
Nr   r;   )r   r   r   rQ   r   r   r;   r;   r;   zLast 2 dimensionsr`  )r   r   rQ   zat least two-dimensional)r   r   r+   r   r   ry   rz   r   s    r4   test_empty_edge_caseszTestDet.test_empty_edge_cases  s,   BHHaV,-r2BHHY/0"((2,?BHHY/0"((<2HI:-@A 	%#$	%:-GH 		:-@A 	 "	 :-@A 	"2$ !	" 	"	% 	%	 		  	 	" 	"s0   8!F2F* F%#!F1FF"%F.1F:r3   c                    t        j                  d|      }t        |      }|j                  dk(  sJ |j                  t        t        j
                  d|            j                  k(  sJ t        j                  d|      }t        |      }|j                  dk(  sJ |j                  t        t        j                  d|            j                  k(  sJ y )Nr   r   r   rB   r  r9  )rQ   rC   rC   )r+   r   r   r   r   r   r   )rX   r3   rY   rf  s       r4   test_empty_dtypezTestDet.test_empty_dtype  s    HHV2&Fww"}}ww#bffQb1288888HHYb)Fww$ww#bhhy;<BBBBBr6   c                    t        j                  d      j                  dd      j                  t         j                        }|j                         }t        |d      }t        |d       ||k(  j                         rJ y )NrJ  rQ   Tr  rI   )	r+   r   rV   rq  r
   r  r   r   all)rX   rY   acr  s       r4   test_overwrite_azTestDet.test_overwrite_a  sc    
 IIaL  A&--bjj9VVX24(b!G==?""?r6   c                     t        j                  g dg dg dg      }|j                  d       t        t	        |d      d       y )	N)rP   rI   r;   )      @rw   r  r  F)writeTr  rO   )r+   r   setflagsr   r   rs  s     r4   test_readonly_arrayzTestDet.test_readonly_array  s6    HHlM<@A	


A40#6r6   c                     ddgdt         j                  gg}t        t        d      5  t	        |       d d d        y # 1 sw Y   y xY w)NrC   rB   rQ   zarray must not containr`  )r+   infry   rz   r   rs  s     r4   test_simple_check_finitez TestDet.test_simple_check_finite  s?    Va[!:-EF 	F	 	 	s	   =A)r   r   r   r   r  r  r   r   r   r  r  r+   	typecodesr  r  r  r   r   r
   r   r   r  r  r  r  ).0rb   s   00r4   r  r  D  s    ;%"- [[W1vBx&HI  J "$J [[UU0CCR0H %71() &' %7 8@8@
B" [[TC

GR\\#RS	C T	C	#7%7s   'Cr  c                 z    t        |       }|rt        |      }t        ||       }t        ||      }t        ||      S )N)r	   r   r   r   )rY   ra   cmplxata1b1s         r4   direct_lstsqr    s9    	1Br]	RB	RBR=r6   c            	       b   e Zd ZdZd Zd Zd Zd Zej                  j                  de      ej                  j                  dd      ej                  j                  d	e      ej                  j                  d
d      d                             Zej                  j                  ed      ej                  j                  de      ej                  j                  dd      ej                  j                  d	e      ej                  j                  d
d      d                                    Zd Zd Zd Zd Zej                  j                  deeej0                  eej4                  g      ej                  j                  deeej0                  eej4                  g      d               Zy)	TestLstsq)gelsdgelssgelsyNc                    t         D ]  }t        j                  ddgddgg|      }t        j                  D ]  }dD ]  }dD ]  }|j                         }t        j                  ||      }|j                         }t        |||||      }	|	d	   }
|	d
   }t        |d
k(  d|        t        t        ||
      |dt        |j                        z  dt        |j                        z  d|            y )NrC   r<   r>   r?   r   TF)rC   r   r  r  )rM   r>   r?   lapack_driverr  r  r   rB   expected efficient rank 2, got r  driver: r  )REAL_DTYPESr+   r   r  lapack_driversr  r   r   r   r   r5   r   )rX   r   rY   r"  r  btr  ra   r  outrb   r&  s               r4   test_simple_exactzTestLstsq.test_simple_exact  s     	LE1b'C8,E:A!*!9!9 L!. LI3 L VVXHHRu5VVX#B2?0909;  FFQ"A! EG'Aq	1-/)BHH2E-E-/)BHH2E-E2:=/0JLLLL	Lr6   c                     t         D ]  }t        j                  ddgddgddgg|      }t        j                  g d|      }t        j                  D ]4  }dD ]+  }|j                         }|j                         }t        |||||	      }|d
   }	|dk(  r+t        j                  ||j                  |	      z
  dz        }
n|d   }
|d   }t        |dk(  d|        t        t        t        ||	      |z
  dz        j                  d
      |
dt        |j                        z  dt        |j                        z  d|        t        |	ddt        |j                        z  dt        |j                        z  d|        . 7  y )NrC   rB   r?   r  rQ   r   r   r  r!  r   r  r#  r  r  r$  r   r  r  )gm۶mۿgm۶m?)r%  r+   r   r  r&  r  r   r  r   r   r   r1  r5   r   )rX   r   rY   ra   r"  r  r  r  r(  rb   	residualsr&  s               r4   test_simple_overdetzTestLstsq.test_simple_overdet   s     	HE1a&1a&1a&1?A%0A!*!9!9 H!. HIBBBm,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'HH	Hr6   c                 @   t         D ]  }t        j                  ddgddgddgg|      }t        j                  g d|      }t        j                  D ]D  }dD ];  }|j                         }|j                         }t        |||||	      }|d
   }	|dk(  r;||j                  |	      z
  }
t        j                  |
|
j                         z        }n|d   }|d   }t        |dk(  d|        t        t        t        ||	      |z
  dz        j                  d
      |dt        |j                        z  dt        |j                        z  d|        t        |	ddt        |j                        z  dt        |j                        z  d|        > G  y )Nr  rB   r?   r  rQ   r   )rC   r   rQ   r  r!  r   r  rC   r#  r  r  r$  r+  )yu{޿E(B?yӽu{?(YJV?)COMPLEX_DTYPESr+   r   r  r&  r  r   r   r  rE  r   r   r1  r5   r   )rX   r   rY   ra   r"  r  r  r  r(  rb   rF  r,  r&  s                r4   test_simple_overdet_complexz%TestLstsq.test_simple_overdet_complex  s   # 	DE4)aVaV4EBAU3A!*!9!9 D!. DIBBBm,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+DD	Dr6   c                    t         D ]  }t        j                  g dg dg|      }t        j                  ddg|      }t        j                  D ]  }dD ]  }|j                         }|j                         }t        |||||      }|d   }	|d   }
t        |
dk(  d	|
        t        |	d
dt        |j                        z  dt        |j                        z  d|           y )Nr   r  r   rC   rB   r  r!  r   r#  )gqqgqq?gdq?r  r$  r+  )r%  r+   r   r  r&  r  r   r   r   r5   r   )rX   r   rY   ra   r"  r  r  r  r(  rb   r&  s              r4   test_simple_underdetzTestLstsq.test_simple_underdet>  s      	HE)Y/u=A!Qu-A!*!9!9 H!. HIBBBm,5,57C AAAAAF&EaS$IJ#A (;)+i.A)A)+i.A)A.6}o,F	HHH	Hr6   r   r   )r<   r  r"  r  r  c           
      2   t         j                  j                  d      }t        j                  |j                  ||g      |      }t	        |      D ]  }dd|||f   z   z  |||f<    t	        d      D ]  }t        j                  |j                  |dg      |      }|j                         }	|j                         }
t        |	|
|||      }|d   }|d	   }t        ||k(  d
| d|        |t         j                  u rJt        t        ||      |dt        |	j                        z  dt        |	j                        z  d|        t        t        ||      |dt        |	j                        z  dt        |	j                        z  d|        " y )Nr   r   r<   r)  r?   rQ   r!  r   rB   expected efficient rank , got i  r$  r+    )r+   r   RandomStateasarrayr+  r  r   r   r
   r   r   r5   r   rX   r   r   r"  r  re  rY   r%  ra   r  r  r(  rb   r&  s                 r4   test_random_exactzTestLstsq.test_random_exactT  s   
 ii##D)JJszz1a&)7q 	+AC!AqD'M*AadG	+q 	>A

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

"a)Q"Yrxx%88"Yrxx%88$,]O"<	>  a)Q#i&99#i&99$,]O"<	>)	>r6   z$may segfault on Alpine, see gh-17630r}  c           
      `   t         j                  j                  d      }t        j                  |j                  ||g      d|j                  ||g      z  z   |      }t	        |      D ]  }dd|||f   z   z  |||f<    t	        d      D ]  }t        j                  |j                  |dg      |      }|j                         }	|j                         }
t        |	|
|||      }|d	   }|d   }t        ||k(  d
| d|        |t         j                  u rJt        t        ||      |dt        |	j                        z  dt        |	j                        z  d|        t        t        ||      |dt        |	j                        z  dt        |	j                        z  d|        " y )Nr   rh   r   r<   r)  rB   rQ   r!  r   r4  r5  i  r$  r+  r6  )r+   r   r7  r8  r+  r  r   r   r   r   r   r5   r   r9  s                 r4   test_random_complex_exactz#TestLstsq.test_random_complex_exactx  s    ii##D)JJszz1a&)Bszz1a&/A,AA"$q 	+AC!AqD'M*AadG	+q 	>A

3::q!f-U;ABBBm$-$-/C AAAAAF6qc :#  $a)Q"Yrxx%88"Yrxx%88$,]O"<	>  a)Q#i&99#i&99$,]O"<	>'	>r6   c                    t         j                  j                  d      }t        D ]K  }dD ]B  \  }}t        j
                  D ](  }dD ]  }t        j                  |j                  ||g      |      }t        |      D ]  }dd|||f   z   z  |||f<    t        d      D ]  }t        j                  |j                  |dg      |      }	|j                         }
|	j                         }t        |
||||	      }|d
   }|d   }t        ||k(  d| d|        t        |t        ||	d
      dt        |
j                        z  dt        |
j                        z  d|         " + E N y )Nr   )r<      )r  rB   r  r   r<   r)  r?   rQ   r!  r   rB   r4  r5  r  r  r$  r+  )r+   r   r7  r%  r  r&  r8  r+  r  r   r   r   r  r5   r   rX   re  r   r   mr"  r  rY   r%  ra   r  r  r(  rb   r&  s                  r4   test_random_overdetzTestLstsq.test_random_overdet  s   ii##D)  	NE. NA%.%=%= NM%2 N	JJszz1a&'9G!&q ;A&(C!AqD'M&:AadG;!&q NA "

3::q!f+=U KA!"B!"B"'B6C4=4=#?C !$AA #AA#AF.Fqc J++,#-/ 0+*+\!Qa-H/1Ibhh4G/G/1Ibhh4G/G4<]O2L	NN	NNN	Nr6   c                    t         j                  j                  d      }t        D ]b  }dD ]Y  \  }}t        j
                  D ]?  }dD ]6  }t        j                  |j                  ||g      d|j                  ||g      z  z   |      }t        |      D ]  }dd|||f   z   z  |||f<    t        d      D ]  }t        j                  |j                  |d	g      |      }	|j                         }
|	j                         }t        |
||||
      }|d   }|d   }t        ||k(  d| d|        t        |t        ||	d      dt        |
j                        z  dt        |
j                        z  d|         9 B \ e y )Nr   r>  r  rh   r   r<   r)  rB   rQ   r!  r   r4  r5  rC   r@  r  r$  r+  )r+   r   r7  r/  r  r&  r8  r+  r  r   r   r   r  r5   r   rA  s                  r4   test_random_complex_overdetz%TestLstsq.test_random_complex_overdet  s   ii##D)# 	JE. JA%.%=%= JM%2 J	JJszz1a&'9Bszz1a&?Q<Q'Q-24!&q ;A&(C!AqD'M&:AadG;!&q JA "

3::q!f+=U KA "#B!"B"'B6C4=4=#?C !$AA #AA#AF.Fqc J++,#-/ 0+&'a!)D+-	"((0C+C+-	"((0C+C08.H	JJJJJ	Jr6   c           
         t               5 }|j                  t        d       d d d        t        j                  d      }t        j                  t        dt        j                  dd      D ]  \  }}}}}|j                  |      }t        j                  ||      }	|j                         }
|	j                         }t        |
|||||      }|d   }|d   }t        |dk(  d	|        t        t        ||      |	d
t!        |j"                        z  d
t!        |j"                        z  d|         y # 1 sw Y   xY w)NzIinternal gelsd driver lwork query error,.*Falling back to 'gelss' driver.))rC   r<   r   r  r  r   )r"  rt   r  r  r   rB   r#  r  r$  r+  )r   filterRuntimeWarningr+   r   r  r  r%  r  r&  rq  r  r   r   r   r   r5   r   )rX   supr  r   r'  r"  r  rt   rY   ra   r  r  r(  rb   r&  s                  r4   ru   zTestLstsq.test_check_finite  s7     	:CJJ~9:	: XX)*kL'66++	-	@=E2}i 		% A5)A BBBm%1y$-/C AAAAAF=aSABC1Iq!#i&8!8!#i&8!8&.}o$>@'	@	: 	:s   D44D>c           
         dD ]  \  }}t        j                  |      }t        t        j                  |      |      \  }}}}t	        |t        j                  |d   f|dd  z                |d   rt        j
                  d      n#t         j                  j                  |d      dz  }t	        ||       t        |dk(  d       t	        |t        j
                  d              y )N))r   rB   r   ))r   r?   rK  )r?   r   )r?   )rL  )r?   rB   rC   r   r   r  rB   zexpected rank 0)	r+   r   r   r   r   r   r  r   r   )	rX   a_shapeb_shapera   rb   residuesranksresidues_should_bes	            r4   r   zTestLstsq.test_empty  s    !3 	,GW  A#('):A#> AxqBHHgaj]WQR[%@AB4;AJ"((4.')yy~~aa~'@!'C #56DAI01BHHTN+	,r6   r  r   c                 L   t        j                  d|      }t        j                  d|      }t        ||      \  }}}}|j                  dk(  sJ t        t        j                  d|      t        j
                  d|            d   j                  }	|j                  |	k(  sJ y r  )r+   r   r   r_  r   r   r   )
rX   r  r   rY   ra   rb   rO  rP  rQ  r  s
             r4   r  zTestLstsq.test_empty_dtype  s     HHV4(HHQd#$Q{8T1vv{{BFF1D12771D3IJ1MSSww+%%%r6   N)r   r   r   r&  r)  r-  r0  r2  r   r   r   r%  r:  skipifr(   r/  r<  rC  rE  ru   r   r   r   r+   r
   r   r   r  r   r6   r4   r  r    s   6NL2H:DBH, [[Wk2[[S),[[_n=[[[-8> 9 > - 3>@ [[(NO[[Wn5[[S),[[_n=[[[-8> 9 > - 6 P
>@N8J<@@, [[Vc5"**gr||%TU[[Vc5"**gr||%TU& V V&r6   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                  j                  d
eej"                  eej&                  g      d        Zy)TestPinvc                 B    t         j                  j                  d       y r   r   r   s    r4   r   zTestPinv.setup_method  r   r6   c                     t        g dg dg dgt              }t        |      }t        t	        ||      t        j                  d             y Nr   r  r  r   rQ   r   r   r   r   r   r+   r   rX   rY   a_pinvs      r4   test_simple_realzTestPinv.test_simple_real  s6    9i4EBa!#a."&&)<r6   c                     t        g dg dg dgt              dt        g dg dg dgt              z  z   }t        |      }t        t	        ||      t        j                  d	             y 
Nr   r  r  r   rh   )rI  r  rF   )r@   r  r?   )rQ   rB   rC   rQ   rZ  r[  s      r4   r  zTestPinv.test_simple_complex  s[    Iy*5
Iy'I-2"4 44 a!#a."&&)<r6   c                     t        g dg dg dgt              }t        |      }t        g dg dg dg      }t        ||       y )Nr   r  rF   r  rJ  r   g|qgԕVUUſgc8?gqg^0<gq?g9?gԕVUU?g:87ȿr   r   r   r   rX   rY   r\  r   s       r4   test_simple_singularzTestPinv.test_simple_singular!  sD    9i35AaLKKM N 	"&(3r6   c                     t        g dg dgt              }t        |      }t        ddgddgdd	gg      }t        ||       y )
Nr   r  r   g֋8g#q?g#qg#q?gIq?g#q̿re  rf  s       r4   test_simple_colszTestPinv.test_simple_cols)  sN    9i(6a;
3&
3%{35 6 	"&(3r6   c                     t        ddgddgddggt              }t        |      }t        g dg d	g      }t        ||       y )
NrC   rB   rQ   r?   r  r@   r   )gDpTUUgQUUտgvWUU?)gDpTUU?gQUU?g&>ڿre  rf  s       r4   test_simple_rowszTestPinv.test_simple_rows1  sK    Aq6Aq6Aq6*%8a@?A B!&(3r6   c                     t        g dg dg dg      }t        |d      }t        t        ||      t	        j
                  d             y )Nr   )r?   r  r   r  Frs   rQ   )r   r   r   r   r+   r   r[  s      r4   ru   zTestPinv.test_check_finite8  s7    9j*56ae,!#a."&&)<r6   c                 p    g dg dg dg}t        |      }t        g dg dg dg      }t        ||       y )Nr   r  ra  rb  rc  rd  )r   r   r   rf  s       r4   test_native_list_argumentz"TestPinv.test_native_list_argument=  s=    	9-aLKKM N 	"&(3r6   c                    d}t        t        j                  j                  ||            \  }}t        j                  d      j                  dd      }|j                         }d|d<   d}d}t        ||d	
      }||z  |z  |z
  }	||z  |z  |z
  }
t        t        j                  j                  |	      dd       t        t        j                  j                  |
      dd       t        |||
      }||z  |z  |z
  }	||z  |z  |z
  }
t        t        j                  j                  |	      dd       t        t        j                  j                  |
      dd       y )N   g     A@rF   r  gMbP?r   h㈵>g?rI   r  r   gMb@?r  gvIh%,=g;O@{Gz?r   )r#   r+   r   rj  r   rV   r  r   r   r  r   )rX   r   q_a_mrY   r  r   a_padiff1adiff2s              r4   test_atol_rtolzTestPinv.test_atol_rtolE  s(   "))..A&'1iio%%a+HHJ$ 3T+S1qsS3& 			v.5A		v.FC 3T-S1qsS3&		v.DA		v.DAr6   r3   c                     t        j                  d|      }t        |      }|j                  dk(  sJ |j                  t        t        j
                  d|            j                  k(  sJ y r  )r+   r   r   r_  r   r   rX   r3   rY   r\  s       r4   r   zTestPinv.test_empty`  sU    HHV2&a{{a||tBFF1B$78>>>>>r6   N)r   r   r   r   r]  r  rg  ri  rk  ru   rn  r{  r   r   r   r   r+   r
   r   r   r   r   r6   r4   rV  rV    sg    =
=444=
4B6 [[TE2::w#MN? O?r6   rV  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  deej                  eej"                  g      d	        Zy
)TestPinvSymmetricc                 B    t         j                  j                  d       y r   r   r   s    r4   r   zTestPinvSymmetric.setup_methodj  r   r6   c                     t        g dg dg dgt              }t        j                  ||j                        }t        |      }t        t        j                  ||      t        j                  d             y rY  )r   r   r+   r   r>  r   r   r   r[  s      r4   r]  z"TestPinvSymmetric.test_simple_realm  sN    9i4EBFF1accNq!"&&F"3RVVAY?r6   c                 N   t        g dg dg dgt              }t        j                  ||j                        }t        j
                  j                  |      \  }}}|dxx   dz  cc<   t        j                  ||z  |      }t        |      }t        |      }t        ||       y )Nr   r  ra  r   r   rE   )
r   r   r+   r   r>  r  svdr   r   r   )rX   rY   r\   rQ  vtr\  a_pinvhs          r4   test_nonpositivez"TestPinvSymmetric.test_nonpositives  s}    9i35AFF1accN99==#1b	!
FF1q5"a(!&'2r6   c                 L   t        g dg dg dgt              dt        g dg dg dgt              z  z   }t        j                  ||j	                         j
                        }t        |      }t        t        j                  ||      t        j                  d	             y r_  )	r   r   r+   r   rE  r>  r   r   r   r[  s      r4   r  z%TestPinvSymmetric.test_simple_complex}  sz    Iy*5
Iy'I-2"4 44 FF1affhjj!q!"&&F"3RVVAY?r6   c                    t        g dg dg dgt              }t        j                  ||j                        }t        |j                               }t        t        j                  ||      t        j                  d             y rY  )	r   r   r+   r   r>  r   tolistr   r   r[  s      r4   rn  z+TestPinvSymmetric.test_native_list_argument  sU    9i4EBFF1accNqxxz"!"&&F"3RVVAY?r6   c                     t        j                  g dg dg dg      }t        |      }t        ||z  |z  |d       t        ||z  |z  |d       y )N)rC   rE   r   )rE   rB   rE   )r   rE   rC   r   rs  )r+   r   r   r   )rX   rY   ps      r4   test_zero_eigenvaluez&TestPinvSymmetric.test_zero_eigenvalue  sJ     HHj+z:;!HA	151A	151r6   c                 |   d}t        t        j                  j                  ||            \  }}t        j                  g ddg|dz
  z  z         }|j
                  |z  |z  }t        j                  g ddg|dz
  z  z         }|j
                  |z  |z  }d}d}t        ||d	      }||z  |z  |z
  }	||z  |z  |z
  }
t        t        |	      |d
       t        t        |
      dd       t        |||	      }||z  |z  |z
  }	||z  |z  |z
  }
t        t        |	      dd
       t        t        |
      dd
       y )Nrp  )r?   rQ   rB   rC   vk?gﭣ>gu>r@   )r?   rQ   rB   rC   r  rI   rI   rq  g1?rr  r)  r   r  gdy=rs  -C6?)	r#   r+   r   rj  rm   r>  r   r   r   )rX   r   ru  rv  rY   rw  r  r   rx  ry  rz  s              r4   r{  z TestPinvSymmetric.test_atol_rtol  s2   "))..A&'1GG2gY!_DECC!GaKgg/2$!*<=ccCi!m!ADr*S1qsS3& 	Vd5Ve%8 ADt,S1qsS3&Vd5Vd5r6   r3   c                     t        j                  d|      }t        |      }|j                  dk(  sJ |j                  t        t        j                  d|            j                  k(  sJ y r  )r+   r   r   r_  r   r   r   r}  s       r4   r   zTestPinvSymmetric.test_empty  sU    HHV2&q{{a||tBFF1B$78>>>>>r6   N)r   r   r   r   r]  r  r  rn  r  r{  r   r   r   r   r+   r
   r   r   r   r   r6   r4   r  r  h  s_    @3@@266 [[TE2::w#MN? O?r6   r  scale)g#B;r;   @xDpinv_c                     t        j                  ddgddgg      | z  }t        j                  dt        j                  |      z        } ||      }t        ||       y )NrC   r   g|=r;   )r+   r   rm   r   )r  r  rb   r   x_invs        r4   test_auto_rcondr    sQ     	1a&1e*%&.AwwrBGGAJ'H!HEE8$r6   c                   x    e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  e d      d	        Zy
)TestVectorNormsc                    t         j                  d   D ]  }t        j                  g d|      }t        dt        j                  |      j
                  j                  dz        }t        t        |      t        j                  d      |       t        t        |d      t        j                  d      |        t         j                  d	   D ]  }t        j                  g d
|      }t        dt        j                  |      j
                  j                  dz        }t        t        |      t        j                  d      |       t        t        |d      t        j                  d      |        y )NAllFloatr   r   r   r<   rG   r   rB   Complex)rh   re   y              @)
r+   r  r   maxr0   r1   realr   r   sqrt)rX   r   rb   r  s       r4   
test_typeszTestVectorNorms.test_types  s   \\*- 	?E%0AeRXXe_0055:;CDGRWWR[s;DAJ#>		? \\), 	?EU3AeRXXe_0055:;CDGRWWR[s;DAJ#>		?r6   c                 R    t        dgt              }t        t        |      |       y )Nr  r   )r   r
   r   r   rs  s     r4   test_overflowzTestVectorNorms.test_overflow  s      4&(DGQ'r6   c                     t        dgdgdz  z   t              }	 t        t        |      dz
  dd       y # t        $ r d}t        t        |      dz
  d	|
       Y y w xY w)N     @rC   i'  r   r   rt  rs  zO: Result should equal either 0.0 or 0.5 (depending on implementation of snrm2).rI   )r  )r   r
   r   r   AssertionErrorr   )rX   rY   r  s      r4   test_stablezTestVectorNorms.test_stable  sc    3%1#e)#73	A DGcM3T: 	A.CQ#sC@		As   6 %AAc                 d    t        t        g dd      d       t        t        g dd      d       y )N)rC   r   rQ   r   rB   r   rQ   )r   r   r   s    r4   test_zero_normzTestVectorNorms.test_zero_norm  s$    T)Q'+T)Q'+r6   c                     t        j                  ddgddgggdz  d      }t        t        |d      ddggdz         t        t        |dd      d	gdz  gdz         y )
NrB   rC   rQ   r?   rf  r  5D+@6f~@r  )r+   r   r   r   rs  s     r4   test_axis_kwdzTestVectorNorms.test_axis_kwd  sc    HH1v1v&'!+S1QQ:z*B)Ca)GHQ*bTAXJN;r6   c                     t        j                  ddgddgggdz  d      }t        |dd      }t        |dd	gggdz         t	        |j
                  d
k(         t        t        |ddd      dgdgggdz         y )NrB   rC   rQ   r?   rf  T)r  keepdimsr  r  )rB   rC   rB   rw   g      @)r+   r   r   r   r   r   rQ  s      r4   test_keepdims_kwdz!TestVectorNorms.test_keepdims_kwd  s    HH1v1v&'!+S1T*j*567!;<9$%QD9bTB4L>A;MNr6   z64-bit BLAS requiredr}  c                     t        d       t        j                  dgt        j                        }d|d<   t	        |      }~t        |d       y )NihB  )free_mbl        r   rC   rE   r;   )r'   r+   r   r-   r   r   )rX   rb   rF  s      r4   test_large_vectorz!TestVectorNorms.test_large_vector  s?    %(HHeWBJJ/"1gS!r6   N)r   r   r   r  r  r  r  r  r  r   r   rT  r)   r  r   r6   r4   r  r    sN    ?(A,<
O [[I.DE" F"r6   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestMatrixNormsc           
         t         j                  j                  d       dD ]  \  }}t         j                  t         j                  t         j
                  t         j                  t         j                  fD ]f  }dt         j                  j                  ||      j                  |      z  }t        j                  |j                  t         j                        rF|dt         j                  j                  ||      z  z   j                  |      }t         j                  }nt         j                  }d ddddd	t         j                  t         j                   fD ]  }t        ||
      }t         j                  j                  ||
      }t        j                   ||      rHt         j                  j                  |j                  |      |
      }t#        ||        i  y )Nr   )rk   )rC   rQ   )rQ   rC   )r?   r?   r  )r  r?   rI  y              $@frorC   rE   rB   )ord)r+   r   r   r
   r-   r   r/   int64r  rq  r  r   r  r  r   r  allcloser   )	rX   r   rB  r  r!  t_highr  actualdesireds	            r4   test_matrix_normsz!TestMatrixNorms.test_matrix_norms  sO   
		tB 	9DAqZZR\\2=="((R 9A.55a88=="*<*<=S299??1a#888@@CA]]FZZF"E1b!R"&&I 9E!!/F iinnQEn:G ;;vw7"$))..&1Au."M'899	9r6   c                 
   t        j                  ddgddgggdz  d      }t        |t         j                  d      }t        t        j                  |dd      t         j                  d	      }t        |dd	      }t        ||       t        ||       t        ||       t        |j                  |j                  cxk(  xr |j                  k(  nc        t        |dd      }t        t        j                  |dd      dd	      }t        |t         j                  d	      }t        ||       t        ||       t        ||       t        |j                  |j                  cxk(  xr |j                  k(         y c        y )
NrB   rC   rQ   r?   rf  r  )r  r  r   r  )r+   r   r   r  swapaxesr   r   r   )rX   rY   ra   r  rf  s        r4   r  zTestMatrixNorms.test_axis_kwd  s   HH1v1v&'!+S1V,Q1%266?'111177-agg-.'Q1%16:V,111177-agg-.-.r6   c                 
   t        j                  dd      j                  dddd      }t        |t         j                  dd	
      }t        |ddd	
      }t        ||       t        |j                  |j                  k(         y )Nx   rf  r   rB   rQ   r?   r  r  T)r  r  r  rC   r  )r+   r   rV   r   r  r   r   r   )rX   rY   ra   r  s       r4   r  z!TestMatrixNorms.test_keepdims_kwd"  sf    IIc%--aAq9Vd;61177"#r6   c                    t        j                  d      }t        t        |      d       t        t        |d      t        j                  d             t        t        |d      t        j                  d             t        j                  d	      }t        t        |      d       t        t        |d      t        j                  d
             t        t        |d      t        j                  d             y )Nr   rI   r   r  r   T)r  rk   )r   rQ   r9  )r+   r   r   r   r   rs  s     r4   r   zTestMatrixNorms.test_empty)  s    HHVQ$QQ$8Q.0@AHHVQ$QQ$8Q.0@Ar6   N)r   r   r   r  r  r  r   r   r6   r4   r  r    s    9(/"$	Br6   r  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestOverwritec                 (    t        t        ddg       y NrQ   rQ   r9  )r&   r   r   s    r4   
test_solvezTestOverwrite.test_solve6      EFD>2r6   c                 (    t        t        ddg       y r  )r&   r   r   s    r4   test_solve_triangularz#TestOverwrite.test_solve_triangular9  s    ,vtn=r6   c                 "    t        d ddg       y )Nc                     t        d| |      S )NrM   )r   )rZ   ra   s     r4   <lambda>z1TestOverwrite.test_solve_banded.<locals>.<lambda>=  s    ,vr1*E r6   )r?   r@   r@   r%   r   s    r4   test_solve_bandedzTestOverwrite.test_solve_banded<  s    E#TN	,r6   c                 (    t        t        ddg       y )N)rB   r@   r  )r&   r   r   s    r4   test_solveh_bandedz TestOverwrite.test_solveh_banded@  s    MFD>:r6   c                 &    t        t        dg       y Nr  )r&   r   r   s    r4   test_invzTestOverwrite.test_invC      C&*r6   c                 &    t        t        dg       y r  )r&   r   r   s    r4   test_detzTestOverwrite.test_detF  r  r6   c                 (    t        t        ddg       y )N)rQ   rB   r9  )r&   r   r   s    r4   
test_lstsqzTestOverwrite.test_lstsqI  r  r6   c                 &    t        t        dg       y r  )r&   r   r   s    r4   	test_pinvzTestOverwrite.test_pinvL  s    D6(+r6   c                 &    t        t        dg       y r  )r&   r   r   s    r4   
test_pinvhzTestOverwrite.test_pinvhO  s    EF8,r6   N)r   r   r   r  r  r  r  r  r  r  r  r  r   r6   r4   r  r  5  s/    3>,;++3,-r6   r  c            	       "   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                  j                  d	eeej"                  eej&                  g      ej                  j                  d
eeej"                  eej&                  g      d               Zy)TestSolveCirculantc                     t        j                  g d      }t        j                  g d      }t        ||      }t        t	        |      |      }t        ||       y N)rC   rB   rQ   r  )rC   rE   rC   r   )r+   r   r   r   r   r   rX   r  ra   rb   ys        r4   test_basic1zTestSolveCirculant.test_basic1U  sD    HH\"HH]#Aq!)A,"1r6   c                     t        j                  g d      }t        j                  d      j                  dd      }t	        ||      }t        t        |      |      }t        ||       y )NrC   rB   r  rp  r?   rQ   r+   r   r   rV   r   r   r   r   r  s        r4   test_basic2zTestSolveCirculant.test_basic2\  sP    HH^$IIbM!!!Q'Aq!)A,"1r6   c                     t        j                  g d      }t        j                  d      j                  ddd      }t	        ||      }t        t        |      |      }t        ||       y )Nr     r?   rQ   rB   r  r  s        r4   test_basic3zTestSolveCirculant.test_basic3d  sR    HH^$IIbM!!!Q*Aq!)A,"1r6   c                     t        j                  g d      }t        j                  d      j                  dd      dz   }t	        ||      }t        t        |      |      }t        ||       y )N)r  r  r   r  r  r?   rB   y              ?r  r  s        r4   ri   zTestSolveCirculant.test_complexl  sV    HH&'IIaL  A&-Aq!)A,"1r6   c                     t         j                  j                  d      }|j                  d      }|j                  d      }t	        ||      }t        t        |      |      }t        ||       y )Ni1  r]  )r+   r   r7  r  r   r   r   r   )rX   re  r  ra   rb   r  s         r4   test_random_b_and_cz&TestSolveCirculant.test_random_b_and_ct  sV    ii##E*IIbMIIbMAq!)A,"1r6   c                     t        j                  g d      }t        j                  g d      }t        ||d      }t        t	        |      |      \  }}}}t        ||       t        t        t        ||       y )NrC   rC   r   r   )rC   rB   rQ   r?   r   )singular)r+   r   r   r   r   r   ry   r    )rX   r  ra   rb   r  rF  rnkrQ  s           r4   test_singularz TestSolveCirculant.test_singular}  s\    HH\"HH\"Aq73y|Q/3Q1k?Aq9r6   c                    t        j                  g dgg dgg      }t        j                  g dg dg dg      }t        ||d      }t        |j                  d       t        j
                  |      }t        t        |d	   j                               |j                        |d d d	d d f<   t        t        |d   j                               |j                        |d d dd d f<   t        ||       t        ||dd
      }t        |j                  d       t        t        j                  |d
d	      |       t        t        j                  |dd      |j                  d      }t        |j                  d       t        ||       y )N)rE   g      @rQ   g      @)rC   r@   r@   g      @)r   r   rC   rC   r  )rC   rE   r   r   rC   )baxis)r?   rB   rQ   r   rE   )r  outaxis)rB   rQ   r?   rB   )caxis)r+   r   r   r   r   
empty_liker   r   r:  r>  r   moveaxisr  )rX   r  ra   rb   r   s        r4   test_axis_argsz!TestSolveCirculant.test_axis_args  s+    HH()N+;<= HHlL-@AAq*QWWi(==#!)AaDJJL"9133?Aq!)AaDJJL"9133?Aq8$Aq26QWWi(Ar1-x8 BKK1a0!##Q?QWWi(8$r6   c                 n    g d}g d}t        ||      }t        t        |      |      }t        ||       y r  )r   r   r   r   r  s        r4   r   z-TestSolveCirculant.test_native_list_arguments  s2    Aq!)A,"1r6   dt_cr   c                    t        j                  g |      }t        j                  g |      }t        ||      }|j                  dk(  sJ |j                  t        t        j
                  d|      t        j                  d|            j                  k(  sJ t        j                  d|      }t        ||      }|j                  dk(  sJ |j                  |j                  k(  sJ y )Nr   r   rQ   r   )r+   r   r   r   r   r   r   r   )rX   r  r   r  ra   rb   x1s          r4   r   zTestSolveCirculant.test_empty  s     HHRt$HHRt$Aq!ww$ww/"))AT*B*,''!4*@BBG%H 	H H HHV4(Q"xx6!!!xx177"""r6   N)r   r   r   r  r  r  ri   r  r  r  r   r   r   r   r   r   r+   r
   r   r   r   r   r6   r4   r  r  S  s    :%2 [[Vc5"**gr||%TU[[Vc5"**gr||%TU# V V#r6   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  deeej                   eej$                  g      d	        Zy
)TestMatrix_Balancec                 .    t        t        t        d       y )NzSome string for fail)ry   rz   r"   r   s    r4   test_string_argz"TestMatrix_Balance.test_string_arg  s    j.2HIr6   c           	          t        t        t        t        j                  ddgdt        j
                  gg             t        t        t        t        j                  ddgdt        j                  gg             y )NrC   rB   rQ   )ry   rz   r"   r+   r   r  nanr   s    r4   test_infnan_argz"TestMatrix_Balance.test_infnan_arg  sT    j.hhABFF45	7j.hhABFF45	7r6   c           	          t        t        j                  ddgddgg            \  }}t        t        j                  t        j
                  t        j                  |                  dg       y )Nr6  rC   r   r  )r"   r+   r   r   difflog2rm   )rX   rv  r  s      r4   test_scalingzTestMatrix_Balance.test_scaling  sN    bhhq	D!9'=>?1 	
 34qc:r6   c                     t        j                  g dg dg dg      }t        |      \  }}t        t	        ||      j                  |      |       y )N)rC   r   r  )rC   rC   rt  )r  g      Y@rC   )r+   r   r"   r   r   r   )rX   r!  rb   r  s       r4   test_scaling_orderz%TestMatrix_Balance.test_scaling_order  s>    HHlL-@Aa 1a*A.r6   c                     t        t        j                  ddgddgg      d      \  }\  }}t        t        j                  t        j
                  |            dg       t        |t        j                  d             y )Nr6  rC   r   separater  rB   )r"   r+   r   r   r	  r
  r   r   )rX   rv  r  zs       r4   test_separatez TestMatrix_Balance.test_separate  s^    "288dAYq	,B#C,-/	6AqRWWRWWQZ(1#.299Q<(r6   c                 \   t        t        j                  d      t        j                  t        j                  d            t        j                  d            }t	        |d      \  }\  }}t        |t        j                  |             t        |t        j                  g d             y )N)rB   rB   r  rC   r  )r   rC   r@   r  r?   rQ   rB   )r!   r+   r   rM  r"   r   	ones_liker   )rX   r!  rb   r  r  s        r4   test_permutationz#TestMatrix_Balance.test_permutation  sn    rwwv(@wwv("1q1	6Aq2<<?+288$9:;r6   c           	      (   t        j                  g dg dg dg dg dg      t        j                  g dg dg dg dg      t        j                  g d	g d
g dg dg      f}|D ]  }t        |      \  }}t        |d      \  }\  }}t        j                  |      }t        j                  |j
                  d         ||<   t        |t        j                  |      |d d f          t        t        ||      j                  |      |        y )N)rI   rI   rI   rI   >)rI   rI   rI   rI   rI   )rP   rP   rI   rI   rI   )rI   rI   r  rI   rI   )r  rI   rI   rI   )rI   r  rI   rI   )r;   rI   r  rI   )rI   r;   rI   r  )r  rI   r;   rI   )r  r         r;   )r  r  r  rI   )r  r  r;   r  rC   r  r   )
r+   r   r"   r  r   r   r   rm   r   r   )rX   casesr!  rb   r  rQ  r  ips           r4   test_perm_and_scalingz(TestMatrix_Balance.test_perm_and_scaling  s     5///5	7 8 -,-,. /
 ,...0 1$  	3A!!$DAq&q15IAv1q!BIIaggaj)BqEArwwqz"a%01E!QKOOA.2	3r6   r3   c                    t        j                  d|      }t        |      \  }}|j                  dk(  sJ |j                  dk(  sJ t        t        j                  d|            \  }}|j
                  |j
                  k(  sJ |j
                  |j
                  k(  sJ t        |d      \  }\  }}|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ t        |d      \  }\  }	}
|j
                  |j
                  k(  sJ |j
                  |	j
                  k(  sJ |j
                  |
j
                  k(  sJ y )Nr   r   r   rB   Tr  )r+   r   r"   r_  r   r   )rX   r3   rY   ra   r  b_nt_nr  permscale_nperm_ns              r4   r   zTestMatrix_Balance.test_empty  s"   HHV2&a 1vv{{vv{{!"&&""56Sww#))###ww#))###)!d;=E4vv{{zzQyyA~~!/D!Agvww#))###{{gmm+++zzV\\)))r6   N)r   r   r   r  r  r  r  r  r  r  r   r   r   r   r   r+   r
   r   r   r   r   r6   r4   r  r    s_    J7;/
)<38 [[TC

GR\\#RS* T*r6   r  r   )Lr  numpyr+   r   r   r   r   r   r   r	   r
   numpy.randomr   numpy.testingr   r   r   r   r   r   r   r   r   ry   scipy.linalgr   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   scipy.linalg._testutilsr&   scipy._lib._testutilsr'   r(   scipy.linalg.blasr)   r-   r,   r%  r   r/   r.   r/  DTYPESr5   r8   r   r   r  r  r  r  r  rV  r  r   r   r  r  r  r  r  r  r   r6   r4   <module>r*     s       B B B  *= = = = =
 8 < 'zz2::r}}5,,r~~>	~	%dV dVNIV IVX
d$ d$NOJ OJd/= /=dT Tnj& j&Z	T? T?nK? K?\ "344-0% 1 5%9" 9"x7B 7Bt- -<a# a#HT* T*r6   