
    CEjnR                       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	Z
ddl	mZmZmZmZmZmZmZmZmZmZmZmZmZ ddl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/m0Z0 	 ddl1Z	d
 Z3e*Z4ddZ*d Z5d Z6d Z7h dZ8 G d d      Z9d Z:e
jv                  jy                  d       g Z=e= e:d e9d eddgddgge       eddge             e9d eddgddgge       eddge             e9d eddgddgge       eg dg dge             e9d ed d!gd"d#gge       ed$d ge             e9d% ed d!gd"d#gge       ed$d ge             e9d& ed d!gd"d#gge       eg d'g d(ge             e9d) e
j|                  d*e       e
j|                  d+e      d,h-       e9d.e
jv                  j                  d/d/      e
jv                  j                  d/             e9d0e
jv                  j                  d1d1      e
jv                  j                  d1             e9d2d1d3gd4d5ggd3d1g      g
      z  Z=e= e:d6 e9d7 eg d8g dge       eddge             e9d9 eddgddgd:d;gge       eg d<e             e9d= eg d8g dge       eddge             e9d> eddgddgd:d;gge       eg d<e             e9d? eg d@g dAge       ed$d ge             e9dB edCdDgdEdFgdGdHgge       eg dIe             e9dJ eg d@g dAge       ed$d ge             e9dK edCdDgdEdFgdGdHgge       eg dIe             e9dL eg d@g dAge       ed$d gdMdNgge             e9dO edCdDgdEdFgdGdHgge       ed$d gdMdNgdMdNgge             e9dPe
jv                  j                  d/dQ      e
jv                  j                  d/             e9dRe
jv                  j                  d1dS      e
jv                  j                  d1             e9dTe
jv                  j                  dSd1      e
jv                  j                  dS             e9dUe
jv                  j                  dd5      e
jv                  j                  d      d,h-       e9dVe
jv                  j                  d5d      e
jv                  j                  d5      d,h-      g      z  Z=e= e:dW e9dX eddgddgge      d       e9dY eddgddgge      d       e9dZ edd!gd[d1gge      d       e9d\ edd!gd[d1gge      d       e9d] e
j|                  d*e      dd,h-       e9d^d1d3gd3d1ggd       e9d_ eddgddgg      d       e9d`e
jv                  j                  d1d1      d      g      z  Z=da Z@e= e@       z  Z=db ZAdc ZBe= eB       z  Z= G dd de      ZC G df dgeC      ZD G dh dieC      ZE G dj dkeC      ZF G dl dmeC      ZG G dn doeC      ZH G dp dqeC      ZIdr ZJ G ds dteDeG      ZK G du dveK      ZL G dw dxeDeG      ZM G dy dzeM      ZN G d{ d|eDeG      ZO G d} d~eO      ZP G d deDeG      ZQ G d deQ      ZR G d d      ZS G d deDeG      ZT G d deTeS      ZU G d deFeI      ZV G d deVeS      ZW G d deDeG      ZX G d deX      ZY G d deDeEeGeH      ZZ G d deZ      Z[ G d deFeI      Z\ G d de\      Z]d Z^ G d deDeG      Z_ G d de_      Z` G d deDeE      Za G d dea      Zbej                  j                  ddD  cg c]  }  e
j                  |        c}        G d d             Zf G d deFeI      Zg G d d      Zh G d deFeI      Zi G d d      Zj G d d      Zk G d dek      Zl G d dek      Zm G d demel      Zn G d d      Zo G d dek      Zp G d dek      Zq G d dek      Zr G d denep      Zs G d deneq      Zt G d dener      Zu G dĄ dū      ZvdƄ Zw G dǄ dȫ      Zx G dɄ dʫ      Zy G d˄ d̫      Zzd̈́ Z{ej                  j                  e&dάϫ      dЄ        Z}ej                  j                  dѫ      ej                  j                   ej                         d1kD  dҬϫ      ej                  j                  e'dӬϫ      dԄ                      Zej                  j                  e&dլϫ      ej                  j                  dք               Z G dׄ dث      Z G dل dګ      Z G dۄ dܫ      Zd݄ Zej                  j                  dެϫ      d߄        Zej                  j                  e% dϫ      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy# e2$ r Y 	>w xY wc c} w )z# Test functions for linalg module

    N)arrayasarray
atleast_2dcdoublecsingledotdoubleidentityinflinalgmatmulmultiplysingle)swapaxes)	AxisError)LinAlgErrormatrix_powermatrix_rank	multi_dotnorm)_multi_dot_matrix_chain_order)
HAS_LAPACK64IS_WASMNOGIL_BUILDassert_assert_allcloseassert_almost_equalassert_array_equalassert_equalassert_raisesassert_raises_regex)run_subprocessc                     t        |       t        |t        j                        rt        |      u S t        j                  u S N)type
isinstancenpndarray)outin_s     l/var/www/html/eeg-assistent/strom-signal/venv/lib/python3.12/site-packages/numpy/linalg/tests/test_linalg.pyconsistent_subclassr,   9   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   C   s=    qz 11  Aq8'8R8r-   c                 \    t         t         t        t        t        t         t        t        i|    S r$   )r   r	   r   r   r0   s    r+   get_real_dtyper9   K   s&    FFFVWf..35 5r-   c                 \    t         t        t        t        t        t        t        t        i|    S r$   )r   r   r	   r   r8   s    r+   get_complex_dtyper;   P   s&    GVWWgw0057 7r-   c                 "    | t         t        fv ryy)Ngh㈵>gdy=)r   r   r8   s    r+   get_rtolr=   U   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namer2   r3   	frozensettags)selfrH   r2   r3   rJ   s        r+   __init__zLinalgCase.__init__e   s3    
 	
4%&	dO	r-   c                 V     || j                   | j                  | j                         y)zN
        Run the function `do` on this test case, expanding arguments
        rJ   N)r2   r3   rJ   )rK   dos     r+   checkzLinalgCase.checkp   s     	466466		*r-   c                 "    d| j                    dS )Nz<LinalgCase: >)rH   rK   s    r+   __repr__zLinalgCase.__repr__v   s    tyyk++r-   N)__name__
__module____qualname__setrL   rP   rT    r-   r+   rE   rE   d   s    (+ 	$+,r-   rE   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_tagsrJ   )tagcasescases      r+   	apply_tagr_   z   s;    
 (?)M)? &II%	&Lr-     r>   r         ?       @      @      @r8   r	   double_2)rb   ra   rd   )rc   rd         @r         ?       @y       @      @y      @      @y      @      @       @      ?r   	cdouble_2)rh   rg   y      ?      @)y      ?       y      ?      y      ?      0x0r   r   r   rC   rN   8x8   1x1   nonarray         rA   single_nsq_1)ra   rb   rc   single_nsq_2g      @rf   )rb   ra   rc   double_nsq_1double_nsq_2csingle_nsq_1)      ?      ?       @       @      @      )y      @      y      @      "@y      @       @csingle_nsq_2rz   r{   r|   y      @      "y      @      y      @       @)rh   rg   r|   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 ]k  }t        |j                  t        j                        s)t        j
                  |j                  d|j                  z  d|j                  z  g      }|j                  d }nb|j                  j                  dk(  r|j                  }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 }n|j                  j                  dk(  r`t        j
                  |j                  gdz  dz  |j                  d
   z        j                  d	|j                  j                  dd  z         }nLt        j
                  |j                  gdz  dz        j                  d	|j                  j                  z         }t        |j                  dz   |||j                  dhz        }| j                  |       n | S )Nrr   rs   rp         _tile3rB   rN   rs   rr   _tile213)CASESr&   r2   r'   r(   r   r3   ndimrE   rH   rJ   appendreshapeshape)	new_casesr^   r2   r3   new_cases        r+   _make_generalized_casesr     s   I #$&&"**-HHdffa$&&j!dff*5666>AVV[[AA$&&!dff*a$&&j9:Adii(2Aq#'99#>@"HHdffX\A%&..v/DE66>AVV[[A$&&A)AGGBK7876DFFLL$556  $&&A)*226DFFLL3HIAdii*4a#'99#>@"3#6 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 ]J  }t        | j                  |      D cg c]  \  }}t        ||z         }}}t        d |D              }t        j                  || j                        }|j                  t        j                        j                  d       ||   }| |d<   |j                  | j                        }t!        t        j"                  || k(               |ddj%                  d |D              z   f | j                  dk\  r]| j                  d   dk(  rKt'        | j(                        }d|d<   t        j*                  j,                  j/                  | |      }|df | j                  dk\  r]| j                  d   dk(  rKt'        | j(                        }d|d<   t        j*                  j,                  j/                  | |      }|df | j                  dk\  s| j                  dd dk(  st'        | j(                        }d|d<   d|d<   t        j*                  j,                  j/                  | |      }|df M yc c}}w w)z<
    Generate cartesian product of strides for all axes
    nopNrp   )rp   rs   r   rp   r   rr   )rp   r   c              3   6   K   | ]  }t        d d |        y wr$   )slice).0repeats     r+   	<genexpr>z$_stride_comb_iter.<locals>.<genexpr>U  s     GVuT40Gs   r8   l   >[= .stride__c              3   $   K   | ]  }|d  
 yw)+NrY   )r   js     r+   r   z$_stride_comb_iter.<locals>.<genexpr>^  s     &AA!Ax&As   r   )stridesstride_xxx_0stride_xxx_0_xrp   rp   stride_xxx_0_0)r&   r'   r(   r   	itertoolsproducttuplezipr   absemptyr0   viewuint32fill	__class__r   alljoinlistr   libstride_tricks
as_strided)	x
stride_setrepeatsr2   r3   	new_shapeslicesxiss	            r+   _stride_comb_iterr   C  sc    
 a$h!&&JJrNvvz#
2vvz 
2$$eJ&78 ',/,ABDAqSQZB	BGwGG XXiqww/
		
+Z3WWQ[[!rQw )chh&A&AAAAA 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&&&;'Bs    BKK1F0K#K7AK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?   rN   )r   r   r2   r3   rE   rH   rJ   r   )r   r^   r2   a_labelr3   b_labelr   s          r+   _make_strided_casesr   s  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_CASESrJ   rP   rO   	Exception	traceback
format_excAssertionError)rK   requireexcluder^   emsgs         r+   check_caseszLinalgTestCase.check_cases  s    
 OO 	1Dyy7"g-yy7"1

477#	1  1&thd3y++--$S)q01s   A	B	)BB	N)rU   rV   rW   r   r   rX   r   rY   r-   r+   r   r     s    J"%% 1r-   r   c                       e Zd Zd Zd Zy)LinalgSquareTestCasec                 0    | j                  dhddh       y )Nr>   rB   rC   r   r   r   rS   s    r+   test_sq_casesz"LinalgSquareTestCase.test_sq_cases  s!    ("/!: 	 	<r-   c                 0    | j                  ddhdh       y )Nr>   rC   rB   r   r   rS   s    r+   test_empty_sq_casesz(LinalgSquareTestCase.test_empty_sq_cases  s!    (H!5"/ 	 	2r-   N)rU   rV   rW   r   r   rY   r-   r+   r   r         <2r-   r   c                       e Zd Zd Zd Zy)LinalgNonsquareTestCasec                 0    | j                  dhddh       y )NrA   rB   rC   r   r   rS   s    r+   test_nonsq_casesz(LinalgNonsquareTestCase.test_nonsq_cases  !    +"/!: 	 	<r-   c                 0    | j                  ddhdh       y )NrA   rC   rB   r   r   rS   s    r+   test_empty_nonsq_casesz.LinalgNonsquareTestCase.test_empty_nonsq_cases  !    +x!8"/ 	 	2r-   N)rU   rV   rW   r   r   rY   r-   r+   r   r     r   r-   r   c                       e Zd Zd Zd Zy)HermitianTestCasec                 0    | j                  dhddh       y )Nr@   rB   rC   r   r   rS   s    r+   test_herm_casesz!HermitianTestCase.test_herm_cases  r   r-   c                 0    | j                  ddhdh       y )Nr@   rC   rB   r   r   rS   s    r+   test_empty_herm_casesz'HermitianTestCase.test_empty_herm_cases  r   r-   N)rU   rV   rW   r   r   rY   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 )NrB   r>   rC   r   r   rS   s    r+   test_generalized_sq_casesz9LinalgGeneralizedSquareTestCase.test_generalized_sq_cases  s!    -!:"* 	 	-r-   c                 ,    | j                  h d       y )N>   r>   rB   rC   r   r   rS   s    r+   test_generalized_empty_sq_casesz?LinalgGeneralizedSquareTestCase.test_generalized_empty_sq_cases  s    !DEr-   N)rU   rV   rW   pytestmarkslowr   r   rY   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 )NrB   rA   rC   r   r   rS   s    r+   test_generalized_nonsq_casesz?LinalgGeneralizedNonsquareTestCase.test_generalized_nonsq_cases  !    -!="* 	 	-r-   c                 ,    | j                  h d       y )N>   rA   rB   rC   r   r   rS   s    r+   "test_generalized_empty_nonsq_caseszELinalgGeneralizedNonsquareTestCase.test_generalized_empty_nonsq_cases  s    !GHr-   N)rU   rV   rW   r   r   r   r  r  rY   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 )NrB   r@   rC   r   r   rS   s    r+   test_generalized_herm_casesz8HermitianGeneralizedTestCase.test_generalized_herm_cases  r  r-   c                 0    | j                  h ddh       y )N>   r@   rB   rC   noner   r   rS   s    r+   !test_generalized_empty_herm_casesz>HermitianGeneralizedTestCase.test_generalized_empty_herm_cases  s    !G"( 	 	+r-   N)rU   rV   rW   r   r   r   r	  r  rY   r-   r+   r  r    s<    [[- - [[+ +r-   r  c                     t        |       } | j                  dk\  rHt        j                  | j                  | j
                        }t        | j                  d         |d<   |S t        | j                  d         S )Nrs   r8   r   .r   )r   r   r'   r   r   r0   r
   )r2   rs     r+   identity_like_generalizedr    s\    
Avv{HHQWWAGG,!''"+&#
##r-   c                       e Zd Zd Zy)
SolveCasesc                 H   t        j                  ||      }t        j                  |      j                  dk(  r=t        ||d         d   }t        t        j                  ||j                        |       nt        ||      }t        ||       t        t        ||             y )Nrp   ).N.r   )r   solver'   r   r   r   r   broadcast_tor   r   r,   )rK   r2   r3   rJ   r   adotxs         r+   rO   zSolveCases.do  s}    LLA88A;q  1a	l+F3E5;; ?G1aLE5)#Aq)*r-   NrU   rV   rW   rO   rY   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)	TestSolver0   c                     t        j                  ddgddgg|      }t        t        j                  ||      j
                  |       y Nrp         ?r8   )r'   r   r   r   r  r0   rK   r0   r   s      r+   
test_typeszTestSolve.test_types  s:    HHq#ha)7V\\!Q'--u5r-   c                 v    G d dt         j                        }t        j                  d      j                  ddd      }t        j                  d      j	                  |      }t        j                  ||      }|j                  dk(  sJ t        j                  d      j                  dd      j	                  |      }t        j                  ||      }|j                  dk(  sJ t        j                  d      j                  dd      j	                  |      }t        t        t
        j                  ||       y )	Nc                       e Zd Zy))TestSolve.test_1_d.<locals>.ArraySubclassNrU   rV   rW   rY   r-   r+   ArraySubclassr!        r-   r#  rn   rr   rr   rr   rt   )rr   rr   rr   rp   )
r'   r(   aranger   r   r   r  r   r    
ValueError)rK   r#  r2   r3   results        r+   test_1_dzTestSolve.test_1_d   s    	BJJ 	IIaL  Aq)IIaLm,a#||v%%% IIaL  A&++M:a#||y(((IIaL  A&++M:j&,,1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	                  |      }t        j                  ||      d d ddf   }t        j                  |d d ddddf   |dd       }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>.ArraySubclassNr"  rY   r-   r+   r#  r,    r$  r-   r#  rn   rr   r   rp   rs   r   )r'   r(   r&  r   r   r   r  r   r   r&   r    r   r'  rK   r#  r2   r3   expectedr(  s         r+   test_0_sizezTestSolve.test_0_size  s?   	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m,<<1%a1f-a1Q3!na!f5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"  rY   r-   r+   r#  r2  4  r$  r-   r#  rt   rp   rr   r   rs   r   )
r'   r(   r&  r   r   r   r  r   r   r&   r-  s         r+   test_0_size_kzTestSolve.test_0_size_k2  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)rU   rV   rW   r   r   parametrizer   r	   r   r   r  r)  r/  r3  rY   r-   r+   r  r    s@    [[Wvvw&HI6 J6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,   )rK   r2   r3   rJ   a_invs        r+   rO   zInvCases.doG  s8    

1F1e,5a8	:#E1-.r-   Nr  rY   r-   r+   r6  r6  E  s    /r-   r6  c                   ^    e Zd Zej                  j                  deeee	g      d        Z
d Zy)TestInvr0   c                     t        j                  ddgddgg|      }t        t        j                  |      j
                  |       y r  )r'   r   r   r   r8  r0   r  s      r+   r  zTestInv.test_typesO  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"  rY   r-   r+   r#  r?  V  r$  r-   r#  r   rp   rp   r8   rk   )r'   r(   zerosint_r   r   r8  r   r0   r%   float64r   r   r&   	complex64rK   r#  r2   ress       r+   r/  zTestInv.test_0_sizeT  s    	BJJ 	HHYbgg.33MBjjm		"**,-QWWcii(
3./HHV2<<055mDjjm		",,./QWWcii(
3./r-   NrU   rV   rW   r   r   r4  r   r	   r   r   r  r/  rY   r-   r+   r;  r;  N  s4    [[Wvvw&HI1 J10r-   r;  c                       e Zd Zd Zy)EigvalsCasesc                 v    t        j                  |      }t        j                  |      \  }}t        ||       y r$   )r   eigvalseigr   )rK   r2   r3   rJ   evevaluesevectorss          r+   rO   zEigvalsCases.dog  s,    ^^A"JJqMB(r-   Nr  rY   r-   r+   rI  rI  e  s    )r-   rI  c                   ^    e Zd Zej                  j                  deeee	g      d        Z
d Zy)TestEigvalsr0   c                 @   t        j                  ddgddgg|      }t        t        j                  |      j
                  t        |             t        j                  ddgddgg|      }t        t        j                  |      j
                  t        |             y Nrp   r  r8   r   )r'   r   r   r   rK  r0   r;   r  s      r+   r  zTestEigvals.test_typesn  sz    HHq#ha)7V^^A&,,.?.FG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"  rY   r-   r+   r#  rV  w  r$  r-   r#  r@  r8   r   rp   rk   rl   )r'   r(   rA  rB  r   r   rK  r   r0   r%   
complex128r   r   r&   rD  rE  s       r+   r/  zTestEigvals.test_0_sizeu  s    	BJJ 	HHYbgg.33MBnnQ		"--/0VSYY'
3

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

+,r-   NrG  rY   r-   r+   rQ  rQ  m  s6    [[Wvvw&HIH JH-r-   rQ  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   rL  eigenvalueseigenvectorsr   r   r'   r   r=   r0   r   r,   )rK   r2   r3   rJ   rF  r^  r_  s          r+   rO   zEigCases.do  sx    jjm$'OOS5E5E\q,/JJ|$rzz+'>sD!|'LL+++,	. 	#L!45r-   Nr  rY   r-   r+   rZ  rZ    s    6r-   rZ  c                   ^    e Zd Zej                  j                  deeee	g      d        Z
d Zy)TestEigr0   c                    t        j                  ddgddgg|      }t         j                  j                  |      \  }}t	        |j
                  t        |             t	        |j
                  t        |             t        j                  ddgddgg|      }t         j                  j                  |      \  }}t	        |j
                  t        |             t	        |j
                  t        |             y rS  )r'   r   r   rL  r   r0   r;   rK   r0   r   wvs        r+   r  zTestEig.test_types  s    HHq#ha)7yy}}Q1QWW/67QWW/67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"  rY   r-   r+   r#  rh    r$  r-   r#  r@  r8   rW  rk   rl   )r'   r(   rA  rB  r   r   rL  r   r0   r%   rX  r   r   r&   rD  rK   r#  r2   rF  res_vs        r+   r/  zTestEig.test_0_size  s@   	BJJ 	HHYbgg.33MBZZ]
U  BMM12		"--/0QWWekk*VSYY'
1bjj)*HHV2<<055mDZZ]
U  BLL01		",,./QWWekk*T399%
1bjj)*r-   NrG  rY   r-   r+   ra  ra    s4    [[Wvvw&HI	8 J	8+r-   ra  c                   \    e Zd ZdZej
                  j                  deee	e
g      d        Zy)SVDBaseTestsFr0   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 )Nrp   r  r8   F
compute_uvr@   )r'   r   r   svdUSVhr   r0   r9   r@   )rK   r0   r   rF  rq  rr  rs  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)rU   rV   rW   r@   r   r   r4  r   r	   r   r   r  rY   r-   r+   rl  rl    s4    I[[Wvvw&HI5 J5r-   rl  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.r\  )
r   rp  r   r   r'   r   r=   r0   r   r,   )rK   r2   r3   rJ   ur   vts          r+   rO   zSVDCases.do  s    ::a'1b6"**Q-"**Q-T12M"M+-::b>;%agg.	0 	#Aq)*#B*+r-   Nr  rY   r-   r+   ru  ru    s    ,r-   ru  c                       e Zd 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 )rt   r   Trn  rt   rt   rk   rt   )r   rt   N)r'   r   r   rp  r@   r   r   eye)rK   r   rw  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-   c                     t        j                  ddgddgg      }t        j                  |d| j                        }t        j
                  |      }t        ||       y )Nrp   r  Frn  )r'   r   r   rp  r@   svdvalsr   )rK   r   
s_from_svds_from_svdvalss       r+   test_svdvalszTestSVD.test_svdvals  sK    HHq#ha)*ZZet~~N
*J7r-   N)rU   rV   rW   r  r  rY   r-   r+   rz  rz    s    $8r-   rz  c                       e Zd Zd Zy)SVDHermitianCasesc                 Z   t        j                  |dd      \  }}}t        |t        t	        j
                  |      t	        j
                  |      dd d d f   z  t	        j
                  |            t        |j                               d }t	        j                  t	        j                  |j                  d         |j                        }t        t	        j                  | ||            |       t	        j                  t	        j                  |j                  d         |j                        }t        t	        j                  | ||            |       t        t	        j                  |      dd d df   |       t        t        ||             t        t        ||             y )NFTr@   .r\  c                     t        t        | j                              }|d   |d   c|d<   |d<   t        j                  t        j
                  | |            S )Nr   r   axes)r   ranger   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   rp  r   r   r'   r   r=   r0   r  r}  r   r   r   sortr   r,   )	rK   r2   r3   rJ   rw  r   rx  r@   r.  s	            r+   rO   zSVDHermitianCases.do  s&   ::a$71b6"**Q-"**Q-T12M"M+-::b>;%agg.	0	9
 ??266!''"+#6@BIIa16A??266"((2,#7BBIIb)B-8(CRWWQZTrT	*A.#Aq)*#B*+r-   Nr  rY   r-   r+   r  r    s    ,r-   r  c                       e Zd ZdZd Zy)TestSVDHermitianTc                 t   t        j                  ddgddgg      }t        j                  || j                        \  }}}t        ||j                  j                         z  t        j                  d      d       t        ||j                  j                         z  t        j                  d      d       y )Nrp   r   r  rr   g+=r\  )	r'   r   r   rp  r@   r   Tr  r}  )rK   r   rw  r   r~  s        r+   test_singularzTestSVDHermitian.test_singular   s|    HHq!fq!f%&::a4>>:1bACCHHJq	>RTTYY[("&&)%@r-   N)rU   rV   rW   r@   r  rY   r-   r+   r  r    s    IAr-   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 )NrC   F)ro  r  ).r   r   r   r4   r5   rr   r   rp   r   fro)r   r    r   r   condrp  r   r'   r8  r   summaxminr   sqrt)rK   r2   r3   rJ   cr   cinvs          r+   rO   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  rY   r-   r+   r  r    s    (1r-   r  c                   j   e Zd Zej                  j                  dddg      d        Zej                  j                  deee	e
g      ej                  j                  dddd	d
dej                  ej                   g      d               Zd Zej                  j                  ddd      d        Zd Zy)TestCond
is_complexFTc                    t        g dg dg dg      }|r|dz  }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ra   r   rp   r   g       r   r   r   rc   rz   rt   gUUUUUU?rp   r   r  r  gUUUUU6@)r   r   r   r  r   r'   r  )rK   r  As      r+   test_basic_nonsvdzTestCond.test_basic_nonsvd6  s     :{J78VAFKK3/3FKKC40%8FKK1-q1FKK2.4FKK5127783DEr-   r0   norm_ordrp   r   rr   r   r  c                     t        g dg dg dg|      }t        |      }t        t        j                  ||      j
                  |       y )Nr  r  r  r8   )p)r   r9   r   r   r  r0   )rK   r0   r  r  out_types        r+   test_cond_dtypeszTestCond.test_cond_dtypesC  s<    
 :{J7uE!%(V[[h/55x@r-   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 )Nr%  Nrp   rr   r  r   r     4&kC)r'   rA  onesr   r   r   r   r  )rK   Asp_posp_negr  r  s         r+   r  zTestCond.test_singularL  s     hhv0#R%%b%0 	.DAq FKK1%,-	. %%b%0 	DAqKK1	r-   z/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)Nrp   r   rr   r   r  r  r%  rW  )rs   rr   rr   rp   r   rp   rp   r   r  rr   )	r'   r  nanr   r  r   r&   rC  isnan)rK   psr  r  r  r  s         r+   test_nanzTestCond.test_nanZ  s   
 )#GGFO&&$ 	!AAq!AJq"**-.BHHQK 	!
 GGIVV'
 	,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`   rr   r   rk   r   )Nrp   rr   r  r   r   rW  rp   r   )
r'   randomseedrandr   r  r   r   r   isfinite)rK   r  r  r  s       r+   test_stacked_singularzTestCond.test_stacked_singularu  s     			tIINN1aA&$$, 	*AAq!A4"&&)4"&&)BKK$()BKK$()	*r-   N)rU   rV   rW   r   r   r4  r  r   r	   r   r   r'   r   r  r  xfailr  r  rY   r-   r+   r  r  5  s    [[\E4=9
F :
F [[Wvvw&HI[[Z!RBrvvw)OPA Q JA [[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,   rK   r2   r3   rJ   a_ginvr   r(  s          r+   rO   zPinvCases.do  sD    QSF^Q'FAaK#FA./r-   Nr  rY   r-   r+   r  r    s    
0r-   r  c                       e Zd Zy)TestPinvNr"  rY   r-   r+   r  r        r-   r  c                       e Zd Zd Zy)PinvHermitianCasesc                     t        j                  |d      }t        } | |||      |      }t        ||dd       t	        t        ||             y )NTr  r   r   r  r  r  s          r+   rO   zPinvHermitianCases.do  sG    Q$/SF^Q'FAaK#FA./r-   Nr  rY   r-   r+   r  r    s    0r-   r  c                       e Zd Zy)TestPinvHermitianNr"  rY   r-   r+   r  r    r  r-   r  c                  x   t        j                  g dg dg dg      } t        t         j                  j	                  | d      t         j                  j	                  | d             t        j                  t        d      5  t         j                  j	                  | dd	       d d d        y # 1 sw Y   y xY w)
Nrp   rr   rs   )rt   rp   rp   )rr   rs   rp   r  rcondr\  z%`rtol` and `rcond` can't be both set.)match)r  r]  )r'   r   r   r   r  r   raisesr'  )r2   s    r+   test_pinv_rtol_argr    s    
)Y	23A
		q$
		qs#
 
B
 / 			q#./ / /s   #B00B9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   rp   )r   detslogdetsign	logabsdetr   r0   r%   r   r	   astyper   rK  r   r   reducer'   exp
atleast_1dr   r   r   )rK   r2   r3   rJ   drF  r   ldadrM  ms              r+   rO   zDetCases.do  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  rY   r-   r+   r  r    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   rp   )r   r   r  r%   r	   r   r  r   rS   s    r+   	test_zerozTestDet.test_zero  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-   r0   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  r0   r  r9   )rK   r0   r   phr   s        r+   r  zTestDet.test_types  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 )Nrk   r8   ra   r  r   rp   )r'   rA  rD  r   r  r   r   r0   r%   r  float32rC  )rK   r2   rF  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)rU   rV   rW   r  r   r   r4  r   r	   r   r   r  r/  rY   r-   r+   r  r    s<    @ [[Wvvw&HI& J&1r-   r  c                       e Zd Zd Zy)
LstsqCasesc                 D   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(  r|j                  d      }t        |j                  |j                         n-t        j                   g       j#                  t%        |
            }t        ||       t        t        j&                  |j(                  t         j*                               t        t-        |
|             t        t-        ||             y )	NFr   r  r   rr   r  rp   r   )r'   r   r   r   rp  lstsqr   r   r   r   r   __array_wrap__r   r  r   r   r   r   r%   
issubdtyper0   floatingr,   )rK   r2   r3   rJ   arrr  nrw  r   rx  r   	residualsranksvexpect_residss                  r+   rO   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& - 5 5d ;-*=*=>HHRL--d1g6MI}5ioor{{;<#Aq)*#Iq12r-   Nr  rY   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        j                  ||d      \  }}}}t        |dk(         t        j                  ||      \  }}}}t        |d	k(         t        j                  ||d       \  }}}}t        |d	k(         y )
N)r  ra   r  ra   rb   r  )r  rb   r  r  ra   r  )ra   r  ra   r  r  rd   )r  r  r  rb   rc   r  )rp   r   r   r   r   r   r   r  rt   rs   )r'   r   r  r   r  r   )rK   r2   r3   r   r   r  r   s          r+   
test_rcondzTestLstsq.test_rcond  s    HH22224 5 67Q 	

 HH'( &Q <9dA	 &Q 29dA	 &Q >9dA	r-   )r  r  n_rhs))rt   rr   rr   )r   rt   rp   )r   rt   rr   )rt   r   rp   )rt   r   rr   )rt   rr   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   rl   r   r  )r'   r&  r   r  r   r  r   r   r   r   r   r   r  r  )rK   r  r  r  r2   r3   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   rp   rr   rs   )r   g?g?g @gffffff
@zIncompatible dimensionsr  )
r'   r   vstackr  lenr  r!   r   r   r  )rK   r   yr  s       r+   test_incompatible_dimsz TestLstsq.test_incompatible_dims9  st    HH\"HH-.IIq"''#a&/*+-- .GH 	+LLAT*	+ 	+ 	+s   <BB'N)	rU   rV   rW   r  r   r   r4  r  r  rY   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)TestMatrixPowerrt   )rs   r   rp   rr   )rr   rs   r   rp   )rp   rr   rs   r   rp   r   rr   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 )Nrr   d   i       r   rp   rs   )rshft_1r  r   r   rshft_0rshft_2rshft_3)rK   r  rshfts      r+   test_large_powerz TestMatrixPower.test_large_powerO  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 ]j  } ||j                  |             t        j                  |      j                  t        j
                  usJ || j                  j                  |             l y )Nc                     t        | d      }t        |t        |              t        |j                  | j                         y )Nr   )r   r   r  r0   )Mmzs     r+   tzz.TestMatrixPower.test_power_is_zero.<locals>.tz[  s0    a#B6q9:177+r-   	rshft_allr  r'   r0   r%   object_stackedrK   r  r#  r  s       r+   test_power_is_zeroz"TestMatrixPower.test_power_is_zeroZ  s]    	,
 >> 	,Cszz"~xx|  

24<<&&r*+	,r-   c                     d }| j                   D ]j  } ||j                  |             t        j                  |      j                  t        j
                  usJ || j                  j                  |             l y )Nc                 t    t        | d      }t        ||        t        |j                  | j                         y )Nrp   )r   r   r0   )r  r"  s     r+   r#  z-TestMatrixPower.test_power_is_one.<locals>.tzf  s*    c1%BS!399-r-   r$  r(  s       r+   test_power_is_onez!TestMatrixPower.test_power_is_onee  s]    	.
 >> 	,Cszz"~xx|  

24<<&&r*+	,r-   c                     d }| j                   D ]j  } ||j                  |             t        j                  |      j                  t        j
                  usJ || j                  j                  |             l y )Nc                     t        | d      }| j                  t        k7  rt        nt        }t        | || |              t        |j                  | j                         y )Nrr   )r   r0   objectr   r   r   )r  r"  mmuls      r+   r#  z-TestMatrixPower.test_power_is_two.<locals>.tzq  sB    c1%B YY&06cDT#s^,399-r-   r$  r(  s       r+   test_power_is_twoz!TestMatrixPower.test_power_is_twop  s]    	. >> 	,Cszz"~xx|  

2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   r0   r/  r   r   r   r  )r  invmatr0  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      ?rp   )r  r  r    	TypeErrorr   rK   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 )Nrp   rr   )rt   rs   rr   )r    r   r   r'   r   r  )rK   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 r4  )r6  noninvr  r    r   r   r:  s      r+   test_exceptions_not_invertiblez.TestMatrixPower.test_exceptions_not_invertible  s3    kk  $k<b9r-   N)rU   rV   rW   r'   r}  r  r  r  r  r%  r   rA  blockr'  r/  r0   r6  r  r)  r,  r1  r7  r;  r=  r   r   skipifr   rB  rY   r-   r+   r  r  B  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  r\  rq  )r   eigvalshrL  r  r   r=   r0   )rK   r2   r3   rJ   rM  rN  rO  ev2s           r+   rO   zTestEigvalshCases.do  sn     __Q$"JJqM"G(288*<=ooa%W8BHH+=>r-   Nr  rY   r-   r+   rF  rF    s    	?r-   rF  c                   j    e Zd Zej                  j                  deeee	g      d        Z
d Zd Zd Zy)TestEigvalshr0   c                     t        j                  ddgddgg|      }t         j                  j                  |      }t	        |j
                  t        |             y r  )r'   r   r   rI  r   r0   r9   )rK   r0   r   rd  s       r+   r  zTestEigvalsh.test_types  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 Nrp   r  r8   lrongUPLOlowerupper)r'   r   r  r    r'  r   rI  rK   r   s     r+   test_invalidzTestEigvalsh.test_invalid  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   rp   r8   r   r\  rH  rQ  lrq  rw  )r'   r   r	   r=   r   rI  r   )rK   KloKuptgtr]  rd  s         r+   	test_UPLOzTestEigvalsh.test_UPLO  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"  rY   r-   r+   r#  r`    r$  r-   r#  r@  r8   rW  rk   rl   )r'   r(   rA  rB  r   r   rI  r   r0   r%   rC  r   r   r&   rD  r  rE  s       r+   r/  zTestEigvalsh.test_0_size  s    	BJJ 	HHYbgg.33MBooa 		"**,-VSYY'
3

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

+,r-   NrU   rV   rW   r   r   r4  r   r	   r   r   r  rV  r]  r/  rY   r-   r+   rL  rL    s?    [[Wvvw&HI5 J5
B+,-r-   rL  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  .r\  rq  )r]  err_msg)r   eighr^  r_  rL  r  r   r   r   r'   r   r=   r0   repr)rK   r2   r3   rJ   rF  rM  evcrN  rO  rJ  evc2s              r+   rO   zTestEighCases.do  s     kk!n//3#3#3C"JJqM"B(q#

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

3T15

48HH%bhh/a	Br-   Nr  rY   r-   r+   rc  rc    s    Br-   rc  c                   j    e Zd Zej                  j                  deeee	g      d        Z
d Zd Zd Zy)TestEighr0   c                     t        j                  ddgddgg|      }t         j                  j                  |      \  }}t	        |j
                  t        |             t	        |j
                  |       y r  )r'   r   r   rf  r   r0   r9   rc  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 rO  )r'   r   r  r    r'  r   rf  rU  s     r+   rV  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 rX  )r'   r   r	   r=   r   rf  r   )rK   rZ  r[  r\  r]  rd  re  s          r+   r]  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"  rY   r-   r+   r#  rq    r$  r-   r#  r@  r8   rW  rk   rl   )r'   r(   rA  rB  r   r   rf  r   r0   r%   rC  r   r   r&   rD  r  ri  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-   Nra  rY   r-   r+   rk  rk    s>    [[Wvvw&HI% J%>+,+r-   rk  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$   )	
issubclassr0   r%   r'   inexactr   realr   r  )r   rF  s     r+   check_dtypez_TestNormBase.check_dtype3  sK    aggllBJJ/AFFLL1 Jsyy~~r{{;<r-   )rU   rV   rW   r  decstaticmethodrx  rY   r-   r+   rs  rs  /  s    	B
C= =r-   rs  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  r8   )r   r   r   r  r   rS   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        j                         5  t        j                  ddt               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  ignoredivide by zero encounteredr   r   rr   rp   rb   r  rt   g      ?ra   )r'   r   	typecodesr  r   r   rx  r   warningscatch_warningsfilterwarningsRuntimeWarningr0   r%   rK   r2   exact_typesinexact_types	all_types	each_typeatans           r+   test_vector_return_typez(_TestNormGeneral.test_vector_return_typeC  s   HHYll<0Z0-/	"  	)I)$Bb266'"BR$C(((* -'':NL"b\  R(#B,- b!BR$A&b!BR$C(b!BR$BHHMM#$6i8P$PQb!BR$BHHMM#$6i8P$PQb"&&!BR$C(A 	)- -s   'AII	c                      g d}g d}g d} fd}|||fD ]
  } ||        t        | j                        t        | j                        t        | j                        fD ]
  } ||        y )N)rp   rr   rs   rt   )r   r   r   r   )r   rr   r   rt   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/   rd   ra   rp         $@r   gQ?rr   r   gsc?r   rt   )r'   testingr   r   ry  r   )re  rK   s    r+   _testz+_TestNormGeneral.test_vector.<locals>._testr  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-   r8   )r   r  )rK   r2   r3   r  r  re  s   `     r+   test_vectorz_TestNormGeneral.test_vectorm  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 )Nr  rt   r   r   r8   r   r   rp   rr   rs   ordr  r     rt   r   r  r  )r   r  r'   r   r  r   r   r   r&  r   r   r   combinationsr    r'  taker  )rK   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 )Nrp   r  r8   rr   rs   rt   zorder {0}, axis = {1}z;Shape mismatch found {0}, expected {1}, order={2}, axis={3}r  T)r  r  keepdims)re  )rp   rp   rp   r   r   r   r  nuc)r'   r&  r  r   r   r   squeezeformatr   r   r   r  r   r   r   r   permutations)	rK   r  allclose_err	shape_errr.  foundexpected_shaper  r  s	            r+   test_keepdimsz_TestNormGeneral.test_keepdims  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)rU   rV   rW   r~  r  r  r  r  rY   r-   r+   r|  r|  <  s    F
()T<#5J(Qr-   r|  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 )Nr8   r  )r   r   r   r  rS   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        j                         5  t        j                  ddt               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  r@  r  fdFDrb   r  r  r   ra   rp   rr   gLXz?r   r  r  gU&,t=@r   r  )r   r'   r  r  r   r   rx  r   r  r  r  r  r  r  s           r+   test_matrix_return_typez#_TestNorm2D.test_matrix_return_type  s   JJ	9-.ll<0
 -/	" &	NI)$Bb266'"BR$C(((* -'':NL"b\  R(#B,- b!BR$C(b!BR$$45b"BR$C(b"&&!BR$C(b%BR$C(b%BR$ JJ**2/A1*MM&	N- -s   AH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 )Nrp   rs   r   r   r8   gT"@r  r  r  g      (@rd   r   rf   rr   gW?"@r   gїʄ?nofror   r   )r   r  r   r   r   r    r'  rK   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   )rs   rr   rp   r8   grj=Q0?r  r  gB+pc?g?g333333?rp   ra   r   g?rr   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        t        |d d       t        t        t        |d d       t        t        t        |d d       y )Nr  r  r8   rp   r  rr   rs   rt   r  r   r  testr   rs   rW  )rp   rr   rr   rs   r   rp   rr   )	r   r  r'   r&  r   r    r'  r   r   )rK   r  r  r  s       r+   test_bad_argsz_TestNorm2D.test_bad_args8  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=	> 	iq$2iq$7j$4;r-   N)
rU   rV   rW   r'   r   r  r  r  r  r  rY   r-   r+   r  r    s)     HHEA2Nh. >"<r-   r  c                       e Zd Zy)	_TestNormNr"  rY   r-   r+   r  r  T  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
   r8   rs   r  gL)@rr   r  )r'   r&  
longdoubler1   r   rU  s     r+   test_longdouble_normz+TestNorm_NonSystematic.test_longdouble_normZ  s*     IIb.QAqAr-   c                     t        j                  dgt         j                        }t        t	        |d      dd       y )Ni   r8   rs   r  l        r   r  )r'   r   int32r1   r   rU  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rr   r8   y      @      @r   y            @rp   gV;'@rs   r  r  r  	   r   )	r'   r   clongdoubler1   r   r   r  rX  rD  )rK   r  rF  s      r+   test_complex_high_ordz,TestNorm_NonSystematic.test_complex_high_ordf  s    HHT0!!		qa 8#rJHHR]]#		qa 8#qIHHR\\"		qa 8#qIr-   N)rU   rV   rW   r  r  r  rY   r-   r+   r  r  X  s    BD
Jr-   r  c                   (    e Zd Zej                  ZdZy)_TestNormDoubleBase   N)rU   rV   rW   r'   r	   r  ry  rY   r-   r+   r  r  t  s    	B
Cr-   r  c                   (    e Zd Zej                  ZdZy)_TestNormSingleBaser   N)rU   rV   rW   r'   r  r  ry  rY   r-   r+   r  r  y  s    	B
Cr-   r  c                   (    e Zd Zej                  ZdZy)_TestNormInt64Baser  N)rU   rV   rW   r'   int64r  ry  rY   r-   r+   r  r  ~  s    	B
Cr-   r  c                       e Zd Zy)TestNormDoubleNr"  rY   r-   r+   r  r    r  r-   r  c                       e Zd Zy)TestNormSingleNr"  rY   r-   r+   r  r    r  r-   r  c                       e Zd Zy)TestNormInt64Nr"  rY   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       t        t        d      5  t        |dd       d d d        y # 1 sw Y   y xY w)Nrt   r  r   r   rs   r|  r   )rp   r   r   r   rp   )rt   )rs   rt   r   z#`tol` and `rtol` can't be both set.g{Gz?)tolr]  )r   r   r'   r}  rA  r   r!   r'  )rK   Imss      r+   test_matrix_rankzTestMatrixRank.test_matrix_rank  s   QBFF1I./FF1I&	[^Q'[&!12A6[.2[$0!4[!%q)XXq"&&)RXXf%567[_bhhy&9:[^Q' >
 	0 t$/	0 	0 	0s   "E::F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 )Nrt   Tr  rp   r|  r   r  r  rs   g:0yE>g|"BE>)r@   r  g;䡈E>)r   r   r'   r}  r  rA  )rK   r  s     r+   test_symmetric_rankz"TestMatrixRank.test_symmetric_rank  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)rU   rV   rW   r  r  rY   r-   r+   r  r    s    02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  sizerp   rr   r   r  rt   r   rs   rn   )r'   r  RandomStater  normalr   r   )rngiXs      r+   test_reduced_rankr    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%   r0   r   r  r   qrQRr   r&   r   r   r  r  r'   r}  triu)rK   r2   a_typea_dtyper  r  r  rF  r  r  q1r1r2s                r+   check_qrzTestQR.check_qr  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  )rs   r   r  rk   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   r0   r	   r   )rK   r  r  r  r2   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 )Nrp   rr   rs   rt   r   r   r8   r  r  r  r  r   )	r   r'   r	   r   r  r   r0   r   r  )rK   r2   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 )	Nrp   rr   rs   rt   r   r   fd              ?)r   r  r
  r  )rK   r2   r3   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   rr   .r   r  )r%   r0   r   r  r   r  r   r&   r   r   r'   r
   r  r   r  r  )rK   r2   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~'99;F8Ar2#6#;#;#=qA;OBGGAc1aiL115 19-BG#$G#$
2v&'
2v&'!Q'(!Q'(F2rNA.BHHRL)ooe""!(;;=F8BB#7#<#<#>C'	)BGGBsAqyM2B7 YYqs#G#$
2v&'B#r-   r  ))rs   rt   )rt   rs   r|  r  r  
outer_size)r%  r  )rr   rs   rt   r  c                 "   t         j                  j                  d      }|j                  ||z         j	                  |      }|j                  ||z         j	                  |      }| j                  |       | j                  |d|z  z          y )N{   r  r  )r'   r  default_rngr  r  r  )rK   r  r  r  r  r  r  s          r+   test_stacked_inputszTestQR.test_stacked_inputsU  s|     ii##C(JJJ-J.55b9JJJ-J.55b9a a#'k*r-   N)rU   rV   rW   r'   r   r
  r   r   r4  r  r  r  r  r   r	   r   r   r"  rY   r-   r+   r  r    s    HHE%$N [[c3Z * 

&

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


BJJ$  !+!"+r-   r  c                   8   e Zd Zej                  j                  dg d      ej                  j                  dej                  ej                  ej                  ej                  f      ej                  j                  dddg      d                      Zd Zd	 Zy
)TestCholeskyr   )r   r%  rs   rs   )2   r&  )rs   r  r  r0   rT  FTc                 ^   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                  ||      }|r4t        j                  |j                  |      j                         |      }n3t        j                  ||j                  |      j                               }d|j                  d   z  t        j                   |      j"                  z  }t%        |||| d	| d
| d
|        t        j&                  |dd      }	t)        t        j*                  t        j,                  |	                   t)        t        j*                  |	dk\               y )Nrp   r  )r   r   r   r8   rT  i  r    
)atolre  r   )axis1axis2)r'   r  r  randnr  complexfloatingr   r  r  r   r  r  r   r   choleskyr   finfoepsr   diagonalr   r   isreal)
rK   r   r0   rT  r2   tr  r3   r+  r  s
             r+   test_basic_propertyz TestCholesky.test_basic_propertyh  s    			qIIOOU#== 2 23B%000As5z"#"#IIakk!n))+Q/JJq&IIq. 		!++a.--/3A		!Q[[^0023AQWWQZ"((5/"5"5514E7!E7"QCr!1MN KK2.ryy|$%qAvr-   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"  rY   r-   r+   r#  r9    r$  r-   r#  r@  r8   )rp   r   r   )r'   r(   rA  rB  r   r   r0  r   r   r   r0   r%   rC  r&   rD  rE  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-   c                 :   t        j                  ddgddgg      }t        t        j                  |      t        j                  |d             t        t        j                  |d      t        j                  |      j
                  j                                y )Ny      ?        y               y               @y      @        Fr(  T)r'   r   r   r   r0  r  r  )rK   r2   s     r+   test_upper_lower_argz!TestCholesky.test_upper_lower_arg  sn    HHvv&(89:V__Q'%)HIOOAT*OOA  %%'	
r-   N)rU   rV   rW   r   r   r4  r'   r  rC  rD  rX  r6  r/  r;  rY   r-   r+   r$  r$  f  s    [[@ [["**bjj",,F [[%    8- 	
r-   r$  c                   f   e Zd Z ej                  d      Z ej                  d      Z ej                  g dg dg dg      Z e	ej                  j                  ee      e        eed      5  ej                  j                  eddej                  f   e       ddd       y# 1 sw Y   yxY w)	TestOuterrs   r	  r  )r   rr   rt   z$Input arrays must be one-dimensionalN)rU   rV   rW   r'   r&  arr1arr2r   r.  r   r   outerr!   r'  newaxisrY   r-   r+   r=  r=    s    299Q<D299Q<Drxx				H ryytT2H=	:
 3 			Q

]+T23 3 3s   0.B''B0r=  c                  p   t         j                  dk(  rd} nd} t        j                  t        j                  fD ]  }t        j
                  d|      }|j                  |j                  j                  |             }|j                  |j                  j                  d            j                         }t        |j                  j                  d       t        j                  t        j                  t        j                  fD ].  } ||      }t        | ||             t        | ||             0  y )Nlittle<rR   rt   r8   rr  =)sys	byteorderr'   r  rC  r}  r   r0   newbyteorderbyteswapr   r   r8  r  r  r   )nativedttr  n_arrsw_arrroutinerF  s          r+   test_byteorder_checkrO    s    
}} 

BJJ' 5ffQc"//78#))0056??A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 )Nrp   rr   rs   rt   )rt   rt   rr   rr   .rk   )r'   r   rA  r    r   r   r8  )
invertiblenon_invertibler   s      r+    test_generalized_raise_multilooprS    s    
 Aq6Aq6*+JXX1v1v./N
qt!t$AAcFAdG"))'':r-   z<ignore:.*fork\(\) may lead to deadlocks.*:DeprecationWarningz?skipping test that uses fork because there are multiple threadsz:Cannot safely use fork in tests on the free-threaded buildc                     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   rp   rk   ra   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   dorgqrrG   waitWEXITSTATUS)	XERBLA_OKpidr\  r2   r   statuss         r+   test_xerbla_overrideri    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 ]b  }|j                  dd|      }t        t        j
                  d|g       |j                  dd|      }t        t        j
                  d|g       d 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)rn  rm  ro  )textwrapdedentr  r"   rF  
executable)bad_libstemplatero  codes       r+   test_sdot_bug_8577rv    s     "9-H 
  
	H  5&:"'.  0d34 %9"'.  0d345r-   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   rr   rr   r   r'   r  r   r   r   )rK   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 rz  r}  )rK   r  r  s      r+   &test_basic_function_with_two_argumentsz3TestMultiDot.test_basic_function_with_two_argumentsG  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 )Nr{  r|  rr   rp   r}  )rK   r  r  r~  Ds        r+   9test_basic_function_with_dynamic_programming_optimizationzFTestMultiDot.test_basic_function_with_dynamic_programming_optimizationO  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 )Nrr   r|  r{  r%  r  r'   r  r   r   r   )rK   A1dr  r~  r  s        r+   test_vector_as_first_argumentz*TestMultiDot.test_vector_as_first_argumentX  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 )Nr{  r|  rr   )r   r  )rK   r  r  r~  D1ds        r+   test_vector_as_last_argumentz)TestMultiDot.test_vector_as_last_argumentb  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 )Nrr   r|  r{  rY   r  )rK   r  r  r~  r  s        r+   &test_vector_as_first_and_last_argumentz3TestMultiDot.test_vector_as_first_and_last_argumentl  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 )Nr{  r|  r)   r'   r  rA  r   r   r   )rK   r  r  r~  r)   rets         r+   test_three_arguments_and_outz)TestMultiDot.test_three_arguments_and_outv  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 )Nr{  r|  )r   r   r  r  )rK   r  r  r)   r  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 )Nr{  r|  r  )r   rp   r  r  )rK   r  r  r~  r  r)   r  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)   #   )r     )r  r   )r   r  )r     )r  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   rp   rp   rs   rs   rs   )r   r   rr   rs   rs   rs   )r   r   r   rs   rs   rs   )r   r   r   r   rt   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r8   rp   T)return_costsr   )r'   r  r   intr   r   r  )rK   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  rS   s    r+   test_too_few_input_arraysz&TestMultiDot.test_too_few_input_arrays  s,    j)R0j)bii.>.>v.F-GHr-   N)rU   rV   rW   r  r  r  r  r  r  r  r  r  r  r  rY   r-   r+   rx  rx  ;  s<    K=M<<<:/
9=<Ir-   rx  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rt   r   rn   rr   rr   rs   rs   rr   rp   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)rK   r  r  s      r+   test_non_square_handlingz&TestTensorinv.test_non_square_handling  s1    
 ;' 	+Sc*	+ 	+ 	+s   1:z
shape, ind)rt   r   rn   rs   rr   )   rn   rs   rp   c                     t        j                  d      j                  |      }t        j                  ||      }|j
                  |d  |j
                  d | z   }|j
                  }t        ||       y )Nr  r2   r  )r'   r}  r   r   r  r   r   )rK   r   r  r2   ainvr.  actuals          r+   test_tensorinv_shapez"TestTensorinv.test_tensorinv_shape  s_     FF2Ju%!-7734=1774C=0VX&r-   r  r   r   c                     t        j                  d      j                  d      }t        t              5  t        j                  ||       d d d        y # 1 sw Y   y xY w)Nr  r  r  )r'   r}  r   r    r'  r   r  )rK   r  r2   s      r+   test_tensorinv_ind_limitz&TestTensorinv.test_tensorinv_ind_limit  sI     FF2J|,:& 	+qc*	+ 	+ 	+s   AAc                 "   t        j                  d      j                  d      }t        j                  |d      }t        j
                  d      }t        t        j                  ||d      t         j                  j                  ||             y )Nr  r  rp   r  )	r'   r}  r   r   r  r  r   	tensordottensorsolve)rK   r2   r  r3   s       r+   test_tensorinv_resultz#TestTensorinv.test_tensorinv_result  sa    FF2Jz*q)GGBKT1a0"))2G2G12MNr-   N)rU   rV   rW   r   r   r4  r'   r  r  r  r  r  rY   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   rr   c                     t        t              5  t        j                  |j                  d d       }t        j                  |||       d d d        y # 1 sw Y   y xY wNrr   r  )r    r   r'   r  r   r   r  )rK   r2   r  r3   s       r+   r  z(TestTensorsolve.test_non_square_handling  sK    
 ;' 	0$Aq!$/	0 	0 	0s   ;AAr   ))rr   rs   r   )rs   rt   rt   rs   )r   rs   rs   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  )rK   r   r2   r3   r   s        r+   test_tensorsolve_resultz'TestTensorsolve.test_tensorsolve_result  sc     IIOOU#GGAGGBQK II!!!Q'QAGG=qAr-   )
rU   rV   rW   r   r   r4  r'   r  r  r  rY   r-   r+   r  r    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)Nrp   r   rr   r   float16r8   zunsupported in linalg)r'   r   r!   r9  r   r0  )r  s    r+   test_unsupported_commontyper    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        rp   r8   )r   r   )r'   rA  r  r  r   r   )r  r2   r3   r  s       r+   test_blas64_dotr  	  s]    A
!Qrzz*A
Abjj)AAeH
q!A51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       rp   r8   r   r   infor  r  r  l        )
r'   rC  r   r_  dgeqrfrA  r   r  itemr   )
r0   lapack_routiner  r  ldar2   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-   c                      t        j                  d      j                  d      } t         j                  j	                  |       }t        j
                  g dg dg dg      }t        ||       y )N<   rs   rt   r   )r   r   r     )r     r  &   )r  .   4   :   )r'   r&  r   r   r3  r   r   r   r  r.  s      r+   test_diagonalr  (	  sX     			"i(AYY"Fxx	
H "r-   c                      t        j                  d      j                  d      } t         j                  j	                  |       }t        j
                  g d      }t        ||       y )Nr  r  )$   t      )r'   r&  r   r   tracer   r   r  s      r+   
test_tracer  8	  sF     			"i(AYY__QFxx'H"r-   c                     t        j                  d      j                  d      } t         j                  j	                  | | dz         }t        j
                  g dg dg dg      }t        ||       g d}g d}t         j                  j	                  ||      }t        g d      }t        ||       t        t        d      5  | d d dd f   }t         j                  j	                  ||       d d d        y # 1 sw Y   y xY w)	Nr  r%  rp   )r   rr   r   r  r  )r   r   r   z8input arrays must be \(arrays of\) 3-dimensional vectors)	r'   r&  r   r   crossr   r   r!   r'  )r   r  r.  rw  re  x_2dims         r+   
test_crossr  C	  s    
		!V$AYY__QA&Fxx H " 	AAYY__Q"F\"H"	C
 ( 1ab5
		'( ( (s   ,C88Dc                      t        j                  d      j                  d      } t         j                  j	                  | |       dk(  sJ t         j                  j	                  | | ddg      dk(  sJ y )Nr   r  7   rW  r  )r'   r&  r   r   r  )r   s    r+   test_tensordotr  ^	  sb    
		!V$A99q!$***99q!66*:;rAAAr-   c                      t        j                  d      j                  d      } t         j                  j	                  | | j
                        }t        j                  ddgddgg      }t        ||       y )Nr   r  r      r&  )r'   r&  r   r   r   r  r   r   r  s      r+   test_matmulr  f	  s[     			!V$AYYa%Fxx!R2r(+,H"r-   c                  P   t        j                  d      j                  d      } t         j                  j	                  |       }| j
                  }t        ||       t        t        d      5  t         j                  j	                  | d d df          d d d        y # 1 sw Y   y xY w)Nr   r  z$array must be at least 2-dimensionalr   )	r'   r&  r   r   matrix_transposer  r   r!   r'  r  s      r+   test_matrix_transposer  p	  s    
		!V$AYY''*FssH"	:
 , 			""1QT7+, , ,s   ,'BB%c                  T   t        j                  d      j                  d      } t         j                  j	                  |       }t        |t        j                  d      d       t         j                  j	                  | d      }t        |t        j                  dgg      d       y )Nr  r%  ^)ː,@rs   r5   Tr  )r'   r&  r   r   matrix_normr   rC  r   )r   r  s     r+   test_matrix_normr  }	  su    
		!V$AYY""1%F

7 3AFYY""1t"4F7) 5aHr-   c                  t   dD ]2  } t         j                  t         j                  t         j                  fD ]  }t        j                  | |      }t        t         j                  j                  |d      d       t        t         j                  j                  |d      d       t        t         j                  j                  |d      d       t        t         j                  j                  |d      d       t        t         j                  j                  |t         j                        d        5 y )N)r  )rr   r   rk   r  r  r   r  rp   rr   )	r'   rC  r  r  rA  r   r   r  r   )r   r0   r   s      r+   test_matrix_norm_emptyr  	  s    ) Bjj"**bhh7 	BE&A..qe.<a@..qe.<a@..qa.8!<..qa.8!<..qbff.=qA	BBr-   c                  "   t        j                  d      j                  d      } t         j                  j	                  |       }t        |t        j                  d      d       t         j                  j	                  | d      }t        |t        j                  g d      d       t         j                  j	                  | d	
      }t        j                  ddd      }t        |j                  |j                         t        ||d       y )Nr  r%  r  rs   r  r   r  )g|a2@gsh|? @gDioI#@Tr  r   rC  r8   )r'   r&  r   r   vector_normr   rC  r   fullr   r   r  s      r+   test_vector_normr  	  s    
		!V$AYY""1%F

7 3AFYY""11"-F01! YY""1t"4Fwwvwi8Hx~~.;r-   c                     t         j                  t         j                  t         j                  fD ]  } t        j                  d|       }t        t         j                  j                  |d      d       t        t         j                  j                  |d      d       t        t         j                  j                  |t         j                        d        y )Nr   rp   r  rr   )	r'   rC  r  r  rA  r   r   r  r   )r0   r   s     r+   test_vector_norm_emptyr  	  s    **bjj"((3 >HHQRYY**1!*4a8RYY**1!*4a8RYY**1"&&*91=	>r-   c                  f   t        t        t        j                  d            d       t        t        t        j                  d            d       t        t        t        j                  d            d       t        t        j                  d            } t        | j                  d       t        | j
                  t        j                         t        t        j                  d            } t        | t        j                  g d             t        t        j                  d	            } t        | t        j                  ddg             t        t        j                  d
            } t        | j                  d       t        | t        j                  dt        j                               y )Nrk   r   )r   r   )r   r   )r   r   r   rl   )rs   r   r   r	  )rr   r   r   )rr   rs   r   rt   r  r8   )r   r   r'   rA  r   r0   intpr   )r(  s    r+   test_empty_matrix_rankr  	  s   RXXf-.2RXXf-.2RXXf-.2),-Ft$rww'),-F),-),-F1a&)*,/0Fv&&89r-   )r   r  )__doc__r   rV  rF  rp  	threadingr   r  r   numpyr'   r   r   r   r   r   r   r	   r
   r   r   r   r   r   numpy._corer   numpy.exceptionsr   numpy.linalgr   r   r   r   r   numpy.linalg._linalgr   numpy.testingr   r   r   r   r   r   r   r   r    r!   numpy.testing._private.utilsr"   numpy.linalg.lapack_liteImportErrorr,   r1   r9   r;   r=   r[   rE   r_   r  r  r   r   r  r   r   r   r   r   r   r   r   r   r  r  r  r  r6  r;  rI  rQ  rZ  ra  rl  ru  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r4  r0   r  rF  rL  rc  rk  rs  r|  r  r  r  r  r  r  r  r  r  r  r  r  r$  r=  rO  rD  rS  r  active_countri  r   rv  rx  r  r  r  rZ  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )r  s   0r+   <module>r     s!    	 
          ! & P P >   8	#* . 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.0HI  urxxf-rxxF+J  uyy~~a#yy~~a " uyy~~a#yy~~a " zAA1vA# #
 #L ;~lL1@b"XV,. ~r2hR2r(36B\02 ~lL1@b"XV,. ~r2hR2r(36B\02 /1LM  gw'w79 w''7);gw=OP! 0@B 02MN! gw'w79 w''7);gw=OP! 0@B  02MN! w(66*:;7KM  w''7);gw=OP! w'&&)9FF;KL! 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 CE! E
 EP ;yr2hR)8 yr2hR)8 zr6lVQK0@ zr6lVQK0@ xrxxf-J  {AA r2hR)* }yy~~a#/! 
 @B 	 	" "-'` 		 1 1.2> 22n 22 2	Fn 	F	I 	I
+> 
+$+%'F +H3
 H3V/#%D /0h 0.)')H )-, -66#%D 6!+h !+H5 5,#%D ,8h 8,,)+G ,,A(, A+1$&E +1\M*y M*`0$'/20	y 	0*,H 0	* 	/##%D #*'1h '1T3%'> 3<.+
 .+b 5HIIJS: S: KS:l?)+G ?3- 3-lB%'C B.8+ 8+v
= 
=\Q} \Q~v<- v<r	- 	J J8- 
- 
 
	Y 3 		Y 3 		I1 	&E &ER
(^+ ^+B?
 ?
D3 3"5* G$BC; D; C Iq L  N G  I.7IN.7b G$=>5  ?5D~I ~IB#O #OLB B* GH I |#F  H#H#4# #(6B#
,IB<$>:sK  	 			`   Js   f> g

>gg