
    ,|h1                    T   d Z ddlZddlZddlZ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 ddlmZmZmZmZ ddlmZ ddlmZmZmZmZmZ 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+ 	 ddl,Zd
 Z.e&Z/ddZ&d Z0d Z1d Z2h dZ3 G d d      Z4d Z5e	jl                  jo                  d       g Z8e8 e5d e4d e
ddgddgge       e
ddge             e4d e
ddgddgge       e
ddge             e4d e
ddgddgge       e
g dg dge             e4d e
d d!gd"d#gge       e
d$d ge             e4d% e
d d!gd"d#gge       e
d$d ge             e4d& e
d d!gd"d#gge       e
g d'g d(ge             e4d) e	jr                  d*e       e	jr                  d+e      d,h-       e4d.e	jl                  ju                  d/d/      e	jl                  ju                  d/             e4d0e	jl                  ju                  d1d1      e	jl                  ju                  d1             e4d2d1d3gd4d5ggd3d1g      g
      z  Z8e8 e5d6 e4d7 e
g d8g dge       e
ddge             e4d9 e
ddgddgd:d;gge       e
g d<e             e4d= e
g d8g dge       e
ddge             e4d> e
ddgddgd:d;gge       e
g d<e             e4d? e
g d@g dAge       e
d$d ge             e4dB e
dCdDgdEdFgdGdHgge       e
g dIe             e4dJ e
g d@g dAge       e
d$d ge             e4dK e
dCdDgdEdFgdGdHgge       e
g dIe             e4dL e
g d@g dAge       e
d$d gdMdNgge             e4dO e
dCdDgdEdFgdGdHgge       e
d$d gdMdNgdMdNgge             e4dPe	jl                  ju                  d/dQ      e	jl                  ju                  d/             e4dRe	jl                  ju                  d1dS      e	jl                  ju                  d1             e4dTe	jl                  ju                  dSd1      e	jl                  ju                  dS             e4dUe	jl                  ju                  dd5      e	jl                  ju                  d      d,h-       e4dVe	jl                  ju                  d5d      e	jl                  ju                  d5      d,h-      g      z  Z8e8 e5dW e4dX e
ddgddgge      d       e4dY e
ddgddgge      d       e4dZ e
dd!gd[d1gge      d       e4d\ e
dd!gd[d1gge      d       e4d] e	jr                  d*e      dd,h-       e4d^d1d3gd3d1ggd       e4d_ e
ddgddgg      d       e4d`e	jl                  ju                  d1d1      d      g      z  Z8da Z;e8 e;       z  Z8db Z<dc Z=e8 e=       z  Z8 G dd de      Z> G df dge>      Z? G dh die>      Z@ G dj dke>      ZA G dl dme>      ZB G dn doe>      ZC G dp dqe>      ZDdr ZEds ZF G dt due?eB      ZG G dv dweG      ZH G dx dye?eB      ZI G dz d{eI      ZJ G d| d}e?eB      ZK G d~ deK      ZL G d de?eB      ZM G d deM      ZN G d d      ZO G d de?eB      ZP G d dePeO      ZQ G d deAeD      ZR G d deReO      ZS G d de?eB      ZT G d deT      ZU G d de?e@eBeC      ZV G d deV      ZW G d deAeD      ZX G d deX      ZY G d de?eB      ZZ G d deZ      Z[ G d de?e@      Z\ G d de\      Z]ej                  j                  ddD  cg c]  }  e	j                  |        c}        G d d             Za G d deAeD      Zb G d d      Zc G d deAeD      Zd G d d      Ze G d d      Zf G d def      Zg G d def      Zh G d deheg      Zi G d d      Zj G d def      Zk G d def      Zl G d def      Zm G d deiek      Zn G d deiel      Zo G d deiem      Zp G dĄ dū      ZqdƄ Zr G dǄ dȫ      Zs G dɄ dʫ      Ztd˄ Zuej                  j                  e+d̬ͫ      d΄        Zwdτ Zxej                  j                  e+dЬͫ      ej                  j                  dф               Zz G d҄ dӫ      Z{ G dԄ dի      Z| G dք d׫      Z}d؄ Z~ej                  j                  d٬ͫ      dڄ        Zej                  j                  e* d۬ͫ      d܄        Zy# e-$ r Y w xY wc c} w )z# Test functions for linalg module

    N)arraysingledoublecsinglecdoubledotidentitymatmul)swapaxes)multiply
atleast_2dinfasarray)linalg)matrix_powernormmatrix_rank	multi_dotLinAlgError)_multi_dot_matrix_chain_order)
assert_assert_equalassert_raisesassert_array_equalassert_almost_equalassert_allclosesuppress_warningsassert_raises_regexHAS_LAPACK64IS_WASMc                     t        |       t        |t        j                        rt        |      u S t        j                  u S N)type
isinstancenpndarray)outin_s     ]/var/www/html/test/engine/venv/lib/python3.12/site-packages/numpy/linalg/tests/test_linalg.pyconsistent_subclassr*   !   s9     9jbjj&Ac * * jj* *    c                     t        |       j                  j                  t        t        fv r|}n|}t        | |fd|i| y )Ndecimal)r   dtyper#   r   r   old_assert_almost_equal)absingle_decimaldouble_decimalkwr-   s         r)   r   r   +   s=    qz 11  Aq8'8R8r+   c                 \    t         t         t        t        t        t         t        t        i|    S r"   )r   r   r   r   r.   s    r)   get_real_dtyper7   3   s&    FFFVWf..35 5r+   c                 \    t         t        t        t        t        t        t        t        i|    S r"   )r   r   r   r   r6   s    r)   get_complex_dtyper9   8   s&    GVWWgw0057 7r+   c                 "    | t         t        fv ryy)Ngh㈵>gdy=)r   r   r6   s    r)   get_rtolr;   =   s    !!r+   >   squarestrided	hermitian	nonsquaregeneralizedsize-0c                   ,    e Zd Z e       fdZd Zd Zy)
LinalgCasec                     t        t        |t                     || _        || _        || _        t        |      | _        y)z
        A bundle of arguments to be passed to a test case, with an identifying
        name, the operands a and b, and a set of tags to filter the tests
        N)r   r$   strnamer0   r1   	frozensettags)selfrF   r0   r1   rH   s        r)   __init__zLinalgCase.__init__M   s3    
 	
4%&	dO	r+   c                 V     || j                   | j                  | j                         y)zN
        Run the function `do` on this test case, expanding arguments
        rH   N)r0   r1   rH   )rI   dos     r)   checkzLinalgCase.checkX   s     	466466		*r+   c                 "    d| j                    dS )Nz<LinalgCase: >)rF   rI   s    r)   __repr__zLinalgCase.__repr__^   s    tyyk++r+   N)__name__
__module____qualname__setrJ   rN   rR    r+   r)   rC   rC   L   s    (+ 	$+,r+   rC   c                 \    | t         v sJ d       |D ]  }|j                  | hz  |_         |S )z^
    Add the given tag (a string) to each of the cases (a list of LinalgCase
    objects)
    zInvalid tag)all_tagsrH   )tagcasescases      r)   	apply_tagr]   b   s;    
 (?)M)? &II%	&Lr+     r<   r         ?       @      @      @r6   r   double_2)r`   r_   rb   )ra   rb         @r         ?       @y       @      @y      @      @y      @      @       @      ?r   	cdouble_2)rf   re   y      ?      @)y      ?       y      ?      y      ?      0x0r   r   r   rA   rL   8x8   1x1   nonarray         r?   single_nsq_1)r_   r`   ra   single_nsq_2g      @rd   )r`   r_   ra   double_nsq_1double_nsq_2csingle_nsq_1)      ?      ?       @       @      @      )y      @      y      @      "@y      @       @csingle_nsq_2rx   ry   rz   y      @      "y      @      y      @       @)rf   re   rz   cdouble_nsq_1cdouble_nsq_2cdouble_nsq_1_2y      ?      y       @       cdouble_nsq_2_28x11   1x5   5x10x44x0r>   hsinglehdoublehcsingley       @      hcdoublehempty	hnonarraymatrix_b_onlyhmatrix_1x1c                     g } t         D ]  }t        |j                  t        j                        s)t        j
                  |j                  d|j                  z  d|j                  z  g      }|j                  d }n<t        j
                  |j                  d|j                  z  d|j                  z  g      }t        |j                  dz   |||j                  dhz        }| j                  |       t        j
                  |j                  gdz  dz        j                  d|j                  j                  z         }|j                  d }nLt        j
                  |j                  gdz  dz        j                  d|j                  j                  z         }t        |j                  d	z   |||j                  dhz        }| j                  |        | S )
Nrp   rq         _tile3r@   rL   rq   rp   _tile213)CASESr$   r0   r%   r&   r   r1   rC   rF   rH   appendreshapeshape)	new_casesr\   r0   r1   new_cases        r)   _make_generalized_casesr      sw   I #$&&"**-HHdffa$&&j!dff*5666>A$&&!dff*a$&&j9:Adii(2Aq#'99#>@"HHdffX\A%&..v/DE66>A$&&A)*226DFFLL3HIAdii*4a#'99#>@")#, r+   c              #     K   t        | t        j                        s| df ydg| j                  z  }d|d<   | j                  dkD  rd|d<   | j                  dkD  rd	|d
<   t	        j
                  t        |       D ]f  }t        | j                  |      D cg c]  \  }}t        ||z         }}}t        |D cg c]  }t        dd|       c}      }t        j                  || j                        }|j                  t        j                        j                  d       ||   }| |d<   |j                  | j                         }t#        t        j$                  || k(               |ddj'                  |D 	cg c]  }	d|	z  	 c}	      z   f | j                  dk\  r]| j                  d   dk(  rKt)        | j*                        }
d|
d<   t        j,                  j.                  j1                  | |
      }|df | j                  dk\  r]| j                  d   dk(  rKt)        | j*                        }
d|
d<   t        j,                  j.                  j1                  | |
      }|df | j                  dk\  s| j                  dd dk(  st)        | j*                        }
d|
d<   d|
d<   t        j,                  j.                  j1                  | |
      }|df i yc c}}w c c}w c c}	w w)z<
    Generate cartesian product of strides for all axes
    nopNrn   )rn   rq   rn   rp   )rn   r   r6   l   >[= .stride__z%+dr   )stridesstride_xxx_0stride_xxx_0_xrn   rn   stride_xxx_0_0)r$   r%   r&   ndim	itertoolsproducttuplezipr   abssliceemptyr.   viewuint32fill	__class__r   alljoinlistr   libstride_tricks
as_strided)x
stride_setrepeatsr0   r1   	new_shaperepeatslicesxijss              r)   _stride_comb_iterr     s    
 a$h!&&JJrNvvz#
2vvz 
2$$eJ&78 ',/,ABDAqSQZB	BHfdD&1HI XXiqww/
		
+Z3WWQ[[!rQw )chh7'Ca	'CDDDD 66Q;1772;!+QYYAAbE%%00A0>Bn$$66Q;1772;!+QYYAAbE%%00A0>B&&&66Q;1773B<61QYYAAbEAbE%%00A0>B&&&;'BH (Ds9   BK7K'1K7=K-
B-K7>K2
C3K7?K7A$K7c            
         g } t         D ]  }t        |j                        D ]f  \  }}t        |j                        D ]I  \  }}t	        |j
                  dz   |z   dz   |z   |||j                  dhz        }| j                  |       K h  | S )Nr   r=   rL   )r   r   r0   r1   rC   rF   rH   r   )r   r\   r0   a_labelr1   b_labelr   s          r)   _make_strided_casesr   D  s    I ++DFF3 	+JAw/7 +
7%dii#o&?#&E&OQRTU+/99	{+BD  *+	++ r+   c                   0    e Zd ZeZ e        e       fdZy)LinalgTestCasec                    | j                   D ]A  }|j                  |z  |k7  r|j                  |z  r&	 |j                  | j                         C y# t        $ r.}d|d}|t        j                         z  }t        |      |d}~ww xY w)zx
        Run func on each of the cases with all of the tags in require, and none
        of the tags in exclude
        zIn test case: z

N)
TEST_CASESrH   rN   rM   	Exception	traceback
format_excAssertionError)rI   requireexcluder\   emsgs         r)   check_caseszLinalgTestCase.check_casesX  s    
 OO 	1Dyy7"g-yy7"1

477#	1  1&thd3y++--$S)q01s   A	B	)BB	N)rS   rT   rU   r   r   rV   r   rW   r+   r)   r   r   U  s    J"%% 1r+   r   c                       e Zd Zd Zd Zy)LinalgSquareTestCasec                 0    | j                  dhddh       y )Nr<   r@   rA   r   r   r   rQ   s    r)   test_sq_casesz"LinalgSquareTestCase.test_sq_casesn  s!    ("/!: 	 	<r+   c                 0    | j                  ddhdh       y )Nr<   rA   r@   r   r   rQ   s    r)   test_empty_sq_casesz(LinalgSquareTestCase.test_empty_sq_casesr  s!    (H!5"/ 	 	2r+   N)rS   rT   rU   r   r   rW   r+   r)   r   r   l      <2r+   r   c                       e Zd Zd Zd Zy)LinalgNonsquareTestCasec                 0    | j                  dhddh       y )Nr?   r@   rA   r   r   rQ   s    r)   test_nonsq_casesz(LinalgNonsquareTestCase.test_nonsq_casesy  !    +"/!: 	 	<r+   c                 0    | j                  ddhdh       y )Nr?   rA   r@   r   r   rQ   s    r)   test_empty_nonsq_casesz.LinalgNonsquareTestCase.test_empty_nonsq_cases}  !    +x!8"/ 	 	2r+   N)rS   rT   rU   r   r   rW   r+   r)   r   r   w  r   r+   r   c                       e Zd Zd Zd Zy)HermitianTestCasec                 0    | j                  dhddh       y )Nr>   r@   rA   r   r   rQ   s    r)   test_herm_casesz!HermitianTestCase.test_herm_cases  r   r+   c                 0    | j                  ddhdh       y )Nr>   rA   r@   r   r   rQ   s    r)   test_empty_herm_casesz'HermitianTestCase.test_empty_herm_cases  r   r+   N)rS   rT   rU   r   r   rW   r+   r)   r   r     r   r+   r   c                   |    e Zd Zej                  j
                  d        Zej                  j
                  d        Zy)LinalgGeneralizedSquareTestCasec                 0    | j                  ddhdh       y )Nr@   r<   rA   r   r   rQ   s    r)   test_generalized_sq_casesz9LinalgGeneralizedSquareTestCase.test_generalized_sq_cases  s!    -!:"* 	 	-r+   c                 ,    | j                  h d       y )N>   r<   r@   rA   r   r   rQ   s    r)   test_generalized_empty_sq_casesz?LinalgGeneralizedSquareTestCase.test_generalized_empty_sq_cases  s    !DEr+   N)rS   rT   rU   pytestmarkslowr   r   rW   r+   r)   r   r     s>    [[- - [[F Fr+   r   c                   |    e Zd Zej                  j
                  d        Zej                  j
                  d        Zy)"LinalgGeneralizedNonsquareTestCasec                 0    | j                  ddhdh       y )Nr@   r?   rA   r   r   rQ   s    r)   test_generalized_nonsq_casesz?LinalgGeneralizedNonsquareTestCase.test_generalized_nonsq_cases  !    -!="* 	 	-r+   c                 ,    | j                  h d       y )N>   r?   r@   rA   r   r   rQ   s    r)   "test_generalized_empty_nonsq_caseszELinalgGeneralizedNonsquareTestCase.test_generalized_empty_nonsq_cases  s    !GHr+   N)rS   rT   rU   r   r   r   r   r   rW   r+   r)   r   r     s>    [[- - [[I Ir+   r   c                   |    e Zd Zej                  j
                  d        Zej                  j
                  d        Zy)HermitianGeneralizedTestCasec                 0    | j                  ddhdh       y )Nr@   r>   rA   r   r   rQ   s    r)   test_generalized_herm_casesz8HermitianGeneralizedTestCase.test_generalized_herm_cases  r   r+   c                 0    | j                  h ddh       y )N>   r>   r@   rA   noner   r   rQ   s    r)   !test_generalized_empty_herm_casesz>HermitianGeneralizedTestCase.test_generalized_empty_herm_cases  s    !G"( 	 	+r+   N)rS   rT   rU   r   r   r   r  r  rW   r+   r)   r   r     s<    [[- - [[+ +r+   r   c                    t        |       } | j                  dk\  r| j                  |j                  k(  r | j                  d d |j                  dd  z   }n7| j                  |j                  dz   k(  r| j                  d d }nt        d      t	        j
                  |t	        j                  | |            }t        j                  t        t        | j                  d d        D ]  }t        | |   ||         ||<    |S t        | |      S )Nrq   r   rn   zNot implemented...r6   r   )r   r   r   
ValueErrorr%   r   common_typer   r   mapranger   )r0   r1   r   rcs        r)   dot_generalizedr    s    
Avv{66QVVqwwrs|3IVVqvvz!I122HHYbnnQ&:;""Cqwws|$<= 	#AqtQqT?AaD	#1ayr+   c                     t        |       } | j                  dk\  rHt        j                  | j                  | j
                        }t        | j                  d         |d<   |S t        | j                  d         S )Nrq   r6   r   .r   )r   r   r%   r   r   r.   r	   )r0   r  s     r)   identity_like_generalizedr    s\    
Avv{HHQWWAGG,!''"+&#
##r+   c                       e Zd Zd Zy)
SolveCasesc                     t        j                  ||      }t        |t        ||             t	        t        ||             y r"   )r   solver   r  r   r*   )rI   r0   r1   rH   r   s        r)   rM   zSolveCases.do  s3    LLAAq!45#Aq)*r+   NrS   rT   rU   rM   rW   r+   r)   r  r    s    +r+   r  c                   d    e Zd Zej                  j                  deeee	g      d        Z
d Zd Zy)	TestSolver.   c                     t        j                  ddgddgg|      }t        t        j                  ||      j
                  |       y Nrn         ?r6   )r%   r   r   r   r  r.   rI   r.   r   s      r)   
test_typeszTestSolve.test_types  s:    HHq#ha)7V\\!Q'--u5r+   c           
          G d dt         j                        }t        j                  d      j                  ddd      }t        j                  d      j                  ddd      j	                  |      }t        j                  ||      d d ddd d f   }t        j                  |d d ddddf   |d d ddd d f         }t        ||       t        t        ||             t        t
        j                  t
        j                  |d d ddddf   |       t        t        t
        j                  ||d d ddd d f          t        j                  d      j                  ddd      }t        t        t
        j                  ||       t        t        t
        j                  |dd |dd        t        j                  d      j                  dd      j	                  |      }t        j                  ||      d d ddf   }t        j                  |d d ddddf   |d d ddf         }t        ||       t        t        ||             t        j                  d      j                  dd      }t        t        t
        j                  ||       t        t        t
        j                  |dd |dd        t        t        t
        j                  |d d ddddf   |       y )	Nc                       e Zd Zy),TestSolve.test_0_size.<locals>.ArraySubclassNrS   rT   rU   rW   r+   r)   ArraySubclassr        r+   r   rl   rp   r   rn   rq   r   )r%   r&   aranger   r   r   r  r   r   r$   r   r   r  rI   r   r0   r1   expectedresults         r)   test_0_sizezTestSolve.test_0_size  sR   	BJJ 	 IIaL  Aq)IIaL  Aq)..}=<<1%a1ai0a1Q3!na1Q3	l;68,
6=12 	f((&,,!QqS!A#+Jj&,,1Q!QY<@ IIaL  Aq)j&,,15j&,,!A!A? IIaL  A&++M:<<1%a1f-a1Q3!na1Q3i868,
6=12IIaL  A&j&,,15j&,,!A!A?j&,,!QqS!A#+Br+   c                     G d dt         j                        }t        j                  d      j                  ddd      }t        j                  d      j                  ddd      j	                  |      }t        j                  ||      d d d d ddf   }t        j                  ||d d d d ddf         }t        ||       t        t        ||             t        j                  ||      d d ddddf   }t        j                  |d d ddddf   |d d ddddf         }t        ||       t        t        ||             y )	Nc                       e Zd Zy).TestSolve.test_0_size_k.<locals>.ArraySubclassNr  rW   r+   r)   r   r)     r!  r+   r   rr   rn   rp   r   rq   r   )
r%   r&   r"  r   r   r   r  r   r   r$   r#  s         r)   test_0_size_kzTestSolve.test_0_size_k  s   	BJJ 	IIaL  Aq)IIaL  Aq)..}=<<1%aAaCi0a1a19.68,
6=12 <<1%a1ack2a1Q3!na1Q3!n=68,
6=12r+   N)rS   rT   rU   r   r   parametrizer   r   r   r   r  r&  r*  rW   r+   r)   r  r    s;    [[Wvvw&HI6 J6CB3r+   r  c                       e Zd Zd Zy)InvCasesc                     t        j                  |      }t        t        ||      t	        |             t        t        ||             y r"   )r   invr   r  r  r   r*   )rI   r0   r1   rH   a_invs        r)   rM   zInvCases.do  s8    

1OAu55a8	:#E1-.r+   Nr  rW   r+   r)   r-  r-    s    /r+   r-  c                   ^    e Zd Zej                  j                  deeee	g      d        Z
d Zy)TestInvr.   c                     t        j                  ddgddgg|      }t        t        j                  |      j
                  |       y r  )r%   r   r   r   r/  r.   r  s      r)   r  zTestInv.test_types  s7    HHq#ha)7VZZ]((%0r+   c                     G d dt         j                        }t        j                  dt         j                        j	                  |      }t        j                  |      }t        |j                  j                  t         j                  u        t        |j                  |j                         t        t        ||             t        j                  dt         j                        j	                  |      }t        j                  |      }t        |j                  j                  t         j                  u        t        |j                  |j                         t        t        ||             y )Nc                       e Zd Zy)*TestInv.test_0_size.<locals>.ArraySubclassNr  rW   r+   r)   r   r6  "  r!  r+   r   r   rn   rn   r6   ri   )r%   r&   zerosint_r   r   r/  r   r.   r#   float64r   r   r$   	complex64rI   r   r0   ress       r)   r&  zTestInv.test_0_size   s    	BJJ 	HHYbgg.33MBjjm		"**,-QWWcii(
3./HHV2<<055mDjjm		",,./QWWcii(
3./r+   NrS   rT   rU   r   r   r+  r   r   r   r   r  r&  rW   r+   r)   r2  r2    s4    [[Wvvw&HI1 J10r+   r2  c                       e Zd Zd Zy)EigvalsCasesc                 v    t        j                  |      }t        j                  |      \  }}t        ||       y r"   )r   eigvalseigr   )rI   r0   r1   rH   evevaluesevectorss          r)   rM   zEigvalsCases.do3  s,    ^^A"JJqMB(r+   Nr  rW   r+   r)   r@  r@  1  s    )r+   r@  c                   ^    e Zd Zej                  j                  deeee	g      d        Z
d Zy)TestEigvalsr.   c                 .   t        j                  ddgddgg|      }t        t        j                  |      j
                  |       t        j                  ddgddgg|      }t        t        j                  |      j
                  t        |             y Nrn   r  r6   r   )r%   r   r   r   rB  r.   r9   r  s      r)   r  zTestEigvals.test_types:  st    HHq#ha)7V^^A&,,e4HHq#hQ(6V^^A&,,.?.FGr+   c                     G d dt         j                        }t        j                  dt         j                        j	                  |      }t        j                  |      }t        |j                  j                  t         j                  u        t        d|j                         t        t        |t         j                               t        j                  dt         j                        j	                  |      }t        j                  |      }t        |j                  j                  t         j                  u        t        d|j                         t        t        |t         j                               y )Nc                       e Zd Zy).TestEigvals.test_0_size.<locals>.ArraySubclassNr  rW   r+   r)   r   rM  C  r!  r+   r   r7  r6   r   rn   ri   rj   )r%   r&   r8  r9  r   r   rB  r   r.   r#   r:  r   r   r$   r;  r<  s       r)   r&  zTestEigvals.test_0_sizeA  s    	BJJ 	HHYbgg.33MBnnQ		"**,-VSYY'
3

+,HHV2<<055mDnnQ		",,./T399%
3

+,r+   Nr>  rW   r+   r)   rH  rH  9  s6    [[Wvvw&HIH JH-r+   rH  c                       e Zd Zd Zy)EigCasesc           	      @   t        j                  |      }|j                  |j                  }}t	        t        ||      t        j                  |      t        j                  |      dd d d f   z  t        |j                               t        t        ||             y )N.rtol)r   rC  eigenvalueseigenvectorsr   r  r%   r   r;   r.   r   r*   )rI   r0   r1   rH   r=  rT  rU  s          r)   rM   zEigCases.doV  sz    jjm$'OOS5E5E\<8

<02::k3J3PTVW<3XX%k&7&78	: 	#L!45r+   Nr  rW   r+   r)   rP  rP  T  s    6r+   rP  c                   ^    e Zd Zej                  j                  deeee	g      d        Z
d Zy)TestEigr.   c                    t        j                  ddgddgg|      }t         j                  j                  |      \  }}t	        |j
                  |       t	        |j
                  |       t        j                  ddgddgg|      }t         j                  j                  |      \  }}t	        |j
                  t        |             t	        |j
                  t        |             y rJ  )r%   r   r   rC  r   r.   r9   rI   r.   r   wvs        r)   r  zTestEig.test_types`  s    HHq#ha)7yy}}Q1QWWe$QWWe$HHq#hQ(6yy}}Q1QWW/67QWW/67r+   c                 B    G d dt         j                        }t        j                  dt         j                        j	                  |      }t        j                  |      \  }}t        |j                  j                  t         j                  u        t        |j                  j                  t         j                  u        t        |j                  |j                         t        d|j                         t        t        |t         j                               t        j                  dt         j                        j	                  |      }t        j                  |      \  }}t        |j                  j                  t         j                  u        t        |j                  j                  t         j                  u        t        |j                  |j                         t        d|j                         t        t        |t         j                               y )Nc                       e Zd Zy)*TestEig.test_0_size.<locals>.ArraySubclassNr  rW   r+   r)   r   r^  n  r!  r+   r   r7  r6   rN  ri   rj   )r%   r&   r8  r9  r   r   rC  r   r.   r#   r:  r   r   r$   r;  rI   r   r0   r=  res_vs        r)   r&  zTestEig.test_0_sizel  s@   	BJJ 	HHYbgg.33MBZZ]
U  BJJ./		"**,-QWWekk*VSYY'
1bjj)*HHV2<<055mDZZ]
U  BLL01		",,./QWWekk*T399%
1bjj)*r+   Nr>  rW   r+   r)   rW  rW  _  s4    [[Wvvw&HI	8 J	8+r+   rW  c                   \    e Zd ZdZej
                  j                  deee	e
g      d        Zy)SVDBaseTestsFr.   c                    t        j                  ddgddgg|      }t        j                  |      }|j                  |j
                  |j                  }}}t        |j                  |       t        |j                  t        |             t        |j                  |       t        j                  |d| j                        }t        |j                  t        |             y )Nrn   r  r6   F
compute_uvr>   )r%   r   r   svdUSVhr   r.   r7   r>   )rI   r.   r   r=  rg  rh  ri  r   s           r)   r  zSVDBaseTests.test_types  s    HHq#ha)7jjm55#%%b1QWWe$QWWnU34RXXu%JJqUdnnEQWWnU34r+   N)rS   rT   rU   r>   r   r   r+  r   r   r   r   r  rW   r+   r)   rb  rb    s4    I[[Wvvw&HI5 J5r+   rb  c                       e Zd Zd Zy)SVDCasesc                 j   t        j                  |d      \  }}}t        |t        t	        j
                  |      t	        j
                  |      dd d d f   z  t	        j
                  |            t        |j                               t        t        ||             t        t        ||             y )NF.rR  )
r   rf  r   r  r%   r   r;   r.   r   r*   )rI   r0   r1   rH   ur   vts          r)   rM   zSVDCases.do  s    ::a'1b?2::a=2::a=dTU;V+V+-::b>;%agg.	0 	#Aq)*#B*+r+   Nr  rW   r+   r)   rk  rk    s    ,r+   rk  c                       e Zd Zd Zy)TestSVDc                    t        j                  d      }t        j                  |d| j                        \  }}}t        |j                  d       t        |j                  d       t        |t        j                  d             t        j                  d      }t        j                  |d| j                        \  }}}t        |j                  d       t        |j                  d       t        |t        j                  d             y)	z6 Empty input should put an identity matrix in u or vh )rr   r   Trd  rr   rr   ri   rr   )r   rr   N)r%   r   r   rf  r>   r   r   eye)rI   r   rm  r   vhs        r)   test_empty_identityzTestSVD.test_empty_identity  s    HHV::aDDNNK1bQWWf%RXXv&Qq	"HHV::aDDNNK1bQWWf%RXXv&R#r+   N)rS   rT   rU   ru  rW   r+   r)   rp  rp    s    $r+   rp  c                       e Zd Zd Zy)SVDHermitianCasesc                 R   t        j                  |dd      \  }}}t        |t        t	        j
                  |      t	        j
                  |      dd d d f   z  t	        j
                  |            t        |j                               d }t        t	        j                  | ||            t	        j                  t	        j                  |j                  d         |j                               t        t	        j                  | ||            t	        j                  t	        j                  |j                  d         |j                               t        t	        j                  |      dd d df   |       t        t!        ||             t        t!        ||             y )NFTr>   .rR  c                     t        t        | j                              }|d   |d   c|d<   |d<   t        j                  t        j
                  | |            S )Nr   r   axes)r   r
  r   r%   conj	transpose)matr|  s     r)   r>   z'SVDHermitianCases.do.<locals>.hermitian  sJ    chh(D!%b48DHd2h772<<$788r+   r   )r   rf  r   r  r%   r   r;   r.   r   r
   broadcast_tors  r   r   sortr   r*   )rI   r0   r1   rH   rm  r   rn  r>   s           r)   rM   zSVDHermitianCases.do  s)   ::a$71b?2::a=2::a=dTU;V+V+-::b>;%agg.	0	9
 	BIIa16qwwWY{H[]^]d]d8efBIIb)B-8"//"&&QSQYQYZ\Q]J^`b`h`h:ijRWWQZTrT	*A.#Aq)*#B*+r+   Nr  rW   r+   r)   rw  rw    s    ,r+   rw  c                       e Zd ZdZy)TestSVDHermitianTN)rS   rT   rU   r>   rW   r+   r)   r  r    s    Ir+   r  c                       e Zd Zd Zy)	CondCasesc           	         t        |      }d|v r t        t        t        j                  |       y t        j
                  |d      }t        t        j                  |      |d   |d   z  dd       t        t        j                  |d	      |d   |d   z  dd       t        t        j                  |d
      |d   |d   z  dd       t        j                  j                  |      }t        t        j                  |d      t        |      j                  d
      j                  d      t        |      j                  d
      j                  d      z  dd       t        t        j                  |d      t        |      j                  d
      j                  d      t        |      j                  d
      j                  d      z  dd       t        t        j                  |t        j                        t        |      j                  d      j                  d      t        |      j                  d      j                  d      z  dd       t        t        j                  |t        j                         t        |      j                  d      j                  d      t        |      j                  d      j                  d      z  dd       t        t        j                  |d      t        j                  t        |      d	z  j                  d      j                  d      t        |      d	z  j                  d      j                  d      z        dd       y )NrA   F)re  ).r   ).r   r   r   r2   r3   rp   r   rn   r   fro)r   r   r   r   condrf  r   r%   r/  r   summaxminr   sqrt)rI   r0   r1   rH   r  r   cinvs          r)   rM   zCondCases.do  s   AJt+v{{A6 JJqU+KKNAfI'
2R	1 	KK1qy1W:5R	1 	KK2'
QvY 6R	1
 yy}}QKK1FJJrNr"SY]]2%6%:%:2%>>R	1 	KK2FJJrNr"SY]]2%6%:%:2%>>R	1 	KK266"FJJrNr"SY]]2%6%:%:2%>>R	1 	KKBFF7#FJJrNr"SY]]2%6%:%:2%>>R	1 	KK5!GGSVQYOOB'++B/4y!|((,0045 6R		1r+   Nr  rW   r+   r)   r  r    s    (1r+   r  c                   f    e Zd Zd Zd Zej                  j                  ddd      d        Zd Z	y	)
TestCondc                    t        g dg dg dg      }t        t        j                  |t              d       t        t        j                  |t               d       t        t        j                  |d      d       t        t        j                  |d      d       t        t        j                  |d	      t        j                  d
             y )N)r_   r   rn   )r   g       r   )r   r   ra   rr   gUUUUUU?rn   r   r  r  gUUUUU6@)r   r   r   r  r   r%   r  rI   As     r)   test_basic_nonsvdzTestCond.test_basic_nonsvd  s    :{J78FKK3/3FKKC40#6FKK1-q1FKK2.4FKK5127783DEr+   c                 P   t        j                  d      t        j                  d      g}g d}ddg}t        j                  ||      D ]'  \  }}t        t        j                  ||      dkD         ) t        j                  ||      D ]  \  }}t        j                  ||        y )Nrp   rp   Nrn   rp   r  r   r     4&kC)r%   r8  onesr   r   r   r   r  )rI   Asp_posp_negr  ps         r)   test_singularzTestCond.test_singular  s     hhv0#R%%b%0 	.DAq FKK1%,-	. %%b%0 	DAqKK1	r+   TFz/Platform/LAPACK-dependent failure, see gh-18914)runreasonc                    g d}g d}t        j                  d      }t         j                  |d<   |D ]Y  }t        j                  ||      }t        t        |t         j                               t        t        j                  |             [ t        j                  d      }t         j                  |d<   |D ]  }t        j                  ||      }t        t        j                  |d                ||v r#t        |d   d	kD         t        |d
   d	kD         at        t        j                  |d                 t        t        j                  |d
                  y )N)Nrn   r   rp   r   r  r  r  rN  )rq   rp   rp   rn   r   rn   rn   r   r  rp   )	r%   r  nanr   r  r   r$   float_isnan)rI   psr  r  r  r  s         r)   test_nanzTestCond.test_nan
  s   
 )#GGFO# 	!AAq!AJq")),-BHHQK 	!
 GGI66% 	,AAq!ABHHQqTN#Ez!t$!t$BHHQqTN*+BHHQqTN*+	,r+   c                    t         j                  j                  d       t         j                  j                  dddd      }d|d<   d|d<   dD ]  }t	        j
                  ||      }t        |d   t         j                         t        |d   t         j                         t        t        j                  |d                t        t        j                  |d                 y )	Nr^   rp   r   ri   r   )Nrn   rp   r  r   r   rN  rn   r   )
r%   randomseedrandr   r  r   r   r   isfinite)rI   r  r  r  s       r)   test_stacked_singularzTestCond.test_stacked_singular%  s     			tIINN1aA&##, 	)AAq!A3(3(BKK#'(BKK#'(	)r+   N)
rS   rT   rU   r  r  r   r   xfailr  r  rW   r+   r)   r  r    sC    F [[t-  .,.,0)r+   r  c                       e Zd Zd Zy)	PinvCasesc                     t        j                  |      }t        }t         | |||      |      |dd       t	        t        ||             y )Nr   r   r  r   pinvr  r   r   r*   rI   r0   r1   rH   a_ginvr   s         r)   rM   zPinvCases.do:  s@    QCAv2AaXZ[#FA./r+   Nr  rW   r+   r)   r  r  5  s    
0r+   r  c                       e Zd Zy)TestPinvNr  rW   r+   r)   r  r  B      r+   r  c                       e Zd Zd Zy)PinvHermitianCasesc                     t        j                  |d      }t        }t         | |||      |      |dd       t	        t        ||             y )NTry  r   r   r  r  r  s         r)   rM   zPinvHermitianCases.doH  sC    Q$/CAv2AaXZ[#FA./r+   Nr  rW   r+   r)   r  r  F  s    0r+   r  c                       e Zd Zy)TestPinvHermitianNr  rW   r+   r)   r  r  P  r  r+   r  c                       e Zd Zd Zy)DetCasesc                    t        j                  |      }t        j                  |      }|j                  |j                  }}t        |      j                  j                  t        t        fv rt        |      j                  t              }nt        |      j                  t              }t        j                  |      }	t        |t        j                  |	d             t        |t!        j"                  |      z  t        j                  |	d             t!        j$                  |      }t!        j$                  |      }|dk7  }
t        t!        j&                  ||
         d       t)        ||
    t*                y )Nr   axisr   rn   )r   detslogdetsign	logabsdetr   r.   r#   r   r   astyper   rB  r   r   reducer%   exp
atleast_1dr   r   r   )rI   r0   r1   rH   dr=  r   ldadrD  ms              r)   rM   zDetCases.doV  s   JJqMnnQ#--21:  VV$44""6*B""7+B^^BAxr;<Ar
NHOOBR,HIMM!]]2!VBFF1Q4L!,RVcT"r+   Nr  rW   r+   r)   r  r  T  s    #r+   r  c                   d    e Zd Zd Zej
                  j                  deee	e
g      d        Zd Zy)TestDetc                 h   t        t        j                  dgg      d       t        t        t        j                  dgg            t               t        t        j                  dgg      d       t        t        t        j                  dgg            t
               t        t        j                  dgg      dt         f       t        t        t        j                  dgg      d         t               t        t        t        j                  dgg      d         t               t        t        j                  dgg      dt         f       t        t        t        j                  dgg      d         t
               t        t        t        j                  dgg      d         t               y )N        y                r   rn   )r   r   r  r#   r   r   r  r   rQ   s    r)   	test_zerozTestDet.test_zeroj  s&   VZZ#(#.T&**seW-.7VZZ$)3/T&**tfX./9V^^cUG,sSDk:T&..3%1!45v>T&..3%1!45v>V^^dVH-sd|<T&..4&2156@T&..4&2156?r+   r.   c                 R   t        j                  ddgddgg|      }t        t         j                  j	                  |      j
                  |       t         j                  j                  |      \  }}t        |j
                  t        |             t        |j
                  |       y r  )r%   r   r   r   r  r.   r  r7   )rI   r.   r   phr   s        r)   r  zTestDet.test_typesw  su    HHq#ha)7RYY]]1%++U3		!!!$AQWWnU34RXXu%r+   c                    t        j                  dt         j                        }t        j                  |      }t        |d       t        |j                  j                  t         j                  u        t        j                  |      }t        |d       t        |d   j                  j                  t         j                  u        t        |d   j                  j                  t         j                  u        t        j                  dt         j                        }t        j                  |      }t        |d       t        |j                  j                  t         j                  u        t        j                  |      }t        |d       t        |d   j                  j                  t         j                  u        t        |d   j                  j                  t         j                  u        y )Nri   r6   r_   r  r   rn   )r%   r8  r;  r   r  r   r   r.   r#   r  float32r:  )rI   r0   r=  s      r)   r&  zTestDet.test_0_size  s6   HHV2<<0jjmS"		",,./nnQS&!A!!R\\12A!!RZZ/0HHV2::.jjmS"		"**,-nnQS&!A!!RZZ/0A!!RZZ/0r+   N)rS   rT   rU   r  r   r   r+  r   r   r   r   r  r&  rW   r+   r)   r  r  i  s<    @ [[Wvvw&HI& J&1r+   r  c                       e Zd Zd Zy)
LstsqCasesc                 0   t        j                  |      }|j                  \  }}t        j                  |d      \  }}}	t        j
                  ||d      \  }
}}}|dk(  rt        |
dk(  j                                ||k  r#t        |t        ||
             t        ||       nt        ||       t        ||j                  |             ||k(  r||kD  rt        j                  t        t        j                  ||
      |z
              dz  j                  d      }t        j                  |      }t        j                  |      j                  dk(  rUd|_        t        |j                  |j                         n-t        j                  g       j!                  t#        |
            }t        ||       t        t        j$                  |j&                  t         j(                               t        t+        |
|             t        t+        ||             y )	NFr   rcondr   rp   r  rn   r   )r%   r   r   r   rf  lstsqr   r   r   r   r   __array_wrap__r   r  r   r   r   r#   
issubdtyper.   floatingr*   )rI   r0   r1   rH   arrr  nrm  r   rn  r   	residualsranksvexpect_residss                  r)   rM   zLstsqCases.do  s   jjmyy1::a'1b!'a"!=9dB6Q!VLLN#63q!9-q!q!B 1 1! 4519Q

3rvva|a/01Q6 JJ}5Mzz!}!!Q&&*#Y__m.A.ABHHRL--d1g6MI}5ioor{{;<#Aq)*#Iq12r+   Nr  rW   r+   r)   r  r    s    3r+   r  c                   d    e Zd Zd Zej
                  j                  g dg d      d        Zd Zy)	TestLstsqc                    t        j                  g dg dg dg dg      j                  }t        j                  g d      }t               5 }|j	                  t
        d      }t        j                  ||      \  }}}}t        |dk(         t        j                  ||d	      \  }}}}t        |dk(         t        j                  ||d 	      \  }}}}t        |d
k(         t        t        |      dk(         d d d        y # 1 sw Y   y xY w)N)r  r_   r  r_   r`   r  )r  r`   r  r  r_   r  )r_   r  r_   r  r  rb   )r  r  r  r`   ra   r  )rn   r   r   r   r   r   z`rcond` parameter will changerr   r   r  rq   rn   )
r%   r   Tr   recordFutureWarningr   r  r   len)	rI   r0   r1   suprZ  r   r  r  r   s	            r)   test_future_rcondzTestLstsq.test_future_rcond  s    HH22224 5 67Q 	

 HH'(  		!C

=*IJA$*LLA$6!Ay$DAI$*LLAR$@!Ay$DAI$*LLAT$B!Ay$DAICFaK 		! 		! 		!s   B-DD)r  r  n_rhs))rr   rp   rp   )r   rr   rn   )r   rr   rp   )rr   r   rn   )rr   r   rp   )rr   rp   r   )r   r   r   c                 \   t        j                  ||z        j                  ||      }t        j                  ||f      }t	        j
                  ||d       \  }}}}	|dk(  rt        |dk(  j                                t        |j                  ||f       t        |j                  ||kD  r|fnd       ||kD  r=|dkD  r8|t        j                  ||      z
  }
t        ||
|
z  j                  d             t        |t        ||             t        |	j                  t        ||      f       y )Nr  r   rj   r   r  )r%   r"  r   r  r   r  r   r   r   r   r   r   r  r  )rI   r  r  r  r0   r1   r   r  r  r   r  s              r)   test_empty_a_bzTestLstsq.test_empty_a_b  s     IIa!e$$Q*GGQJ &Q >9dA6Q!VLLN#QWWq%j)Y__1q5xdDq5UQYBFF1aL A	AE;;B;+?@T3q!9%QWWs1ayl+r+   c                 T   t        j                  g d      }t        j                  g d      }t        j                  |t        j                  t	        |            g      j
                  }t        t        d      5  t        j                  ||d        d d d        y # 1 sw Y   y xY w)N)r   rn   rp   rq   )r   g?g?g @gffffff
@zIncompatible dimensionsr  )
r%   r   vstackr  r  r  r   r   r   r  )rI   r   yr  s       r)   test_incompatible_dimsz TestLstsq.test_incompatible_dims  st    HH\"HH-.IIq"''#a&/*+-- .GH 	+LLAT*	+ 	+ 	+s   <BB'N)	rS   rT   rU   r  r   r   r+  r  r  rW   r+   r)   r  r    s7    !$ [[0 3 ,,+r+   r  dtz?bBhHiIqQefdgFDGOc                      e Zd Z ej                  d      Zeg d   Zeg d   Zeg d   ZeeeegZ	 e
ddgddgg      Z ej                  egggdz        Ze ej                  d       ej                  d	       ej                  d
      gZd Zd Zd Zd Zd Zd Zd Zej2                  j5                  ed      d        Zy)TestMatrixPowerrr   )rq   r   rn   rp   )rp   rq   r   rn   )rn   rp   rq   r   rn   r   rp   r   gGc                    | j                   j                  |      }t        t        |ddz  dz   dz   dz         | j                         t        t        |ddz  dz   dz   dz         | j                          t        t        |ddz  dz   dz   dz         | j
                         t        t        |ddz  dz   dz   dz         | j                         y )Nrp   d   i       r   rn   rq   )rshft_1r  r   r   rshft_0rshft_2rshft_3)rI   r  rshfts      r)   test_large_powerz TestMatrixPower.test_large_power  s    ##B'3 5 9:DLL	J3 5 9:DLL	J3 5 9:DLL	J3 5 9:DLL	Jr+   c                     d }| j                   D ]D  } ||j                  |             |t        k7  s$ || j                  j                  |             F y )Nc                     t        | d      }t        |t        |              t        |j                  | j                         y )Nr   )r   r   r  r.   )Mmzs     r)   tzz.TestMatrixPower.test_power_is_zero.<locals>.tz  s0    a#B6q9:177+r+   	rshft_allr  objectstackedrI   r  r
  r  s       r)   test_power_is_zeroz"TestMatrixPower.test_power_is_zero  sJ    	,
 >> 	,Cszz"~V|4<<&&r*+	,r+   c                     d }| j                   D ]D  } ||j                  |             |t        k7  s$ || j                  j                  |             F y )Nc                 t    t        | d      }t        ||        t        |j                  | j                         y )Nrn   )r   r   r.   )r  r	  s     r)   r
  z-TestMatrixPower.test_power_is_one.<locals>.tz	  s*    c1%BS!399-r+   r  r  s       r)   test_power_is_onez!TestMatrixPower.test_power_is_one  sJ    	.
 >> 	,Cszz"~V|4<<&&r*+	,r+   c                     d }| j                   D ]D  } ||j                  |             |t        k7  s$ || j                  j                  |             F y )Nc                     t        | d      }| j                  t        k7  rt        nt        }t        | || |              t        |j                  | j                         y )Nrp   )r   r.   r  r
   r   r   )r  r	  mmuls      r)   r
  z-TestMatrixPower.test_power_is_two.<locals>.tz  sB    c1%B YY&06cDT#s^,399-r+   r  r  s       r)   test_power_is_twoz!TestMatrixPower.test_power_is_two  sJ    	. >> 	,Cszz"~V|4<<&&r*+	,r+   c                 x    d }| j                   D ](  }|| j                  vs ||j                  |             * y )Nc                     t        | d      }| j                  t        k7  rt        nt        }t         |||       t        |              y Nr   )r   r.   r  r
   r   r   r  )r  invmatr  s      r)   r
  z3TestMatrixPower.test_power_is_minus_one.<locals>.tz   s;    !#r*F YY&06cDVS!#<S#ACr+   )r  dtnoinvr  r  s       r)   test_power_is_minus_onez'TestMatrixPower.test_power_is_minus_one  s9    	C >> 	#C%3::b>"	#r+   c                     | j                   j                  |      }t        t        t        |d       t        t        t        |dg       y )Ng      ?rn   )r  r  r   	TypeErrorr   rI   r  r  s      r)   test_exceptions_bad_powerz)TestMatrixPower.test_exceptions_bad_power*  s4    ll!!"%isC8isQC8r+   c                 
   t        t        t        t        j                  dg|      d       t        t        t        t        j                  dgdgg|      d       t        t        t        t        j
                  d|      d       y )Nrn   rp   )rr   rq   rp   )r   r   r   r%   r   r  )rI   r  s     r)   test_exceptions_non_squarez*TestMatrixPower.test_exceptions_non_square/  sW    k<1#r1BAFk<A3*b1I1Mk<B1GKr+   fp errors don't work in wasmr  c                     || j                   v ry | j                  j                  |      }t        t        t
        |d       y r  )r  noninvr  r   r   r   r   s      r)   test_exceptions_not_invertiblez.TestMatrixPower.test_exceptions_not_invertible4  s3    kk  $k<b9r+   N)rS   rT   rU   r%   rs  r  r   r  r  r  r   r'  blockr  r  r.   r  r  r  r  r  r  r!  r#  r   r   skipifr    r(  rW   r+   r)   r  r    s     bffQiGl#Gl#Gl#G'7G4IQFQF#$Fbhh'}Q'Gxrxx}hbhhsmXRXXc]CG	J	,	,
,	#9
L
 [[(FG: H:r+   r  c                       e Zd Zd Zy)TestEigvalshCasesc                 4   t        j                  |d      }t        j                  |      \  }}|j                  d       t	        ||t        |j                               t        j                  |d      }t	        ||t        |j                               y )NLr   r  rR  rg  )r   eigvalshrC  r  r   r;   r.   )rI   r0   r1   rH   rD  rE  rF  ev2s           r)   rM   zTestEigvalshCases.do>  sn     __Q$"JJqM"G(288*<=ooa%W8BHH+=>r+   Nr  rW   r+   r)   r,  r,  <  s    	?r+   r,  c                   j    e Zd Zej                  j                  deeee	g      d        Z
d Zd Zd Zy)TestEigvalshr.   c                     t        j                  ddgddgg|      }t         j                  j                  |      }t	        |j
                  t        |             y r  )r%   r   r   r/  r   r.   r7   )rI   r.   r   rZ  s       r)   r  zTestEigvalsh.test_typesK  sF    HHq#ha)7IIq!QWWnU34r+   c                 X   t        j                  ddgddggt         j                        }t        t        t         j
                  j                  |d       t        t        t         j
                  j                  |d       t        t        t         j
                  j                  |d       y Nrn   r  r6   lrongUPLOlowerupper)r%   r   r  r   r  r   r/  rI   r   s     r)   test_invalidzTestEigvalsh.test_invalidQ  sk    HHq#ha)<j"))"4"4agFj"))"4"4aAj"))"4"4aAr+   c                    t        j                  ddgddggt         j                        }t        j                  ddgddggt         j                        }t        j                  ddgt         j                        }t        t         j                        }t         j                  j                  |      }t        |||       t         j                  j                  |d      }t        |||       t         j                  j                  |d      }t        |||       t         j                  j                  |d	      }t        |||       t         j                  j                  |d
      }t        |||       y Nr   rn   r6   r   rR  r.  r7  lrg  rm  )r%   r   r   r;   r   r/  r   )rI   KloKuptgtrS  rZ  s         r)   	test_UPLOzTestEigvalsh.test_UPLOW  s    hhAA'ryy9hhAA'ryy9hhAwbii0		" IIs#3T*IIs-3T*IIs-3T*IIs-3T*IIs-3T*r+   c                     G d dt         j                        }t        j                  dt         j                        j	                  |      }t        j                  |      }t        |j                  j                  t         j                  u        t        d|j                         t        t        |t         j                               t        j                  dt         j                        j	                  |      }t        j                  |      }t        |j                  j                  t         j                  u        t        d|j                         t        t        |t         j                               y )Nc                       e Zd Zy)/TestEigvalsh.test_0_size.<locals>.ArraySubclassNr  rW   r+   r)   r   rF  o  r!  r+   r   r7  r6   rN  ri   rj   )r%   r&   r8  r9  r   r   r/  r   r.   r#   r:  r   r   r$   r;  r  r<  s       r)   r&  zTestEigvalsh.test_0_sizem  s    	BJJ 	HHYbgg.33MBooa 		"**,-VSYY'
3

+,HHV2<<055mDooa 		"**,-T399%
3

+,r+   NrS   rT   rU   r   r   r+  r   r   r   r   r  r<  rC  r&  rW   r+   r)   r2  r2  J  s?    [[Wvvw&HI5 J5
B+,-r+   r2  c                       e Zd Zd Zy)TestEighCasesc                    t        j                  |      }|j                  |j                  }}t        j                  |      \  }}|j                  d       t        ||       t        t        ||      t        j                  |      dd d d f   t        j                  |      z  t        |j                               t        j                  |d      \  }	}
t        |	|       t        t        ||
      t        j                  |	      dd d d f   t        j                  |
      z  t        |j                        t        |             y )Nr   r  .rR  rg  )rS  err_msg)r   eighrT  rU  rC  r  r   r   r  r%   r   r;   r.   repr)rI   r0   r1   rH   r=  rD  evcrE  rF  r0  evc2s              r)   rM   zTestEighCases.do  s     kk!n//3#3#3C"JJqM"B(3/

2sD!|4rzz#F%bhh/	1 KK3'	TC)40

3T15

48HH%bhh/a	Br+   Nr  rW   r+   r)   rI  rI    s    Br+   rI  c                   j    e Zd Zej                  j                  deeee	g      d        Z
d Zd Zd Zy)TestEighr.   c                     t        j                  ddgddgg|      }t         j                  j                  |      \  }}t	        |j
                  t        |             t	        |j
                  |       y r  )r%   r   r   rL  r   r.   r7   rY  s        r)   r  zTestEigh.test_types  sV    HHq#ha)7yy~~a 1QWWnU34QWWe$r+   c                 X   t        j                  ddgddggt         j                        }t        t        t         j
                  j                  |d       t        t        t         j
                  j                  |d       t        t        t         j
                  j                  |d       y r5  )r%   r   r  r   r  r   rL  r;  s     r)   r<  zTestEigh.test_invalid  se    HHq#ha)<j"))..!'Bj"))..!W=j"))..!W=r+   c                     t        j                  ddgddggt         j                        }t        j                  ddgddggt         j                        }t        j                  ddgt         j                        }t        t         j                        }t         j                  j                  |      \  }}t        |||       t         j                  j                  |d      \  }}t        |||       t         j                  j                  |d      \  }}t        |||       t         j                  j                  |d	      \  }}t        |||       t         j                  j                  |d
      \  }}t        |||       y r>  )r%   r   r   r;   r   rL  r   )rI   r@  rA  rB  rS  rZ  r[  s          r)   rC  zTestEigh.test_UPLO  s&   hhAA'ryy9hhAA'ryy9hhAwbii0		" yy~~c"13T*yy~~c~,13T*yy~~c~,13T*yy~~c~,13T*yy~~c~,13T*r+   c                 B    G d dt         j                        }t        j                  dt         j                        j	                  |      }t        j                  |      \  }}t        |j                  j                  t         j                  u        t        |j                  j                  t         j                  u        t        |j                  |j                         t        d|j                         t        t        |t         j                               t        j                  dt         j                        j	                  |      }t        j                  |      \  }}t        |j                  j                  t         j                  u        t        |j                  j                  t         j                  u        t        |j                  |j                         t        d|j                         t        t        |t         j                               y )Nc                       e Zd Zy)+TestEigh.test_0_size.<locals>.ArraySubclassNr  rW   r+   r)   r   rW    r!  r+   r   r7  r6   rN  ri   rj   )r%   r&   r8  r9  r   r   rL  r   r.   r#   r:  r   r   r$   r;  r  r_  s        r)   r&  zTestEigh.test_0_size  s@   	BJJ 	HHYbgg.33MB[[^
U  BJJ./		"**,-QWWekk*VSYY'
1bjj)*HHV2<<055mD[[^
U  BLL01		"**,-QWWekk*T399%
1bjj)*r+   NrG  rW   r+   r)   rQ  rQ    s>    [[Wvvw&HI% J%>+,+r+   rQ  c                   $    e Zd ZdZdZed        Zy)_TestNormBaseNc                 $   t        | j                  j                  t        j                        r+t        |j                  | j                  j                         y t        t        |j                  j                  t        j                               y r"   )	
issubclassr.   r#   r%   inexactr   realr   r  )r   r=  s     r)   check_dtypez_TestNormBase.check_dtype  sK    aggllBJJ/AFFLL1 Jsyy~~r{{;<r+   )rS   rT   rU   r  decstaticmethodr^  rW   r+   r)   rY  rY    s    	B
C= =r+   rY  c                   *    e Zd Zd Zd Zd Zd Zd Zy)_TestNormGeneralc           
          t        t        g       d       t        t        t        g | j                              d       t        t        t	        t        g | j                                    d       y )Nr  r6   )r   r   r   r  r   rQ   s    r)   
test_emptyz_TestNormGeneral.test_empty  sI    T"Xs#T%$''23S9T*U2TWW%=>?Er+   c                    t        j                  g d      }t         j                  d   }t         j                  d   }||z   }|D ]  }|j                  |      }t	        |t         j
                         }| j                  ||       t        |d       t               5 }|j                  t        d       t	        |d      }| j                  ||       t        |d       d d d        t	        |d      }| j                  ||       t        |d       t	        |d	      }| j                  ||       t        |d
       t	        |d      }| j                  ||       t        ||j                  j                  d
      |j                  j                  d      z         t	        |d      }| j                  ||       t        ||j                  j                  d
      |j                  j                  d      z         t	        |t         j
                        }| j                  ||       t        |d        y # 1 sw Y   XxY w)Nr  
AllIntegerAllFloatr  divide by zero encounteredr   r   rp   rn   r`   r  rr   g      ?r_   )r%   r   	typecodesr  r   r   r^  r   r   filterRuntimeWarningr.   r#   	rI   r0   exact_typesinexact_types	all_types	each_typeatanr  s	            r)   test_vector_return_typez(_TestNormGeneral.test_vector_return_type  s   HHYll<0Z0-/	" 	)I)$Bb266'"BR$C("$ -

>+GH"b\  R(#B,	- b!BR$A&b!BR$C(b!BR$BHHMM#$6g8N$NOb!BR$BHHMM#$6g8N$NOb"&&!BR$C(?	)- -s   AH44H>	c                      g d}g d}g d} fd}|||fD ]
  } ||        t        | j                        t        | j                        t        | j                        fD ]
  } ||        y )N)rn   rp   rq   rr   )r   r   r   r   )r   rp   r   rr   c                 v   t         j                  j                  t        |       dj                         t         j                  j                  t        | t
              dj                         t         j                  j                  t        | t
               dj                         t         j                  j                  t        | d      dj                         t         j                  j                  t        | d      dj                         t         j                  j                  t        | d	      dj                         t         j                  j                  t        | d
      dj                         t         j                  j                  t        | d      dj                         y )Ng6ҭ@r-   rb   r_   rn         $@r   gQ?rp   r   gsc?r   rr   )r%   testingr   r   r_  r   )r[  rI   s    r)   _testz+_TestNormGeneral.test_vector.<locals>._test  sD   JJ**47I3788 + =JJ**43<3788 + =JJ**4C4=#3788 + =JJ**41:t3788 + =JJ**42;	3788 + =JJ**41:y3788 + =JJ**42;9M3788 + =JJ**41:q3788 + =r+   r6   )r   r  )rI   r0   r1   r  ry  r[  s   `     r)   test_vectorz_TestNormGeneral.test_vector  sx    	=$ Q 	A!H	 )5$''+B)+ 	A!H	r+   c                    t        g dg dg| j                        }d dddddt        j                  t        j                   fD ]  }t	        |j
                  d         D cg c]  }t        |d d |f   |	       }}t        t        ||d
      |       t	        |j
                  d         D cg c]  }t        ||d d f   |	       }}t        t        ||d
      |        t        j                  dd| j                        j                  ddd      }|j                  }d ddddt        j                  t        j                   dfD ]  }t        j                  t	        | |      d      D ]  }|\  }	}
|	dk  r|	|z  }	|
dk  r|
|z  }
|	|
k(  rt        t        t        |||
       :t        |||
      }||	|
z   z
  }|	|
k  rEt	        |j
                  |         D cg c]#  }t        |d d  j                  ||      |	      % }}nNt	        |j
                  |         D cg c]-  }t        |d d  j                  ||      j                   |	      / }}t        ||         y c c}w c c}w c c}w c c}w )Nrn   rp   rq   rr   r   r   r6   r   r   rn   rp   rq   ordr  r     rr   r   r  r  )r   r  r%   Infr
  r   r   r   r"  r   r   r   combinationsr   r  taker  )rI   r  orderk	expected0	expected1Bndr  row_axiscol_axisr  k_indexr$  s                 r)   	test_axisz_TestNormGeneral.test_axis-  sc    9i(8B1aBFFRVVG< 	GE;@;LMaa1g51MIMQE :IF;@;LMaa1g51MIMQE :IF		G IIa477+33Aq!<VVB2q"&&266'5A 	5E!..ubS"~qA 5%)"(a<NHa<NHx'!*dA5tLQE5A !Hx$78G(*-217773C-D$F() %)117)C$O $F $F .317773C-D$F() %)117)C)E)E5$Q $F $F'84)5	5 NM,$F$Fs   "I-1I2"(I7'2I<c                 t   t        j                  dd| j                        j                  ddd      }d}d}t	        |d d 	      }t	        |d d d
      }t        t        j                  |      ||j                  d d              d}t        |j                  |k(  |j                  |j                  |d d              d dddddt         j                  t         j                   fD ]  }t        |j                        D ]  }t	        |||	      }t	        |||d
      }t        t        j                  |      ||j                  ||             t        |j                        }d||<   t        |      }t        |j                  |k(  |j                  |j                  |||               d ddddt         j                  t         j                   ddf	D ]  }t        j                   t        |j                        d      D ]  }t	        |||	      }t	        |||d
      }t        t        j                  |      ||j                  ||             t        |j                        }d||d   <   d||d   <   t        |      }t        |j                  |k(  |j                  |j                  |||               y )Nrn   r  r6   rp   rq   rr   zorder {0}, axis = {1}z;Shape mismatch found {0}, expected {1}, order={2}, axis={3}r  T)r  r  keepdims)rK  )rn   rn   rn   r   r   r   r  nuc)r%   r"  r  r   r   r   squeezeformatr   r   r  r
  r   r   r   r   permutations)	rI   r  allclose_err	shape_errr$  foundexpected_shaper  r  s	            r)   test_keepdimsz_TestNormGeneral.test_keepdimsR  sy   IIa477+33Aq!<.Q	 t$/QDtd;

5)8 , 3 3D$ ?	A"~-  ndDI	K B1aBFFRVVG< 
	QE166] 	Qu15QEDA

5 18(4(;(;E1(EG!%agg$%q!!&~!6~5!((neQOQ	Q
	Q B2q"&&266'5%H 	QE++E!&&M1= 
Qu15QEDA

5 18(4(;(;E1(EG!%agg'(qt$'(qt$!&~!6~5!((neQOQ
Q	Qr+   N)rS   rT   rU   rd  rs  rz  r  r  rW   r+   r)   rb  rb    s    F
')R<#5J(Qr+   rb  c                   B    e Zd Zej                  Zd Zd Zd Zd Zd Z	y)_TestNorm2Dc                 f    t        t        | j                  g g| j                              d       y )Nr6   r  )r   r   r   r  rQ   s    r)   test_matrix_emptyz_TestNorm2D.test_matrix_empty  s$    T$**bT*9:C@r+   c                    | j                  g dg dg      }t        j                  d   }d}||z   }|D ]  }|j                  |      }t	        |t        j
                         }| j                  ||       t        |d       t               5 }|j                  t        d       t	        |d      }| j                  ||       t        |d       d d d        t	        |d	      }| j                  ||       t        |d       t	        |d
      }| j                  ||       t        |d       t	        |d      }| j                  ||       t        |d       t	        |t        j
                        }| j                  ||       t        |d       t	        |d      }| j                  ||       t        |d       t	        |d      }| j                  ||       t        j                  j                  |dd        y # 1 sw Y   .xY w)Nr  r7  rf  fdFDr`   rh  r   r_   rn   rp   gLXz?r   r  r  gU&,t=@r   rv  )r   r%   ri  r  r   r   r^  r   r   rj  rk  rx  rl  s	            r)   test_matrix_return_typez#_TestNorm2D.test_matrix_return_type  s   JJ	9-.ll<0
 -/	" %	NI)$Bb266'"BR$C("$ -

>+GH"b\  R(#B,	- b!BR$C(b!BR$N3b"BR$C(b"&&!BR$C(b%BR$C(b%BR$ JJ**2/A1*MK%	N- -s   AG99H	c                 j   | j                  ddgddgg| j                        }t        t        |      d       t        t        |d      d       t        t        |d      d	       t        t        |t              d
       t        t        |t               d       t        t        |d      d	       t        t        |d      d       t        t        |d      d       t        t        |d      d       t        t        t        |d       t        t        t        |d       t        t        t        |d       y )Nrn   rq   r   r   r6   gT"@r  r  rw  g      (@rb   r   rd   rp   gW?"@r   gїʄ?nofror   r   )r   r  r   r   r   r   r  r  s     r)   test_matrix_2x2z_TestNorm2D.test_matrix_2x2  s    JJAA'twwJ7DGY/DENI6DEND1DCL$/DSDM3/DAJ-DBK-DAJ(:;DBK)<=j$73j$2.j$1-r+   c                    d| j                  g dg dg dg| j                        z  }t        t        |      d       t        t        |d      d       t        t        |d      d	       t        t        |t              d
       t        t        |t               d       t        t        |d      d       t        t        |d      d       t        t        |d      d       t        t        |d      d       y )Ng?r|  )r   r   r   )rq   rp   rn   r6   grj=Q0?r  r  gB+pc?g?g333333?rn   r_   r   g?rp   g&.d?r   gܸՠ?)r   r  r   r   r   r  s     r)   test_matrix_3x3z_TestNorm2D.test_matrix_3x3  s    
 JJ	9i8JHIDG%9:DEN,@ADEN,>?DCL#.DSDM3/DAJ,DBK-DAJ(;<DBK)<=r+   c                    | j                  g dg dg| j                        }t        j                  dd| j                        j	                  ddd      }t        t        t        |d	d
       t        t        t        |dd
       t        t        t        ddgd	d        t        t        t        ddgdd        t        t        t        ddgdd        dD ]G  }t        t        t        ||d        t        t        t        ||d       t        t        t        ||d       I t        t        j                  t        |d d       t        t        j                  t        |d d       t        t        t        |d d       y )Nr|  r}  r6   rn   r  rp   rq   rr   r  r   r  testr   rq   rN  )rn   rp   rp   rq   )r   rn   rp   )	r   r  r%   r"  r   r   r  r   	AxisError)rI   r  r  r  s       r)   test_bad_argsz_TestNorm2D.test_bad_args  s    JJ	9-TWWJ=IIa477+33Aq!<
 	j$5!4j$5!4j$At<j$At<j$A=  	>E*dAud;*dAuf=*dAuf=	> 	bllD!T15bllD!T6:j$4;r+   N)
rS   rT   rU   r%   r   r  r  r  r  r  rW   r+   r)   r  r  }  s)     HHEA1Nf. >"<r+   r  c                       e Zd Zy)	_TestNormNr  rW   r+   r)   r  r    r  r+   r  c                       e Zd Zd Zd Zd Zy)TestNorm_NonSystematicc                     t        j                  dt         j                        }t        t	        |d      dd       y )N
   r6   rq   r~  gL)@rp   rv  )r%   r"  
longdoubler/   r   r;  s     r)   test_longdouble_normz+TestNorm_NonSystematic.test_longdouble_norm  s*     IIb.QAqAr+   c                     t        j                  dgt         j                        }t        t	        |d      dd       y )Ni   r6   rq   r~  l        r   rv  )r%   r   int32r/   r   r;  s     r)   test_intminz"TestNorm_NonSystematic.test_intmin  s,     HHhZrxx0QACr+   c                    t        j                  dt         j                        }d|d<   d|d<   d}t        t         j                  j                  |d	      |d
       |j                  t         j                        }t        t         j                  j                  |d	      |d       |j                  t         j                        }t        t         j                  j                  |d	      |d       y )Nrp   r6   y      @      @r   y            @rn   gV;'@rq   r~  r  rv  	   r   )	r%   r   clongdoubler/   r   r   r  
complex128r;  )rI   r  r=  s      r)   test_complex_high_ordz,TestNorm_NonSystematic.test_complex_high_ord  s    HHT0!!		qa 8#rJHHR]]#		qa 8#qIHHR\\"		qa 8#qIr+   N)rS   rT   rU   r  r  r  rW   r+   r)   r  r    s    BD
Jr+   r  c                   (    e Zd Zej                  ZdZy)_TestNormDoubleBase   N)rS   rT   rU   r%   r   r  r_  rW   r+   r)   r  r    s    	B
Cr+   r  c                   (    e Zd Zej                  ZdZy)_TestNormSingleBaser   N)rS   rT   rU   r%   r  r  r_  rW   r+   r)   r  r    s    	B
Cr+   r  c                   (    e Zd Zej                  ZdZy)_TestNormInt64Baser  N)rS   rT   rU   r%   int64r  r_  rW   r+   r)   r  r    s    	B
Cr+   r  c                       e Zd Zy)TestNormDoubleNr  rW   r+   r)   r  r  $  r  r+   r  c                       e Zd Zy)TestNormSingleNr  rW   r+   r)   r  r  (  r  r+   r  c                       e Zd Zy)TestNormInt64Nr  rW   r+   r)   r  r  ,  r  r+   r  c                       e Zd Zd Zd Zy)TestMatrixRankc                    t        dt        t        j                  d                   t        j                  d      }d|d<   t        t        |      d       t        t        t        j                  d            d       t        t        g d      d       t        t        t        j                  d	            d       t        t        dg      d       t        j
                  |t        j                  d      t        j                  d      g      }t        t        |      t        j
                  g d
             t        t        d      d       y )Nrr   r  r   r   rq   rr  r   )rn   r   r   r   rn   )rr   )rq   rr   r   )r   r   r%   rs  r8  r   )rI   Imss      r)   test_matrix_rankzTestMatrixRank.test_matrix_rank2  s    QBFF1I./FF1I&	[^Q'[&!12A6[.2[$0!4[!%q)XXq"&&)RXXe_56[_bhhy&9:[^Q'r+   c                    t        dt        t        j                  d      d             t        dt        t        j                  d      d             t        dt        t        j
                  d      d             t        j                  d      }d|d<   t        d	t        |d             d
|d<   t        dt        |dd             t        d	t        |dd             y )Nrr   Try  rn   rr  r   r  r  rq   g:0yE>g|"BE>)r>   tolg;䡈E>)r   r   r%   rs  r  r8  )rI   r  s     r)   test_symmetric_rankz"TestMatrixRank.test_symmetric_rankF  s    QBFF1I>?QBGGFOtDEQBHHV$4EFFF1I&	QA67&	QA7CDQA7CDr+   N)rS   rT   rU   r  r  rW   r+   r)   r  r  0  s    ((Er+   r  c                  B   t         j                  j                  d      } t        d      D ]r  }| j	                  d      }|d d df   |d d df   z   |d d df<   t        t        |      d       |d d d	f   |d d d
f   z   |d d df<   t        t        |      d       t y )Ni3r  )(   r  sizern   rp   r   r  rr   r   rq   rl   )r%   r  RandomStater
  normalr   r   )rngiXs      r)   test_reduced_rankr  T  s    
))


)C3Z (JJHJ%AqD'AadG#!Q$[^Q'AqD'AadG#!Q$[^Q'(r+   c            	          e Zd Zej                  Zd Zej                  j                  ddgg d      d        Z	d Z
d Zd Zej                  j                  d	g d
      ej                  j                  dg d      ej                  j                  dej                  ej                  ej                  ej                   g      d                      Zy)TestQRc                    t        |      }|j                  }|j                  \  }}t        ||      }t	        j
                  |d      }|j                  |j                  }	}t        |j                  |k(         t        |	j                  |k(         t        t        ||             t        t        |	|             t        |j                  ||fk(         t        |	j                  ||fk(         t        t        ||	      |       t        t        |j                  j                         |      t        j                  |             t        t        j                   |	      |	       t	        j
                  |d      \  }
}t        |
j                  |k(         t        |j                  |k(         t        t        |
|             t        t        ||             t        |
j                  ||fk(         t        |j                  ||fk(         t        t        |
|      |       t        t        |
j                  j                         |
      t        j                  |             t        t        j                   |      |       t	        j
                  |d      }t        |j                  |k(         t        t        ||             t        ||       y )Ncompletemodereducedr  )r#   r.   r   r  r   qrQRr   r$   r   r   r  r}  r%   rs  triu)rI   r0   a_typea_dtyper  r  r  r=  r  r  q1r1r2s                r)   check_qrzTestQR.check_qre  s    a''ww11I ii
+uucee17"#7"#
1f%&
1f%&Aq6!"Aq6!"C1Iq)C
A.q	:BGGAJ* 19-BG#$G#$
2v&'
2v&'QF"#QF"#CBK+C		R0"&&)<BGGBK, YYqs#G#$
2v&'B#r+   r  r  )rq   r   r  ri   c                    t        ||      }t        j                  ||f      }| j                  |       t        j                  j                  |d      \  }}t        |j                  t        j                         t        |j                  t        j                         t        |j                  ||f       t        |j                  |f       y )Nrawr  )
r  r%   r   r  r   r  r   r.   r   r   )rI   r  r  r  r0   htaus          r)   test_qr_emptyzTestQR.test_qr_empty  s     1IHHaVaae,3QWWbii(SYY		*QWWq!f%SYY%r+   c                    | j                  ddgddgddggt        j                        }t        j                  |d	      \  }}t        |j                  t        j                  k(         t        |j                  t        j                  k(         t        |j                  d
k(         t        |j                  dk(         t        j                  |j                  d	      \  }}t        |j                  t        j                  k(         t        |j                  t        j                  k(         t        |j                  dk(         t        |j                  dk(         y )Nrn   rp   rq   rr   r   r   r6   r  r  r  r  r   )	r   r%   r   r   r  r   r.   r   r  )rI   r0   r  r  s       r)   test_mode_rawzTestQR.test_mode_raw  s     JJAAA/ryyJA 15)3299$%		RYY&'6!"		T!"133U+3299$%		RYY&'6!"		T!"r+   c                    | j                  ddgddgg      }| j                  ddgddgddgg      }dD ]a  }|j                  |      }|j                  |      }| j                  |       | j                  |       | j                  |j                         c dD ]m  }dd|j                  |      z  z   }dd|j                  |      z  z   }| j                  |       | j                  |       | j                  |j                         o y )	Nrn   rp   rq   rr   r   r   fd              ?)r   r  r  r  )rI   r0   r1   r  m1m2s         r)   test_mode_all_but_economicz!TestQR.test_mode_all_but_economic  s    JJAA'(JJAAA/0 	 B"B"BMM"MM"MM"$$	   	 BR!((2,&&BR!((2,&&BMM"MM"MM"$$	 r+   c           	         t        |      }|j                  }|j                  dd  \  }}t        ||      }t	        j
                  |d      \  }}t        |j                  |k(         t        |j                  |k(         t        t        ||             t        t        ||             t        |j                  dd  ||fk(         t        |j                  dd  ||fk(         t        t        ||      |       t        j                  |j                  d         }	t        j                  |	|j                  d d |j                  d   fdz  z         }
t        t        t        |dd      j                         |      |
       t        t        j                  |dd d d d f         |       t	        j
                  |d      \  }}t        |j                  |k(         t        |j                  |k(         t        t        ||             t        t        ||             t        |j                  dd  ||fk(         t        |j                  dd  ||fk(         t        t        ||      |       t        j                  |j                  d         }	t        j                  |	|j                  d d |j                  d   fdz  z         }
t        t        t        |dd      j                         |      |
       t        t        j                  |dd d d d f         |       t	        j
                  |d      }t        |j                  |k(         t        t        ||             t        ||       y )	Nr   r  r  r   rp   .r  r  )r#   r.   r   r  r   r  r   r$   r   r
   r%   r	   r  r   r}  r  )rI   r0   r  r  r  r  r  qr  I_matstack_I_matr  r  r  s                 r)   check_qr_stackedzTestQR.check_qr_stacked  s    a''wwrs|11I yy,17"#7"#
1f%&
1f%&A&'A&'F1aL!,AGGBK(ooe~a'779F8Ar2#6#;#;#=qA;OBGGAc1aiL115 19-BG#$G#$
2v&'
2v&'!Q'(!Q'(F2rNA.BHHRL)ooe""(99;F8BB#7#<#<#>C'	)BGGBsAqyM2B7 YYqs#G#$
2v&'B#r+   r  ))rq   rr   )rr   rq   rr  r  r  
outer_size)r  r  )rp   rq   rr   r  c                    t         j                  j                  ||z         j                  |      }t         j                  j                  ||z         j                  |      }| j	                  |       | j	                  |d|z  z          y )Nr  r  )r%   r  r  r  r  )rI   r  r  r  r  r  s         r)   test_stacked_inputszTestQR.test_stacked_inputs  sv     II*t"34;;B?II*t"34;;B?a a#a%i(r+   N)rS   rT   rU   r%   r   r  r   r   r+  r  r  r  r  r   r   r   r   r  rW   r+   r)   r  r  a  s    HHE%$P [[c3Z * 

&

&#, "+$Z [[V &  [[\ ,! "[[T
		299


BJJ$  !)!")r+   r  c                       e Zd Zej                  j                  dg d      ej                  j                  dej                  ej                  ej                  ej                  f      d               Zd Zy)TestCholeskyr   )r   r  rq   rq   )2   r	  )rq   r  r  r.   c                 l   t         j                  j                  d       t        j                  j                  | }t        j                  |t         j
                        r"|dt        j                  j                  | z  z   }t        t        t        |                  }d|dd  t        j                  |j                  |      j                         |      }t        j                  ||      }t         j                  j                  |      }t        j                  ||j                  |      j                               }t        j                         5  d|j                   d   z  t        j"                  |      j$                  z  }d d d        t'        ||| d| d	| d	| 
       y # 1 sw Y   $xY w)Nrn   r  )r   r   r   r6   i  r    
)atolrK  )r%   r  r  randnr  complexfloatingr   r
  r  r
   r~  r}  r   r   cholesky_no_nep50_warningr   finfoepsr   )rI   r   r.   r0   tr  r1   r  s           r)   test_basic_propertyz TestCholesky.test_basic_property  sE    			qIIOOU#== 2 23Bryy...As5z"#"#IIakk!n))+Q/JJq&IIq!IIaQ,,./!!# 	:#bhhuo&9&99D	:14E7!E7"QCr!1MN	: 	:s   3F**F3c                 "    G d dt         j                        }t        j                  dt         j                        j	                  |      }t        j                  |      }t        |j                  |j                         t        |j                  j                  t         j                  u        t        t        |t         j                               t        j                  dt         j                        j	                  |      }t        j                  |      }t        |j                  |j                         t        |j                  j                  t         j                  u        t        t        |t         j                               y )Nc                       e Zd Zy)/TestCholesky.test_0_size.<locals>.ArraySubclassNr  rW   r+   r)   r   r     r!  r+   r   r7  r6   )rn   r   r   )r%   r&   r8  r9  r   r   r  r   r   r   r.   r#   r:  r$   r;  r<  s       r)   r&  zTestCholesky.test_0_size  s    	BJJ 	HHYbgg.33MBooa QWWcii(		"**,-
3

+,HHYbll388Gooa QWWcii(		",,./
3

+,r+   N)rS   rT   rU   r   r   r+  r%   r  r:  r;  r  r  r&  rW   r+   r)   r  r    si     [[@ [["**bjj",,FOO(-r+   r  c                     t         j                  dk(  rd} nd} t        j                  t        j                  fD ]  }t        j
                  d|      }|j                  |       }|j                  d      j                         }t        |j                  j                  d       t        j                  t        j                  t        j                  fD ].  } ||      }t        | ||             t        | ||             0  y )Nlittle<rP   rr   r6   rh  =)sys	byteorderr%   r  r:  rs  newbyteorderbyteswapr   r.   r   r/  r  r  r   )nativedttr  n_arrsw_arrroutiner=  s          r)   test_byteorder_checkr&  0  s    
}} 

BJJ' 5ffQc"  (!!#&//1SYY((#.

FJJ< 	5G#,CsGEN3sGFO4	55r+   r$  r%  c                  8   t        j                  ddgddgg      } t        j                  ddgddgg      }t        j                  g d      dd d   }| |d<   ||d<   t        t         j                  j
                  t         j                  j                  |       y )Nrn   rp   rq   rr   )rr   rr   rp   rp   .ri   )r%   r   r8  r   r   r   r/  )
invertiblenon_invertibler   s      r)    test_generalized_raise_multiloopr*  E  s    
 Aq6Aq6*+JXX1v1v./N
qt!t$AAcFAdG"))'':r+   c                     d} 	 t        j                         }dk(  rt        j                  d       t        j                  d       dd l}|j                  |j                  d       	 t        j                  j                  j                          	 t        j$                  dgg      }t        j                  j                  j'                  ddd|d||dd	       t        j                   t         j"                         y t        j*                         \  }}t        j,                  |      | k7  rt	        j
                  d       y y # t        t        f$ r t	        j
                  d       Y Rw xY w# t        $ r Y t        $ r' t        j                   t         j"                         Y w xY w# t        $ r-}dt)        |      v rt        j                   |        Y d }~d }~ww xY w)	N   zNot POSIX or fork failed.r   rn   ri   r_   zDORGQR parameter number 5zNumpy xerbla not linked in.)osforkOSErrorAttributeErrorr   skipcloseresource	setrlimitRLIMIT_COREr%   r   lapack_litexerblar  r   _exit	EX_CONFIGr   dorgqrrE   waitWEXITSTATUS)	XERBLA_OKpidr3  r0   r   statuss         r)   test_xerbla_overrider@  T  sq   
 I1ggi
 ax

8//8	#II!!((*
	$2$ AII!!((1a1a 	 ggiV>>&!Y.KK56 /I ^$ 1/01  	 	#HHR\\"	#  	$*c!f4 #		$sB   E ((E. AF+ $E+*E+.	F(9+F('F(+	G!4"GG!zCannot start subprocessc                  ,   ddg} t        j                  d      }| D ]v  }|j                  dd|      }t        j                  t
        j                  d|g       |j                  dd|      }t        j                  t
        j                  d|g       x y )	NzPyQt5.QtWidgetsIPythonz
    import sys
    {before}
    try:
        import {bad_lib}
    except ImportError:
        sys.exit(0)
    {after}
    x = np.ones(2, dtype=np.float32)
    sys.exit(0 if np.allclose(x.dot(x), 2.0) else 1)
    zimport numpy as np )beforeafterbad_libz-c)rE  rD  rF  )textwrapdedentr  
subprocess
check_callr  
executable)bad_libstemplaterF  codes       r)   test_sdot_bug_8577rO    s     "9-H 
  
	H  <&:"'.  0s~~tT:; %9"'.  0s~~tT:;<r+   c                   N    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y)TestMultiDotc           
         t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t        t        |||g      |j	                  |      j	                  |             t        t        |||g      t        j                  |t        j                  ||                   y Nr   rp   rp   r   r%   r  r   r   r   )rI   r  r  Cs       r)   (test_basic_function_with_three_argumentsz5TestMultiDot.test_basic_function_with_three_arguments  s     IIV$IIV$IIV$Iq!Qi0!%%(,,q/BIq!Qi0"&&BFF1aL2IJr+   c                 "   t         j                  j                  d      }t         j                  j                  d      }t        t        ||g      |j	                  |             t        t        ||g      t        j                  ||             y rS  rV  )rI   r  r  s      r)   &test_basic_function_with_two_argumentsz3TestMultiDot.test_basic_function_with_two_arguments  sb    IIV$IIV$Iq!f-quuQx8Iq!f-rvva|<r+   c                    t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t        t        ||||g      |j	                  |      j	                  |      j	                  |             y )NrT  rU  rp   rn   rV  )rI   r  r  rW  Ds        r)   9test_basic_function_with_dynamic_programming_optimizationzFTestMultiDot.test_basic_function_with_dynamic_programming_optimization  s     IIV$IIV$IIV$IIV$Iq!Ql3QUU1X\\!_5H5H5KLr+   c                 B   t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t        t        ||||g      j                  d       y )Nrp   rU  rT  r  r  r%   r  r   r   r   )rI   A1dr  rW  r]  s        r)   test_vector_as_first_argumentz*TestMultiDot.test_vector_as_first_argument  sq    iiq!IIV$IIV$IIV$ 	YQ1~.44d;r+   c                 B   t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t        t        ||||g      j                  d       y )NrT  rU  rp   )r   r`  )rI   r  r  rW  D1ds        r)   test_vector_as_last_argumentz)TestMultiDot.test_vector_as_last_argument  sq    IIV$IIV$IIV$iiq! 	Y1a~.44d;r+   c                 B   t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t        t        ||||g      j                  d       y )Nrp   rU  rT  rW   r`  )rI   ra  r  rW  rd  s        r)   &test_vector_as_first_and_last_argumentz3TestMultiDot.test_vector_as_first_and_last_argument  sr    iiq!IIV$IIV$iiq! 	YQ3/066;r+   c           
         t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t        j                  d      }t        |||g|      }||u sJ t	        ||j                  |      j                  |             t	        |t        j
                  |t        j
                  ||                   y )NrT  rU  r'   r%   r  r8  r   r   r   )rI   r  r  rW  r'   rets         r)   test_three_arguments_and_outz)TestMultiDot.test_three_arguments_and_out  s     IIV$IIV$IIV$hhvAq	s+czzCqa1C266!Q<!89r+   c                 J   t         j                  j                  d      }t         j                  j                  d      }t        j                  d      }t        ||g|      }||u sJ t	        ||j                  |             t	        |t        j
                  ||             y )NrT  rU  )r   r   ri  rj  )rI   r  r  r'   rk  s        r)   test_two_arguments_and_outz'TestMultiDot.test_two_arguments_and_out  sz    IIV$IIV$hhvAC(czzCq*C1.r+   c                    t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }t        j                  d      }t        ||||g|      }||u sJ t	        ||j                  |      j                  |      j                  |             y )NrT  rU  r\  )r   rn   ri  rj  )rI   r  r  rW  r]  r'   rk  s          r)   -test_dynamic_programming_optimization_and_outz:TestMultiDot.test_dynamic_programming_optimization_and_out  s     IIV$IIV$IIV$IIV$hhvAq!#.czzCqa!4!4Q!78r+   c           	      .   t         j                  j                  d      t         j                  j                  d      t         j                  j                  d      t         j                  j                  d      t         j                  j                  d      t         j                  j                  d      g}t        j                  g dg dg d	g d
g dg dg      }t        j                  g dg dg dg dg dg dgt              }|dz  }t	        |d      \  }}t        t        j                  |d ddd f         t        j                  |d ddd f                t        t        j                  |      t        j                  |             y )N)   #   )rs     )rt  r   )r   r  )r     )ru  r  )r  g     @g     þ@g    O@g    1@g    @)r  r  g     @g     @g     ջ@g     @)r  r  r  g     p@g     @g     @)r  r  r  r  g     @@g     X@)r  r  r  r  r  g     @)r  r  r  r  r  r  )r   rn   rn   rq   rq   rq   )r   r   rp   rq   rq   rq   )r   r   r   rq   rq   rq   )r   r   r   r   rr   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r6   rn   T)return_costsr   )r%   r  r   intr   r   r  )rI   arrays
m_expected
s_expectedr   r  s         r)   test_dynamic_programming_logicz+TestMultiDot.test_dynamic_programming_logic  sC    ))""8,))""8,))""7+))""7+))""8,))""8,. XXIIIIIIK L
 XX6666668
 @CD
 	a
,V$G1 	BGGAcrc12gJ/GGJssABw$78	:BGGAJ
(;<r+   c                     t        t        t        g        t        t        t        t        j                  j	                  d      g       y )Nr  )r   r  r   r%   r  rQ   s    r)   test_too_few_input_arraysz&TestMultiDot.test_too_few_input_arrays%  s,    j)R0j)bii.>.>v.F-GHr+   N)rS   rT   rU   rX  rZ  r^  rb  re  rg  rl  rn  rp  r{  r}  rW   r+   r)   rQ  rQ    s<    K=M<<<:/
9=<Ir+   rQ  c                   2   e Zd Zej                  j                  d ej                  d      df ej                  d      dfg      d        Zej                  j                  ddd	g      d
        Z	ej                  j                  dddg      d        Z
d Zy)TestTensorinvzarr, indrr   r   rl   rp   rp   rq   rq   rp   rn   c                 z    t        t              5  t        j                  ||       d d d        y # 1 sw Y   y xY w)Nind)r   r   r   	tensorinv)rI   r  r  s      r)   test_non_square_handlingz&TestTensorinv.test_non_square_handling,  s1    
 ;' 	+Sc*	+ 	+ 	+s   1:z
shape, ind)rr   r   rl   rq   rp   )   rl   rq   rn   c                     t        j                  d      }||_        t        j                  ||      }|j                  |d  |j                  d | z   }|j                  }t        ||       y )Nr  r0   r  )r%   rs  r   r   r  r   )rI   r   r  r0   ainvr$  actuals          r)   test_tensorinv_shapez"TestTensorinv.test_tensorinv_shape4  s[     FF2J!-7734=1774C=0VX&r+   r  r   r   c                     t        j                  d      }d|_        t        t              5  t        j                  ||       d d d        y # 1 sw Y   y xY w)Nr  r  r  )r%   rs  r   r   r  r   r  )rI   r  r0   s      r)   test_tensorinv_ind_limitz&TestTensorinv.test_tensorinv_ind_limitA  sE     FF2J:& 	+qc*	+ 	+ 	+s   AAc                    t        j                  d      }d|_        t        j                  |d      }t        j
                  d      }t        t        j                  ||d      t         j                  j                  ||             y )Nr  r  rn   r  )	r%   rs  r   r   r  r  r   	tensordottensorsolve)rI   r0   r  r1   s       r)   test_tensorinv_resultz#TestTensorinv.test_tensorinv_resultJ  s]    FF2Jq)GGBKT1a0"))2G2G12MNr+   N)rS   rT   rU   r   r   r+  r%   r  r  r  r  r  rW   r+   r)   r  r  *  s    [[Z		"		Q*
 +	+ [[\,
 
'
' [[U	2%
 ++Or+   r  c                       e Zd Zej                  j                  d ej                  d      df ej                  d      dfg      d        Zej                  j                  dg d      d	        Z	y)
TestTensorsolveza, axesr  Nr  )r   rp   c                     t        t              5  t        j                  |j                  d d       }t        j                  |||       d d d        y # 1 sw Y   y xY wNrp   r{  )r   r   r%   r  r   r   r  )rI   r0   r|  r1   s       r)   r  z(TestTensorsolve.test_non_square_handlingU  sK    
 ;' 	0$Aq!$/	0 	0 	0s   ;AAr   ))rp   rq   r   )rq   rr   rr   rq   )r   rq   rq   r   c           	      *   t        j                  j                  | }t        j                  |j                  d d       }t         j
                  j                  ||      }t        t        j                  ||t        |j                              |       y r  )
r%   r  r  r  r   r   r  r   r  r  )rI   r   r0   r1   r   s        r)   test_tensorsolve_resultz'TestTensorsolve.test_tensorsolve_result^  sc     IIOOU#GGAGGBQK II!!!Q'QAGG=qAr+   )
rS   rT   rU   r   r   r+  r%   r  r  r  rW   r+   r)   r  r  S  sz    [[Y		%		V$)
 0	0
 [[W/BBr+   r  c                      t        j                  ddgddggd      } t        t        d      5  t	        j
                  |        d d d        y # 1 sw Y   y xY w)Nrn   r   rp   r   float16r6   zunsupported in linalg)r%   r   r   r  r   r  )r  s    r)   test_unsupported_commontyper  h  sK    
((QGaV$I
6C	Y(?	@   s   AAz,Bad memory reports lead to OOM in ci testingc                      d} t        j                  d| gt         j                        }t        j                  ddgt         j                        }d|d<   t        j                  ||      }t        |d   d       y )N        rn   r6   )r   r   )r%   r8  r  r  r   r   )r  r0   r1   r  s       r)   test_blas64_dotr  s  s]    A
!Qrzz*A
Abjj)AAdG
q!A4!r+   z*Numpy not compiled with 64-bit BLAS/LAPACKc            
         t         j                  } t         j                  j                  j                  }d}d}|}t        j
                  ddg|       }t        j
                  dg|       }t        j
                  dg|       } |||||||dd      }t        |d   d       t        |d   |       t        |d   |       t        |j                               }	t        d	|	cxk  xr
 d
k         y c        y )Nl       rn   r6   r   r   infor  r  r  l        )
r%   r:  r   r6  dgeqrfr8  r   rw  itemr   )
r.   lapack_routiner  r  ldar0   workr  resultslworks
             r)   !test_blas64_geqrf_lwork_smoketestr  }  s     JJEYY**11NAA
C 	!Qu%A88QCu%D
((A3e
$C Q1c3b!<G!$q!q! 		EEE!E!"!"r+   )r   r  )__doc__r-  r  r   r   rG  rI  r   numpyr%   r   r   r   r   r   r   r	   r
   
numpy.corer   r   r   r   r   r   numpy.linalgr   r   r   r   r   numpy.linalg.linalgr   numpy.testingr   r   r   r   r   r   r   r   r   r    numpy.linalg.lapack_liteImportErrorr*   r/   r7   r9   r;   rY   rC   r]   r  r  r   r   r  r   r   r   r   r   r   r   r   r   r   r  r  r  r  r-  r2  r@  rH  rP  rW  rb  rk  rp  rw  r  r  r  r  r  r  r  r  r  r  r  r   r+  r.   r  r,  r2  rI  rQ  rY  rb  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r*  r*  r@  r   rO  rQ  r  r  r  r1  r  r  r  )r  s   0r)   <module>r     s?   
 
       P P P  4 4  P P =  
	#* . 95
7
, ,, 		t 
 8xr2hR)8b"XV,. xr2hR)8b"XV,. zr2hR)8lL1@B yw'&&)9:'Jgw'w79 yw'&&)9:'Jgw'w79 {w'&&)9:'J02JKSZ[] urxxf-rxxF+J  uyy~~a#yy~~a " uyy~~a#yy~~a " zAA1v;   
  F ;~lL1@b"XV,. ~r2hR2r(36B\02 ~lL1@b"XV,. ~r2hR2r(36B\02 /1LMU\^gw'w79 g&'(:Wg<NOW^`0@B /1LMU\^gw'w79 g&'(:Wg<NOW^`0@B  /1LMU\^w(66*:;7KM  g&'(:Wg<NOW^`w(66*:VV<LMU\]_ vyy~~a$yy~~a " uyy~~a#yy~~a " uyy~~a#yy~~a " uyy~~a#yy~~a J  uyy~~a#yy~~a J e6! 6
 6r ;yr2hR)8 yr2hR)8 zr6lVQK0@ zr6lVQK0@ xrxxf-J  {AA r2hR)* }yy~~a#/! 
 @8 	 	" "-'` 		 1 1.2> 22n 22 2	Fn 	F	I 	I
+> 
+&$+%'F +73
 73t/#%D /0h 0.)')H )-, -66#%D 6!+h !+H5 5,#%D ,$h $ ,)+G ,&(, +1$&E +1\@)y @)F
0$'/2
0	y 	0*,H 0	* 	##%D #*'1h '1T3%'> 3<1+
 1+h 5HIIJS: S: KS:l?)+G ?3- 3-lB%'C B.8+ 8+v
= 
=[Q} [Q|u<- u<p	- 	J J8- 
- 
 
	Y 3 		Y 3 		I1 	!E !EH
(^) ^)B+- +-\5* G$BC; D;.7b G$=><  ?<D~I ~IB&O &ORB B* GH I |#F  H#H#KC  	 			V  Js   <d d%
d"!d"