
     iכ                       d dl Z d dlZ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mZmZmZmZmZ d dlZd dlmZ d dlmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0 d d	l1m2Z2 ej        ej3        ej4        fZ5ej6        ej7        ej8        fZ9e5e9z   Z:ej;        <                    d
ddiddii gg d          Z=ej;        <                    dddiddii gg d          Z>d Z? G d d          Z@ G d d          ZA G d d          ZB G d d          ZC G d d          ZD G d d          ZEd6dZF G d  d!          ZG G d" d#          ZH G d$ d%          ZIej;        <                    d&d'          ej;        <                    d(eef          d)                         ZJ G d* d+          ZK G d, d-          ZL G d. d/          ZM G d0 d1          ZN G d2 d3          ZO G d4 d5          ZPdS )7    N)arangearraydotzerosidentity	conjugate	transposefloat32)assert_equalassert_almost_equalassert_assert_array_almost_equalassert_allcloseassert_array_equal)raises)solveinvdetlstsqpinvpinvhnormsolve_bandedsolveh_bandedsolve_triangularsolve_circulant	circulantLinAlgError
block_diagmatrix_balanceqrLinAlgWarningassert_no_overwrite)check_free_memoryIS_MUSL)	HAS_ILP64)skip_xp_invalid_argoverwrite_kwoverwrite_aTF)TrueFalseNone)idsoverwrite_b_kwoverwrite_bc                     | }|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     g/srv/www/vhosts/g4struct/public_html/venv/lib/python3.11/site-packages/scipy/linalg/tests/test_basic.py	_eps_castr<   +   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         rC   rI   r                 rC   rG   rI   rJ   rF   rC   rN   rE   rJ   rM   r   rI   rL   r   r   rI   rJ         $@rP          @g      ,@rL   rJ   rI   rE   rF      rJ   r   r   r   r   r   r   rJ   r   rJ   r   r   r   reshaper   r   r   selfaablub4b4by1b4by2b4by4bxs              r;   	test_realzTestSolveBanded.test_real7   sH   ???!>> ==!>># $ $ OOO"NN"NN!MM# $ $ 1)))**

2q!!1vQx1v1v     |||#||#||#||% & & eUE* 	4 	4AaVR++A%c!Qii3333	4 	4r=   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 )NrA   rD   )               @rJ   rC   rl   rK   rP   rC   rG   rl   rQ   rR   )rl   rL   r   r   rT   rV   rP   rW   y              ,@rL   rJ   rI   rE   rF   rX   rY   )r   r   r                 ?r[   r\   r^   s              r;   test_complexzTestSolveBanded.test_complexO   sK   ???!>>"??!>># $ $ $$$"NN"NN"NN$ % % 1***++

2q!!1vQx1v1v     |||$}}#||#||% & & eUE* 	4 	4AaVR++A%c!Qii3333	4 	4r=   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 )NrO   rQ   rR   r   rJ   rI   rL   rU   rE   rF   rX   rY   rZ   r[   rJ   rJ   r   r2   diagr]   r   r   r   	r_   ra   r`   rd   re   rf   rg   rh   ri   s	            r;   test_tridiag_realz!TestSolveBanded.test_tridiag_realg   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 	4r=   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 )Nrm   rQ   rR   r   rJ   rI   rL   rn   rE   rF   rX   rY   rZ   r[   rr   rs   ru   s	            r;   test_tridiag_complexz$TestSolveBanded.test_tridiag_complex{   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 	4r=   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 )NrA   rD   rH   rK   rO   rQ   rR   rS   rT   rU   Fcheck_finite)r   r   r   r   )r_   r`   ra   rb   rc   rd   ri   s          r;   test_check_finitez!TestSolveBanded.test_check_finite   s    ???!>> ==!>># $ $ OOO"NN"NN!MM# $ $ 1)))**!QRe<<<!#a))R00000r=   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 )NrO   rQ   rR   rS   rT   )rB   rW         @      @rL   rF   rB   rW   rr   )r   r]   assert_raises
ValueErrorr   )r_   ra   rb   rc   bads        r;   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Gr=   c                 ^   t          g dg          }t          g dg          }t          ddgg|          }t          ||d           t          ddgdgdgg|          }t          ||d           t          |j        t          j        d	                     t          |g dg           d S )
NrB   rW   r~   )      ?rB   g      ?r   r   rI   V瞯<rtolrr   r   f8)r   r   r   r   dtyper2   r   )r_   rh   refri   s       r;   test_1x1zTestSolveBanded.test_1x1   s    
 <<<.!!___%&&1#**3U++++ 1#sQC!443U++++QWbhtnn---1/00000r=   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 )NrA   rD   rH   rK   rO   rQ   rR   rS   rT   rU   )r   r   r   )r_   r`   ra   rb   rc   rh   ri   s          r;   test_native_list_argumentsz*TestSolveBanded.test_native_list_arguments   s    __^^]]^^ oonnnnmm 1"""!QQ''!#a))Q/////r=   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   rJ   )	r2   r   r   shaper   r   eyeonesemptyr_   r   r   ra   rh   ri   s         r;   
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Ur=   N)__name__
__module____qualname__rj   rp   rv   rx   r|   r   r   r   pytestmarkparametrizeintfloatr2   r
   complex	complex64r    r=   r;   r?   r?   5   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r=   r?   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rP   rP   rW   rW   rB   rB   rB   r   r   r   r   rB   r   rB   rW   rP   rB   rP   rP   r   r   r   r_   ra   rh   ri   s       r;   test_01_upperzTestSolveHBanded.test_01_upper   su     (((((((((* + + &&&''"a  !!%9%9%9:::::r=   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   rB         @r   rW   rP   r   r_   ra   rh   ri   expecteds        r;   test_02_upperzTestSolveHBanded.test_02_upper   s     (((((((((* + + C::::     "a  3****& ' ' 	"!X.....r=   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   rL   rJ   r   r   r]   r   r   r   s       r;   test_03_upperzTestSolveHBanded.test_03_upper   s     (((((((((* + + &&&''//A66"a  !!U+;+;+;%<%<%D%DR%K%KLLLLLr=   c                     t          g dg dg dg          }t          g d          }t          ||d          }t          |g d           d S )Nr   rB   rB   rB   r   rW   rW   rP   rP   r   Tlowerr   r   r   s       r;   test_01_lowerzTestSolveHBanded.test_01_lower  sz     (((((((((* + + &&&''"at,,,!!%9%9%9:::::r=   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   rB   r   r   rW   Tr   rP   r   r   s        r;   test_02_lowerzTestSolveHBanded.test_02_lower  s     (((((((((* + + C::::     "at,,,3****& ' ' 	"!X.....r=   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       r;   test_01_float32z TestSolveHBanded.test_01_float321  s     (((((((((*18: : : &&&g666"a  !!%9%9%9:::::r=   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   rB   r   r   rW   rP   r   r   s        r;   test_02_float32z TestSolveHBanded.test_02_float32?  s     (((((((((*18: : : C:::: './ / / "a  3****& ' ' 	"!X.....r=   c                     t          g dg dg dg          }t          g d          }t          ||          }t          |g d           d S )Nr   r                r   r   r   )       @            @            @      ?       @      ?)rP   rB   rB   rP   r   r   s       r;   test_01_complexz TestSolveHBanded.test_01_complexT  su     (((...(((* + + ...//"a  !!%9%9%9:::::r=   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   ro   rP   rB   r   r   s        r;   test_02_complexz TestSolveHBanded.test_02_complexb  s     (((...(((* + + D$<E?D>":     "a  3+***& ' ' 	"!X.....r=   c                     t          g dg dg          }t          g d          }t          ||          }t          |g d           d S )Nr   rB   rB   r   r   r   rB   r   rB   rP   rB   rP   r   r   s       r;   test_tridiag_01_upperz&TestSolveHBanded.test_tridiag_01_upperw  sX     OOO___566///"""a  !!___55555r=   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   rB   r   rW   rP   r   r   s        r;   test_tridiag_02_upperz&TestSolveHBanded.test_tridiag_02_upper  s     OOO#OO% & &C:::     "a  3***& ' ' 	"!X.....r=   c                     t          g dg dg          }t          g d                              dd          }t          ||          }t          |t          g d                              dd                     d S )Nr   r   r   rL   rJ   r   r   r   s       r;   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Kr=   c                     t          g dg dg          }t          g d          }t          ||d          }t          |g d           d S )Nr   rB   rB   r   r   Tr   r   r   r   s       r;   test_tridiag_01_lowerz&TestSolveHBanded.test_tridiag_01_lower  sd     OOO#OO% & &///"""at,,,!!___55555r=   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   rB   r   rW   Tr   rP   r   r   s        r;   test_tridiag_02_lowerz&TestSolveHBanded.test_tridiag_02_lower  s     OOO#OO% & &C:::     "at,,,3***& ' ' 	"!X.....r=   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       r;   test_tridiag_01_float32z(TestSolveHBanded.test_tridiag_01_float32  sb     OOO___5WEEE///111"a  !!___55555r=   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   rB   r   rW   rP   r   r   s        r;   test_tridiag_02_float32z(TestSolveHBanded.test_tridiag_02_float32  s     OOO#OO%,35 5 5C:::&-/ / / "a  3***& ' ' 	"!X.....r=   c                     t          g dg dg          }t          g d          }t          ||          }t          |g d           d S )Nr   r   r   r   )r   r   r   )rP   rB   rB   r   r   s       r;   test_tridiag_01_complexz(TestSolveHBanded.test_tridiag_01_complex  s^     '''9::'''(("a  !!___55555r=   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   r   rP   ro   rB   r   r   s        r;   test_tridiag_02_complexz(TestSolveHBanded.test_tridiag_02_complex  s     '''#OO% & &C;G$C=" # # "a  3+**& ' ' 	"!X.....r=   c                     t          g dg dg          }t          g d          }t          ||d          }t          |g d           d S )Nr   r   r   Frz   r   r   r   s       r;   r|   z"TestSolveHBanded.test_check_finite  s]     OOO___566///"""ae444!!___55555r=   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   rB   r   rW   )r   r   r   r   )r_   ra   rh   s      r;   test_bad_shapesz TestSolveHBanded.test_bad_shapes  s    OOO#OO% & &C::    j-Q777j-c3Z@@@j-cU;;;;;r=   c                     t          dggg dg          }t          |g dg           t          |j        t	          j        d                     d S )NrJ   rJ   rI   rX   r   r   )r   r   r   r   r2   )r_   ri   s     r;   r   zTestSolveHBanded.test_1x1  sR    A3%)))--1/000QWbhtnn-----r=   c                 h    g dg dg dg}g d}t          ||          }t          |g d           d S r   )r   r   r   s       r;   r   z+TestSolveHBanded.test_native_list_arguments  s]    """""""""$ !  "a  !!%9%9%9:::::r=   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   rJ   r   )	r2   r   r   r   r   r   r   r   r   r   s         r;   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Ur=   N)#r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r   r   r   r   r   r   r   r   r2   r
   r   r   r   r   r=   r;   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r=   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ej                            dddg          d             Zd Zd Zej                            dd          d             Zej                            dd          d             Zej                            dd d!d d!gg          d"             Zd# Zd$ Z ej        !                    d%&          d'             Z"d( Z#d) Z$d* Z%ej                            d+d,d-g          ej                            dg d.          ej                            d/e&j'        e&j(        e&j)        e&j*        g          d0                                     Z+ej                            d1e,e-e&j'        e.e&j)        g          ej                            d2e,e-e&j'        e.e&j)        g          d3                         Z/d4 Z0ej                            d/e&j(        e&j*        g          ej                            dg d5          ej                            d6d7d8g          ej                            d9d:d;g          ej                            d<d:d;g          ej                            d=d:d;g          d>                                                                         Z1ej        2                    e&j3        d?k     d@&          ej                            dg dA          dB                         Z4dC Z5dD Z6dE Z7e8dF             Z9e8dG             Z:e8dH             Z;e8dI             Z<e8dJ             Z=e8e>ej                            dKe,e-g          ej                            dLdMdNg          ej                            dOe,e-g          ej                            dPdMdNg          ej                            dQd!dRg          ej                            d9d:d;g          dS                                                                                                 Z?dT Z@dU ZAdV ZBdWS )X	TestSolvec                     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 )NrJ   rB   r                   333333?r   r   r   )r_   r`   x0rh   s       r;   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5r=   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 )NrJ   rC   rE   rF   r   rI   r   r_   r`   rh   ri   s       r;   test_simplezTestSolve.test_simple3  s    WsAhq6Aq6"a&q6C8$ 	4 	4A aA%c!Qii3333	4 	4r=   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   rI   rl   rF   Dro   r   rJ   r   )r   r   r   r   r   s       r;   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 	4r=   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 )	NrI   rX   r  r   rJ   rJ   r   posassume_ar   r   r_   r`   r   rh   ri   s        r;   test_simple_poszTestSolve.test_simple_posF  s    VaV 	8 	8E1v1v&!f 8 8 !Qe<<<)#a))Q7777	8	8 	8r=   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  rI   rF   ro   r   r  r  r   r   s       r;   test_simple_pos_complexbz"TestSolve.test_simple_pos_complexbO  sw    VaVq'8aV$ 	4 	4A aU+++A%c!Qii3333		4 	4r=   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 )	NrI   rX   r  rJ   r   symr  r   r	  s        r;   test_simple_symzTestSolve.test_simple_symW  s    VaW 	8 	8E1v1v&!f 8 8 !Qe<<<)#a))Q7777	8	8 	8r=   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  rI   ro   r   r  r  r   r   s       r;   test_simple_sym_complexbz"TestSolve.test_simple_sym_complexb`  sw    VaWq'8aV$ 	4 	4A aU+++A%c!Qii3333		4 	4r=   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  ro   r   rJ   rI   r  r  r   r   s       r;   test_simple_sym_complexz!TestSolve.test_simple_sym_complexh  ~    Yr
#q'a&8aV$ 	4 	4A aU+++A%c!Qii3333	4 	4r=   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 )
NrI   rX   r  r  rJ   r   ro   herr  r   r	  s        r;   test_simple_her_actuallysymz%TestSolve.test_simple_her_actuallysymq  s    VaW 	8 	8E1v1v&!f1g 8 8 !Qe<<<)#a))Q77778	8 	8r=   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  ro   r   rJ   rI   r  r  r   r   s       r;   test_simple_herzTestSolve.test_simple_her{  r  r=   c                    t           j                            d          }d}|                    ||g          |                    ||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 )N  rI   ro   r  r   r   )	r2   randomdefault_rngr   r   r   r   r   r   )	r_   rngnAXAinvRirs	            r;   test_nils_20Feb04zTestSolve.test_nils_20Feb04  s    i##D))JJ1vszz1a&11"441a&#1vvQKKB&1 	" 	"A!!!Q$AAqkkAaaadGG!!T*****r=   c                 r   t           j                            d          }d}|                    ||g          }t          |          D ]}dd|||f         z   z  |||f<   t          d          D ]G}|                    |dg          }t	          ||          }t          t          ||          |           Hd S )Nr  rC   皙?rF   rX   r2   r  r   ranger   r   r   r_   r!  r"  r`   r'  rh   ri   s          r;   test_randomzTestSolve.test_random  s    i##D))JJ1vq 	& 	&A"Qq!tW*oAadGGq 	4 	4A

Aq6""AaA%c!Qii3333	4 	4r=   c                    t           j                            d          }d}|                    ||g          d|                    ||g          z  z   }t          |          D ]}dd|||f         z   z  |||f<   t          d          D ]G}|                    |dg          }t	          ||          }t          t          ||          |           Hd S )Nr  rC   ro   r+  rI   rX   r,  r.  s          r;   test_random_complexzTestSolve.test_random_complex  s    i##D))JJ1vcjj!Q&8&8!88q 	& 	&A"Qq!tW*oAadGGq 	4 	4A

Aq6""AaA%c!Qii3333	4 	4r=   c                    t           j                            d          }d}|                    ||g          }t          |          D ]E}t	          dd|||f         z   z            |||f<   t          |          D ]}|||f         |||f<   Ft          d          D ]H}|                    |g          }t          ||d          }t          t          ||          |           Id S )Nr  rC   r+  rF   r  r  )r2   r  r   r-  absr   r   r   r_   r!  r"  r`   r'  jrh   ri   s           r;   test_random_symzTestSolve.test_random_sym  s    i##D))JJ1vq 	" 	"A"b1a4j/**AadG1XX " "AqD'!Q$"q 	4 	4A

A3AaU+++A%c!Qii3333	4 	4r=   c                 X   t           j                            d          }d}|                    ||g          }|d|                    ||g          z  z   }t          |          D ]R}t	          dd|||f         z   z            |||f<   t          |          D ]}t          |||f                   |||f<   S|                    |g          d|                    |g          z  z   }t          d          D ]2}t          ||d          }t          t          ||          |           3d S )	Nr  rC   ro   r+  rl   rI   r  r  )	r2   r  r   r-  r3  r   r   r   r   r4  s           r;   test_random_sym_complexz!TestSolve.test_random_sym_complex  s8   i##D))JJ1v3::q!f%%%%q 	- 	-A"b1a4j/**AadG1XX - -#AadG,,!Q$-JJsOOBszz1#..q 	4 	4AaU+++A%c!Qii3333	4 	4r=   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 )	NrJ   rC   rE   rF   r   rI   Frz   r   r   s       r;   r|   zTestSolve.test_check_finite  s    WsAhq6Aq6"QFq6C8$& 	4 	4Aa///A%c!Qii3333	4 	4r=   c                     d}g d}t          ||          }t          |                                |           t          |j        dk    d           d S )NrJ   r   rX   z'Scalar_a_1D_b test returned wrong shape)r   r   ravelr   r   r   s       r;   test_scalar_a_and_1D_bz TestSolve.test_scalar_a_and_1D_b  sR    II!QKK!!''))Q///4!JKKKKKr=   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=
)rB   rL   rX   r  )rX   rI   rF   rJ   )r2   r   r   r   Tr   s       r;   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r=   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              @)r2   r   r   r   r   s       r;   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> &? &? 	@ 	@ 	@ 	@ 	@r=   r  r  r  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          }|dk    r|j        n|                                j        }||z   }t          j        |          |t          j        d          t          j        d          f<   t          ||d          }t          |||          }t          ||           t          |||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  rF   generalr  Tr  )r2   r   r@  conjrt   r   r   r   )r_   r  r`   rh   a2a3r   ri   s           r;   test_symmetric_hermitianz"TestSolve.test_symmetric_hermitian  s,    HBBB999///&&&( ) ) H{L1"L1#[1!=13 4 4
 %%QSS16688:V)+29Q<<1%&BI...!Q***!!S))) "a($777!!S)))))r=   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 )	NrJ   
   rX   	   r  r  )      "@r?  rB   r  r2   r   r]   r   trilr   r   r_   r#  ri   s      r;   test_pos_and_symzTestSolve.test_pos_and_sym  s    Ia$$Q**"'!**Q,

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

U;;;!!]]]33333r=   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)	rJ   r   r   r   r   r   rJ   r   rJ   )	rJ   rJ   rJ   r   r   r   rJ   r   rJ   )	r   rJ   rJ   r   r   r   rJ   r   rJ   )	rJ   r   rJ   rJ   rJ   rJ   r   r   r   )	rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rM  )r2   r   r   r   r   r   r_   r`   rh   s      r;   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/////r=   	structure)
diagonaltridiagonallower triangularupper triangular	symmetric	hermitianpositive definiterF  bandedNc                 X   t           j                            d          }d}t          j        dd|          }t          j        |          }|                    |          }d}t          j        t          |          5  t          |||           d d d            d S # 1 swxY w Y   d S )	Nl   Ej] rL  r   2   sizez2(Ill-conditioned matrix|An ill-conditioned matrix)matchr  )	r2   r  r   logspacert   r   warnsr"   r   )r_   rV  r!  r"  dr#  rh   messages           r;   test_ill_condition_warningz$TestSolve.test_ill_condition_warning  s    
 i##L11K2q!!GAJJJJAJF\-w777 	, 	,!Q++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   ?BB#&B#)	rW  rX  rY  rZ  r[  r\  r]  rF  Nc                 D   d}t          j        ||f          }t          j        |          }t          j        t
          d          5  t          j        d          5  t          |||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrL  singularrc  ignore)allr  )r2   r   r   r   r   r   errstater   )r_   rV  r"  r#  rh   s        r;   test_exactly_singular_gh22263z'TestSolve.test_exactly_singular_gh22263)  s   
 HaVGAJJmKz::: 	, 	,BKH<U<U<U 	, 	,!Q++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s6   BA=1B=B	BB	BBBrh   r   rJ   c                    t          j        t                    5  t          j        d          }t          ||           d d d            n# 1 swxY w Y   t          j        t                    5  t          d|           d d d            n# 1 swxY w Y   t          j        t                    5  t          dgg|           d d d            d S # 1 swxY w Y   d S )Nrr   r   )r   r   r   r2   r   r   )r_   rh   r`   s      r;   test_singular_scalarzTestSolve.test_singular_scalar4  s   
 ];'' 	 	  A!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ];'' 	 	!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ];'' 	 	A3%OOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   %AAA/BBB0CCCc                     t          j        d          }t           j                            d          }|                    d          }t	          ||          }t          ||           d S )NrI   r  )rI      )r2   r   r  r   r   r   )r_   r`   r!  rh   ri   s        r;   test_multiple_rhszTestSolve.test_multiple_rhsC  sX    F1IIi##D))JJw!QKK!!Q'''''r=   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 )	NrM  rX   rJ   T
transposed)r   g?rJ   F)rM  gg333333rO  rQ  s      r;   test_transposed_keywordz!TestSolve.test_transposed_keywordJ  s    IaLL  A&&*"'!**Q,

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

u===!!___55555r=   z*1. why? 2. deprecate the kwarg altogether?reasonc                     t          j        d                              t                    }t	          t
                    5  t          ||d           d d d            d S # 1 swxY w Y   d S )NrX   Trv  )r2   r   astyper   r   NotImplementedErrorr   r_   r`   s     r;   test_transposed_notimplementedz(TestSolve.test_transposed_notimplementedQ  s    F1IIW%%.// 	) 	)!Q4((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   A!!A%(A%c                 B    t          t          t          ddgd           d S )NrJ   rI   r   r   r   r_   s    r;   test_nonsquare_azTestSolve.test_nonsquare_aW  s     j%!Q33333r=   c                 .   t          t          t          j        d          t          j        d                    t          j        d                     t          t          t          t          j        d          t          j        d                     d S )NrX   rF   )r   r   r2   r   r   r   r   r  s    r;   test_size_mismatch_with_1D_bz&TestSolve.test_size_mismatch_with_1D_bZ  s^    !%q		271::">">

KKKj%BGAJJ?????r=   c                 B    t          t          t          ddd           d S )NrJ   zxcvr  r  r  s    r;   test_assume_a_keywordzTestSolve.test_assume_a_keyword^  s!    j%A??????r=   rb  rL  d   )genr  r  r  rX  r   c                    t           j                            d          }|t           j        t           j        fv }|                    ||f                              |          }|                    |                              |          }|r0|d|                    ||f          z                      |          z  }|dk    r||j        z   }n|dk    r||j                                        z   }n|dk    r5|j                                        |z  dt          j	        |          z  z   }n~|dk    rxt          j
        t          j
        |                    t          j
        t          j
        |d          d          z   t          j
        t          j
        |d	          d	          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  ||z             |dk    r3|s3t          |||d          }	t          ||	z  |||z  ||z             d S d S d S )Nr  ro   r  r  r  r+  rX  rJ   rL   -q=gư>)r  r  r  rL  r  atolr   T)r  rw  )r2   r  r   r   r6   standard_normalr|  r@  rG  r   rt   r4   r
   r   r   )
r_   rb  r   r  r!  
is_complexr`   rh   tolri   s
             r;   'test_all_type_size_routine_combinationsz1TestSolve.test_all_type_size_routine_combinationsa  sO    i##D))r|R];;
t--44U;;%%,,U33 	F"S(($666>>uEEEAuACAAACHHJJAA

QRVD\\!11AA&&$$A**+B,,-A
 R] ;;;ee,,, R\222r	!Q***AqsTzd
CCCCuZaX$???AAE13:C$JGGGGGG r=   dt_ar   c                 8   t          j        d|          }t          j        d|          }t          ||          }|j        dk    sJ t          t          j        d|          t          j        d|                    j        }|j        |k    sJ |j        t           j                            ||          j        k    sJ t          j        d|          }t          j        d|          }t          ||          }|j        dk    sJ |j        |k    sJ d S )Nr   r   r   rI   rX   r   rI   rI   rI   rF   )rX   r   rI   rF   )	r2   r   r   rb  r   r   r   r   linalgr_   r  r   r`   rh   ri   dt_nonemptys          r;   r   zTestSolve.test_empty  s    HV4(((HQd###!QKKv{{{{BF1D111271D3I3I3IJJPw+%%%%w")//!Q//55555GL---GF$'''!QKKw,&&&&w+%%%%%%r=   c                     t          j        d          }g g g}t          ||          }t          |j        dk    d           t          |j        dk    d           d S NrI   r   zReturned array is not empty)rI   r   z#Returned empty array shape is wrong)r2   r   r   r   rb  r   r   s       r;   test_empty_rhszTestSolve.test_empty_rhs  sZ    F1IIH!QKK!:;;;6!#HIIIIIr=   )rW  rX  r^  rY  rZ  r  r]  r[  r\  r^  rF  r  r  r  nrhsr   )r  rw  TF	overwritefortranc                    t           j                            d          }|dk    sdnd}|                    |f|z             }	|                    ||f          }
t          j        |t           j                  r>|	|                    |f|z             dz  z   }	|
|                    ||f          dz  z   }
|dk    r(t          j        t          j        |
                    }
n5|dk    rt          j        |
          }
n|d	k    rt          j        |
          }
n|d
k    ryt          j        t          j        |
                    t          j        t          j        |
d          d          z   t          j        t          j        |
d          d          z   }
n|dk    r)t          j        t          j        |
d          d          }
nP|dv r|
|
j        z   }
nA|dv r|
|
	                                j        z   }
n |dv r|
|
j        	                                z  }
|rt          j
        |
          }
|
                    d          }|	                                }t          j        |t           j                  rM|rKd}t          j        t          |          5  t          |
|	|||           d d d            n# 1 swxY w Y   d S t          |
|	||||          }t           j                            |r|j        n||          }t#          ||           |dk    r"t#          t          |||          |d           |s"t%          |
|           t%          |	|           d S d S )Nl   q~u r^  r  rC   ra  ro   rW  rY  rZ  rX  rL   rJ   rI   >   r  r[  >   r  r\  >   r  r]  r#  orderz#scipy.linalg.solve can currently...rc  )r*   r0   rw  )r*   r0   rw  r  rv  r   r  )r2   r  r   
issubdtypecomplexfloatingrt   rP  triur@  rG  asfortranarraycopyr   r   r}  r   r  r   r   )r_   r   r  r  rw  r  r  r!  r"  rh   r#  A_copyb_copyrh  resr   s                   r;   test_structure_detectionz"TestSolve.test_structure_detection  s    i##O44))AArJJQD4KJ((JJQFJ##= 233 	1CJJQD4KJ00255ACJJQFJ++b00Az!!

##AA+++

AA+++

AA&&$$7271b>>2../7271a==!,,-AA !!1r**AA---ACAA---AFFHHJAA555ACHHJJA 	%!!$$Ac""= 233 	
 	;G2'BBB - -a	y!+- - - -- - - - - - - - - - - - - - - FAqiY)H> > > ioo*@fhh&&IIS!!! xff<<<c   
  	$F###F#####	$ 	$s   J;;J?J?2z(solve chokes on b.ndim == 1 in numpy < 2)NrW  rF  rZ  rY  r  c                 z   t          j        d          }t          j        dd                              d          |z  }t          j        d          }t          t          |||          t           j                            ||                     t          j        d          }t          t          |||          t           j                            ||                     t          j        d          ddgz  }t          t          |||          t           j                            ||                     d S )NrI   rJ      )rF   rX   rI   rJ   rJ   r  rT   rI   rI   )r2   r   r   r]   r   r   r   r  )r_   r  er`   rh   s        r;   test_vs_np_solvezTestSolve.test_vs_np_solve  s     F1IIIa##++O<<q@GAJJaX666	18M8MNNNGFOOaX666	18M8MNNNGFOOq!f$aX666	18M8MNNNNNr=   c                 X   t           j                            d          }|                    d          }t          j        t          j        |t          j        |j                                      }|                    d          }t          ||dd          }||j        z   t          j	        t          j	        |                    z
  }t           j
                            ||          }t          ||d	           t          |j        |dd
          }t          ||d	           d S )Nr   rF   rF   ra  rF   rI   r  Tr  r   r  F)r2   r  r   normalrP  matmulrG  r@  r   rt   r  r   )r_   r!  r`   rh   outaa	result_nps          r;   test_pos_lowerzTestSolve.test_pos_lower  s     i##A&&JJFJ##GBIa..//JJFJ##Aq5555Wrwrwqzz***IOOB**	YU3333 ACU%888YU333333r=   c                    t          j        ddgddgg          }t          j        d          }t          ||          }t	          ||z  t          j        d          d           t          ||d          }t	          ||d           t          ||d	          }t          j        ||d          rJ t          |d	          }t	          ||d           d S )
N	I<<f@B)sVxP''f('&@''f@('&rI   +=r  r  r  r  )r2   asarrayr   r   r   allcloser   )r_   r`   rh   ainvainv_sym	ainv_cholainv_invs          r;   test_pos_fails_sym_complexz$TestSolve.test_pos_fails_sym_complex  s     J35NP26NPR S SF1IIQ{{q"&))%8888A...$U3333
 !Q///	;tYU;;;;;; q5)))	8%888888r=   c                     t          j        d          }d|j        _        t          j        d          }t          ||          }t          ||d           d S NrX   Fr  r  )r2   r   flags	writeabler   r   r   r   s       r;   test_readonlyzTestSolve.test_readonly*  sN    F1II!GAJJ!QKK15))))))r=   c                    t          j        d                              dddd          }|d d d d dd d d d f         }t          j        d          }t	          ||fi |}|j        |j        d d         k    sJ t          ||d         z  |z
  dd           t          j        d	          d d d d df         }t	          ||fi |}|j        |j        d d         |j        d         fz   k    sJ t          ||z  |z
  dd           d S 
N   rI   rX   rL   .Nr   r  r  r  r2   r   r]   r   r   r   r   r_   r)   r`   rh   ri   s        r;   test_batch_negative_stridez$TestSolve.test_batch_negative_stride1  s1   IcNN""1aA..aaa2qqq!!!mGAJJ!Q'',''w!'#2#,&&&&AiL(1,ae<<<< GFOOAAAtttG$!Q'',''w!'#2#,!'"+77777A	15111111r=   c                    t          j        d                              dddd          }|d d d d d d dd d f         }t          j        d          }t	          ||fi |}|j        |j        d d         k    sJ t          ||d         z  |z
  dd           t          j        d	          d d dd d f         }t	          ||fi |}|j        |j        d d         |j        d         fz   k    sJ t          ||z  |z
  dd           d S r  r  r  s        r;   test_core_negative_stridez#TestSolve.test_core_negative_stride@  s1   IcNN""1aA..aaaDDbD!!!mGAJJ!Q'',''w!'#2#,&&&&AiL(1,ae<<<< GFOODDbD!!!G$!Q'',''w!'#2#,!'"+77777A	15111111r=   c                    t          j        d                              dddd          }|dd d df         }t          j        d          }t	          ||fi |}|j        |j        d d         k    sJ t          ||d         z  |z
  dd	
           t          j        d          d d d         }t	          ||fi |}|j        |j        d d         k    sJ t          ||d         z  |z
  dd	
           d S )N0   rI   rX   rF   .rL   r  r   r  r  r  r  s        r;   test_core_non_contiguousz"TestSolve.test_core_non_contiguousP  s   Ie$$Q1a00c33Q3hKGAJJ!Q'',''w!'#2#,&&&&AiL(1,ae<<<< GAJJsssO!Q'',''w!'#2#,&&&&AiL(1,ae<<<<<<r=   c                    t          j        d                              dddd          }|d d d d ddf         }t          j        d          }t	          ||fi |}|j        |j        d d         k    sJ t          ||d         z  |z
  dd	           t          j        d
          d d d d df         }t	          ||fi |}|j        |j        d d         |j        d         fz   k    sJ t          ||z  |z
  dd	           d S )Nr  rI   rG   .rL   r  r   r  r  rI   rG   r  r  s        r;   test_batch_non_contiguousz#TestSolve.test_batch_non_contiguous_  s(   Ie$$Q1a00aaa1ckNGAJJ!Q'',''w!'#2#,&&&&AiL(1,ae<<<< GFOOAAAsssF#!Q'',''w!'#2#,!'"+77777A	15111111r=   c                 B   t          j        d                              ddddd          }|                    ddddd          }t          j        d          }t          ||fi |}|j        |j        d d         k    sJ t          ||d         z  |z
  dd	
           d S )Nr  rI   rX   rJ   rF   r   rL   r  r  r  )r2   r   r]   r	   r   r   r   r   r  s        r;   test_batch_weird_stridesz"TestSolve.test_batch_weird_stridesn  s    Ie$$Q1a33KK1aA&&GAJJ!Q'',''w!'#2#,&&&&AiL(1,ae<<<<<<r=   a_dtypea_orderCFb_dtypeb_orderb_ndimrI   c	                    d}	t          j        d|	dz  dz                                 |	|	          t          j        |	          z   }
|
                    ||          }
t          j        |	          |dk    r2t          j        fdt          |          D                       j                            ||          |
                                }                                }t          |
fi ||d|i}|r|j        n|}t          ||z  |d           |                    d	d
          }|o|
j        t          k    o|
j        d         }|                    dd
          }|oj        t          k    oj        d         }t          j        |          |k    sJ |k                                    |k    sJ |
|k                                    |k    sJ d S )NrX   rJ   rI   r  c                     g | ]}|z  S r   r   ).0r5  rh   s     r;   
<listcomp>z1TestSolve.test_overwrite_args.<locals>.<listcomp>  s    555!!A#555r=   rw  r  r  r*   FF_CONTIGUOUSr0   )r2   r   r]   r   r|  stackr-  r@  r  r   r   getr   r   r  shares_memoryrm  )r_   r)   r/   r  r  r  r  r  rw  r"  r`   a_refb_refri   a_or_aTr*   	a_inplacer0   	b_inplacerh   s                      @r;   test_overwrite_argszTestSolve.test_overwrite_argsx  s    IaA""**1a0026!99<HHWGH,,IaLLA::5555uV}}555668AHHWGH,, !QPP,P.PPZPPP'2%''U!U7777 #&&}e<<PQW^P9P	$((>>PQW^P9P	1%%2222U
!!Y....U
!!Y......r=   c                    t          j        d                              dd          }||j        z   t          j        d          z   }t          j        d          }t          ||          }t          ||z  |d           t          t                    5  t          ||d           d d d            d S # 1 swxY w Y   d S )NrM  rX   r  r  r  r  )
r2   r   r]   r@  r   r   r   r   r   r   )r_   r`   r#  rh   r   s        r;   test_posdef_not_posdefz TestSolve.test_posdef_not_posdef  s    IaLL  A&&GbfQiiGAJJ 1a[[B.... ;'' 	( 	(!Q''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   B55B9<B9c           	      .   t          j        t          j        t          j        d                    t          j        t          j        dd                    g          }t          j        d          }t          ||          }t          |d         dt          j        dd          z  d           t          j        dd	gd	dgg          }t          j        d
          }t          j
        t                    5  t          ||d           d d d            n# 1 swxY w Y   t          j        d	d	gd	dgg          }t          j        d
          }t          j        t                    5  t          ||d           d d d            d S # 1 swxY w Y   d S )NrX   rX   rJ   rF   rX   rJ   .r  r  ꌠ9Y>)Fr   rI   rW  r  )r2   r  r  r   rt   r   r   r   r  r   rf  r"   r   r   r   s       r;   test_diagonalzTestSolve.test_diagonal  s   Hbgbgfoo..	!Q0H0HIJJGAJJ!QKK 	&	1ryA#6UCCCC Jq	Aq6*++GAJJ\-(( 	- 	-!Q,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- JAA'((GAJJ];'' 	- 	-!Q,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s$   9DDD*F

FFc                 @   d}dt          j        t          j        |                    z  t          j        t          j        d          d          z   t          j        t          j        d          d          z   }t          j        t          j        t          j        ||f                    |g          }t          j        d          }t          ||          }t          |d         t          j        g d          d	           d
|d<   t          j	        t                    5  t          ||d           d d d            n# 1 swxY w Y   dx|d<   |d<   t          j        t                    5  t          ||d           d d d            d S # 1 swxY w Y   d S )NrF   rX   rJ   rL   r  )             r  r  r   r  @xD)rJ   r   r   rX  r  r   )rJ   r   rJ   )r2   rt   r   r  r  r   r   r  r   rf  r"   r   r   )r_   r"  r`   rh   ri   s        r;   test_tridiagonalzTestSolve.test_tridiagonal  s   rwrwqzz"""RWRWQZZ%;%;;bgbgajjRT>U>UUHbgbgq!foo..233GAJJ!QKK 	&	2:.B.B.B#C#C%PPPP '
\-(( 	0 	0!Q////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 #$#'
QwZ];'' 	0 	0!Q////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s$   &EE	E	3FFFN)Cr   r   r   r   r   r  r
  r  r  r  r  r  r  r)  r/  r1  r6  r8  r|   r=  rA  rD  r   r   r   rJ  rR  rU  ri  ro  rq  rt  rx  skipr  r  r  r  r2   r
   r4   r   r6   r  r   r   r   r   r  r  skipif__version__r  r  r  r  parametrize_overwrite_argr  r  r  r  r  parametrize_overwrite_b_argr  r  r  r  r   r=   r;   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@ @ @" [Z%88* * 98*.4 4 40 0 0 [[NO O, ,	O O, [[DE E, ,	E E, [S1a!Q.11  21( ( (6 6 6 [IJJ) ) KJ)
4 4 4@ @ @@ @ @ [Vb#Y//[Z)T)T)TUU["*bj",F "H "H  VU 0/
"HH [Vc5"*gr|%TUU[Vc5"*gr|%TUU& & VU VU& J J J [Wrz2=&ABB[Z *J *J *J K K
 [Vb$Z00[\D%=99[[4-88[Yu66<$ <$ 76 98 :9 10K K CB<$| [
%O    [	
 	
 	
 O O  O4 4 4"9 9 90* * * 2 2 2 2 2 2 = = = 2 2 2 = = =  [Ye55[Yc
33[Ye55[Yc
33[X1v..[\D%=99/ / :9 /. 43 65 43 65 !  /B( ( (- - -(0 0 0 0 0r=   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.
        rJ   r   rI   Tr   Fr   r   transrB         N)r   r   r   r@  r   r_   r#  rh   sols       r;   r   zTestSolveTriangular.test_simple  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'<=====r=   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
        rC  r   ro   rI   TrJ   r	  y      ?      y      п      пr         ?       @y             y      ?      ?y      ?      y            пFr  N)r   r   r   r   r2   rt   r@  r  s       r;   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Ar=   c                     t          ddgddgg          }ddg}t          ||dd          }t          |ddg           dS )r  rJ   r   rI   TF)r   r{   N)r   r   r   r  s       r;   r|   z%TestSolveTriangular.test_check_finite  sW     Aq6Aq6"##Fq!4eDDD!#1v.....r=   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 Nr   r   r   rI   )r2   r   r   rb  r   r   r   r  s          r;   r   zTestSolveTriangular.test_empty  s     HV4(((HQd###Q""v{{{{&F1D!!!271D#9#9#9
 

 	 w+%%%%%%r=   c                     t          j        d          }g g g}t          ||          }t          |j        dk    d           t          |j        dk    d           d S r  )r2   r   r   r   rb  r   r   s       r;   r  z"TestSolveTriangular.test_empty_rhs"  s\    F1IIHQ""!:;;;6!#HIIIIIr=   N)r   r   r   r   r  r|   r   r   r   r   r   r2   r
   r   r   r   r  r   r=   r;   r  r    s        > > >*B B B:/ / / [Vc5"*gr|%TUU[Vc5"*gr|%TUU	& 	& VU VU	&J J J J Jr=   r  c                      e 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ed             Zej	        
                    d	ej        ej        ej        ej        g          d
             Zd Zej	        
                    deeej        eej        g          d             Zed             Zed             Zed             Zed             Zed             Zed             Zd Z d Z!d Z"ej	        
                    dddg          d             Z#d Z$ej	        
                    dddg          ej	        
                    dddg          d                         Z%d Z&d  Z'd! Z(d"S )#TestInvc                 (   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 )NrJ   rI   rX   rF   r   rF   r  rG   rM      rL  )r   r   r   r2   r   r_   r`   a_invs      r;   r   zTestInv.test_simple+  s    VaVA!#a--;;;YY			:::.A!#a--;;;;;r=   c                 \   t           j                            d          }d}t          d          D ]z}|                    ||g          }t          |          D ]}dd|||f         z   z  |||f<   t	          |          }t          t          ||          t          |                     {d S )Nr  rC   rF   r+  r2   r  r   r-  r   r   r   r   r_   r!  r"  r'  r`   r  s         r;   r/  zTestInv.test_random3  s    i##D))q 	3 	3A

Aq6""A1XX * *b1a4j/!Q$FFE%c!Umm&.qkk3 3 3 3	3 	3r=   c                 |    ddgddgg}t          |          }t          t          ||          ddgddgg           d S )NrJ   rI   rX   r   r   r   r   r   r  s      r;   r  zTestInv.test_simple_complex>  sJ    VaWA!#a--1a&1a&1ABBBBBr=   c                    t           j                            d          }d}t          d          D ]}|                    ||g          d|                    ||g          z  z   }t          |          D ]}dd|||f         z   z  |||f<   t	          |          }t          t          ||          t          |                     d S )Nr  rC   rF   rl   r+  r  r  s         r;   r1  zTestInv.test_random_complexC  s    i##D))q 	3 	3A

Aq6""2cjj!Q&8&8#88A1XX * *b1a4j/!Q$FFE%c!Umm&.qkk3 3 3 3	3 	3r=   c                     ddgddgg}t          |d          }t          t          ||          ddgddgg           d S )NrJ   rI   rX   rF   Frz   r   r   r  s      r;   r|   zTestInv.test_check_finiteN  sQ    VaVAE***!#a--1a&1a&1ABBBBBr=   r:   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 t          j        d|          }t          |          }|j        dk    sJ d S )Nr   r   r   rI   r  )rX   rJ   r   r   )r2   r   r   rb  r   r   r   r   r_   r:   r`   r  s       r;   r   zTestInv.test_emptyS  s    HV2&&&AzQ{c"&""5"5"566<<<<<GL+++A{l****GL+++A{l******r=   c                    d}t          j        d|dz  dz                                 ||          t          j        |          z   }|                                }t          |fi |}t          ||z  t          j        |          d           t          ||           t          j        ||          rJ |                                	                    t                    }t          |fi |}t          ||z  t          j        |          d           t          ||           t          j        ||          rJ |	                    t                                        d          }t          |fi |}t          ||z  t          j        |          d           |                    dd	          }||k                                    |k    sJ t          j        ||          |k    sJ d S )
NrX   rJ   rI   r  r  r  r  r*   F)r2   r   r]   r   r  r   r   r   r  r|  r   r  rm  )r_   r)   r"  a0r`   r  r*   s          r;   test_overwrite_azTestInv.test_overwrite_ab  s   Yq!Q$(##++Aq11BF1II= GGIIA&&&&	26!9959999Q#Au----- GGIIU##A&&&&
BF1IIE::::Q#Au-----
 IIe!!!,,A&&&&
BF1IIE::::"&&}e<<R}}+----5))[888888r=   r9   c                    t          j        d                              dd                              |          }t	          |          }t          ||z  t          j        |j        d                   dt          j        |j	                  j
        z             ddddd	}|j	        j        ||j	        j                 k    sJ d S )
NrF   rI   r   r  r  frg  r  )r  r)  gG)r2   r   r]   r|  r   r   r   r   r7   r   r8   char)r_   r9   r`   r  dt_maps        r;   test_dtypeszTestInv.test_dtypes  s    
 IaLL  A&&--d33AE	26!'!*#5#5C@Q@Q@U<UVVVV 	
 
 {6!',#7777777r=   c                     t          j        d          }d|j        _        t	          |          }t          ||d           d S r  )r2   r   r  r  r   r   r  s      r;   r  zTestInv.test_readonly  s?    F1II!Aqu------r=   c                     t          j        d|                              dddd          dz   }t          |          }|j        |j        k    sJ t          ||z  d           d S )NrG   r   rX   rI   rJ   rB   )r2   r   r]   r   r   r   r$  s       r;   test_batch_core_1x1zTestInv.test_batch_core_1x1  si    Ic$$$,,Q1a881<A{ag%%%%E	2&&&&&r=   c                    t          j        dt                                        ddd          }|d         }t	          |fi |}|j        |j        k    sJ t          ||z  t          j        t          j        d          |j                  d           |d d d df         }t	          |fi |}|j        |j        k    sJ t          ||z  t          j        t          j        d          |j                  d           d S )	Nrs  r   rX   rI   )N.g+=r  .)	r2   r   r   r]   r   r   r   broadcast_tor   )r_   r)   r`   r  r  s        r;   test_batch_zero_stridezTestInv.test_batch_zero_stride  s    Ie5)))11!Q::y\B'',''{bh&&&&U
BOBF1IIrx$H$HuUUUUqqq$|_B'',''{bh&&&&U
BOBF1IIrx$H$HuUUUUUUr=   c                 @   t          j        d                              dddd          }|d d d d dd d d d f         }t          |fi |}|j        |j        k    sJ t          ||z  t          j        t          j        d          |j                  d           d S Nr  rI   rX   rL   vIh%,=r  r2   r   r]   r   r   r   r3  r   r_   r)   r`   r  s       r;   r  z"TestInv.test_batch_negative_stride  s    IcNN""1aA..aaa2qqq!!!mA&&&&{ag%%%%E	2?26!99ag#F#FUSSSSSSr=   c                 @   t          j        d                              dddd          }|d d d d d d dd d f         }t          |fi |}|j        |j        k    sJ t          ||z  t          j        t          j        d          |j                  d           d S r6  r8  r9  s       r;   r  z!TestInv.test_core_negative_stride  s    IcNN""1aA..aaaDDbD!!!mA&&&&{ag%%%%E	2?26!99ag#F#FUSSSSSSr=   c                 &   t          j        d                              dddd          }|dd d df         }t          |fi |}|j        dk    sJ t          ||z  t          j        t          j        d          |j                  d           d S )	Nr  rI   rX   rF   .rI   rX   rI   rI   r7  r  r8  r9  s       r;   r  z TestInv.test_core_non_contiguous  s    Ie$$Q1a00c33Q3hKA&&&&{l****E	2?26!99ag#F#FUSSSSSSr=   c                 ,   t          j        d                              dddd          }|d d d d ddf         }t          |fi |}|j        dk    sJ t          ||z  t          j        t          j        d          |j                  d           d S )Nr  rI   rG   .r<  gvIh%L=r  r8  r9  s       r;   r  z!TestInv.test_batch_non_contiguous  s    Ie$$Q1a00aaa1ckNA&&&&{l****E	2?26!99ag#F#FUSSSSSSr=   c                 \   t          t                    5  t          t          j        d                     d d d            n# 1 swxY w Y   t          t                    5  t          t          j        d                     d d d            n# 1 swxY w Y   t          j        t          j        dt                    t          j        d                              dd          f          }t          t                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nr  )rX   rI   rI   r   rF   rI   )	r   r   r   r2   r   r  r   r   r]   )r_   r)   r`   s      r;   test_singularzTestInv.test_singular  s    ;'' 	! 	!   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! ;'' 	$ 	$	""###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ HbgfG444bill6J6J1a6P6PQRR;'' 	 	FFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   "AA
A""BBBD!!D%(D%c                    t          j        ddg          }t          j        t                    5  t          |           d d d            n# 1 swxY w Y   t          j        t          j        ddg          t          j        ddg          t          j        ddg          g          }t          j        t                    5  t          |           d d d            d S # 1 swxY w Y   d S )NrB   #B;rJ   )r2   rt   r   rf  r"   r   r  )r_   r`   rH  s      r;   test_ill_condzTestInv.test_ill_cond  sD   GRK  \-(( 	 	FFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 XrwE{++RWaV__bgq%j>Q>QRSS\-(( 	 	GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AAAC  C$'C$c                     t          t                    5  t          t          j        d          d           d d d            d S # 1 swxY w Y   d S )NrI   kaboomr  )r   KeyErrorr   r2   r   r  s    r;   test_wrong_assume_azTestInv.test_wrong_assume_a  s    8$$ 	. 	.q		H----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   $AA
A
c                 4   t          j        dt                                        dd          }||j        z   }|dt          j        d          z  z  }t          |          }t          |d          }t          ||d           t          j        d	t          j	        g |j
        d
R  z
  dk    t           j        d	          }t          ||z  ddd          }t          ||d           t          ||j        z  ddd          }t          ||d           d S )Nr  r   r     r  r  r   r  rJ   rL   r   Fr{   r  r   T)r2   r   r   r]   r@  r   r   r   wheretrir   nan)r_   ri   yy_inv0y_inv1masky_inv2y_inv3s           r;   test_posdefzTestInv.test_posdef  s   Ib&&&..q!44G	Rq		\QQ'''U3333 xBF0AG0R0000A5rvqAAQtV%%uMMMU3333 QtvXEENNNU333333r=   complex_FTc                    t          j        d                              dd          }||j        z   t          j        d          z   }|r|d|z  z   }t          |          }t          ||z  t          j        d          d           t          t                    5  t          |d           d d d            n# 1 swxY w Y   |rt          j        d                              dd          }|d|z  z   }||j        	                                z   t          j        d          z   }t          t          |          |z  t          j        d          d           d S d S )NrM  rX   ro   g [n<r  r  r  )
r2   r   r]   r@  r   r   r   r   r   rG  )r_   rT  r`   rh   b_inv0s        r;   r  zTestInv.test_posdef_not_posdef  s    IaLL  A&&GbfQii 	BqDA Q
BF1IIE:::: ;'' 	# 	#E""""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#  	?	!$$Q**ABqDAACHHJJ*ACFFQJq		>>>>>>		? 	?s   B::B>B>c                 X	   t          j        ddgddgg          }t          |          }t          ||z  t          j        d          d           t          |d          }t          ||d           t          |d	          }t          j        ||d          rJ t          |t          j        d          d	          }t          ||d           t          j        d
          t          j        d
          z   }t          |          }t          ||z  t          j        d
          d           t          j        d
           t          j        d
          z   }t          |          }t          ||z  t          j        d
          d           t          j        d
           t          j        d
          z   }d|d<   t          |          }t          ||z  t          j        d
          d           t          j        d
          t          j        d
          z                       t           j	                  }t          |          }t          ||z  t          j        d
          d           t          j        d
          dz  t          j        d
          z                       t           j	                  }t          |          }t          ||z  t          j        d
          d           t          j        d
           t          j        d
          z                       t           j	                  }t          |          }t          ||z  t          j        d
          d           t          j        d
           t          j        d
          z                       t           j	                  }d|d<   t          |          }t          ||z  t          j        d
          d           t          j
        ddgddggt           j	                  }t          |          }t          ||z  t          j        d          d           t          j
        ddgddggt           j	                  }t          |          }t          ||z  t          j        d          d           d S )Nr  r  r  rI   r  r  r  r  r  rF   rW   )r   rL   ro   rC        ?      r   rL   )r2   r  r   r   r   r  r   r   r|  r6   r   )r_   r`   r  r  r  ainv_slvr  s          r;   r  z"TestInv.test_pos_fails_sym_complex  s    J35NP26NPR S S 1vvq"&))%8888q5)))$U3333
 E***	;tYU;;;;;; BF1II666	8%8888 F1II

"!ffa7777 VAYYJ#!ffa7777 VAYYJ#%!ffa7777 VAYY#++BM::!ffa7777 VAYYt^bgajj(00??!ffa7777 fQiiZ"'!**$,,R];;!ffa7777 fQiiZ"'!**$,,R];;%!ffa7777 Hq$i$+2=AAA!ffa7777 Hr4j4*-R]CCC!ffa777777r=   sym_hermr  r  c                    t          j        d                              dd          }|r|d|z  z   }|dk    r||j        z   }n||j                                        z   }|t          j        d          z   }t           j                            |          }t          ||z  t          j        d          d           t          ||          }t          ||d           t          j	        d	t          j
        g |j        d
R  z
  dk    t           j        d	          }t          ||z  d|d          }t          ||d           t          ||j        z  d|d          }	t          |	|d           d S )NrM  rX   ro   r  r  r  r  r   rJ   rL   r   FrI  T)r2   r   r]   r@  rG  r   r  r   r   rJ  rK  r   rL  )
r_   rT  rZ  r`   rh   rV  b_inv1rP  b_inv2b_inv3s
             r;   test_sym_herzTestInv.test_sym_herm  sm    IaLL  A&& 	BqDAuACAAACHHJJAq		Mq!!
BF1IIE::::Q***U3333 xBF0AG0R0000A5rvqAAQtV%(%PPPU3333 QtvXEHDQQQU333333r=   c                    t          j        dt                                        dd          }||j        z   }|dt          j        d          z  z  }t          |d          }t          |d          }t          j        ||          rJ d S )Nr  r   r  rH  rZ  r  r  )r2   r   r   r]   r@  r   r   r  )r_   ri   rM  rN  y_inv_posdefs        r;   test_triangular_1zTestInv.test_triangular_1  s    Ib&&&..q!44G	Rq		\Q!3444 1u---;v|4444444r=   c                 *   t          j        dt                                        dd          }t	          t          j        |                    }t          |t          j        |          z  t          j        d          d           t	          |d          }t          |t          j        |          z  t          j        d          d           t          j        dt          j	        g |j
        d	R  z
  d
k    t           j        d          }t	          ||z  dd          }t          |t          j        |          z  t          j        d          d           t	          t          j        |                    }t          |t          j        |          z  t          j        d          d           t	          |d          }t          |t          j        |          z  t          j        d          d           t          j        dt          j	        g |j
        d	R  z
  d
k    t           j        d          }t	          ||j        z  dd          }t          |t          j        |          z  t          j        d          d           d S )Nr  r   r  r   r  rZ  r  rJ   rL   r   F)r{   r  rY  )r2   r   r   r]   r   r  r   r   rJ  rK  r   rL  rP  r@  )	r_   rM  	y_inv_0_u	y_inv_1_urP  	y_inv_2_u	y_inv_0_l	y_inv_1_l	y_inv_2_ls	            r;   test_triangular_2zTestInv.test_triangular_2  s   GBe$$$,,Q22

OO		BGAJJ.q		FFFF$6777		BGAJJ.q		FFFF xBF0AG0R0000A5rvqAA$U=OPPP		BGAJJ.q		FFFF 

OO		BGAJJ.q		FFFF$6777		BGAJJ.q		FFFF xBF0AG0R0000A5rvqAA$&u?QRRR		BGAJJ.q		FFFFFFr=   c           
         t          j        t          j        t          j        d                    t          j        t          j        dd                    g          }t          |          }t          |d         t          j        dt          j        dd          z            d           t          j        ddgddgg          }t          j
        t                    5  t          |d	           d d d            n# 1 swxY w Y   t          j        ddgddgg          }t          j        t                    5  t          |d	           d d d            d S # 1 swxY w Y   d S )
Nr  rJ   rF   r  r  r  r   rW  r  )r2   r  r  r   rt   r   r   r   r  r   rf  r"   r   r   )r_   r`   inv_as      r;   r  zTestInv.test_diagonal  s   Hbgbgfoo..	!Q0H0HIJJA 	a"'!bi1oo*=">">UKKKK Jq	Aq6*++\-(( 	( 	(J''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( JAA'((];'' 	( 	(J''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s$   "D  DD>EE!$E!N))r   r   r   r   r/  r  r1  r|   r   r   r   r   r   r2   r
   r   r   r   r  r'  float16r3   r5   r.  r  r1  r4  r  r  r  r  r?  rB  rF  rS  r  r  r_  rb  rj  r  r   r=   r;   r  r  *  s       < < <	3 	3 	3C C C
	3 	3 	3C C C
 [TC
GR\#RSS+ + TS+ 9 9 9: [RZG 8 8 8. . . [TC
GR\#RSS' ' TS' 
V 
V 
V T T T T T T T T T T T T   0  . . .4 4 4& [Z%77? ? 87?,N8 N8 N8` [Z%77[Z%884 4 98 87485 5 5G G G4( ( ( ( (r=   r  c                      e 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                 (   t          j        dgg          }t          |          }|j        j        dk    sJ t          j        |          sJ |dk    sJ t          j        dggggd          }t          |          }|j        j        dk    sJ |j        dk    sJ t          |dgg           t          j        dgggt           j                  }t          |          }|j        j        dk    sJ |j        d	k    sJ t          |dg           d S )
NrJ   rg  rB   r)  r   rr   y      ?      @r  )rJ   )	r2   r   r   r   r,  isscalarr   r   r   )r_   r`   detas      r;   test_1x1_all_singleton_dimsz#TestDet.test_1x1_all_singleton_dims  s    HqcUOO1vvz#%%%%{4     rzzzzHugYc***1vvz#%%%%zV####TSE7###Hyk]",7771vvz#%%%%zT!!!!TF8$$$$$r=   c                 :   t           j                            d          }|                    g dt           j                  }t	          |          }|j        j        dk    sJ |j        dk    sJ t          |t          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   *n`/ )rF   r  rJ   rJ   r   rg  rF   r  ro   r  )r2   r  r   r
   r   r   r,  r   r   squeezer   )r_   r!  r`   rr  s       r;   test_1by1_stacked_input_outputz&TestDet.test_1by1_stacked_input_output  s    i##$455JJ|||2:J661vvz#%%%%zV####bjmm,,,JJ|||2:J66r|C7H7HH1vvz#%%%%zV####bjmm,,,,,r=   r   rI   rC   )rX   rI   rC   rC   c                    t           j                            d          }|                    dd|          }t	          |          t           j                            |          }}t          ||           |                    dd|          dz  }||                    dd|          z  }t	          |          t           j                            |          }}t          ||           d S )Nru        rB   ra  ro   r  r   )r2   r  r   uniformr   r  r   )	r_   r   r!  r`   d1d2rh   d3d4s	            r;   #test_simple_det_shapes_real_complexz+TestDet.test_simple_det_shapes_real_complex  s    i##$455KKReK,,Qq))BBKKReK,,R/	S[[s[///Qq))BBr=   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)rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   )rJ   rL   rJ   rL   rJ   rL   rJ   rL   )rJ   rJ   rL   rL   rJ   rJ   rL   rL   )rJ   rL   rL   rJ   rJ   rL   rL   rJ   )rJ   rJ   rJ   rJ   rL   rL   rL   rL   )rJ   rL   rJ   rL   rL   rJ   rL   rJ   )rJ   rJ   rL   rL   rL   rL   rJ   rJ   )rJ   rL   rL   rJ   rL   rJ   rJ   rL   g      @r  r  rP   )r   r                 rX  )r   r         ?        r  )ro   rC  r   r   )r  ro   r   r   r   y      @        )r  r  rB   rP   rP   rP   rP   rP   )rB   rP   rP   rP   rP   rP   rP   rP   )rP   g      rP   g      rB   rP   rP   rP   )rP   rB   rP   rP   rP   rP   rP   rP   )rP   rP   rP   g      rP   g      rB   rP   )rP   rP   rP   rB   rP   rP   rP   rP   )rP   rP   rP   rP   rP   g       rP   g      ")rP   rP   rP   rP   rP   rB   rP   rP   ro   rN  )r2   r   r   r   r   r]   r   r~  s     r;   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#####r=   typc                     g | ]}|d v|	S )gGr   )r  ri   s     r;   r  zTestDet.<listcomp>  s(     %7 %7 %71() &'(5r=   AllNc                    t           j                            d          }d}|                    ||g                              |          }t	          t          |          t           j        t           j        z            sJ d S )Nru  rF   )r2   r  r   r|  
isinstancer   r4   r6   )r_   r  r!  r"  r`   s        r;   "test_sample_compatible_dtype_inputz*TestDet.test_sample_compatible_dtype_input  sm     i##$455JJ1v%%c**#a&&2:#=???????r=   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objectrc  r`   rh   rI   r      a   bVr     zdatetime64[s]ztimedelta64[s])zipr   	TypeErrorr   r2   r   )r_   msgcts       r;   test_incompatible_dtype_inputz%TestDet.test_incompatible_dtype_input  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   rB   )r   r   r   rX   r   r   rB   rB   rB   zLast 2 dimensionsrc  )r   r   rX   zat least two-dimensional)r   r   r2   r   r   r   r   r  s    r;   test_empty_edge_caseszTestDet.test_empty_edge_cases(  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r:   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   rI   r  r;  )rX   rJ   rJ   )r2   r   r   r   r   r   r   )r_   r:   r`   rg  s       r;   test_empty_dtypezTestDet.test_empty_dtype5  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Br=   c                 .   t          j        d                              dd                              t           j                  }|                                }t          |d          }t          |d           ||k                                    rJ d S )NrM  rX   Tr*   rP   )	r2   r   r]   r|  r
   r  r   r   rm  )r_   r`   acrr  s       r;   r'  zTestDet.test_overwrite_aA  s~    
 IaLL  A&&--bj99VVXX24(((b!!!G==??"""""r=   c                     t          j        g dg dg dg          }|                    d           t          t	          |d          d           d S )	N)rW   rP   rB   )      @r~   rz  r  F)writeTr  rV   )r2   r   setflagsr   r   r~  s     r;   test_readonly_arrayzTestDet.test_readonly_arrayL  s[    HlllMMM<<<@AA	


A4000#66666r=   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 )NrJ   rI   rX   zarray must not containrc  )r2   infr   r   r   r~  s     r;   test_simple_check_finitez TestDet.test_simple_check_finiteR  s    Va[!:-EFFF 	 	FFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA
A
)r   r   r   rs  rx  r   r   r   r  r  r2   	typecodesr  r  r  r   r   r
   r   r   r  r'  r  r  r   r=   r;   ro  ro    ss       % % %"- - - [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    r=   ro  c                     t          |           }|rt          |          }t          ||           }t          ||          }t          ||          S )N)r	   r   r   r   )r`   rh   cmplxata1b1s         r;   direct_lstsqr  X  sH    	1B r]]	RB	RBR==r=   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|            t          t          ||
          |dt          |j                  z  dt          |j                  z  d|            ˌЌՐd S )NrJ   rC   rE   rF   r   TF)rJ   r   r  r  )rT   rE   rF   lapack_driverr*   r0   r   rI   expected efficient rank 2, got r  driver: )r  r   err_msg)REAL_DTYPESr2   r   r  lapack_driversr  r   r   r   r   r<   r   )r_   r   r`   r  r  btr  rh   r  r  ri   r(  s               r;   test_simple_exactzTestLstsq.test_simple_exactd  sq     	L 	LE1b'C8,E:::A!*!9 L L!. L LI3 L L VVXXHRu555VVXX#B2?0909; ; ;  FFQ E! E EG G G'Aq		1-/)BH2E2E-E-/)BH2E2E-E0J=0J0JL L L L LLLL	L 	Lr=   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|            t          t          t          ||	          |z
  dz                                d
          |
dt          |j                  z  dt          |j                  z  d|            t          |	ddt          |j                  z  dt          |j                  z  d|            [bd S )NrJ   rI   rF   r  rX   r   r   r  r  r   r  r  axisr  r  r   r  r  )gm۶mۿgm۶m?)r  r2   r   r  r  r  r   sumr   r   r   r3  r<   r   )r_   r   r`   rh   r  r  r  r  r  ri   	residualsr(  s               r;   test_simple_overdetzTestLstsq.test_simple_overdet}  s     	H 	HE1a&1a&1a&1???A%000A!*!9 H H!. H HIBBBm,5,57 7 7C AA$//$&FAaL1+<$=$=		$'F	AAAF$Ia$I$IJJJ#CQQ(:$;$;$?$?Q$?$G$G$-)+i.A.A)A)+i.A.A)A,F},F,F	H H H H
 $A'M)+i.A.A)A)+i.A.A)A,F},F,FH H H H H'HH	H 	Hr=   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|            t          t          t          ||	          |z
  dz                                d
          |dt          |j                  z  dt          |j                  z  d|            t          |	ddt          |j                  z  dt          |j                  z  d|            ovd S )Nr  rI   rF   r  rX   r   )rJ   r   rX   r  r  r   r  rJ   r  r  r  r  r  )yu{޿E(B?yӽu{?(YJV?)COMPLEX_DTYPESr2   r   r  r  r  r   r   r  rG  r   r   r3  r<   r   )r_   r   r`   rh   r  r  r  r  r  ri   r  r  r(  s                r;   test_simple_overdet_complexz%TestLstsq.test_simple_overdet_complex  s   # 	D 	DE4)aVaV4EBBBAU333A!*!9 D D!. D DIBBBm,5,57 7 7C AA$//!%%((l$&F3+;$<$<		$'F	AAAF$Ia$I$IJJJ#CQQ(:$;$;$?$?Q$?$G$G$-)+i.A.A)A)+i.A.A)A,F},F,F	H H H H
 $ ! $L%')BH*=*=%=%')BH*=*=%=(B=(B(BD D D D D+DD	D 	Dr=   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	|
            t          |	d
dt          |j
                  z  dt          |j
                  z  d|            d S )Nr   r  r   rJ   rI   r  r  r   r  )gqqgqq?gdq?r  r  r  )r  r2   r   r  r  r  r   r   r   r<   r   )r_   r   r`   rh   r  r  r  r  r  ri   r(  s              r;   test_simple_underdetzTestLstsq.test_simple_underdet  sK     	H 	HE)))YYY/u===A!Qu---A!*!9 H H!. H HIBBBm,5,57 7 7C AAAAAF$Ia$I$IJJJ#A (;)+i.A.A)A)+i.A.A)A,F},F,F	H H H H HHH	H 	Hr=   r   r"  )rC   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|            t          t          ||          |dt          |	j                  z  dt          |	j                  z  d|            Cd S )Nr  r   rC   r+  rF   rX   r  r   rI   expected efficient rank , got i  r  r    )r2   r  RandomStater  r-  r  r   r   r
   r   r   r<   r   r_   r   r"  r  r  r!  r`   r'  rh   r  r  r  ri   r(  s                 r;   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"<]"<"<	> > > > >)	> 	>r=   z$may segfault on Alpine, see gh-17630ry  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|            t          t          ||          |dt          |	j                  z  dt          |	j                  z  d|            Cd S )Nr  ro   r   rC   r+  rI   rX   r  r   r  r  i  r  r  r  )r2   r  r  r  r-  r  r   r   r   r   r   r<   r   r  s                 r;   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"<]"<"<	> > > > >'	> 	>r=   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|            KRfmd S )Nr  )rC      )r  rI   r  r   rC   r+  rF   rX   r  r   rI   r  r  r  r  r  r  )r2   r  r  r  r  r  r  r-  r  r   r   r   r  r<   r   r_   r!  r   r"  mr  r  r`   r'  rh   r  r  r  ri   r(  s                  r;   test_random_overdetzTestLstsq.test_random_overdet  s   i##D))  	N 	NE. N NA%.%= N NM%2 N N	Jszz1a&'9'9GGG!&q ; ;A&(C!AqD'M&:AadGG!&q N N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/G2L]2L2L	N N N N NN	NNN	N 	Nr=   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|            fmd S )Nr  r  r  ro   r   rC   r+  rI   rX   r  r   r  r  rJ   r  r  r  r  )r2   r  r  r  r  r  r  r-  r  r   r   r   r  r<   r   r  s                  r;   test_random_complex_overdetz%TestLstsq.test_random_complex_overdet6  s&   i##D))# 	J 	JE. J JA%.%= J JM%2 J J	Jszz1a&'9'9Bszz1a&?Q?Q<Q'Q-24 4 4!&q ; ;A&(C!AqD'M&:AadGG!&q J J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.H.H.H	J J J J JJJJJ	J 	Jr=   c           
         t          j                    5  t          j        ddt                     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
|            t          t!          ||          |dt#          |j                  z  dt#          |j                  z  d|            d S )Nrl  zIinternal gelsd driver lwork query error,.*Falling back to 'gelss' driver.))rJ   rC   r  r  r  r   )r  r{   r*   r0   r   rI   r  r  r  r  )warningscatch_warningsfilterwarningsRuntimeWarningr2   r   	itertoolsproductr  r  r  r|  r  r   r   r   r   r<   r   )r_   r  r   r  r  r  r{   r`   rh   r  r  r  ri   r(  s                 r;   r|   zTestLstsq.test_check_finiteT  s   $&& 	W 	W#H%FGUW W W	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W X)**kL'6++	- -	@ 	@=E2}i 		%  A5)))A BBBm%1y$-/ / /C AAAAAFAaAABBBC1IIq!#i&8&8!8!#i&8&8!8$>}$>$>@ @ @ @ @'	@ 	@s   <A A 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   rI   r   ))r   rF   r  )rF   r   )rF   )r  r  rJ   r   r   r  rI   zexpected rank 0)	r2   r   r   r   r   r   r  r   r   )	r_   a_shapeb_shaperh   ri   residuesranksresidues_should_bes	            r;   r   zTestLstsq.test_emptyt  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++++	, 	,r=   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  )r2   r   r   rb  r   r   r   )
r_   r  r   r`   rh   ri   r  r  r  r  s
             r;   r  zTestLstsq.test_empty_dtype  s     HV4(((HQd###$Q{{8T1v{{{{BF1D111271D3I3I3IJJ1MSw+%%%%%%r=   N)r   r   r   r  r  r  r  r  r   r   r   r  r  r  r&   r  r  r  r  r|   r   r   r   r2   r
   r   r   r  r   r=   r;   r  r  a  sA       6NL L L2H H H:D D DBH H H, [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
>@N N N8J J J<@ @ @@, , , [Vc5"*gr|%TUU[Vc5"*gr|%TUU& & VU VU& & &r=   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j        eej        g          d
             ZdS )TestPinvc                     t          g dg dg dgt                    }t          |          }t          t	          ||          t          j        d                     d S Nr   r  r  r   rX   r   r   r   r   r   r2   r   r_   r`   a_pinvs      r;   test_simple_realzTestPinv.test_simple_real  sX    999iii4EBBBa!#a.."&))<<<<<r=   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   ro   )rL  r  rM   )rG   r  rF   )rX   rI   rJ   rX   r  r  s      r;   r  zTestPinv.test_simple_complex  s    IIIyyy***5  


IIIyyy'I-2"4 "4 "4 44 a!#a.."&))<<<<<r=   c                     t          g dg dg dgt                    }t          |          }t          g dg dg dg          }t          ||           d S )Nr   r  rM   r  rM  r   g|qgԕVUUſgc8?gqg^0<gq?g9?gԕVUU?g:87ȿr   r   r   r   r_   r`   r  r   s       r;   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3r=   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̿r  r  s       r;   test_simple_colszTestPinv.test_simple_cols  so    999iii(666a;
3&
3%{35 6 6 	"&(33333r=   c                     t          ddgddgddggt                    }t          |          }t          g dg d	g          }t          ||           d S )
NrJ   rI   rX   rF   r  rG   r   )gDpTUUgQUUտgvWUU?)gDpTUU?gQUU?g&>ڿr  r  s       r;   test_simple_rowszTestPinv.test_simple_rows  sq    Aq6Aq6Aq6*%888a@@@???A B B!&(33333r=   c                     t          g dg dg dg          }t          |d          }t          t          ||          t	          j        d                     d S )Nr   )rF   r  r   r  Frz   rX   )r   r   r   r   r2   r   r  s      r;   r|   zTestPinv.test_check_finite  sZ    999jjj***566ae,,,!#a.."&))<<<<<r=   c                     g dg dg dg}t          |          }t          g dg dg dg          }t          ||           d S )Nr   r  r   r  r  r  )r   r   r   r  s       r;   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3r=   c                 8   t           j                            d          }d}t          |                    ||f                    \  }}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 )Nr  rs  g     A@rM   r  gMbP?r   h㈵>g?rP   r  gMb@?r  r7  g;O@{Gz?r   )r2   r  r   r!   r   r]   r  r   r   r  r   )r_   r!  r"  q_a_mr`   r  r   a_padiff1adiff2s               r;   test_atol_rtolzTestPinv.test_atol_rtol  s   i##D))#**aV$$%%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Ar=   r:   c                     t          j        d|          }t          |          }|j        dk    sJ |j        t          t          j        d|                    j        k    sJ d S r  )r2   r   r   rb  r   r   r_   r:   r`   r  s       r;   r   zTestPinv.test_empty  sg    HV2&&&a{a|tBF1B$7$7$788>>>>>>>r=   N)r   r   r   r  r  r  r  r
  r|   r  r  r   r   r   r   r2   r
   r   r   r   r   r=   r;   r  r    s        = = =
= = =4 4 44 4 44 4 4= = =
4 4 4B B B8 [TE2:w#MNN? ? ON? ? ?r=   r  c                       e 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                     t          g dg dg dgt                    }t          j        ||j                  }t          |          }t          t          j        ||          t          j        d                     d S r  )r   r   r2   r   r@  r   r   r   r  s      r;   r  z"TestPinvSymmetric.test_simple_real  sm    999iii4EBBBF1acNNq!"&F"3"3RVAYY?????r=   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  r   r   r   rL   )
r   r   r2   r   r@  r  svdr   r   r   )r_   r`   rc   r  vtr  a_pinvhs          r;   test_nonpositivez"TestPinvSymmetric.test_nonpositive  s    999iii35AAAF1acNN9==##1b	!
F1q5"a((!&'22222r=   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 r  )	r   r   r2   r   rG  r@  r   r   r   r  s      r;   r  z%TestPinvSymmetric.test_simple_complex  s    IIIyyy***5  


IIIyyy'I-2"4 "4 "4 44 F1affhhj!!q!"&F"3"3RVAYY?????r=   c                 $   t          g dg dg dgt                    }t          j        ||j                  }t          |                                          }t          t          j        ||          t          j        d                     d S r  )	r   r   r2   r   r@  r   tolistr   r   r  s      r;   r  z+TestPinvSymmetric.test_native_list_argument  sw    999iii4EBBBF1acNNqxxzz""!"&F"3"3RVAYY?????r=   c                     t          j        g dg dg dg          }t          |          }t          ||z  |z  |d           t          ||z  |z  |d           d S )N)rJ   rL   r   )rL   rI   rL   )r   rL   rJ   r   r  )r2   r   r   r   )r_   r`   ps      r;   test_zero_eigenvaluez&TestPinvSymmetric.test_zero_eigenvalue	  sq     Hjjj+++zzz:;;!HHA	151111A	15111111r=   c                    t           j                            d          }d}t          |                    ||f                    \  }}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 )Nr  rs  )rF   rX   rI   rJ   vk?gﭣ>gu>rG   )rF   rX   rI   rJ   r)  rP   rP   r  g1?r  r+  r   r  gdy=r  -C6?)	r2   r  r   r!   rt   r@  r   r   r   )r_   r!  r"  r  r  r`   r  r  r   r  r  r  s               r;   r  z TestPinvSymmetric.test_atol_rtol
	  s   i##D))#**aV$$%%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5r=   r:   c                     t          j        d|          }t          |          }|j        dk    sJ |j        t          t          j        d|                    j        k    sJ d S r  )r2   r   r   rb  r   r   r   r  s       r;   r   zTestPinvSymmetric.test_empty&	  sg    HV2&&&q{a|tBF1B$7$7$788>>>>>>>r=   N)r   r   r   r  r!  r  r  r'  r  r   r   r   r   r2   r
   r   r   r   r   r=   r;   r  r    s        @ @ @3 3 3@ @ @@ @ @2 2 26 6 68 [TE2:w#MNN? ? ON? ? ?r=   r  scale)rA  rB   r  pinv_c                     t          j        ddgddgg          | z  }t          j        dt          j        |          z            } ||          }t          ||           d S )NrJ   r   g|=rB   )r2   r   rt   r   )r,  r-  ri   r   x_invs        r;   test_auto_rcondr0  .	  sc     	1a&1e*%&&.AwrBGAJJ''HE!HHEE8$$$$$r=   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   r   rC   rN   r   rI   Complex)ro   rl   y              @)
r2   r  r   maxr7   r8   realr   r   sqrt)r_   r   ri   r  s       r;   
test_typeszTestVectorNorms.test_types9	  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#>>>>>		? 	?r=   c                 n    t          dgt                    }t          t          |          |           d S )Nr  r   )r   r
   r   r   r~  s     r;   test_overflowzTestVectorNorms.test_overflowF	  s4     4&(((DGGQ'''''r=   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     @rJ   i'  r   r   r  r  zO: Result should equal either 0.0 or 0.5 (depending on implementation of snrm2).rP   )r  )r   r
   r   r   AssertionErrorr   )r_   r`   r  s      r;   test_stablezTestVectorNorms.test_stableL	  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)rJ   r   rX   r   rI   r   rX   )r   r   r  s    r;   test_zero_normzTestVectorNorms.test_zero_normY	  sD    T)))Q''+++T)))Q''+++++r=   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 )
NrI   rJ   rX   rF   rg  r  5D+@6f~@r  )r2   r   r   r   r~  s     r;   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;;;;;r=   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 )NrI   rJ   rX   rF   rg  T)r  keepdimsrC  rD  )rI   rJ   rI   r~   g      @)r2   r   r   r   r   r   rT  s      r;   test_keepdims_kwdz!TestVectorNorms.test_keepdims_kwdb	  s    H1v1v&'!+S11T***j*567!;<<<9$%%%QD999bTB4L>A;MNNNNNr=   z64-bit BLAS requiredry  c                     t          d           t          j        dgt          j                  }d|d<   t	          |          }~t          |d           d S )NihB  )free_mbl        r   rJ   rL   rB   )r%   r2   r   r4   r   r   )r_   ri   r  s      r;   test_large_vectorz!TestVectorNorms.test_large_vectori	  sX    %((((HeWBJ///"1ggS!!!!!r=   N)r   r   r   r9  r;  r?  rA  rE  rH  r   r   r  r'   rK  r   r=   r;   r2  r2  7	  s        ? ? ?( ( (A A A, , ,< < <
O O O [I.DEE" " FE" " "r=   r2  c                   &    e Zd Zd Zd Zd Zd ZdS )TestMatrixNormsc           
      <   t           j                            d          }dD ]x\  }}t           j        t           j        t           j        t           j        t           j        fD ]7}d|                    ||f          	                    |          z  }t          j
        |j        t           j                  r*|d|                    ||f          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#          ||	           9zd S )Nr  )rr   )rJ   rX   )rX   rJ   r  rv  )r  rF   rL  y              $@frorJ   rL   rI   r  )ord)r2   r  r   r
   r4   r   r6   int64r  r|  r  r   r  r  r   r  r  r   )
r_   r!  r"  r  r  r#  t_highr  actualdesireds
             r;   test_matrix_normsz!TestMatrixNorms.test_matrix_normsu	  so   i##D))B 	9 	9DAqZR\2="(R 9 9,,aV44;;A>>>="*<== (s22Aq6::::A]FFZF"E1b!R"&I 9 9E!!///F innQEn::G ;vw77 9"$)..&1A1Au."M"M'88899	9 	9r=   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 )
NrI   rJ   rX   rF   rg  r  )rP  r  r   r  )r2   r   r   r  swapaxesr   r   r   )r_   r`   rh   r  rg  s        r;   rE  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----.....r=   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   rg  r   rI   rX   rF   r  r  T)rP  r  rG  rJ   r  )r2   r   r]   r   r  r   r   r   )r_   r`   rh   r  s       r;   rH  z!TestMatrixNorms.test_keepdims_kwd	  s    Ic%%%--aAq99Vd;;;666117"#####r=   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   rP   r   r  r   T)rG  rr   )r   rX   r;  )r2   r   r   r   r   r~  s     r;   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Ar=   N)r   r   r   rU  rE  rH  r   r   r=   r;   rM  rM  s	  sU        9 9 9(/ / /"$ $ $	B 	B 	B 	B 	Br=   rM  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 Nr  r;  )r$   r   r  s    r;   
test_solvezTestOverwrite.test_solve	      EFD>22222r=   c                 4    t          t          ddg           d S r^  )r$   r   r  s    r;   test_solve_triangularz#TestOverwrite.test_solve_triangular	  s    ,vtn=====r=   c                 ,    t          d ddg           d S )Nc                 $    t          d| |          S )NrT   )r   )ra   rh   s     r;   <lambda>z1TestOverwrite.test_solve_banded.<locals>.<lambda>	  s    ,vr1*E*E r=   )rF   rG   rG   r#   r  s    r;   test_solve_bandedzTestOverwrite.test_solve_banded	  s+    EE#TN	, 	, 	, 	, 	,r=   c                 4    t          t          ddg           d S )Nr  rf  )r$   r   r  s    r;   test_solveh_bandedz TestOverwrite.test_solveh_banded	  s    MFD>:::::r=   c                 2    t          t          dg           d S Nr  )r$   r   r  s    r;   test_invzTestOverwrite.test_inv	      C&*****r=   c                 2    t          t          dg           d S rk  )r$   r   r  s    r;   test_detzTestOverwrite.test_det	  rm  r=   c                 4    t          t          ddg           d S )N)rX   rI   r;  )r$   r   r  s    r;   
test_lstsqzTestOverwrite.test_lstsq	  r`  r=   c                 2    t          t          dg           d S rk  )r$   r   r  s    r;   	test_pinvzTestOverwrite.test_pinv	  s    D6(+++++r=   c                 2    t          t          dg           d S rk  )r$   r   r  s    r;   
test_pinvhzTestOverwrite.test_pinvh	  s    EF8,,,,,r=   N)r   r   r   r_  rb  rg  ri  rl  ro  rq  rs  ru  r   r=   r;   r\  r\  	  s        3 3 3> > >, , ,; ; ;+ + ++ + +3 3 3, , ,- - - - -r=   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)rJ   rI   rX   r  )rJ   rL   rJ   r   )r2   r   r   r   r   r   r_   r  rh   ri   rM  s        r;   test_basic1zTestSolveCirculant.test_basic1	  sb    H\\\""H]]]##Aq!!)A,,""1r=   c                     t          j        g d          }t          j        d                              dd          }t	          ||          }t          t          |          |          }t          ||           d S )NrJ   rI   r  rs  rF   rX   r2   r   r   r]   r   r   r   r   rz  s        r;   test_basic2zTestSolveCirculant.test_basic2	  sl    H^^^$$IbMM!!!Q''Aq!!)A,,""1r=   c                 V   t          j        g d          }t          j        d                              ddd          }t	          ||          }t          t          |          |                    dd                                        |j                  }t          ||           d S )Nr}  r  rF   rX   rI   rL   )	r2   r   r   r]   r   r   r   r   r   rz  s        r;   test_basic3zTestSolveCirculant.test_basic3	  s    H^^^$$IbMM!!!Q**Aq!!)A,,		!R 0 01199!'BB1r=   c                    t          j        g d          }t          j        d                              dd          dz   }t	          ||          }t          t          |          |          }t          ||           d S )N)r  r~  r   r  r  rF   rI   y              ?r  rz  s        r;   rp   zTestSolveCirculant.test_complex	  st    H&&&''IaLL  A&&-Aq!!)A,,""1r=   c                    t           j                            d          }|                    d          }|                    d          }t	          ||          }t          t          |          |          }t          ||           d S )Ni1  r`  )r2   r  r  r  r   r   r   r   )r_   r!  r  rh   ri   rM  s         r;   test_random_b_and_cz&TestSolveCirculant.test_random_b_and_c	  sw    i##E**####Aq!!)A,,""1r=   c                    t          j        g d          }t          j        g d          }t          ||d          }t          t	          |          |          \  }}}}t          ||           t          t          t          ||           d S )NrJ   rJ   r   r   )rJ   rI   rX   rF   r   )rk  )r2   r   r   r   r   r   r   r   )r_   r  rh   ri   rM  r  rnkr  s           r;   r?  z TestSolveCirculant.test_singular	  s    H\\\""H\\\""Aq7333y||Q//3Q1k?Aq99999r=   c                 V   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)rL   g      @rX   g      @)rJ   rG   rG   g      @)r   r   rJ   rJ   r  )rJ   rL   r   r   rJ   )baxis)rF   rI   rX   r   rL   )r  outaxis)rI   rX   rF   rI   )caxis)r2   r   r   r   r   
empty_liker   r   r<  r@  r   moveaxisrW  )r_   r  rh   ri   r   s        r;   test_axis_argsz!TestSolveCirculant.test_axis_args	  s    H((()NNN+;<== HlllLLL---@AAAq***QWi(((=##!)AaDJJLL"9"913??Aqqq!)AaDJJLL"9"913??Aqqq8$$$Aq2666QWi(((Ar1--x888 BK1a00!#Q???QWi(((8$$$$$r=   c                     g d}g d}t          ||          }t          t          |          |          }t          ||           d S ry  )r   r   r   r   rz  s        r;   r   z-TestSolveCirculant.test_native_list_arguments
  sN    LLMMAq!!)A,,""1r=   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   rX   r   )r2   r   r   r   r   r   r   r   )r_   r  r   r  rh   ri   x1s          r;   r   zTestSolveCirculant.test_empty
  s     HRt$$$HRt$$$Aq!!w$w/")AT*B*B*B*,'!4*@*@*@B BBGH H H H HV4(((Q""x6!!!!x17""""""r=   N)r   r   r   r{  r  r  rp   r  r?  r  r   r   r   r   r   r   r2   r
   r   r   r   r   r=   r;   rw  rw  	  s                  : : :% % %2   [Vc5"*gr|%TUU[Vc5"*gr|%TUU# # VU VU# # #r=   rw  c                       e Zd Ze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)r   r   r    r  s    r;   test_string_argz"TestMatrix_Balance.test_string_arg0
  s    j.2HIIIIIr=   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 )NrJ   rI   rX   )r   r   r    r2   r   r  rL  r  s    r;   test_infnan_argz"TestMatrix_Balance.test_infnan_arg4
  sp    j.hABF455	7 	7 	7j.hABF455	7 	7 	7 	7 	7r=   c           	          t          t          j        ddgddgg                    \  }}t          t          j        t          j        t          j        |                              dg           d S )Nr  rJ   r   r  )r    r2   r   r   difflog2rt   )r_   r  rM  s      r;   test_scalingzTestMatrix_Balance.test_scaling:
  s`    bhq	D!9'=>>??1 	

 3 344qc:::::r=   c                     t          j        g dg dg dg          }t          |          \  }}t          t	          ||                              |          |           d S )N)rJ   r   r*  )rJ   rJ   r  )r=  g      Y@rJ   )r2   r   r    r   r   r   )r_   r#  ri   rM  s       r;   test_scaling_orderz%TestMatrix_Balance.test_scaling_orderA
  s_    HlllLLL---@AAa  1a**A.....r=   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  rJ   r   separater  rI   )r    r2   r   r   r  r  r   r   )r_   r  rM  zs       r;   test_separatez TestMatrix_Balance.test_separateF
  s|    "28dAYq	,B#C#C,-/ / /	6AqRWRWQZZ((1#...29Q<<(((((r=   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 )Nr  r  rJ   r  )r   rJ   rG   r  rF   rX   rI   )r   r2   r   rP  r    r   	ones_liker   )r_   r#  ri   rM  r  s        r;   test_permutationz#TestMatrix_Balance.test_permutationL
  s    rwv(@(@wv( ("1q111	6Aq2<??+++28$9$9$9::;;;;;r=   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)rP   rP   rP   rP   >)rP   rP   rP   rP   rP   )rW   rW   rP   rP   rP   )rP   rP   r  rP   rP   )r  rP   rP   rP   )rP   rz  rP   rP   )rB   rP   r  rP   )rP   rB   rP   rz  )r  rP   rB   rP   )rz  rz         rB   )r  r  r  rP   )rz  r  rB   rz  rJ   r  r   )
r2   r   r    r  r   r   r   rt   r   r   )r_   casesr#  ri   rM  r  r&  ips           r;   test_perm_and_scalingz(TestMatrix_Balance.test_perm_and_scalingS
  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 	3r=   r:   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   rI   Tr  )r2   r   r    rb  r   r   )r_   r:   r`   rh   r  b_nt_nr,  permscale_nperm_ns              r;   r   zTestMatrix_Balance.test_emptyo
  s8   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\))))))r=   N)r   r   r   r(   r  r  r  r  r  r  r  r   r   r   r   r   r2   r
   r   r   r   r   r=   r;   r  r  /
  s        J J J7 7 7; ; ;/ / /
) ) )< < <3 3 38 [TC
GR\#RSS* * TS* * *r=   r  c                      e Zd ZdZd Zd Zej                            de	j
        d                   d             Zej                            de	j
        d                   d             Zej                            d          ej                            d	e	j
        d                   ej                            d
e	j
        d                   d                                     ZdS )
TestDTypesz7Check backwards compatibility for dtypes vs scipy 1.16.c                     |dk    rt          j        dd          S |dk    rt          j        ddgdd	ggd          S t          j        d|          S )
NMrI   datetime64[ms]r   r  r  r     c   d)r2   r   r  r_   tcodes     r;   	get_arr2DzTestDTypes.get_arr2D
  sa    C<<6!#34444c\\:d|dD\:#FFFF6!5))))r=   c                     |dk    rt          j        dd          S |dk    rt          j        ddgd          S t          j        d|          S )Nr  rI   r  r   r  r  r  )r2   r   r  r  s     r;   	get_arr1DzTestDTypes.get_arr1D
  sX    C<<71$45555c\\:tTl#666671E****r=   r  r  c                     |                      |          }|dv rCt          j        t                    5  t	          |           d d d            d S # 1 swxY w Y   d S t	          |           d S )NSUVO)r  r   r   r   r   )r_   r  r`   s      r;   rl  zTestDTypes.test_inv
  s     NN5!!F??z**  A                  FFFFFs   AAAc                 @   |                      |          }t          j                    dk    }t          j        dk    }d}|s|s|dz  }||v rCt          j        t                    5  t          |           d d d            d S # 1 swxY w Y   d S t          |           d S )Narm64ntSUVOmMr  )	r  platformmachineosnamer   r   r  r   )r_   r  r`   is_arm
is_windowsfailing_tcodess         r;   ro  zTestDTypes.test_det
  s    NN5!!!##w.W_
! 	#* 	#d"NN""y))  A                  FFFFFs   %BB	Bzignore:Casting complex valuestcode_atcode_bc                    |                      |          }|                     |          }d}	 t          j        ||           n# t          $ r d}Y nw xY w|sDt          j        t                    5  t          ||           d d d            d S # 1 swxY w Y   d S |dv s|dv rDt          j        t                    5  t          ||           d d d            d S # 1 swxY w Y   d S t          ||           d S )NTFr  VO)	r  r  r2   result_typer  r   r   r   r   )r_   r  r  r`   rh   can_combines         r;   r_  zTestDTypes.test_solve
  s    NN7##NN7##	 N7G,,,, 	  	  	 KKK	   	y))  a                 'T//z**  a                  !QKKKKKs5   A AA1BBB=CC"CN)r   r   r   __doc__r  r  r   r   r   r2   r  rl  ro  r  r_  r   r=   r;   r  r  
  s       AA* * *+ + + [Wbl5&9::	 	 ;:	 [Wbl5&9::  ;:$ [ ?@@[YU(;<<[YU(;<<  =< =< A@  r=   r  r   )Qr  r  r  r  numpyr2   r   r   r   r   r   r   r	   r
   numpy.testingr   r   r   r   r   r   r   r   r   scipy.linalgr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   scipy.linalg._testutilsr$   scipy._lib._testutilsr%   r&   scipy.linalg.blasr'   scipy.conftestr(   r4   r3   r  r   r6   r5   r  DTYPESr   r   r  r  r<   r?   r   r   r  r  ro  r  r  r  r  r0  r2  rM  r\  rw  r  r  r   r=   r;   <module>r     s%   				                             / / / / / / / / / / / / / / / /  * * * * * *= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
 8 7 7 7 7 7 < < < < < < < < ' ' ' ' ' ' . . . . . .z2:r}5,r~>	~	% #K33mT*]E,BBG!!! 4    %k55t,}e.DbI!!! 6     cV cV cV cV cV cV cV cVLIV IV IV IV IV IV IV IVX
n
0 n
0 n
0 n
0 n
0 n
0 n
0 n
0bOJ OJ OJ OJ OJ OJ OJ OJdT( T( T( T( T( T( T( T(nT T T T T T T Tn   j& j& j& j& j& j& j& j&Z	R? R? R? R? R? R? R? R?jH? H? H? H? H? H? H? H?V "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T* T* T* T* T* T* T* T*nI I I I I I I I I Ir=   