
    Ugk$                    `   d dl Z 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	l0m1Z1 ej        ej2        ej3        fZ4ej5        ej6        ej7        fZ8e4e8z   Z9d
 Z: 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ZA G d d          ZB G d d          ZC G d d          ZDejE        F                    dd          ejE        F                    d eef          d!                         ZG G d" d#          ZH G d$ d%          ZI G d& d'          ZJ G d( d)          ZK G d* d+          ZLdS )-    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     \/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/linalg/tests/test_basic.py	_eps_castr5      sB    	B	R]Z	r~		]8B<<    c            	          e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                            d	eeej        eej        g          ej                            d
eeej        eej        g          d                         ZdS )TestSolveBandedc                    t          g dg dg dg dg          }t          g dg dg dg dg          }d	\  }}t          g d
          }|                    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 ]3}	t          ||f||	          }
t          t	          ||
          |	           4d S )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)   sH   ???!>> ==!>># $ $ OOO"NN"NN!MM# $ $ 1)))**

2q!!1vQx1v1v     |||#||#||#||% & & eUE* 	4 	4AaVR++A%c!Qii3333	4 	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
          }|                    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 ]3}	t          ||f||	          }
t          t	          ||
          |	           4d S )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_complexA   sK   ???!>>"??!>># $ $ $$$"NN"NN"NN$ % % 1***++

2q!!1vQx1v1v     |||$}}#||#||% & & eUE* 	4 	4AaVR++A%c!Qii3333	4 	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          }|                    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 ]1}t	          d||          }t          t          ||          |           2d S )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_realY   sd   OOO!>>!>># $ $ GBq!""uIq!!BGBq!!!tHa$8$8827@B1crc6
B<P <P P)))**

2q!!1vQx1v1v     |||#||#||#||% & & eUE* 	4 	4AVR++A%c!Qii3333	4 	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          }|                    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 ]1}t	          d||          }t          t          ||          |           2d S )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_complexm   sg   $$$!>>!>># $ $ GBq!""uIq!!BGBq!!!tHa$8$8827?A!SbS&z2<O <O O***++

2q!!1vQx1v1v     |||#||#||#||% & & eUE* 	4 	4AVR++A%c!Qii3333	4 	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          ||          |           d S )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   s    ???!>> ==!>># $ $ OOO"NN"NN!MM# $ $ 1)))**!QRe<<<!#a))R00000r6   c                 N   t          g dg dg dg dg          }d\  }}t          g d                              dd          }t          t          t          ||f||           t          t          t          ||f|d	d
g           t          t          t          d|d	d
g           d S )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    OOO"NN"NN!MM# $ $ 1((())11"a88j,AC@@@j,AS#JGGG 	j,S#JGGGGGr6   c                     t          g dg          }t          ddgdgdgg|          }t          |g dg           t          |j        t          j        d                     t          |g dg           d S )Nr;   rP   rw   rk   r   rB   )      ?r;   g      ?f8)r   r   r   r   dtyper+   )rX   ra   rb   s      r4   test_1x1zTestSolveBanded.test_1x1   s    <<<.!!1#sQC!441/000QWbhtnn---1/0000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          ||          |           d S )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    __^^]]^^ oonnnnmm 1"""!QQ''!#a))Q/////r6   dt_abdt_bc                 $   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 d S )Nr   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    Xrd%(((HRt$$$Q''w$w%q 6 6 68N8N8NOOUUUUUHV4(((Q''w&    w%q 6 6 68N8N8NOOUUUUUUUr6   N)__name__
__module____qualname__rc   ri   ro   rq   ru   r|   r   r   pytestmarkparametrizeintfloatr+   r
   complex	complex64r    r6   r4   r8   r8   '   s        4 4 404 4 404 4 4(4 4 4(1 1 1H H H1 1 10 0 0 [WsE2:w&UVV[Vc5"*gr|%TUUV V VU WVV V Vr6   r8   c            	       X   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j                            deeej        e ej!        g          ej                            deeej        e ej!        g          d                         Z"dS )TestSolveHBandedc                     t          g dg dg dg          }t          g d          }t          ||          }t          |g d           d S 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   su     (((((((((* + + &&&''"a  !!%9%9%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          ||           d S )	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                              dd          }t          ||          }t          |t          g d                              dd                     d S )Nr   r   r   r   rE   rC   r   r   rV   r   r   r   s       r4   test_03_upperzTestSolveHBanded.test_03_upper   s     (((((((((* + + &&&''//A66"a  !!U+;+;+;%<%<%D%DR%K%KLLLLLr6   c                     t          g dg dg dg          }t          g d          }t          ||d          }t          |g d           d S )Nr   r;   r;   r;   r   rP   rP   rI   rI   r   Tlowerr   r   r   s       r4   test_01_lowerzTestSolveHBanded.test_01_lower   sz     (((((((((* + + &&&''"at,,,!!%9%9%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          ||           d S )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           d S )Nr   r   r   r   r   r   r   r
   r   r   r   s       r4   test_01_float32z TestSolveHBanded.test_01_float32  s     (((((((((*18: : : &&&g666"a  !!%9%9%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          ||           d S )
Nr   r   r   r   r;   r   rx   rP   rI   r   r   s        r4   test_02_float32z TestSolveHBanded.test_02_float32'  s     (((((((((*18: : : C:::: './ / / "a  3****& ' ' 	"!X.....r6   c                     t          g dg dg dg          }t          g d          }t          ||          }t          |g d           d S )Nr   r                r   r   r   )       @            @            @      ?       @      ?)rI   r;   r;   rI   r   r   s       r4   test_01_complexz TestSolveHBanded.test_01_complex<  su     (((...(((* + + ...//"a  !!%9%9%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          ||           d S )Nr   r   r   r          @      @r               r   y      @       @r   rh   rI   r;   r   r   s        r4   test_02_complexz TestSolveHBanded.test_02_complexJ  s     (((...(((* + + D$<E?D>":     "a  3+***& ' ' 	"!X.....r6   c                     t          g dg dg          }t          g d          }t          ||          }t          |g d           d S )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_upper_  sX     OOO___566///"""a  !!___5555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          ||           d S )Nr   r   r;   rx   rP   rI   r   r   s        r4   test_tridiag_02_upperz&TestSolveHBanded.test_tridiag_02_upperj  s     OOO#OO% & &C:::     "a  3***& ' ' 	"!X.....r6   c                     t          g dg dg          }t          g d                              dd          }t          ||          }t          |t          g d                              dd                     d S )Nr   r   r   rE   rC   r   r   r   s       r4   test_tridiag_03_upperz&TestSolveHBanded.test_tridiag_03_upper{  s     OOO___566///""**2q11"a  !!U???%;%;%C%CB%J%JKKKKKr6   c                     t          g dg dg          }t          g d          }t          ||d          }t          |g d           d S )Nr   r;   r;   r   r   Tr   r   r   r   s       r4   test_tridiag_01_lowerz&TestSolveHBanded.test_tridiag_01_lower  sd     OOO#OO% & &///"""at,,,!!___5555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          ||           d S )	Nr   r   r;   rx   rP   Tr   rI   r   r   s        r4   test_tridiag_02_lowerz&TestSolveHBanded.test_tridiag_02_lower  s     OOO#OO% & &C:::     "at,,,3***& ' ' 	"!X.....r6   c                     t          g dg dgt                    }t          g dt                    }t          ||          }t          |g d           d S )Nr   r   r   r   r   r   r   s       r4   test_tridiag_01_float32z(TestSolveHBanded.test_tridiag_01_float32  sb     OOO___5WEEE///111"a  !!___5555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          ||           d S )Nr   r   r   r;   rx   rP   rI   r   r   s        r4   test_tridiag_02_float32z(TestSolveHBanded.test_tridiag_02_float32  s     OOO#OO%,35 5 5C:::&-/ / / "a  3***& ' ' 	"!X.....r6   c                     t          g dg dg          }t          g d          }t          ||          }t          |g d           d S )Nr   r   r   r   )r   r   r   )rI   r;   r;   r   r   s       r4   test_tridiag_01_complexz(TestSolveHBanded.test_tridiag_01_complex  s^     '''9::'''(("a  !!___5555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          ||           d S )Nr   r   r                 @r   r   r   rx   rI   rh   r;   r   r   s        r4   test_tridiag_02_complexz(TestSolveHBanded.test_tridiag_02_complex  s     '''#OO% & &C;G$C=" # # "a  3+**& ' ' 	"!X.....r6   c                     t          g dg dg          }t          g d          }t          ||d          }t          |g d           d S )Nr   r   r   Frs   r   r   r   s       r4   ru   z"TestSolveHBanded.test_check_finite  s]     OOO___566///"""ae444!!___5555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           d S )Nr   r   r;   rx   rP   )r   ry   rz   r   )rX   rZ   ra   s      r4   test_bad_shapesz TestSolveHBanded.test_bad_shapes  s    OOO#OO% & &C::    j-Q777j-c3Z@@@j-cU;;;;;r6   c                     t          dggg dg          }t          |g dg           t          |j        t	          j        d                     d S )NrC   rC   rB   rQ   r~   r   )r   r   r   r   r+   )rX   rb   s     r4   r   zTestSolveHBanded.test_1x1  sR    A3%)))--1/000QWbhtnn-----r6   c                 h    g dg dg dg}g d}t          ||          }t          |g d           d S r   )r   r   r   s       r4   r   z+TestSolveHBanded.test_native_list_arguments  s]    """""""""$ !  "a  !!%9%9%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 d S )Nr   r   rC   r   )	r+   r   r   r   r   r   r   r   r   r   s         r4   r   zTestSolveHBanded.test_empty  s    Xrd%(((HRt$$$"a  w$w%q 6 6 68N8N8NOOUUUUUHV4((("a  w&    w%q 6 6 68N8N8NOOUU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 M M; ; ;/ / /*; ; ;/ / /*; ; ;/ / /*	6 	6 	6/ / /"	L 	L 	L
6 
6 
6/ / /"	6 	6 	6/ / /"	6 	6 	6/ / /"	6 	6 	6< < <. . .
; ; ; [WsE2:w&UVV[Vc5"*gr|%TUUV V VU WVV 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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"        #                    d           d!             Z$e!j"        %                    d"e&e'e(j)        e*e(j+        g          e!j"        %                    d#e&e'e(j)        e*e(j+        g          d$                         Z,d% Z-d&S )'	TestSolvec                 D    t           j                            d           d S 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           d S )NrC   r;   r                   333333?r   r   r   )rX   rY   x0ra   s       r4   test_20Feb04_bugzTestSolve.test_20Feb04_bug  s    Vc1X1q"g!#a**q!f555 Vc1XG1a[[!#a**q!f5555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 ]0}t          ||          }t          t          ||          |           1d S )NrC   r<   r>   r?   r   rB   r   rX   rY   ra   rb   s       r4   test_simplezTestSolve.test_simple  s    WsAhq6Aq6"a&q6C8$ 	4 	4A aA%c!Qii3333	4 	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 ]0}t          ||          }t          t          ||          |           1d S )
N   rB   re   r?   Drh   r   rC   r   )r   r   r   r   r   s       r4   test_simple_complexzTestSolve.test_simple_complex&  s    Aq6B7#S))q'8aV$b'A$$ 	4 	4A
 aA%c!Qii3333	4 	4r6   c                     ddgddgg}dD ]B}ddgddggddgfD ]3}t          ||d|          }t          t          ||          |           4Cd S )	NrB   rQ   r   r   rC   rC   r   posassume_ar   r   rX   rY   r   ra   rb   s        r4   test_simple_poszTestSolve.test_simple_pos0  s    VaV 	8 	8E1v1v&!f 8 8 !Qe<<<)#a))Q7777	8	8 	8r6   c                     ddgddgg}ddgddgddggfD ]2}t          ||d          }t          t          ||          |           3d S )Nr   rB   r?   rh   r   r  r  r   r   s       r4   test_simple_pos_complexbz"TestSolve.test_simple_pos_complexb9  sw    VaVq'8aV$ 	4 	4A aU+++A%c!Qii3333		4 	4r6   c                     ddgddgg}dD ]B}ddgddggddgfD ]3}t          ||d|          }t          t          ||          |           4Cd S )	NrB   rQ   r  rC   r   symr  r   r  s        r4   test_simple_symzTestSolve.test_simple_symA  s    VaW 	8 	8E1v1v&!f 8 8 !Qe<<<)#a))Q7777	8	8 	8r6   c                     ddgddgg}ddgddgddggfD ]2}t          ||d          }t          t          ||          |           3d S )Nr   rB   rh   r   r  r	  r   r   s       r4   test_simple_sym_complexbz"TestSolve.test_simple_sym_complexbJ  sw    VaWq'8aV$ 	4 	4A aU+++A%c!Qii3333		4 	4r6   c                     ddgddgg}ddgddgddgddggfD ]2}t          ||d	          }t          t          ||          |           3d S )
Nr   r   r  rh   r   rC   rB   r  r	  r   r   s       r4   test_simple_sym_complexz!TestSolve.test_simple_sym_complexR  ~    Yr
#q'a&8aV$ 	4 	4A aU+++A%c!Qii3333	4 	4r6   c                     ddgddgg}dD ]E}ddgddggddgddgfD ]3}t          ||d|	          }t          t          ||          |           4Fd S )
NrB   rQ   r  r  rC   r   rh   herr  r   r  s        r4   test_simple_her_actuallysymz%TestSolve.test_simple_her_actuallysym[  s    VaW 	8 	8E1v1v&!f1g 8 8 !Qe<<<)#a))Q77778	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 ]2}t          ||d	
          }t          t          ||          |           3d S )Nr   r   r   r  rh   r   rC   rB   r  r	  r   r   s       r4   test_simple_herzTestSolve.test_simple_here  r  r6   c                 h   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          ||           d S )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_20Feb04n  s    Aq6NN61a&>>",,1a&#1vvQKKB&1 	" 	"A!!!Q$AAqkkAaaadGG!!T*****r6   c                    d}t          ||g          }t          |          D ]}dd|||f         z   z  |||f<   t          d          D ]A}t          |dg          }t          ||          }t          t	          ||          |           Bd S )Nr<   皙?r?   rQ   r   ranger   r   r   rX   r  rY   r   ra   rb   s         r4   test_randomzTestSolve.test_randomy  s    Aq6NNq 	& 	&A"Qq!tW*oAadGGq 	4 	4A1vAaA%c!Qii3333	4 	4r6   c                 F   d}t          ||g          dt          ||g          z  z   }t          |          D ]}dd|||f         z   z  |||f<   t          d          D ]A}t          |dg          }t          ||          }t          t	          ||          |           Bd S )Nr<   rh   r$  rB   rQ   r%  r'  s         r4   test_random_complexzTestSolve.test_random_complex  s    Aq6NNR&!Q..00q 	& 	&A"Qq!tW*oAadGGq 	4 	4A1vAaA%c!Qii3333	4 	4r6   c                 z   d}t          ||g          }t          |          D ]E}t          dd|||f         z   z            |||f<   t          |          D ]}|||f         |||f<   Ft          d          D ]B}t          |g          }t          ||d          }t	          t          ||          |           Cd S )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    Aq6NNq 	" 	"A"b1a4j/**AadG1XX " "AqD'!Q$"q 	4 	4AsAaU+++A%c!Qii3333	4 	4r6   c                    d}t          ||g          }|dt          ||g          z  z   }t          |          D ]R}t          dd|||f         z   z            |||f<   t          |          D ]}t          |||f                   |||f<   St          |g          dt          |g          z  z   }t          d          D ]2}t	          ||d          }t          t          ||          |           3d S )Nr<   rh   r$  re   rB   r  r	  )r   r&  r,  r   r   r   r   r-  s          r4   test_random_sym_complexz!TestSolve.test_random_sym_complex  s   Aq6NN61a&>>!!q 	- 	-A"b1a4j/**AadG1XX - -#AadG,,!Q$-A3KK61#;;&q 	4 	4AaU+++A%c!Qii3333	4 	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 ]2}t          ||d          }t          t          ||          |           3d S )	NrC   r<   r>   r?   r   rB   Frs   r   r   s       r4   ru   zTestSolve.test_check_finite  s    WsAhq6Aq6"QFq6C8$& 	4 	4Aa///A%c!Qii3333	4 	4r6   c                     d}g d}t          ||          }t          |                                |           t          |j        dk    d           d S )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  sR    II!QKK!!''))Q///4!JKKKK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                   d S )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    H///8881111113 4 4
 HtUm'Vnen& ' '
 !QKK!!RX/;||/= &> &>>?	A 	A 	A 	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                     d S )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    HHHHMMMIIIIIIK L L
 H|[1#]3#\2!;/1 2 2
 !QKK!!RY16170@14e0> &? &? 	@ 	@ 	@ 	@ 	@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          j        ddgddgddgddgg          }t          ||d          }t          ||           t          |                                j        |dd          }t          ||           d S )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   conjr9  )rX   rY   ra   resrb   s        r4   test_hermitianzTestSolve.test_hermitian  s   HBBB999///&&&( ) ) H{L1"L1#[1!=13 4 4 h' ( ( !Q'''!!S)))!&&((*a%t<<<!!S)))))r6   c                    t          j        dd                              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           d S )	NrC   
   rQ   	   r  r	  )      "@r8  r;   r  r+   r   rV   r   trilr   r   rX   r  rb   s      r4   test_pos_and_symzTestSolve.test_pos_and_sym  s    Ia$$Q**"'!**Q,

U;;;!!]]]333"'!**Q,

U;;;!!]]]3333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
          ||           d S )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   rE  )r+   r   r   ry   r    r   rX   rY   ra   s      r4   test_singularityzTestSolve.test_singularity  s    H1111111111111111111111111113 4 4 IaLLD!k5!Q/////r6   c                    t          j        ddgddgg          }t          j        d          }t          j                    5  t          j        d           t          t          t          ||           d d d            d S # 1 swxY w Y   d S )NrC   r;   g?rB   error)	r+   r   r   warningscatch_warningssimplefilterry   r$   r   rL  s      r4   test_ill_condition_warningz$TestSolve.test_ill_condition_warning  s    Hq!fw0122GAJJ$&& 	6 	6!'***-1555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   1B  BBc                     t          j        d          }t           j                            ddd          }t	          ||          }t          ||           d S )NrB   rQ   r?   )r+   r   r   randr   r   r   s       r4   test_multiple_rhszTestSolve.test_multiple_rhs  sI    F1IIINN1a##!QKK!!Q'''''r6   c                    t          j        d                              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           d S )	NrE  rQ   rC   T
transposed)r   g?rC   F)rE  gg333333rG  rI  s      r4   test_transposed_keywordz!TestSolve.test_transposed_keyword
  s    IaLL  A&&*"'!**Q,

t<<<!!]]]333"'!**Q,

u===!!___55555r6   c                     t          j        d                              t                    }t	          t
                    5  t          ||d           d d d            d S # 1 swxY w Y   d S )NrQ   TrX  )r+   r   astyper   ry   NotImplementedErrorr   rX   rY   s     r4   test_transposed_notimplementedz(TestSolve.test_transposed_notimplemented  s    F1IIW%%.// 	) 	)!Q4((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   A!!A%(A%c                 B    t          t          t          ddgd           d S )NrC   rB   ry   rz   r   r   s    r4   test_nonsquare_azTestSolve.test_nonsquare_a  s     j%!Q33333r6   c                 .   t          t          t          j        d          t          j        d                    t          j        d                     t          t          t          t          j        d          t          j        d                     d S )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  s^    !%q		271::">">

KKKj%BGAJJ?????r6   c                 B    t          t          t          ddd           d S )NrC   zxcvr	  ra  r   s    r4   test_assume_a_keywordzTestSolve.test_assume_a_keyword  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 ]3\  }}}|t           j        t           j        fv }|dk    r|s*d| d| d| }t           j                            ||          	                    |          }	t           j                            |          	                    |          }
|r9|	dt           j                            ||          z  	                    |          z   }	|d	k    r|	|	j
        z   }	nm|dk    r|	|	j
                                        z   }	nJ|d
k    rD|	                                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          |	                    |          |
||z  ||z  |           |d	k    rZ|t           j        t           j        fvr@t          |	|
|d          }t          |	                    |          |
||z  ||z  |           5d S )NrD  d   )genr  r  r  r  zFailed for size: z, assume_a: z,dtype: rh   r  r  r$  -q=gư>)rl  r  r  r	  atolrtolerr_msgT)r  rY  )r+   r
   r-   r   r/   	itertoolsproductr   randnr\  r9  r@  r   r   r   r   )rX   sizes	assume_asdtypessizer  r   
is_complexrq  rY   ra   tolrb   s                r4   'test_all_type_size_routine_combinationsz1TestSolve.test_all_type_size_routine_combinations   s    S	000	*bj",F%.%6ui7=&? &? )	1 )	1!D(E2<"??J5   )4 ) )X ) )!&) )G 	d++22599A	%%,,U33A GBIOOD$777??FFF5  GU""

NU""FFHHJNN1%%BF4LL(88 RZ$???%%TC000 RZ6662ICaX...AAEE!HHa!$t!$t$+- - - -
 5  U2<35=3B &B &B!QdCCCa!%(4Z%(4Z(/1 1 1 1M)	1 )	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 d S Nr   r   r   rB   )r+   r   r   rx  r   r   r   rX   r|  r   rY   ra   rb   dt_nonemptys          r4   r   zTestSolve.test_emptyQ  s     HV4(((HQd###!QKKv{{{{BF1D111271D3I3I3IJJPw+%%%%%%r6   c                     t          j        d          }g g g}t          ||          }t          |j        dk    d           t          |j        dk    d           d S NrB   r   zReturned array is not empty)rB   r   z#Returned empty array shape is wrong)r+   r   r   r   rx  r   r   s       r4   test_empty_rhszTestSolve.test_empty_rhs\  sZ    F1IIH!QKK!:;;;6!#HIIIIIr6   N).r   r   r   r   r   r   r   r  r
  r  r  r  r  r  r"  r(  r*  r/  r1  ru   r6  r:  r=  rB  rJ  rM  rS  rV  rZ  r_  rb  rd  rg  r   r   skipr{  r   r   r   r+   r
   r   r   r   r  r   r6   r4   r   r     s         	6 	6 	64 4 44 4 48 8 84 4 48 8 84 4 44 4 48 8 84 4 4	+ 	+ 	+	4 	4 	44 4 4
4 
4 
44 4 44 4 4L L LA A A@ @ @"* * *(4 4 40 0 06 6 6( ( (6 6 6) ) )
4 4 4@ @ @@ @ @ [ : ; ;-1 -1; ;-1^ [Vc5"*gr|%TUU[Vc5"*gr|%TUU& & VU VU&J J J J Jr6   r   c            	           e Zd Zd Zd Zd Zej                            de	e
ej        eej        g          ej                            de	e
ej        eej        g          d                         Zd ZdS )	TestSolveTriangularc                    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           dS ):
        solve_triangular on a simple 2x2 matrix.
        rC   r   rB   Tr   Fr   r   transr;         N)r   r   r   r9  r   rX   r  ra   sols       r4   r   zTestSolveTriangular.test_simplef  s     Aq6Aq6"##Fq!4000!#1v... qsAU333!#Bx000 q!4q999!#Bx000QKKq!4q999!#S	As8'<=====r6   c                    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           dS )zA
        solve_triangular on a simple 2x2 complex matrix
        r<  r   rh   rB   TrC   r  y      ?      y      п      пr         ?       @y             y      ?      ?y      ?      y            пFr  N)r   r   r   r   r+   rm   r9  r  s       r4   r   z'TestSolveTriangular.test_simple_complex{  s    D!9r1g&''QKKq!4q999!#(;aX'FGGG GT4L!!q!4q999!#A'@AAAq!4q999!#J!V'EFFFq!4q999!#[(9Av;'GHHHqsAU!<<<!#J!V'EFFFqsAU!<<<!#A'@AAAqsAU!<<<!#Q$'@AAAAAr6   c                     t          ddgddgg          }ddg}t          ||dd          }t          |ddg           dS )r  rC   r   rB   TF)r   rt   N)r   r   r   r  s       r4   ru   z%TestSolveTriangular.test_check_finite  sW     Aq6Aq6"##Fq!4eDD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 d S r~  )r+   r   r   rx  r   r   r   r  s          r4   r   zTestSolveTriangular.test_empty  s     HV4(((HQd###Q""v{{{{&F1D!!!271D#9#9#9
 

 	 w+%%%%%%r6   c                     t          j        d          }g g g}t          ||          }t          |j        dk    d           t          |j        dk    d           d S r  )r+   r   r   r   rx  r   r   s       r4   r  z"TestSolveTriangular.test_empty_rhs  s\    F1IIHQ""!:;;;6!#HIIIIIr6   N)r   r   r   r   r   ru   r   r   r   r   r   r+   r
   r   r   r   r  r   r6   r4   r  r  d  s        > > >*B B B:/ / / [Vc5"*gr|%TUU[Vc5"*gr|%TUU	& 	& VU VU	&J J J J Jr6   r  c                       e Zd Zd Zd Zd Zd Zd Zd Ze	j
                            deeej        eej        g          d             Zd	S )
TestInvc                 D    t           j                            d           d S 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                     d S )NrC   rB   rQ   r?   r   r?   r   r@   rF      rD  )r   r   r   r+   r   rX   rY   a_invs      r4   r   zTestInv.test_simple  s    VaVA!#a--;;;YY			:::.A!#a--;;;;;r6   c                    d}t          d          D ]t}t          ||g          }t          |          D ]}dd|||f         z   z  |||f<   t          |          }t          t	          ||          t          |                     ud S )Nr<   r?   r$  r&  r   r   r   r   r   rX   r  r   rY   r  s        r4   r(  zTestInv.test_random  s    q 	3 	3A1vA1XX * *b1a4j/!Q$FFE%c!Umm&.qkk3 3 3 3	3 	3r6   c                 |    ddgddgg}t          |          }t          t          ||          ddgddgg           d S )NrC   rB   rQ   r   r   r   r   r   r  s      r4   r   zTestInv.test_simple_complex  sJ    VaWA!#a--1a&1a&1ABBBBBr6   c                 <   d}t          d          D ]}t          ||g          dt          ||g          z  z   }t          |          D ]}dd|||f         z   z  |||f<   t          |          }t          t	          ||          t          |                     d S )Nr<   r?   re   r$  r  r  s        r4   r*  zTestInv.test_random_complex  s    q 	3 	3A1vr&!Q..00A1XX * *b1a4j/!Q$FFE%c!Umm&.qkk3 3 3 3	3 	3r6   c                     ddgddgg}t          |d          }t          t          ||          ddgddgg           d S )NrC   rB   rQ   r?   Frs   r   r  r  s      r4   ru   zTestInv.test_check_finite  sQ    VaVAE***!#a--1a&1a&1ABBBBBr6   r3   c                     t          j        d|          }t          |          }|j        dk    sJ |j        t          t          j        d|                    j        k    sJ d S r~  )r+   r   r   rx  r   r   )rX   r3   rY   r  s       r4   r   zTestInv.test_empty  sc    HV2&&&AzQ{c"&""5"5"56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 3 3C C C
3 3 3C C C
 [TC
GR\#RSS= = TS= = =r6   r  c                      e Zd Zd Zd Zd Zej                            dddgddgg dg          d             Z	d	 Z
ej                            d
d ej        d         dd         D                       d             Zd Zd Zej                            deeej        eej        g          d             Zd Zd Zd ZdS )TestDetc                 N    t           j                            d          | _        d S )Nl   *n`/ )r+   r   default_rngrngr   s    r4   r   zTestDet.setup_method  s    9(()9::r6   c                 &   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 t          j        |          sJ |dk    sJ t          j        dgggt           j                  }t          |          }|j        j        dk    sJ t          j        |          sJ |dk    sJ d S )NrC   dr;   fr   y      ?      @r   )r+   r   r   r   charisscalarr   rX   rY   detas      r4   test_1x1_all_singleton_dimsz#TestDet.test_1x1_all_singleton_dims  s   HqcUOO1vvz#%%%%{4     rzzzzHugYc***1vvz#%%%%{4     rzzzzHyk]",7771vvz#%%%%{4     v~~~~~~r6   c                    | j                             g dt          j                  }t	          |          }|j        j        dk    sJ |j        dk    sJ t          |t          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	        |                     d S )N)r?   r   rC   rC   r   r  r?   r   rh   r   )r  r   r+   r
   r   r   r  r   r   squeezer   r  s      r4   test_1by1_stacked_input_outputz&TestDet.test_1by1_stacked_input_output  s    HOOLLL
O;;1vvz#%%%%zV####bjmm,,,HOOLLL
O;;BL<M<MM1vvz#%%%%zV####bjmm,,,,,r6   r   rB   r<   )rQ   rB   r<   r<   c                    | j                             dd|          }t          |          t          j                            |          }}t          ||           | j                             dd|          dz  }|| j                             dd|          z  }t          |          t          j                            |          }}t          ||           d S )N      r;   )rx  rh   r  r   )r  uniformr   r+   linalgr   )rX   r   rY   d1d2ra   d3d4s           r4   #test_simple_det_shapes_real_complexz+TestDet.test_simple_det_shapes_real_complex
  s    HS"511Qq))BBHS"511"4	TXdCe444Qq))BBr6   c                 H   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
                              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           d S )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                 r?  )r   r         ?        r  )rh   r<  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   rF  )r+   r   r   r   r   rV   r   r^  s     r4   test_for_known_det_valuesz!TestDet.test_for_known_det_values  s   H...2222222222222222222224 5 5 	A&&& 	BIbMM11!Q7788"===
 H6666666666668 @B|M M M 	A''' H8886668886668886668886668 9 9 :== 	A#####r6   typc                     g | ]}|d v|	S )gGr   ).0rb   s     r4   
<listcomp>zTestDet.<listcomp>:  s(     %7 %7 %71() &'(5r6   AllNc                     d}| j                             ||g                              |          }t          t	          |          t
          j        t
          j        f          sJ d S )Nr?   )r  r   r\  
isinstancer   r+   r-   r/   )rX   r  r  rY   s       r4   "test_sample_compatible_dtype_inputz*TestDet.test_sample_compatible_dtype_input:  sY     HOOQF##**3//#a&&2:r}"=>>>>>>>r6   c                    d}t          dg d          D ]\\  }}t          t          |          5  t          t	          j        ddggdz  |                     d d d            n# 1 swxY w Y   ]t          t          |          5  t          t	          j        d	d
ggdz  d                     d d d            n# 1 swxY w Y   t          t          |          5  t          t	          j        ddggdz  d                     d d d            n# 1 swxY w Y   t          t          |          5  t          t	          j        ddggdz  d                     d d d            d S # 1 swxY w Y   d S )Nz!cannot be cast to float\(32, 64\)SUO)bytes8str32objectmatchrY   ra   rB   r      a   bVrk     zdatetime64[s]ztimedelta64[s])zipry   	TypeErrorr   r+   r   )rX   msgcts       r4   test_incompatible_dtype_inputz%TestDet.test_incompatible_dtype_inputA  s   3<<<== 	7 	7DAqy444 7 7BHsCj\!^15556667 7 7 7 7 7 7 7 7 7 7 7 7 7 79C000 	7 	74,)555666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	79C000 	A 	A3*a???@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A9C000 	B 	B3*a/?@@@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	BsG   *A&&A*	-A*	*B>>CC*DDD6*E--E14E1c                    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            n# 1 swxY w Y   t          t          d	          5  t          t          j        g                      d d d            n# 1 swxY w Y   t          t          d          5  t          t          j        g g                     d d d            n# 1 swxY w Y   t          t          d          5  t          t          j        g gg                     d d d            d S # 1 swxY w Y   d S )
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_casesO  s   BHaV,,--r222BHYYY//00"(2,,???BHYYY//00"(<<<2H2HIII:-@AAA 	% 	%##$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%:-GHHH 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	:-@AAA 	  	 "	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 :-@AAA 	" 	"2$  !!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"sH   $D  DD!"EEE0#FF#&F# $G11G58G5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 d S )Nr   r   r   rB   r  r4  )rQ   rC   rC   )r+   r   r   r   r   r   )rX   r3   rY   r  s       r4   test_empty_dtypezTestDet.test_empty_dtype\  s    HV2&&&FFw"}}}}w#bfQb1112288888HYb)))FFw$w#bhy;;;<<BBBBBBBr6   c                 .   t          j        d                              dd                              t           j                  }|                                }t          |d          }t          |d           ||k                                    rJ d S )NrE  rQ   Toverwrite_arI   )	r+   r   rV   r\  r
   copyr   r   all)rX   rY   acr  s       r4   test_overwrite_azTestDet.test_overwrite_ah  s~    
 IaLL  A&&--bj99VVXX24(((b!!!G==??"""""r6   c                     t          j        g dg dg dg          }|                    d           t          t	          |d          d           d S )	N)rP   rI   r;   )      @rw   r  r  F)writeTr  rO   )r+   r   setflagsr   r   r^  s     r4   test_readonly_arrayzTestDet.test_readonly_arrays  s[    HlllMMM<<<@AA	


A4000#66666r6   c                     ddgdt           j        gg}t          t          d          5  t	          |           d d d            d S # 1 swxY w Y   d S )NrC   rB   rQ   zarray must not containr  )r+   infry   rz   r   r^  s     r4   test_simple_check_finitez TestDet.test_simple_check_finitey  s    Va[!:-EFFF 	 	FFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA
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  r   r6   r4   r  r    s       ; ; ;  "- - - [W1vBx&HII    JI "$ "$ "$J [U %7 %7U0CCRC0H %7 %7 %7 8 8? ?8 8?
B B B" " " [TC
GR\#RSS	C 	C TS	C	# 	# 	#7 7 7    r6   r  c                     t          |           }|rt          |          }t          ||           }t          ||          }t          ||          S )N)r	   r   r   r   )rY   ra   cmplxata1b1s         r4   direct_lstsqr    sH    	1B r]]	RB	RBR==r6   c            	       h   e Zd ZdZd Zd Zd Zd Zej	        
                    de          ej	        
                    dd          ej	        
                    d	e          ej	        
                    d
d          d                                                 Zej	                            ed          ej	        
                    de          ej	        
                    dd          ej	        
                    d	e          ej	        
                    d
d          d                                                             Zd Zd Zd Zd Zej	        
                    deeej        eej        g          ej	        
                    deeej        eej        g          d                         ZdS )	TestLstsq)gelsdgelssgelsyNc                    t           D ] }t          j        ddgddgg|          }t          j        D ]}dD ]}dD ]}|                                }t          j        ||          }|                                }t          |||||          }	|	d	         }
|	d
         }t          |d
k    d|z             t          t          ||
          |dt          |j                  z  dt          |j                  z  d|z             ˌЌՐd S )NrC   r<   r>   r?   r   TF)rC   r   r  r  )rM   r>   r?   lapack_driverr  overwrite_br   rB   !expected efficient rank 2, got %sr  
driver: %srn  )REAL_DTYPESr+   r   r  lapack_driversr  r   r   r   r   r5   r   )rX   r   rY   r  	overwritebtr  ra   r  outrb   r!  s               r4   test_simple_exactzTestLstsq.test_simple_exact  sk     	N 	NE1b'C8,E:::A!*!9 N N!. N NI3 N N VVXXHRu555VVXX#B2?0909; ; ;  FFQ Ca GI I I'Aq		1-/)BH2E2E-E-/)BH2E2E-E0<}0LN N N N NNNN	N 	Nr6   c                 h   t           D ]}t          j        ddgddgddgg|          }t          j        g d|          }t          j        D ]`}dD ]Y}|                                }|                                }t          |||||	          }|d
         }	|dk    r.t          j        ||                    |	          z
  dz            }
n|d         }
|d         }t          |dk    d|z             t          t          t          ||	          |z
  dz                                d
          |
dt          |j                  z  dt          |j                  z  d|z             t          |	ddt          |j                  z  dt          |j                  z  d|z             [bd S )NrC   rB   r?   r   rQ   r   r   r   r  r   r  r  axisr  r  rp  ro  rq  )gm۶mۿgm۶m?)r	  r+   r   r  r
  r  r   sumr   r   r   r,  r5   r   )rX   r   rY   ra   r  r  r  r  r  rb   	residualsr!  s               r4   test_simple_overdetzTestLstsq.test_simple_overdet  s     	J 	JE1a&1a&1a&1???A%000A!*!9 J J!. J JIBBBm,5,57 7 7C AA$//$&FAaL1+<$=$=		$'F	AAAF$G!$KLLL#CQQ(:$;$;$?$?Q$?$G$G$-)+i.A.A)A)+i.A.A)A,8=,H	J J J J
 $A'M)+i.A.A)A)+i.A.A)A,8=,HJ J J J J'JJ	J 	Jr6   c                    t           D ]}t          j        ddgddgddgg|          }t          j        g d|          }t          j        D ]t}dD ]m}|                                }|                                }t          |||||	          }|d
         }	|dk    rB||                    |	          z
  }
t          j        |
|
	                                z            }n|d         }|d         }t          |dk    d|z             t          t          t          ||	          |z
  dz                                d
          |dt          |j                  z  dt          |j                  z  d|z             t          |	ddt          |j                  z  dt          |j                  z  d|z             ovd S )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  r@  r   r   r,  r5   r   )rX   r   rY   ra   r  r  r  r  r  rb   rA  r  r!  s                r4   test_simple_overdet_complexz%TestLstsq.test_simple_overdet_complex  s
   # 	F 	FE4)aVaV4EBBBAU333A!*!9 F F!. F FIBBBm,5,57 7 7C AA$//!%%((l$&F3+;$<$<		$'F	AAAF$G!$KLLL#CQQ(:$;$;$?$?Q$?$G$G$-)+i.A.A)A)+i.A.A)A,8=,H	J J J J
 $ ! $L%')BH*=*=%=%')BH*=*=%=(4}(DF F F F F+FF	F 	Fr6   c                    t           D ]}t          j        g dg dg|          }t          j        ddg|          }t          j        D ]}dD ]}|                                }|                                }t          |||||          }|d         }	|d         }
t          |
dk    d	|
z             t          |	d
dt          |j
                  z  dt          |j
                  z  d|z             d S )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  sE     	J 	JE)))YYY/u===A!Qu---A!*!9 J J!. J JIBBBm,5,57 7 7C AAAAAF$G!$KLLL#A (;)+i.A.A)A)+i.A.A)A,8=,H	J J J J JJJ	J 	Jr6   r   r  )r<   r  r  r  r   c           
         t           j                            d          }t          j        |                    ||g          |          }t	          |          D ]}dd|||f         z   z  |||f<   t	          d          D ]A}t          j        |                    |dg          |          }|                                }	|                                }
t          |	|
|||          }|d         }|d	         }t          ||k    d
| d|            |t           j        u rPt          t          ||          |dt          |	j                  z  dt          |	j                  z  d|z             t          t          ||          |dt          |	j                  z  dt          |	j                  z  d|z             Cd S )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  r  rY   r   ra   r  r  r  rb   r!  s                 r4   test_random_exactzTestLstsq.test_random_exact  s   
 i##D))Jszz1a&))777q 	+ 	+AC!AqD'M*AadGGq 	@ 	@A
3::q!f--U;;;ABBB&3$-$-/ / /C AAAAAF q         
""a))Q"Yrx%8%88"Yrx%8%88".">	@ @ @ @ @  a))Q#i&9&99#i&9&99".">	@ @ @ @ @)	@ 	@r6   z$may segfault on Alpine, see gh-17630rh  c           
         t           j                            d          }t          j        |                    ||g          d|                    ||g          z  z   |          }t	          |          D ]}dd|||f         z   z  |||f<   t	          d          D ]A}t          j        |                    |dg          |          }|                                }	|                                }
t          |	|
|||          }|d	         }|d         }t          ||k    d
| d|            |t           j        u rPt          t          ||          |dt          |	j                  z  dt          |	j                  z  d|z             t          t          ||          |dt          |	j                  z  dt          |	j                  z  d|z             Cd S )Nr   rh   r   r<   r$  rB   rQ   r  r   r  r  i  r  r  r  )r+   r   r  r   r&  r  r   r   r   r   r   r5   r   r!  s                 r4   test_random_complex_exactz#TestLstsq.test_random_complex_exact  s!    i##D))Jszz1a&))Bszz1a&/A/A,AA"$ $ $q 	+ 	+AC!AqD'M*AadGGq 	@ 	@A
3::q!f--U;;;ABBBm$-$-/ / /C AAAAAF q         $$a))Q"Yrx%8%88"Yrx%8%88".">	@ @ @ @ @  a))Q#i&9&99#i&9&99".">	@ @ @ @ @'	@ 	@r6   c                 ,   t           j                            d          }t          D ]k}dD ]d\  }}t          j        D ]P}dD ]I}t          j        |                    ||g          |          }t          |          D ]}dd|||f         z   z  |||f<   t          d          D ]}t          j        |                    |dg          |          }	|                                }
|	                                }t          |
||||	          }|d
         }|d         }t          ||k    d| d|            t          |t          ||	d
          dt          |
j                  z  dt          |
j                  z  d|z             KRfmd S )Nr   )r<      )r  rB   r   r   r<   r$  r?   rQ   r  r   rB   r  r  r  r  r  r  )r+   r   r  r	  r  r
  r   r&  r  r   r   r   r  r5   r   rX   r  r   r  mr  r  rY   r   ra   r  r  r  rb   r!  s                  r4   test_random_overdetzTestLstsq.test_random_overdetA  s    i##D))  	P 	PE. P PA%.%= P PM%2 P P	Jszz1a&'9'9GGG!&q ; ;A&(C!AqD'M&:AadGG!&q P PA "
3::q!f+=+=U K K KA!"B!"B"'B6C4=4=#? #? #?C !$AA #AA#AF -/q -/ -/+,-/ -/ 0 0 0+*+\!Qa-H-H-H/1Ibh4G4G/G/1Ibh4G4G/G2>2N	P P P P PP	PPP	P 	Pr6   c                 b   t           j                            d          }t          D ]}dD ]\  }}t          j        D ]k}dD ]d}t          j        |                    ||g          d|                    ||g          z  z   |          }t          |          D ]}dd|||f         z   z  |||f<   t          d          D ]}t          j        |                    |d	g          |          }	|                                }
|	                                }t          |
||||
          }|d         }|d         }t          ||k    d| d|            t          |t          ||	d          dt          |
j                  z  dt          |
j                  z  d|z             fmd S )Nr   r&  r   rh   r   r<   r$  rB   rQ   r  r   r  r  rC   r(  r  r  r  )r+   r   r  r  r  r
  r   r&  r  r   r   r   r  r5   r   r)  s                  r4   test_random_complex_overdetz%TestLstsq.test_random_complex_overdet]  s#   i##D))# 	L 	LE. L LA%.%= L LM%2 L L	Jszz1a&'9'9Bszz1a&?Q?Q<Q'Q-24 4 4!&q ; ;A&(C!AqD'M&:AadGG!&q L LA "
3::q!f+=+=U K K KA "#B!"B"'B6C4=4=#? #? #?C !$AA #AA#AF -/q -/ -/+,-/ -/ 0 0 0+&'a!)D)D)D+-	"(0C0C+C+-	"(0C0C+C.:].J	L L L L LLLLL	L 	Lr6   c           
         t                      5 }|                    t          d           d d d            n# 1 swxY w Y   t          j        d          }t          j        t          dt          j	        dd          D ]\  }}}}}|
                    |          }t          j        ||          }	|                                }
|	                                }t          |
|||||          }|d         }|d         }t          |dk    d	|z             t          t          ||          |	d
t!          |j                  z  d
t!          |j                  z  d|z             d S )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   rr  rs  r	  r  r
  r\  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{  s      	:CJJ~9: : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: X)**kL'6++	- -	B 	B=E2}i 		%  A5)))A BBBm%1y$-/ / /C AAAAAF?!CDDDC1IIq!#i&8&8!8!#i&8&8!8$0=$@B B B B B'	B 	Bs   7;;c           
          dD ]\  }}t          j        |          }t          t          j        |          |          \  }}}}t	          |t          j        |d         f|dd          z                        |d         rt          j        d          n#t           j                            |d          dz  }t	          ||           t          |dk    d           t	          |t          j        d                     d S )N))r   rB   r   ))r   r?   r3  )r?   r   )r?   )r4  )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BHgaj]WQRR[%@AABBB4;AJ #D"(4...')y~~aa~'@'@!'C #5666DAI0111BHTNN++++	, 	,r6   r|  r   c                 B   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 d S r~  )r+   r   r   rx  r   r   r   )
rX   r|  r   rY   ra   rb   r7  r8  r9  r  s
             r4   r  zTestLstsq.test_empty_dtype  s     HV4(((HQd###$Q{{8T1v{{{{BF1D111271D3I3I3IJJ1MSw+%%%%%%r6   N)r   r   r   r
  r  r  r  r  r   r   r   r	  r"  skipifr(   r  r$  r+  r-  ru   r   r   r   r+   r
   r   r   r  r   r6   r4   r  r    sG       6NN N N2J J J:F F FBJ J J, [Wk22[S),,[_n==[[-88@ @ 98 >= -, 32@@ [(NOO[Wn55[S),,[_n==[[-88@ @ 98 >= -, 65 PO
@@P P P8L L L<B B B@, , , [Vc5"*gr|%TUU[Vc5"*gr|%TUU& & VU VU& & &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                            d
eej        eej        g          d             ZdS )TestPinvc                 D    t           j                            d           d S 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                     d S Nr   r  r  r   rQ   r   r   r   r   r   r+   r   rX   rY   a_pinvs      r4   test_simple_realzTestPinv.test_simple_real  sX    999iii4EBB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	                     d S 
Nr   r  r  r   rh   )rD  r  rF   )r@   r   r?   )rQ   rB   rC   rQ   rB  rC  s      r4   r   zTestPinv.test_simple_complex  s    IIIyyy***5  


IIIyyy'I-2"4 "4 "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          ||           d S )Nr   r  rF   r  rE  r   g|qgԕVUUſgc8?gqg^0<gq?g9?gԕVUU?g:87ȿr   r   r   r   rX   rY   rD  r   s       r4   test_simple_singularzTestPinv.test_simple_singular  s|    999iii35AAAaLLLKKKKKKM N N 	"&(33333r6   c                     t          g dg dgt                    }t          |          }t          ddgddgdd	gg          }t          ||           d S )
Nr   r  r   g֋8g#q?g#qg#q?gIq?g#q̿rM  rN  s       r4   test_simple_colszTestPinv.test_simple_cols  so    999iii(666a;
3&
3%{35 6 6 	"&(33333r6   c                     t          ddgddgddggt                    }t          |          }t          g dg d	g          }t          ||           d S )
NrC   rB   rQ   r?   r   r@   r   )gDpTUUgQUUտgvWUU?)gDpTUU?gQUU?g&>ڿrM  rN  s       r4   test_simple_rowszTestPinv.test_simple_rows  sq    Aq6Aq6Aq6*%888a@@@???A B B!&(33333r6   c                     t          g dg dg dg          }t          |d          }t          t          ||          t	          j        d                     d S )Nr   )r?   r   r   r  Frs   rQ   )r   r   r   r   r+   r   rC  s      r4   ru   zTestPinv.test_check_finite  sZ    999jjj***566ae,,,!#a.."&))<<<<<r6   c                     g dg dg dg}t          |          }t          g dg dg dg          }t          ||           d S )Nr   r  rI  rJ  rK  rL  )r   r   r   rN  s       r4   test_native_list_argumentz"TestPinv.test_native_list_argument  so    YY			999-aLLLKKKKKKM N N 	"&(33333r6   c                    d}t          t          j                            ||                    \  }}t          j        d                              dd          }|                                }d|d<   d}d}t          ||d	
          }||z  |z  |z
  }	||z  |z  |z
  }
t          t          j	        
                    |	          dd           t          t          j	        
                    |
          dd           t          |||
          }||z  |z  |z
  }	||z  |z  |z
  }
t          t          j	        
                    |	          dd           t          t          j	        
                    |
          dd           d S )N   g     A@rF   r   gMbP?r   h㈵>g?rI   ro  rp  gMb@?ro  gvIh%,=g;O@{Gz?rp  )r#   r+   r   rU  r   rV   r  r   r   r  r   )rX   r  q_a_mrY   ro  rp  a_padiff1adiff2s              r4   test_atol_rtolzTestPinv.test_atol_rtol  sk   ")..A&&''1ioo%%a++HHJJ$ 3T+++S1qsS3& 		v..5AAAA	v..FCCCC 3T---S1qsS3&	v..DAAAA	v..DAAAAAAr6   r3   c                     t          j        d|          }t          |          }|j        dk    sJ |j        t          t          j        d|                    j        k    sJ d S r~  )r+   r   r   rx  r   r   rX   r3   rY   rD  s       r4   r   zTestPinv.test_empty  sg    HV2&&&a{a|tBF1B$7$7$788>>>>>>>r6   N)r   r   r   r   rE  r   rO  rQ  rS  ru   rV  rd  r   r   r   r   r+   r
   r   r   r   r   r6   r4   r>  r>    s          = = =
= = =4 4 44 4 44 4 4= = =
4 4 4B B B6 [TE2:w#MNN? ? ON? ? ?r6   r>  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                            deej        eej        g          d	             Zd
S )TestPinvSymmetricc                 D    t           j                            d           d S r   r   r   s    r4   r   zTestPinvSymmetric.setup_method  r   r6   c                     t          g dg dg dgt                    }t          j        ||j                  }t          |          }t          t          j        ||          t          j        d                     d S rA  )r   r   r+   r   r9  r   r   r   rC  s      r4   rE  z"TestPinvSymmetric.test_simple_real  sm    999iii4EBBBF1acNNq!"&F"3"3RVAYY?????r6   c                 j   t          g dg dg dgt                    }t          j        ||j                  }t          j                            |          \  }}}|dxx         dz  cc<   t          j        ||z  |          }t          |          }t          |          }t          ||           d S )Nr   r  rI  r   r   rE   )
r   r   r+   r   r9  r  svdr   r   r   )rX   rY   r\   r9  vtrD  a_pinvhs          r4   test_nonpositivez"TestPinvSymmetric.test_nonpositive  s    999iii35AAAF1acNN9==##1b	!
F1q5"a((!&'22222r6   c                 j   t          g dg dg dgt                    dt          g dg dg dgt                    z  z   }t          j        ||                                j                  }t          |          }t          t          j        ||          t          j        d	                     d S rG  )	r   r   r+   r   r@  r9  r   r   r   rC  s      r4   r   z%TestPinvSymmetric.test_simple_complex   s    IIIyyy***5  


IIIyyy'I-2"4 "4 "4 44 F1affhhj!!q!"&F"3"3RVAYY?????r6   c                 $   t          g dg dg dgt                    }t          j        ||j                  }t          |                                          }t          t          j        ||          t          j        d                     d S rA  )	r   r   r+   r   r9  r   tolistr   r   rC  s      r4   rV  z+TestPinvSymmetric.test_native_list_argument(  sw    999iii4EBBBF1acNNqxxzz""!"&F"3"3RVAYY?????r6   c                     t          j        g dg dg dg          }t          |          }t          ||z  |z  |d           t          ||z  |z  |d           d S )N)rC   rE   r   )rE   rB   rE   )r   rE   rC   V瞯<r[  )r+   r   r   r   )rX   rY   ps      r4   test_zero_eigenvaluez&TestPinvSymmetric.test_zero_eigenvalue.  sq     Hiiijjj9::!HHA	151111A	15111111r6   c                    d}t          t          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
           d S )NrX  )r?   rQ   rB   rC   vk?gﭣ>gu>r@   )r?   rQ   rB   rC   rx  rI   rI   rY  g1?rZ  r$  r]  rm  gdy=r[  -C6?)	r#   r+   r   rU  rm   r9  r   r   r   )rX   r  r^  r_  rY   r`  ro  rp  ra  rb  rc  s              r4   rd  z TestPinvSymmetric.test_atol_rtol6  s~   ")..A&&''1G222gY!_DEEC!GaKg///2$!*<==cCi!m!ADr***S1qsS3& 	Vd5555Ve%8888 ADt,,,S1qsS3&Vd5555Vd555555r6   r3   c                     t          j        d|          }t          |          }|j        dk    sJ |j        t          t          j        d|                    j        k    sJ d S r~  )r+   r   r   rx  r   r   r   rf  s       r4   r   zTestPinvSymmetric.test_emptyQ  sg    HV2&&&q{a|tBF1B$7$7$788>>>>>>>r6   N)r   r   r   r   rE  ro  r   rV  rv  rd  r   r   r   r   r+   r
   r   r   r   r   r6   r4   rh  rh    s          @ @ @3 3 3@ @ @@ @ @2 2 26 6 66 [TE2:w#MNN? ? ON? ? ?r6   rh  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          ||           d S )NrC   r   g|=r;   )r+   r   rm   r   )r{  r}  rb   r   x_invs        r4   test_auto_rcondr  Y  sc     	1a&1e*%&&.AwrBGAJJ''HE!HHEE8$$$$$r6   c                   ~    e Zd Zd Zd Zd Zd Zd Zd Ze	j
                            e d          d	             Zd
S )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          |           d S )NAllFloatr   r   rt  r<   rG   r]  rB   Complex)rh   re   y              @)
r+   r  r   maxr0   r1   realr   r   sqrt)rX   r   rb   rz  s       r4   
test_typeszTestVectorNorms.test_typesd  sB   \*- 	? 	?E%000AeRXe__05:;;CDGGRWR[[s;;;;DAJJ#>>>>>\), 	? 	?EU333AeRXe__05:;;CDGGRWR[[s;;;;DAJJ#>>>>>		? 	?r6   c                 n    t          dgt                    }t          t          |          |           d S )Nr|  r   )r   r
   r   r   r^  s     r4   test_overflowzTestVectorNorms.test_overflowq  s4     4&(((DGGQ'''''r6   c                     t          dgdgdz  z   t                    }	 t          t          |          dz
  dd           d S # t          $ r( d}t          t          |          dz
  d	|
           Y d S w xY w)N     @rC   i'  r   r   r\  r[  zO: Result should equal either 0.0 or 0.5 (depending on implementation of snrm2).rI   )rq  )r   r
   r   r   AssertionErrorr   )rX   rY   r  s      r4   test_stablezTestVectorNorms.test_stablew  s    3%1#e)#7333	A DGGcM3T:::::: 	A 	A 	A.CQ#sC@@@@@@@		As   "A .A65A6c                     t          t          g dd          d           t          t          g dd          d           d S )N)rC   r   rQ   r   rB   r   rQ   )r   r   r   s    r4   test_zero_normzTestVectorNorms.test_zero_norm  sD    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             d S )
NrB   rC   rQ   r?   r  r  5D+@6f~@r  )r+   r   r   r   r^  s     r4   test_axis_kwdzTestVectorNorms.test_axis_kwd  s    H1v1v&'!+S11QQ:z*B)Ca)GHH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             d S )NrB   rC   rQ   r?   r  T)r  keepdimsr  r  )rB   rC   rB   rw   g      @)r+   r   r   r   r   r   rL  s      r4   test_keepdims_kwdz!TestVectorNorms.test_keepdims_kwd  s    H1v1v&'!+S11T***j*567!;<<<9$%%%QD999bTB4L>A;MNNNNNr6   z64-bit BLAS requiredrh  c                     t          d           t          j        dgt          j                  }d|d<   t	          |          }~t          |d           d S )NihB  )free_mbl        r   rC   rE   r;   )r'   r+   r   r-   r   r   )rX   rb   rA  s      r4   test_large_vectorz!TestVectorNorms.test_large_vector  sX    %((((HeWBJ///"1ggS!!!!!r6   N)r   r   r   r  r  r  r  r  r  r   r   r<  r)   r  r   r6   r4   r  r  b  s        ? ? ?( ( (A A A, , ,< < <
O O O [I.DEE" " FE" " "r6   r  c                   &    e Zd Zd Zd Zd Zd ZdS )TestMatrixNormsc           
         t           j                            d           dD ]\  }}t           j        t           j        t           j        t           j        t           j        fD ]\}dt           j                            ||          	                    |          z  }t          j
        |j        t           j                  rF|dt           j                            ||          z  z   	                    |          }t           j        }nt           j        }d ddddd	t           j        t           j         fD ]}t          ||
          }t           j                            ||
          }t          j        ||          sDt           j                            |	                    |          |
          }t#          ||           ^d S )Nr   )rk   )rC   rQ   )rQ   rC   )r?   r?   r  )r   r?   rD  y              $@frorC   rE   rB   )ord)r+   r   r   r
   r-   r   r/   int64rt  r\  
issubdtyper   complexfloatingr  r   r  allcloser   )	rX   r  r*  r  r  t_highorderactualdesireds	            r4   test_matrix_normsz!TestMatrixNorms.test_matrix_norms  sx   
	tB 	9 	9DAqZR\2="(R 9 9A..55a888="*<== (S29??1a#8#888@@CCA]FFZF"E1b!R"&I 9 9E!!///F innQEn::G ;vw77 9"$)..&1A1Au."M"M'8889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    o
|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    o
|j        k    nc            d S )
NrB   rC   rQ   r?   r  r  )r  r  r   r  )r+   r   r   r  swapaxesr   r   r   )rX   rY   ra   r  r  s        r4   r  zTestMatrixNorms.test_axis_kwd  s   H1v1v&'!+S11V,,,Q1%%26???'''11117----ag----...'''Q1%%16:::V,,,11117----ag----.....r6   c                    t          j        dd                              dddd          }t          |t           j        dd	
          }t          |ddd	
          }t          ||           t          |j        |j        k               d S )Nx   r  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  s    Ic%%%--aAq99Vd;;;666117"#####r6   c                 R   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                     d S )Nr   rI   r   r  r   T)r  rk   )r   rQ   r4  )r+   r   r   r   r   r^  s     r4   r   zTestMatrixNorms.test_empty  s    HVQ$$$QQ$888Q...0@0@AAAHVQ$$$QQ$888Q...0@0@AAAAAr6   N)r   r   r   r  r  r  r   r   r6   r4   r  r    sU        9 9 9(/ / /"$ $ $	B 	B 	B 	B 	Br6   r  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestOverwritec                 4    t          t          ddg           d S NrQ   rQ   r4  )r&   r   r   s    r4   
test_solvezTestOverwrite.test_solve      EFD>22222r6   c                 4    t          t          ddg           d S r  )r&   r   r   s    r4   test_solve_triangularz#TestOverwrite.test_solve_triangular  s    ,vtn=====r6   c                 ,    t          d ddg           d S )Nc                 $    t          d| |          S )NrM   )r   )rZ   ra   s     r4   <lambda>z1TestOverwrite.test_solve_banded.<locals>.<lambda>  s    ,vr1*E*E r6   )r?   r@   r@   r%   r   s    r4   test_solve_bandedzTestOverwrite.test_solve_banded  s+    EE#TN	, 	, 	, 	, 	,r6   c                 4    t          t          ddg           d S )N)rB   r@   r  )r&   r   r   s    r4   test_solveh_bandedz TestOverwrite.test_solveh_banded  s    MFD>:::::r6   c                 2    t          t          dg           d S Nr  )r&   r   r   s    r4   test_invzTestOverwrite.test_inv      C&*****r6   c                 2    t          t          dg           d S r  )r&   r   r   s    r4   test_detzTestOverwrite.test_det  r  r6   c                 4    t          t          ddg           d S )N)rQ   rB   r4  )r&   r   r   s    r4   
test_lstsqzTestOverwrite.test_lstsq  r  r6   c                 2    t          t          dg           d S r  )r&   r   r   s    r4   	test_pinvzTestOverwrite.test_pinv  s    D6(+++++r6   c                 2    t          t          dg           d S r  )r&   r   r   s    r4   
test_pinvhzTestOverwrite.test_pinvh  s    EF8,,,,,r6   N)r   r   r   r  r  r  r  r  r  r  r  r  r   r6   r4   r  r    s        3 3 3> > >, , ,; ; ;+ + ++ + +3 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                            d	eeej        eej        g          ej                            d
eeej        eej        g          d                         ZdS )TestSolveCirculantc                     t          j        g d          }t          j        g d          }t          ||          }t          t	          |          |          }t          ||           d S 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_basic1  sb    H\\\""H]]]##Aq!!)A,,""1r6   c                     t          j        g d          }t          j        d                              dd          }t	          ||          }t          t          |          |          }t          ||           d S )NrC   rB   r  rX  r?   rQ   r+   r   r   rV   r   r   r   r   r  s        r4   test_basic2zTestSolveCirculant.test_basic2  sl    H^^^$$IbMM!!!Q''Aq!!)A,,""1r6   c                     t          j        g d          }t          j        d                              ddd          }t	          ||          }t          t          |          |          }t          ||           d S )Nr     r?   rQ   rB   r  r  s        r4   test_basic3zTestSolveCirculant.test_basic3  sn    H^^^$$IbMM!!!Q**Aq!!)A,,""1r6   c                    t          j        g d          }t          j        d                              dd          dz   }t	          ||          }t          t          |          |          }t          ||           d S )N)r  r  r   r   r  r?   rB   y              ?r  r  s        r4   ri   zTestSolveCirculant.test_complex  st    H&&&''IaLL  A&&-Aq!!)A,,""1r6   c                 :   t           j                            d           t           j                            d          }t           j                            d          }t	          ||          }t          t          |          |          }t          ||           d S )Ni1  2   )r+   r   r   rt  r   r   r   r   r  s        r4   test_random_b_and_cz&TestSolveCirculant.test_random_b_and_c  sv    
	uIOOBIOOBAq!!)A,,""1r6   c                    t          j        g d          }t          j        g d          }t          ||d          }t          t	          |          |          \  }}}}t          ||           t          t          t          ||           d S )NrC   rC   r   r   )rC   rB   rQ   r?   r   )singular)r+   r   r   r   r   r   ry   r    )rX   r  ra   rb   r  rA  rnkr9  s           r4   test_singularz TestSolveCirculant.test_singular   s    H\\\""H\\\""Aq7333y||Q//3Q1k?Aq9999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                  |d d d	d d f<   t          t          |d                   |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          ||           d S )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   r9  r   moveaxisr  )rX   r  ra   rb   r   s        r4   test_axis_argsz!TestSolveCirculant.test_axis_args)  s    H((()NNN+;<== HlllLLL---@AAAq***QWi(((=##!)AaD//1377Aqqq!)AaD//1377Aqqq8$$$Aq2666QWi(((Ar1--x888 BK1a00!#Q???QWi(((8$$$$$r6   c                     g d}g d}t          ||          }t          t          |          |          }t          ||           d S r  )r   r   r   r   r  s        r4   r   z-TestSolveCirculant.test_native_list_argumentsB  sN    LLMM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 d S )Nr   r   rQ   r   )r+   r   r   r   r   r   r   r   )rX   r  r   r  ra   rb   x1s          r4   r   zTestSolveCirculant.test_emptyJ  s     HRt$$$HRt$$$Aq!!w$w/")AT*B*B*B*,'!4*@*@*@B BBGH H H H HV4(((Q""x6!!!!x17""""""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                  : : :% % %2   [Vc5"*gr|%TUU[Vc5"*gr|%TUU# # VU VU# # #r6   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                            deeej        eej        g          d	             Zd
S )TestMatrix_Balancec                 <    t          t          t          d           d S )NzSome string for fail)ry   rz   r"   r   s    r4   test_string_argz"TestMatrix_Balance.test_string_arg\  s    j.2HIIII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                     d S )NrC   rB   rQ   )ry   rz   r"   r+   r   r  nanr   s    r4   test_infnan_argz"TestMatrix_Balance.test_infnan_arg_  sp    j.hABF455	7 	7 	7j.hABF455	7 	7 	7 	7 	7r6   c           	          t          t          j        ddgddgg                    \  }}t          t          j        t          j        t          j        |                              dg           d S )Nr  rC   r   r   )r"   r+   r   r   difflog2rm   )rX   r_  r  s      r4   test_scalingzTestMatrix_Balance.test_scalinge  s`    bhq	D!9'=>>??1 	

 3 344qc:::::r6   c                     t          j        g dg dg dg          }t          |          \  }}t          t	          ||                              |          |           d S )N)rC   r   ry  )rC   rC   r\  )r  g      Y@rC   )r+   r   r"   r   r   r   )rX   r  rb   r  s       r4   test_scaling_orderz%TestMatrix_Balance.test_scaling_orderl  s_    HlllLLL---@A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                     d S )Nr  rC   r   separater   rB   )r"   r+   r   r   r  r  r   r   )rX   r_  r  zs       r4   test_separatez TestMatrix_Balance.test_separateq  s|    "28dAYq	,B#C#C,-/ / /	6AqRWRWQZZ((1#...29Q<<(((((r6   c                 r   t          t          j        d          t          j        t          j        d                    t          j        d                    }t	          |d          \  }\  }}t          |t          j        |                     t          |t          j        g d                     d S )N)rB   rB   r  rC   r  )r   rC   r@   r   r?   rQ   rB   )r!   r+   r   rH  r"   r   	ones_liker   )rX   r  rb   r  r  s        r4   test_permutationz#TestMatrix_Balance.test_permutationw  s    rwv(@(@wv( ("1q111	6Aq2<??+++28$9$9$9::;;;;;r6   c           	      L   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          ||          	                    |          |           d S )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  r9  ru  ips           r4   test_perm_and_scalingz(TestMatrix_Balance.test_perm_and_scaling~  sz    555/////////555	7 8 8 ---,,,---,,,. / /
 ,,,.........0 1 1$  	3 	3A!!$$DAq&q1555IAv1q!!BIagaj))BqEArwqzz"aaa%0111E!QKKOOA..2222	3 	3r6   r3   c                 4   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 d S )Nr   r   r   rB   Tr  )r+   r   r"   rx  r   r   )rX   r3   rY   ra   r  b_nt_nr{  permscale_nperm_ns              r4   r   zTestMatrix_Balance.test_empty  s:   HV2&&&a  1v{{{{v{{{{!"&""5"5"566Sw#)####w#)#### *!d;;;=E4v{{{{zQyA~~~~!/D!A!A!Agvw#)####{gm++++zV\))))))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  Z  s        J J J7 7 7; ; ;/ / /
) ) )< < <3 3 38 [TC
GR\#RSS* * TS* * *r6   r  r   )Mrr  rP  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  r>  rh  r   r   r  r  r  r  r  r  r   r6   r4   <module>r     s                                    B B B B B B B B B B B B B B B B B B  * * * * * *= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
 8 7 7 7 7 7 < < < < < < < < ' ' ' ' ' 'z2:r}5,r~>	~	%  YV YV YV YV YV YV YV YVxIV IV IV IV IV IV IV IVV
SJ SJ SJ SJ SJ SJ SJ SJl
OJ OJ OJ OJ OJ OJ OJ OJd/= /= /= /= /= /= /= /=dT T T T T T T Tn   j& j& j& j& j& j& j& j&X	T? T? T? T? T? T? T? T?nK? K? K? K? K? K? K? K?\ "3444-00% % 10 54%9" 9" 9" 9" 9" 9" 9" 9"x7B 7B 7B 7B 7B 7B 7B 7Bt- - - - - - - -<a# a# a# a# a# a# a# a#HU* U* U* U* U* U* U* U* U* U*r6   