
    8`i:L                       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
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l0Z
n# e1$ r Y nw xY wd	 Z2e+Z3ddZ+d Z4d Z5d Z6h dZ7 G d d          Z8d Z9ej:        ;                    d           g Z<e< e9d e8d eddgddgge           eddge                     e8d eddgddgge           eddge                     e8d eddgddgge           eg dg dge                     e8d  ed!d"gd#d$gge           ed%d!ge                     e8d& ed!d"gd#d$gge           ed%d!ge                     e8d' ed!d"gd#d$gge           eg d(g d)ge                     e8d* ej=        d+e           ej=        d,e          d-h.           e8d/ej:        >                    d0d0          ej:        >                    d0                     e8d1ej:        >                    d2d2          ej:        >                    d2                     e8d3d2d4gd5d6ggd4d2g          g
          z  Z<e< e9d7 e8d8 eg d9g dge           eddge                     e8d: eddgddgd;d<gge           eg d=e                     e8d> eg d9g dge           eddge                     e8d? eddgddgd;d<gge           eg d=e                     e8d@ eg dAg dBge           ed%d!ge                     e8dC edDdEgdFdGgdHdIgge           eg dJe                     e8dK eg dAg dBge           ed%d!ge                     e8dL edDdEgdFdGgdHdIgge           eg dJe                     e8dM eg dAg dBge           ed%d!gdNdOgge                     e8dP edDdEgdFdGgdHdIgge           ed%d!gdNdOgdNdOgge                     e8dQej:        >                    d0dR          ej:        >                    d0                     e8dSej:        >                    d2dT          ej:        >                    d2                     e8dUej:        >                    dTd2          ej:        >                    dT                     e8dVej:        >                    dd6          ej:        >                    d          d-h.           e8dWej:        >                    d6d          ej:        >                    d6          d-h.          g          z  Z<e< e9dX e8dY eddgddgge          d           e8dZ eddgddgge          d           e8d[ edd"gd\d2gge          d           e8d] edd"gd\d2gge          d           e8d^ ej=        d+e          dd-h.           e8d_d2d4gd4d2ggd           e8d` eddgddgg          d           e8daej:        >                    d2d2          d          g          z  Z<db Z?e< e?            z  Z<dc Z@dd ZAe< eA            z  Z< G de df          ZB G dg dheB          ZC G di djeB          ZD G dk dleB          ZE G dm dneB          ZF G do dpeB          ZG G dq dreB          ZHds ZI G dt dueCeF          ZJ G dv dweJ          ZK G dx dyeCeF          ZL G dz d{eL          ZM G d| d}eCeF          ZN G d~ deN          ZO G d deCeF          ZP G d deP          ZQ G d d          ZR G d deCeF          ZS G d deSeR          ZT G d deEeH          ZU G d deUeR          ZV G d deCeF          ZW G d deW          ZX G d deCeDeFeG          ZY G d deY          ZZ G d deEeH          Z[ G d de[          Z\d Z] G d deCeF          Z^ G d de^          Z_ G d deCeD          Z` G d de`          Zae	jb        c                    dd dD                        G d d                      Zd G d deEeH          Ze G d d          Zf G d deEeH          Zg G d d          Zh G d d          Zi G d dei          Zj G d dei          Zk G d dekej          Zl G d d          Zm G d dei          Zn G d dei          Zo G d dei          Zp G d delen          Zq G d deleo          Zr G dĄ delep          Zs G dƄ dǦ          ZtdȄ Zu G dɄ dʦ          Zv G d˄ d̦          Zw G d̈́ dΦ          Zxdτ Zye	jb        z                    e'dЬѦ          d҄             Z{e	jb        z                     ej|                    d2k    dӬѦ          e	jb        z                    e(dԬѦ          dՄ                         Z}e	jb        z                    e'd֬Ѧ          e	jb        j~        dׄ                         Z G d؄ d٦          Z G dڄ dۦ          Z G d܄ dݦ          Zdބ Ze	jb                            d߬Ѧ          d             Ze	jb                            e& dѦ          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )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_regexc                     t          |           t          |t          j                  rt          |          nt          j        u S N)type
isinstancenpndarray)outin_s     Z/root/collector_daemon/venv/lib/python3.11/site-packages/numpy/linalg/tests/test_linalg.pyconsistent_subclassr+   9   s9     99jbj&A&A )c j* *          c                 ~    t          |           j        j        t          t          fv r|}n|}t          | |fd|i| d S )Ndecimal)r   dtyper$   r   r   old_assert_almost_equal)absingle_decimaldouble_decimalkwr0   s         r*   r   r   C   sM    qzz 111  Aq88'8R88888r,   c                 r    t           t           t          t          t          t           t          t          i|          S r#   )r   r	   r   r   r1   s    r*   get_real_dtyper:   K   s&    FFFVWf..35 5r,   c                 r    t           t          t          t          t          t          t          t          i|          S r#   )r   r   r	   r   r9   s    r*   get_complex_dtyper<   P   s&    GVWWgw0057 7r,   c                 *    | t           t          fv rdS dS )Ngh㈵>gdy=)r   r   r9   s    r*   get_rtolr>   U   s    !!!tur,   >   squarestrided	hermitian	nonsquaregeneralizedsize-0c                   4    e Zd Z e            fdZd Zd ZdS )
LinalgCasec                     t          t          |t                               || _        || _        || _        t          |          | _        dS )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namer3   r4   	frozensettags)selfrI   r3   r4   rK   s        r*   __init__zLinalgCase.__init__e   sB    
 	
4%%&&&	dOO			r,   c                 @     || j         | j        | j                   dS )zN
        Run the function `do` on this test case, expanding arguments
        rK   N)r3   r4   rK   )rL   dos     r*   checkzLinalgCase.checkp   s'     	4646	******r,   c                     d| j          dS )Nz<LinalgCase: >)rI   rL   s    r*   __repr__zLinalgCase.__repr__v   s    +ty++++r,   N)__name__
__module____qualname__setrM   rQ   rU    r,   r*   rF   rF   d   sO        (+ 	$ 	$ 	$ 	$+ + +, , , , ,r,   rF   c                 V    | 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_tagsrK   )tagcasescases      r*   	apply_tagr`   z   s=    
 (???M??? & &I%		Lr,     r?   r         ?       @      @      @r9   r	   double_2)rc   rb   re   )rd   re         @r         ?       @y       @      @y      @      @y      @      @       @      ?r   	cdouble_2)ri   rh   y      ?      @)y      ?       y      ?      y      ?      0x0r   r   r   rD   rO   8x8   1x1   nonarray         rB   single_nsq_1)rb   rc   rd   single_nsq_2g      @rg   )rc   rb   rd   double_nsq_1double_nsq_2csingle_nsq_1)      ?      ?       @       @      @      )y      @      y      @      "@y      @       @csingle_nsq_2r{   r|   r}   y      @      "y      @      y      @       @)ri   rh   r}   cdouble_nsq_1cdouble_nsq_2cdouble_nsq_1_2y      ?      y       @       cdouble_nsq_2_28x11   1x5   5x10x44x0rA   hsinglehdoublehcsingley       @      hcdoublehempty	hnonarraymatrix_b_onlyhmatrix_1x1c                     g } t           D ] }t          |j        t          j                  s#t          j        |j        d|j        z  d|j        z  g          }|j        d }nD|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            }|                     |           t          j        |j        gdz  dz                                d	|j        j        z             }|j        d }n|j        j        dk    rWt          j        |j        gdz  dz  |j        d
         z                                d	|j        j        dd          z             }n@t          j        |j        gdz  dz                                d	|j        j        z             }t          |j	        dz   |||j
        dhz            }|                     |           | S )Nrs   rt   rq      r-   _tile3rC   rO   rt   rs   _tile213)CASESr%   r3   r&   r'   r   r4   ndimrF   rI   rK   appendreshapeshape)	new_casesr_   r3   r4   new_cases        r*   _make_generalized_casesr   
  s   I # #$&"*-- 	Hdfa$&j!df*5666>AAV[AAA$&!df*a$&j9::Adi(2Aq#'9#>@ @ @"""HdfX\A%&&..v/DEE6>AAV[A$&A)AGBK78876DFL$5566 A $&A)**226DFL3HIIAdi*4a#'9#>@ @ @""""r,   c              #   0  K   t          | t          j                  s| dfV  dS dg| j        z  }d|d<   | j        dk    rd|d<   | j        dk    rd	|d
<   t	          j        t          |           D ]$}d t          | j        |          D             }t          d |D                       }t          j	        || j
                  }|                    t          j                                      d           ||         }| |d<   |                    | j                  }t          t          j        || k                         |dd                    d |D                       z   fV  | j        dk    rV| j        d         dk    rEt%          | j                  }d|d<   t          j        j                            | |          }|dfV  | j        dk    rV| j        d         dk    rEt%          | j                  }d|d<   t          j        j                            | |          }|dfV  | j        dk    r]| j        dd         dk    rJt%          | j                  }d|d<   d|d<   t          j        j                            | |          }|dfV  &dS )z<
    Generate cartesian product of strides for all axes
    nopNrq   )rq   rt   r   rq   r   rs   )rq   r   c                 8    g | ]\  }}t          ||z            S rZ   )abs).0r3   r4   s      r*   
<listcomp>z%_stride_comb_iter.<locals>.<listcomp>B  s&    BBBDAqSQZZBBBr,   c              3   8   K   | ]}t          d d |          V  d S r#   )slice)r   repeats     r*   	<genexpr>z$_stride_comb_iter.<locals>.<genexpr>C  s.      GGVuT400GGGGGGr,   r9   l   >[= .stride__c                     g | ]}d |z  S )z%+drZ   )r   js     r*   r   z%_stride_comb_iter.<locals>.<listcomp>L  s    'C'C'Ca	'C'C'Cr,   r   )stridesstride_xxx_0stride_xxx_0_xrq   rq   stride_xxx_0_0)r%   r&   r'   r   	itertoolsproducttuplezipr   emptyr1   viewuint32fill	__class__r   alljoinlistr   libstride_tricks
as_strided)x
stride_setrepeats	new_shapeslicesxiss          r*   _stride_comb_iterr   1  s     
 a$$ h!&JJrNvzz#
2vzz 
2$eJ&7&78 ' 'BBC,A,ABBB	GGwGGGGG Xiqw///
	
+++Z3WWQ[!!rQw   )chh'C'C7'C'C'CDDDDDDD 6Q;;172;!++QYAAbE%00A0>>Bn$$$$6Q;;172;!++QYAAbE%00A0>>B&&&&&6Q;;173B3<611QYAAbEAbE%00A0>>B&&&&&;' 'r,   c            
      
   g } t           D ]x}t          |j                  D ]a\  }}t          |j                  D ]G\  }}t	          |j        dz   |z   dz   |z   |||j        dhz            }|                     |           Hby| S )Nr   r@   rO   )r   r   r3   r4   rF   rI   rK   r   )r   r_   r3   a_labelr4   b_labelr   s          r*   _make_strided_casesr   a  s    I + ++DF33 	+ 	+JAw/77 + +
7%di#o&?#&E&OQRTU+/9	{+BD D D  ****+	+
 r,   c                   >    e Zd ZeZ e             e            fdZdS )LinalgTestCasec                     | j         D ]u}|j        |z  |k    r|j        |z  r	 |                    | j                   8# t          $ r1}d|d}|t          j                    z  }t          |          |d}~ww xY wdS )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_CASESrK   rQ   rP   	Exception	traceback
format_excAssertionError)rL   requireexcluder_   emsgs         r*   check_caseszLinalgTestCase.check_casesu  s    
 O 	1 	1Dy7"g--y7" 1

47#### 1 1 13t333y+---$S))q01	1 	1s   A  
A;
,A66A;N)rV   rW   rX   r   r   rY   r   rZ   r,   r*   r   r   r  s>        J"%#%% 1 1 1 1 1 1r,   r   c                       e Zd Zd Zd ZdS )LinalgSquareTestCasec                 :    |                      dhddh           d S )Nr?   rC   rD   r   r   r   rT   s    r*   test_sq_casesz"LinalgSquareTestCase.test_sq_cases  s5    ("/!: 	 	< 	< 	< 	< 	<r,   c                 :    |                      ddhdh           d S )Nr?   rD   rC   r   r   rT   s    r*   test_empty_sq_casesz(LinalgSquareTestCase.test_empty_sq_cases  s5    (H!5"/ 	 	2 	2 	2 	2 	2r,   N)rV   rW   rX   r   r   rZ   r,   r*   r   r     2        < < <2 2 2 2 2r,   r   c                       e Zd Zd Zd ZdS )LinalgNonsquareTestCasec                 :    |                      dhddh           d S )NrB   rC   rD   r   r   rT   s    r*   test_nonsq_casesz(LinalgNonsquareTestCase.test_nonsq_cases  5    +"/!: 	 	< 	< 	< 	< 	<r,   c                 :    |                      ddhdh           d S )NrB   rD   rC   r   r   rT   s    r*   test_empty_nonsq_casesz.LinalgNonsquareTestCase.test_empty_nonsq_cases  5    +x!8"/ 	 	2 	2 	2 	2 	2r,   N)rV   rW   rX   r   r   rZ   r,   r*   r   r     r   r,   r   c                       e Zd Zd Zd ZdS )HermitianTestCasec                 :    |                      dhddh           d S )NrA   rC   rD   r   r   rT   s    r*   test_herm_casesz!HermitianTestCase.test_herm_cases  r   r,   c                 :    |                      ddhdh           d S )NrA   rD   rC   r   r   rT   s    r*   test_empty_herm_casesz'HermitianTestCase.test_empty_herm_cases  r   r,   N)rV   rW   rX   r   r   rZ   r,   r*   r   r     r   r,   r   c                   b    e Zd Zej        j        d             Zej        j        d             ZdS )LinalgGeneralizedSquareTestCasec                 :    |                      ddhdh           d S )NrC   r?   rD   r   r   rT   s    r*   test_generalized_sq_casesz9LinalgGeneralizedSquareTestCase.test_generalized_sq_cases  s5    -!:"* 	 	- 	- 	- 	- 	-r,   c                 6    |                      h d           d S )N>   r?   rC   rD   r   r   rT   s    r*   test_generalized_empty_sq_casesz?LinalgGeneralizedSquareTestCase.test_generalized_empty_sq_cases  s&    !D!D!DEEEEEr,   N)rV   rW   rX   pytestmarkslowr   r   rZ   r,   r*   r   r     sY        [- - - [F F F F Fr,   r   c                   b    e Zd Zej        j        d             Zej        j        d             ZdS )"LinalgGeneralizedNonsquareTestCasec                 :    |                      ddhdh           d S )NrC   rB   rD   r   r   rT   s    r*   test_generalized_nonsq_casesz?LinalgGeneralizedNonsquareTestCase.test_generalized_nonsq_cases  5    -!="* 	 	- 	- 	- 	- 	-r,   c                 6    |                      h d           d S )N>   rB   rC   rD   r   r   rT   s    r*   "test_generalized_empty_nonsq_caseszELinalgGeneralizedNonsquareTestCase.test_generalized_empty_nonsq_cases  s&    !G!G!GHHHHHr,   N)rV   rW   rX   r   r   r   r  r  rZ   r,   r*   r  r    sY        [- - - [I I I I Ir,   r  c                   b    e Zd Zej        j        d             Zej        j        d             ZdS )HermitianGeneralizedTestCasec                 :    |                      ddhdh           d S )NrC   rA   rD   r   r   rT   s    r*   test_generalized_herm_casesz8HermitianGeneralizedTestCase.test_generalized_herm_cases  r  r,   c                 :    |                      h ddh           d S )N>   rA   rC   rD   noner   r   rT   s    r*   !test_generalized_empty_herm_casesz>HermitianGeneralizedTestCase.test_generalized_empty_herm_cases  s7    !G!G!G"( 	 	+ 	+ 	+ 	+ 	+r,   N)rV   rW   rX   r   r   r   r
  r  rZ   r,   r*   r  r    sT        [- - - [+ + + + +r,   r  c                     t          |           } | j        dk    r?t          j        | j        | j                  }t          | j        d                   |d<   |S t          | j        d                   S )Nrt   r9   r   .r   )r   r   r&   r   r   r1   r
   )r3   rs     r*   identity_like_generalizedr    s`    

Av{{HQWAG,,,!'"+&&#
###r,   c                       e Zd Zd ZdS )
SolveCasesc                 n   t          j        ||          }t          j        |          j        dk    rEt          ||d                   d         }t          t          j        ||j                  |           n t          ||          }t          ||           t          t          ||                     d S )Nrq   ).N.r   )r   solver&   r   r   r   r   broadcast_tor   r   r+   )rL   r3   r4   rK   r   adotxs         r*   rP   zSolveCases.do  s    LA8A;;q   1a	l++F3E5; ? ?GGGG1aLLE5)))#Aq))*****r,   NrV   rW   rX   rP   rZ   r,   r*   r  r    s#        
+ 
+ 
+ 
+ 
+r,   r  c                   p    e Zd Zej                            deeee	g          d             Z
d Zd Zd ZdS )	TestSolver1   c                     t          j        ddgddgg|          }t          t          j        ||          j        |           d S Nrq         ?r9   )r&   r   r   r   r  r1   rL   r1   r   s      r*   
test_typeszTestSolve.test_types  sH    Hq#ha)777V\!Q''-u55555r,   c                     G d dt           j                  }t          j        d                              ddd          }t          j        d                              |          }t          j        ||          }|j        dk    sJ t          j        d                              dd                              |          }t          j        ||          }|j        dk    sJ t          j        d                              dd                              |          }t          t          t
          j        ||           d S )	Nc                       e Zd ZdS ))TestSolve.test_1_d.<locals>.ArraySubclassNrV   rW   rX   rZ   r,   r*   ArraySubclassr"            Dr,   r$  ro   rs   rs   rs   ru   )rs   rs   rs   rq   )
r&   r'   aranger   r   r   r  r   r    
ValueError)rL   r$  r3   r4   results        r*   test_1_dzTestSolve.test_1_d  s$   	 	 	 	 	BJ 	 	 	IaLL  Aq))IaLLm,,a##|v%%%% IaLL  A&&++M::a##|y((((IaLL  A&&++M::j&,155555r,   c           
      ^    G d dt           j                  }t          j        d                              ddd          }t          j        d                              ddd                              |          }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                              ddd          }t          t          t
          j        ||           t          t          t
          j        |dd         |dd                    t          j        d                              |          }t          j        ||          d d ddf         }t          j        |d d ddddf         |dd                   }t          ||           t          t          ||                     t          j        d                              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         |           d S )	Nc                       e Zd ZdS ),TestSolve.test_0_size.<locals>.ArraySubclassNr#  rZ   r,   r*   r$  r-     r%  r,   r$  ro   rs   r-   rq   rt   r   )r&   r'   r'  r   r   r   r  r   r   r%   r    r   r(  rL   r$  r3   r4   expectedr)  s         r*   test_0_sizezTestSolve.test_0_size  s   	 	 	 	 	BJ 	 	 	 IaLL  Aq))IaLL  Aq))..}==<1%%aaa1aaai0a1Q3!na1Q3	l;;68,,,
6=11222 	f(&,!!!QqS!A#+JJJj&,1QQQ!QQQY<@@@ IaLL  Aq))j&,1555j&,!A#!A#??? IaLLm,,<1%%aaa1f-a1Q3!na!f5568,,,
6=11222IaLL  A&&j&,1555j&,!A#!A#???j&,!!!QqS!A#+BBBBBr,   c                     G d dt           j                  }t          j        d                              ddd          }t          j        d                              ddd                              |          }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          ||                     d S )	Nc                       e Zd ZdS ).TestSolve.test_0_size_k.<locals>.ArraySubclassNr#  rZ   r,   r*   r$  r3  "  r%  r,   r$  ru   rq   rs   r-   rt   r   )
r&   r'   r'  r   r   r   r  r   r   r%   r.  s         r*   test_0_size_kzTestSolve.test_0_size_k   s   	 	 	 	 	BJ 	 	 	IaLL  Aq))IaLL  Aq))..}==<1%%aaaAaCi0a111aaa19..68,,,
6=11222 <1%%aaa1ack2a1Q3!na1Q3!n==68,,,
6=1122222r,   N)rV   rW   rX   r   r   parametrizer   r	   r   r   r  r*  r0  r4  rZ   r,   r*   r  r    s{        [Wvvw&HII6 6 JI66 6 6"C C CB3 3 3 3 3r,   r  c                       e Zd Zd ZdS )InvCasesc                     t          j        |          }t          t          ||          t	          |                     t          t          ||                     d S r#   )r   invr   r   r  r   r+   )rL   r3   r4   rK   a_invs        r*   rP   zInvCases.do5  sW    
1F1e,,5a88	: 	: 	:#E1--.....r,   Nr  rZ   r,   r*   r7  r7  3  s#        / / / / /r,   r7  c                   d    e Zd Zej                            deeee	g          d             Z
d ZdS )TestInvr1   c                     t          j        ddgddgg|          }t          t          j        |          j        |           d S r  )r&   r   r   r   r9  r1   r  s      r*   r  zTestInv.test_types=  sD    Hq#ha)777VZ]](%00000r,   c                     G d dt           j                  }t          j        dt           j                                      |          }t          j        |          }t          |j        j	        t           j
        u            t          |j        |j                   t          t          ||                     t          j        dt           j                                      |          }t          j        |          }t          |j        j	        t           j        u            t          |j        |j                   t          t          ||                     d S )Nc                       e Zd ZdS )*TestInv.test_0_size.<locals>.ArraySubclassNr#  rZ   r,   r*   r$  r@  D  r%  r,   r$  r   rq   rq   r9   rl   )r&   r'   zerosint_r   r   r9  r   r1   r$   float64r   r   r%   	complex64rL   r$  r3   ress       r*   r0  zTestInv.test_0_sizeB  s    	 	 	 	 	BJ 	 	 	HYbg...33MBBjmm	"*,---QWci(((
3..///HV2<00055mDDjmm	",.///QWci(((
3../////r,   NrV   rW   rX   r   r   r5  r   r	   r   r   r  r0  rZ   r,   r*   r<  r<  <  sY        [Wvvw&HII1 1 JI10 0 0 0 0r,   r<  c                       e Zd Zd ZdS )EigvalsCasesc                 |    t          j        |          }t          j        |          \  }}t          ||           d S r#   )r   eigvalseigr   )rL   r3   r4   rK   evevaluesevectorss          r*   rP   zEigvalsCases.doU  s9    ^A"JqMMB(((((r,   Nr  rZ   r,   r*   rJ  rJ  S  s#        ) ) ) ) )r,   rJ  c                   d    e Zd Zej                            deeee	g          d             Z
d ZdS )TestEigvalsr1   c                 ,   t          j        ddgddgg|          }t          t          j        |          j        |           t          j        ddgddgg|          }t          t          j        |          j        t          |                     d S Nrq   r  r9   r   )r&   r   r   r   rL  r1   r<   r  s      r*   r  zTestEigvals.test_types\  s    Hq#ha)777V^A&&,e444Hq#hQ(666V^A&&,.?.F.FGGGGGr,   c                     G d dt           j                  }t          j        dt           j                                      |          }t          j        |          }t          |j        j	        t           j
        u            t          d|j                   t          t          |t           j                             t          j        dt           j                                      |          }t          j        |          }t          |j        j	        t           j        u            t          d|j                   t          t          |t           j                             d S )Nc                       e Zd ZdS ).TestEigvals.test_0_size.<locals>.ArraySubclassNr#  rZ   r,   r*   r$  rW  e  r%  r,   r$  rA  r9   r   rq   rl   rm   )r&   r'   rB  rC  r   r   rL  r   r1   r$   rD  r   r   r%   rE  rF  s       r*   r0  zTestEigvals.test_0_sizec  s$   	 	 	 	 	BJ 	 	 	HYbg...33MBBnQ	"*,---VSY'''
3
++,,,HV2<00055mDDnQ	",.///T39%%%
3
++,,,,,r,   NrH  rZ   r,   r*   rR  rR  [  s\        [Wvvw&HIIH H JIH- - - - -r,   rR  c                       e Zd Zd ZdS )EigCasesc           	      L   t          j        |          }|j        |j        }}t	          t          ||          t          j        |          t          j        |          dd d d f         z  t          |j	                             t          t          ||                     d S )N.rtol)r   rM  eigenvalueseigenvectorsr   r   r&   r   r>   r1   r   r+   )rL   r3   r4   rK   rG  r^  r_  s          r*   rP   zEigCases.dox  s    jmm$'OS5E\q,//
<002:k3J3J3PTVWVWVW<3XX%k&788	: 	: 	: 	: 	#L!4455555r,   Nr  rZ   r,   r*   rZ  rZ  v  s#        6 6 6 6 6r,   rZ  c                   d    e Zd Zej                            deeee	g          d             Z
d ZdS )TestEigr1   c                    t          j        ddgddgg|          }t           j                            |          \  }}t	          |j        |           t	          |j        |           t          j        ddgddgg|          }t           j                            |          \  }}t	          |j        t          |                     t	          |j        t          |                     d S rT  )r&   r   r   rM  r   r1   r<   rL   r1   r   wvs        r*   r  zTestEig.test_types  s    Hq#ha)777y}}Q1QWe$$$QWe$$$Hq#hQ(666y}}Q1QW/66777QW/6677777r,   c                     G d dt           j                  }t          j        dt           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                                      |          }t          j        |          \  }}t          |j        j	        t           j        u            t          |j        j	        t           j        u            t          |j        |j                   t          d|j                   t          t          |t           j                             d S )Nc                       e Zd ZdS )*TestEig.test_0_size.<locals>.ArraySubclassNr#  rZ   r,   r*   r$  rh    r%  r,   r$  rA  r9   rX  rl   rm   )r&   r'   rB  rC  r   r   rM  r   r1   r$   rD  r   r   r%   rE  rL   r$  r3   rG  res_vs        r*   r0  zTestEig.test_0_size  s   	 	 	 	 	BJ 	 	 	HYbg...33MBBZ]]
U BJ.///	"*,---QWek***VSY'''
1bj))***HV2<00055mDDZ]]
U BL0111	",.///QWek***T39%%%
1bj))*****r,   NrH  rZ   r,   r*   ra  ra    sY        [Wvvw&HII	8 	8 JI	8+ + + + +r,   ra  c                   b    e Zd ZdZej                            deee	e
g          d             ZdS )SVDBaseTestsFr1   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          |                     d S )Nrq   r  r9   F
compute_uvrA   )r&   r   r   svdUSVhr   r1   r:   rA   )rL   r1   r   rG  rq  rr  rs  r   s           r*   r  zSVDBaseTests.test_types  s    Hq#ha)777jmm5#%b1QWe$$$QWnU33444RXu%%%JqUdnEEEQWnU3344444r,   N)rV   rW   rX   rA   r   r   r5  r   r	   r   r   r  rZ   r,   r*   rl  rl    sO        I[Wvvw&HII5 5 JI5 5 5r,   rl  c                       e Zd Zd ZdS )SVDCasesc                    t          j        |d          \  }}}t          |t          t	          j        |          t	          j        |          dd d d f         z  t	          j        |                    t          |j                             t          t          ||                     t          t          ||                     d S )NF.r\  )
r   rp  r   r   r&   r   r>   r1   r   r+   )rL   r3   r4   rK   ur   vts          r*   rP   zSVDCases.do  s    :a''1b6"*Q--"*Q--T1112M"M+-:b>>; ;%ag..	0 	0 	0 	0 	#Aq))***#B**+++++r,   Nr  rZ   r,   r*   ru  ru    s#        , , , , ,r,   ru  c                       e Zd Zd Zd ZdS )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                     dS )	z6 Empty input should put an identity matrix in u or vh )ru   r   Trn  ru   ru   rl   ru   )r   ru   N)r&   r   r   rp  rA   r   r   eye)rL   r   rw  r   vhs        r*   test_empty_identityzTestSVD.test_empty_identity  s    HV:aDDNKKK1bQWf%%%RXv&&&Qq		"""HV:aDDNKKK1bQWf%%%RXv&&&R#####r,   c                     t          j        ddgddgg          }t          j        |d| j                  }t          j        |          }t          ||           d S )Nrq   r  Frn  )r&   r   r   rp  rA   svdvalsr   )rL   r   
s_from_svds_from_svdvalss       r*   test_svdvalszTestSVD.test_svdvals  s[    Hq#ha)**Zet~NNN
**J77777r,   N)rV   rW   rX   r  r  rZ   r,   r*   rz  rz    s2        $ $ $8 8 8 8 8r,   rz  c                       e Zd Zd ZdS )SVDHermitianCasesc                    t          j        |dd          \  }}}t          |t          t	          j        |          t	          j        |          dd d d f         z  t	          j        |                    t          |j                             d }t          t	          j        | ||                    t	          j	        t	          j
        |j        d                   |j                             t          t	          j        | ||                    t	          j	        t	          j
        |j        d                   |j                             t          t	          j        |          dd d df         |           t          t          ||                     t          t          ||                     d S )NFTrA   .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*   rA   z'SVDHermitianCases.do.<locals>.hermitian  sR    ch((D!%b48DHd2h72<$777888r,   r   )r   rp  r   r   r&   r   r>   r1   r   r  r}  r   r   sortr   r+   )rL   r3   r4   rK   rw  r   rx  rA   s           r*   rP   zSVDHermitianCases.do  s~   :a$7771b6"*Q--"*Q--T1112M"M+-:b>>; ;%ag..	0 	0 	0 	0	9 	9 	9
 	BIa166qwWY{H[H[]^]d8e8efffBIb))B--88"/"&QSQYZ\Q]J^J^`b`h:i:ijjjRWQZZTTrT	*A...#Aq))***#B**+++++r,   Nr  rZ   r,   r*   r  r    s#        , , , , ,r,   r  c                       e Zd ZdZdS )TestSVDHermitianTN)rV   rW   rX   rA   rZ   r,   r*   r  r    s        IIIr,   r  c                       e Zd Zd ZdS )	CondCasesc           	         t          |          }d|v r"t          t          t          j        |           d S 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                            |          }t          t          j        |d          t          |          
                    d
                              d          t          |          
                    d
                              d          z  dd           t          t          j        |d          t          |          
                    d
                              d          t          |          
                    d
                              d          z  dd           t          t          j        |t          j                  t          |          
                    d                              d          t          |          
                    d                              d          z  dd           t          t          j        |t          j                   t          |          
                    d                              d          t          |          
                    d                              d          z  dd           t          t          j        |d          t          j        t          |          d	z  
                    d          
                    d          t          |          d	z  
                    d          
                    d          z            dd           d S )NrD   F)ro  r  ).r   r   r   r5   r6   rs   r   rq   r   fro)r   r    r   r   condrp  r   r&   r9  r   summaxminr   sqrt)rL   r3   r4   rK   cr   cinvs          r*   rP   zCondCases.do  st   AJJt+v{A666F JqU+++KNNAfI'
2R	1 	1 	1 	1 	K1qy1W:5R	1 	1 	1 	1 	K2'
QvY 6R	1 	1 	1 	1
 y}}QK1FFJJrNNr""SYY]]2%6%6%:%:2%>%>>R	1 	1 	1 	1 	K2FFJJrNNr""SYY]]2%6%6%:%:2%>%>>R	1 	1 	1 	1 	K26""FFJJrNNr""SYY]]2%6%6%:%:2%>%>>R	1 	1 	1 	1 	KBF7##FFJJrNNr""SYY]]2%6%6%:%:2%>%>>R	1 	1 	1 	1 	K5!!GSVVQYOOB''++B//4yy!|((,,00445 6 6R		1 	1 	1 	1 	1 	1r,   Nr  rZ   r,   r*   r  r    s#        (1 (1 (1 (1 (1r,   r  c                   h   e Zd Zej                            dddg          d             Zej                            deee	e
g          ej                            dddd	d
dej        ej         g          d                         Zd Zej                            ddd          d             Zd ZdS )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                     d S )Nrb   r   rq   r   g       r   r   r   rd   r{   ru   gUUUUUU?rq   r   r  r  gUUUUU6@)r   r   r   r  r   r&   r  )rL   r  As      r*   test_basic_nonsvdzTestCond.test_basic_nonsvd  s     :::{{{JJJ788 	VAFK3//333FKC400%888FK1--q111FK2..444FK5112783D3DEEEEEr,   r1   norm_ordrq   r   rs   r   r  c                     t          g dg dg dg|          }t          |          }t          t          j        ||          j        |           d S )Nr  r  r  r9   )p)r   r:   r   r   r  r1   )rL   r1   r  r  out_types        r*   test_cond_dtypeszTestCond.test_cond_dtypes)  s^    
 :::{{{JJJ7uEEE!%((V[h///5x@@@@@r,   c                 H   t          j        d          t          j        d          g}g d}ddg}t          j        ||          D ]+\  }}t          t          j        ||          dk               ,t          j        ||          D ]\  }}t          j        ||           d S )Nr&  Nrq   rs   r  r   r     4&kC)r&   rB  onesr   r   r   r   r  )rL   Asp_posp_negr  r  s         r*   test_singularzTestCond.test_singular2  s     hv0###R%b%00 	. 	.DAq FK1%%,----%b%00 	 	DAqK1	 	r,   z/Platform/LAPACK-dependent failure, see gh-18914)runreasonc                    g d}g d}t          j        d          }t           j        |d<   |D ]_}t          j        ||          }t          t          |t           j                             t          t          j        |                     `t          j        d          }t           j        |d<   |D ]}t          j        ||          }t          t          j        |d                              ||v r3t          |d         d	k               t          |d
         d	k               ut          t          j        |d                               t          t          j        |d
                               d S )N)Nrq   r   rs   r   r  r  r&  rX  )rt   rs   rs   rq   r   rq   rq   r   r  rs   )	r&   r  nanr   r  r   r%   rD  isnan)rL   psr  r  r  r  s         r*   test_nanzTestCond.test_nan@  sX   
 )((###GFOO&$ 	! 	!AAq!!AJq"*--...BHQKK    GIV'
 	, 	,AAq!!ABHQqTNN###Ezz!t$$$!t$$$$BHQqTNN*+++BHQqTNN*++++	, 	,r,   c                    t           j                            d           t           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                              d S )	Nra   rs   r   rl   r   )Nrq   rs   r  r   r   rX  rq   r   )
r&   randomseedrandr   r  r   r   r   isfinite)rL   r  r  r  s       r*   test_stacked_singularzTestCond.test_stacked_singular[  s     		tINN1aA&&$$, 	* 	*AAq!!A4"&)))4"&)))BK$(()))BK$(())))	* 	*r,   N)rV   rW   rX   r   r   r5  r  r   r	   r   r   r&   r   r  r  xfailr  r  rZ   r,   r*   r  r    s       [\E4=99
F 
F :9
F [Wvvw&HII[Z!RBrvw)OPPA A QP JIA   [t-  . ., ,. .,0* * * * *r,   r  c                       e Zd Zd ZdS )	PinvCasesc                     t          j        |          }t          }t           | |||          |          |dd           t	          t          ||                     d S )Nr   r   r  r   pinvr   r   r   r+   rL   r3   r4   rK   a_ginvr   s         r*   rP   zPinvCases.dop  sa    QCCAv22AaXZ[[[[#FA../////r,   Nr  rZ   r,   r*   r  r  k  s#        
0 0 0 0 0r,   r  c                       e Zd ZdS )TestPinvNr#  rZ   r,   r*   r  r  x          Dr,   r  c                       e Zd Zd ZdS )PinvHermitianCasesc                     t          j        |d          }t          }t           | |||          |          |dd           t	          t          ||                     d S )NTr  r   r   r  r  r  s         r*   rP   zPinvHermitianCases.do~  sh    Q$///CCAv22AaXZ[[[[#FA../////r,   Nr  rZ   r,   r*   r  r  |  s#        0 0 0 0 0r,   r  c                       e Zd ZdS )TestPinvHermitianNr#  rZ   r,   r*   r  r    r  r,   r  c                     t          j        g dg dg dg          } t          t           j                            | d          t           j                            | d                     t          j        t          d          5  t           j                            | dd	           d d d            d S # 1 swxY w Y   d S )
Nrq   rs   rt   )ru   rq   rq   )rs   rt   rq   r  rcondr\  z%`rtol` and `rcond` can't be both set.)match)r  r]  )r&   r   r   r   r  r   raisesr(  )r3   s    r*   test_pinv_rtol_argr    s    
)))YYY			233A
	q$$
	qs##  
 
B
 
 
 / / 		q#.../ / / / / / / / / / / / / / / / / /s   #B77B;>B;c                       e Zd Zd ZdS )DetCasesc                 &   t          j        |          }t          j        |          }|j        |j        }}t          |          j        j        t          t          fv r(t          |          
                    t                    }n't          |          
                    t                    }t          j        |          }	t          |t          j        |	d                     t          |t!          j        |          z  t          j        |	d                     t!          j        |          }t!          j        |          }|dk    }
t          t!          j        ||
                   d           t)          ||
          t*                      d S )Nr   axisr   rq   )r   detslogdetsign	logabsdetr   r1   r$   r   r	   astyper   rL  r   r   reducer&   exp
atleast_1dr   r   r   )rL   r3   r4   rK   drG  r   ldadrN  ms              r*   rP   zDetCases.do  s5   JqMMnQ#-21:: VV$444""6**BB""7++B^BAxr;;;<<<Ar

NHOBR,H,H,HIIIM!]2!VBF1Q4LL!,,,RVcT"""""r,   Nr  rZ   r,   r*   r  r    s#        # # # # #r,   r  c                   j    e Zd Zd Zej                            deee	e
g          d             Zd ZdS )TestDetc                    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                     d S )N        y                r   rq   )r   r   r  r$   r	   r   r  r   rT   s    r*   	test_zerozTestDet.test_zero  s   VZ#((#...T&*seW--..777VZ$))3///T&*tfX..//999V^cUG,,sSDk:::T&.3%11!455v>>>T&.3%11!455v>>>V^dVH--sd|<<<T&.4&221566@@@T&.4&221566?????r,   r1   c                 T   t          j        ddgddgg|          }t          t           j                            |          j        |           t           j                            |          \  }}t          |j        t          |                     t          |j        |           d S r  )r&   r   r   r   r  r1   r  r:   )rL   r1   r   phr   s        r*   r  zTestDet.test_types  s    Hq#ha)777RY]]1%%+U333	!!!$$AQWnU33444RXu%%%%%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            d S )Nrl   r9   rb   r  r   rq   )r&   rB  rE  r   r  r   r   r1   r$   r  float32rD  )rL   r3   rG  s      r*   r0  zTestDet.test_0_size  sV   HV2<000jmmS"	",.///nQS&!!!A!R\1222A!RZ/000HV2:...jmmS"	"*,---nQS&!!!A!RZ/000A!RZ/00000r,   N)rV   rW   rX   r  r   r   r5  r   r	   r   r   r  r0  rZ   r,   r*   r  r    sm        @ @ @ [Wvvw&HII& & JI&1 1 1 1 1r,   r  c                       e Zd Zd ZdS )
LstsqCasesc                    t          j        |          }|j        \  }}t          j        |d          \  }}}	t          j        ||d          \  }
}}}|dk    r%t          |
dk                                               ||k    r/t          |t          ||
                     t          ||           nt          ||           t          ||                    |                     ||k    r||k    rt          j        t          t          j	        ||
          |z
                      dz                      d          }t          j        |          }t          j        |          j        dk    r!d|_        t          |j        |j                   n4t          j        g                               t#          |
                    }t          ||           t          t          j        |j        t           j                             t          t+          |
|                     t          t+          ||                     d S )	NFr   r  r   rs   r  rq   r   )r&   r   r   r   rp  lstsqr   r   r   r   r   __array_wrap__r   r  r   r   r   r$   
issubdtyper1   floatingr+   )rL   r3   r4   rK   arrr  nrw  r   rx  r   	residualsranksvexpect_residss                  r*   rP   zLstsqCases.do  s   jmmy1:a''1b!'a"!=!=!=9dB66Q!VLLNN###663q!99---q!!!!q!!!B 1 1! 4 4555199Q
3rva||a/0011Q6 J}55Mz!}}!Q&&&*#Y_m.ABBBHRLL--d1gg66MI}555ior{;;<<<#Aq))***#Iq1122222r,   Nr  rZ   r,   r*   r  r    s#        3 3 3 3 3r,   r  c                   j    e Zd Zd Zej                            g dg d          d             Zd ZdS )	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               d S )
N)r  rb   r  rb   rc   r  )r  rc   r  r  rb   r  )rb   r  rb   r  r  re   )r  r  r  rc   rd   r  )rq   r   r   r   r   r   r   r  ru   rt   )r&   r   Tr   r  r   )rL   r3   r4   r   r  r  r   s          r*   
test_rcondzTestLstsq.test_rcond  s    H2222222222224 5 5 67 	

 H'''(( &Q < < <9dA	 &Q 2 29dA	 &Q > > >9dA	r,   )r  r  n_rhs))ru   rs   rs   )r   ru   rq   )r   ru   rs   )ru   r   rq   )ru   r   rs   )ru   rs   r   r   r   r   c                    t          j        ||z                                ||          }t          j        ||f          }t	          j        ||d           \  }}}}	|dk    r%t          |dk                                               t          |j	        ||f           t          |j	        ||k    r|fnd           ||k    rE|dk    r?|t          j
        ||          z
  }
t          ||
|
z                      d                     t          |t          ||                     t          |	j	        t          ||          f           d S )Nr  r   rm   r   r  )r&   r'  r   r  r   r  r   r   r   r   r   r   r  r  )rL   r  r  r  r3   r4   r   r  r  r   r  s              r*   test_empty_a_bzTestLstsq.test_empty_a_b  s3    Ia!e$$Q**GQJ &Q > > >9dA66Q!VLLNN###QWq%j)))Y_1q55xxdDDDq55UQYYBF1aLL A	AE;;B;+?+?@@@T3q!99%%%QWs1ayyl+++++r,   c                 \   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            d S # 1 swxY w Y   d S )N)r   rq   rs   rt   )r   g?g?g @gffffff
@zIncompatible dimensionsr  )
r&   r   vstackr  lenr  r!   r   r   r  )rL   r   yr  s       r*   test_incompatible_dimsz TestLstsq.test_incompatible_dims  s    H\\\""H---..Iq"'#a&&//*++- .GHH 	+ 	+LAT****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   <B!!B%(B%N)	rV   rW   rX   r  r   r   r5  r
  r  rZ   r,   r*   r  r    sz           [000 3 3 3  , , ,+ + + + +r,   r  dtc                 6    g | ]}t          j        |          S rZ   )r&   r1   )r   r  s     r*   r   r   &  s     IIIIIIr,   z?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j                            ed          d             ZdS )TestMatrixPowerru   )rt   r   rq   rs   )rs   rt   r   rq   )rq   rs   rt   r   rq   r   rs   r   gGc                    | 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                   d S )Nrs   d   i       r   rq   rt   )rshft_1r  r   r   rshft_0rshft_2rshft_3)rL   r  rshfts      r*   test_large_powerz TestMatrixPower.test_large_power3  s   ##B''3 5 9::DL	J 	J 	J3 5 9::DL	J 	J 	J3 5 9::DL	J 	J 	J3 5 9::DL	J 	J 	J 	J 	Jr,   c                     d }| j         D ]N} ||                    |                     |t          k    r# || j                            |                     Od S )Nc                     t          | d          }t          |t          |                      t          |j        | j                   d S )Nr   )r   r   r  r1   )Mmzs     r*   tzz.TestMatrixPower.test_power_is_zero.<locals>.tz?  sD    a##B6q99:::17+++++r,   	rshft_allr  objectstackedrL   r  r#  r  s       r*   test_power_is_zeroz"TestMatrixPower.test_power_is_zero>  sr    	, 	, 	,
 > 	, 	,CBszz"~~V||4<&&r**+++	, 	,r,   c                     d }| j         D ]N} ||                    |                     |t          k    r# || j                            |                     Od S )Nc                 z    t          | d          }t          ||            t          |j        | j                   d S )Nrq   )r   r   r1   )r  r"  s     r*   r#  z-TestMatrixPower.test_power_is_one.<locals>.tzJ  s;    c1%%BS!!!39-----r,   r$  r(  s       r*   test_power_is_onez!TestMatrixPower.test_power_is_oneI  sr    	. 	. 	.
 > 	, 	,CBszz"~~V||4<&&r**+++	, 	,r,   c                     d }| j         D ]N} ||                    |                     |t          k    r# || j                            |                     Od S )Nc                     t          | d          }| j        t          k    rt          nt          }t          | || |                      t          |j        | j                   d S )Nrs   )r   r1   r&  r   r   r   )r  r"  mmuls      r*   r#  z-TestMatrixPower.test_power_is_two.<locals>.tzU  sZ    c1%%B Y&0066cDTT#s^^,,,39-----r,   r$  r(  s       r*   test_power_is_twoz!TestMatrixPower.test_power_is_twoT  sr    	. 	. 	. > 	, 	,CBszz"~~V||4<&&r**+++	, 	,r,   c                 n    d }| j         D ])}|| j        vr ||                    |                     *d S )Nc                     t          | d          }| j        t          k    rt          nt          }t           |||           t          |                      d S Nr   )r   r1   r&  r   r   r   r  )r  invmatr/  s      r*   r#  z3TestMatrixPower.test_power_is_minus_one.<locals>.tza  sa    !#r**F Y&0066cDVS!!#<S#A#AC C C C Cr,   )r%  dtnoinvr  r(  s       r*   test_power_is_minus_onez'TestMatrixPower.test_power_is_minus_one`  sY    	C 	C 	C > 	# 	#C%%3::b>>"""	# 	#r,   c                     | j                             |          }t          t          t          |d           t          t          t          |dg           d S )Ng      ?rq   )r  r  r    	TypeErrorr   rL   r  r  s      r*   test_exceptions_bad_powerz)TestMatrixPower.test_exceptions_bad_powerk  sG    l!!"%%isC888isQC8888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           d S )Nrq   rs   )ru   rt   rs   )r    r   r   r&   r   r  )rL   r  s     r*   test_exceptions_non_squarez*TestMatrixPower.test_exceptions_non_squarep  sr    k<1#r1B1BAFFFk<A3*b1I1I1MMMk<B1G1GKKKKKr,   fp errors don't work in wasmr  c                     || j         v rd S | j                            |          }t          t          t
          |d           d S r3  )r5  noninvr  r    r   r   r9  s      r*   test_exceptions_not_invertiblez.TestMatrixPower.test_exceptions_not_invertibleu  sC    Fk  $$k<b99999r,   N)rV   rW   rX   r&   r}  r  r  r  r  r%  r   r@  blockr'  r&  r1   r5  r  r)  r,  r0  r6  r:  r<  r   r   skipifr   rA  rZ   r,   r*   r  r  &  sc        bfQiiGlll#Glll#Glll#G'7G4IUQFQF#$$Fbh'}q())Gxrx}}hbhsmmXRXc]]CG	J 	J 	J	, 	, 	,	, 	, 	,
, 
, 
,	# 	# 	#9 9 9
L L L
 [(FGG: : HG: : :r,   r  c                       e Zd Zd ZdS )TestEigvalshCasesc                 D   t          j        |d          }t          j        |          \  }}|                    d           t	          ||t          |j                             t          j        |d          }t	          ||t          |j                             d S )NLr   r  r\  rq  )r   eigvalshrM  r  r   r>   r1   )rL   r3   r4   rK   rN  rO  rP  ev2s           r*   rP   zTestEigvalshCases.do  s     _Q$$"JqMM"G(28*<*<====oa%%W8BH+=+=>>>>>>r,   Nr  rZ   r,   r*   rE  rE  }  s#        	? 	? 	? 	? 	?r,   rE  c                   p    e Zd Zej                            deeee	g          d             Z
d Zd Zd ZdS )TestEigvalshr1   c                     t          j        ddgddgg|          }t           j                            |          }t	          |j        t          |                     d S r  )r&   r   r   rH  r   r1   r:   )rL   r1   r   rd  s       r*   r  zTestEigvalsh.test_types  sX    Hq#ha)777Iq!!QWnU3344444r,   c                 8   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           d S Nrq   r  r9   lrongUPLOlowerupper)r&   r   r  r    r(  r   rH  rL   r   s     r*   test_invalidzTestEigvalsh.test_invalid  sy    Hq#ha)<<<j")"4agFFFFj")"4aAAAj")"4aAAAA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                            |          }t          |||           t           j                            |d          }t          |||           t           j                            |d          }t          |||           t           j                            |d	          }t          |||           t           j                            |d
          }t          |||           d S Nr   rq   r9   r   r\  rG  rP  lrq  rw  )r&   r   r	   r>   r   rH  r   )rL   KloKuptgtr]  rd  s         r*   	test_UPLOzTestEigvalsh.test_UPLO  s_   hAA'ry999hAA'ry999hAwbi000	"" Is##3T****Is--3T****Is--3T****Is--3T****Is--3T******r,   c                     G d dt           j                  }t          j        dt           j                                      |          }t          j        |          }t          |j        j	        t           j
        u            t          d|j                   t          t          |t           j                             t          j        dt           j                                      |          }t          j        |          }t          |j        j	        t           j        u            t          d|j                   t          t          |t           j                             d S )Nc                       e Zd ZdS )/TestEigvalsh.test_0_size.<locals>.ArraySubclassNr#  rZ   r,   r*   r$  r_    r%  r,   r$  rA  r9   rX  rl   rm   )r&   r'   rB  rC  r   r   rH  r   r1   r$   rD  r   r   r%   rE  r  rF  s       r*   r0  zTestEigvalsh.test_0_size  s$   	 	 	 	 	BJ 	 	 	HYbg...33MBBoa  	"*,---VSY'''
3
++,,,HV2<00055mDDoa  	"*,---T39%%%
3
++,,,,,r,   NrV   rW   rX   r   r   r5  r   r	   r   r   r  rU  r\  r0  rZ   r,   r*   rK  rK    sz        [Wvvw&HII5 5 JI5
B B B+ + +,- - - - -r,   rK  c                       e Zd Zd ZdS )TestEighCasesc                    t          j        |          }|j        |j        }}t          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          |                     d S )Nr   r  .r\  rq  )r]  err_msg)r   eighr^  r_  rM  r  r   r   r   r&   r   r>   r1   repr)rL   r3   r4   rK   rG  rN  evcrO  rP  rI  evc2s              r*   rP   zTestEighCases.do  s@    k!nn/3#3C"JqMM"B(((q#
2sD!!!|4rz#F%bh//	1 	1 	1 	1 K3''	TC)))q$
3T1115
48H8HH%bh//a	B 	B 	B 	B 	B 	Br,   Nr  rZ   r,   r*   rb  rb    s(        B B B B Br,   rb  c                   p    e Zd Zej                            deeee	g          d             Z
d Zd Zd ZdS )TestEighr1   c                     t          j        ddgddgg|          }t           j                            |          \  }}t	          |j        t          |                     t	          |j        |           d S r  )r&   r   r   re  r   r1   r:   rc  s        r*   r  zTestEigh.test_types  sl    Hq#ha)777y~~a  1QWnU33444QWe$$$$$r,   c                 8   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           d S rN  )r&   r   r  r    r(  r   re  rT  s     r*   rU  zTestEigh.test_invalid  sv    Hq#ha)<<<j").!'BBB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                            |          \  }}t          |||           t           j                            |d          \  }}t          |||           t           j                            |d          \  }}t          |||           t           j                            |d	          \  }}t          |||           t           j                            |d
          \  }}t          |||           d S rW  )r&   r   r	   r>   r   re  r   )rL   rY  rZ  r[  r]  rd  re  s          r*   r\  zTestEigh.test_UPLO  se   hAA'ry999hAA'ry999hAwbi000	"" y~~c""13T****y~~c~,,13T****y~~c~,,13T****y~~c~,,13T****y~~c~,,13T******r,   c                     G d dt           j                  }t          j        dt           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                                      |          }t          j        |          \  }}t          |j        j	        t           j        u            t          |j        j	        t           j        u            t          |j        |j                   t          d|j                   t          t          |t           j                             d S )Nc                       e Zd ZdS )+TestEigh.test_0_size.<locals>.ArraySubclassNr#  rZ   r,   r*   r$  rp    r%  r,   r$  rA  r9   rX  rl   rm   )r&   r'   rB  rC  r   r   re  r   r1   r$   rD  r   r   r%   rE  r  ri  s        r*   r0  zTestEigh.test_0_size  s   	 	 	 	 	BJ 	 	 	HYbg...33MBB[^^
U BJ.///	"*,---QWek***VSY'''
1bj))***HV2<00055mDD[^^
U BL0111	"*,---QWek***T39%%%
1bj))*****r,   Nr`  rZ   r,   r*   rj  rj    sw        [Wvvw&HII% % JI%> > >+ + +,+ + + + +r,   rj  c                   ,    e Zd ZdZdZed             ZdS )_TestNormBaseNc                     t          | j        j        t          j                  r!t          |j        | j        j                   d S t          t          |j        j        t          j                             d S r#   )	
issubclassr1   r$   r&   inexactr   realr   r  )r   rG  s     r*   check_dtypez_TestNormBase.check_dtype  s\    aglBJ// 	=AFL11111 Jsy~r{;;<<<<<r,   )rV   rW   rX   r  decstaticmethodrw  rZ   r,   r*   rr  rr    s7        	B
C= = \= = =r,   rr  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )_TestNormGeneralc           
         t          t          g           d           t          t          t          g | j                            d           t          t          t	          t          g | j                                      d           d S )Nr  r9   )r   r   r   r  r   rT   s    r*   
test_emptyz_TestNormGeneral.test_empty"  st    T"XXs###T%$'22233S999T*U2TW%=%=%=>>??EEEEEr,   c                 2   t          j        g d          }t           j        d         }t           j        d         }||z   }|D ]S}|                    |          }t	          |t           j                   }|                     ||           t          |d           t          j	                    5  t          j
        ddt                     t	          |d          }|                     ||           t          |d           d d d            n# 1 swxY w Y   t	          |d          }|                     ||           t          |d	           t	          |d
          }|                     ||           t          |d           t	          |d	          }|                     ||           t          ||j                            d          |j                            d          z             t	          |d          }|                     ||           t          ||j                            d          |j                            d          z             t	          |t           j                  }|                     ||           t          |d           Ud S )Nr  
AllIntegerAllFloatr  ignoredivide by zero encounteredr   r   rs   rq   rc   r  ru   g      ?rb   )r&   r   	typecodesr  r   r   rw  r   warningscatch_warningsfilterwarningsRuntimeWarningr1   r$   rL   r3   exact_typesinexact_types	all_types	each_typeatans           r*   test_vector_return_typez(_TestNormGeneral.test_vector_return_type'  s   HYYYl<0Z0-/	"  	)  	)I)$$Bb26'""BR$$$C((((** - -':NL L L"b\\  R(((#B,,,- - - - - - - - - - - - - - - b!BR$$$A&&&b!BR$$$C(((b!BR$$$BHMM#$6$6i8P8P$PQQQb!BR$$$BHMM#$6$6i8P8P$PQQQb"&!!BR$$$C((((A 	)  	)s   .ADD	D	c                      g d}g d}g d} fd}|||fD ]} ||           t          | j                  t          | j                  t          | j                  fD ]} ||           d S )N)rq   rs   rt   ru   )r   r   r   r   )r   rs   r   ru   c                 l   t           j                            t          |           dj                   t           j                            t          | t
                    dj                   t           j                            t          | t
                     dj                   t           j                            t          | d          dj                   t           j                            t          | d          dj                   t           j                            t          | d	          dj                   t           j                            t          | d
          dj                   t           j                            t          | d          dj                   d S )Ng6ҭ@r0   re   rb   rq         $@r   gQ?rs   r   gsc?r   ru   )r&   testingr   r   rx  r   )re  rL   s    r*   _testz+_TestNormGeneral.test_vector.<locals>._testV  s   J**477I378 + = = =J**43<<378 + = = =J**4C4==#378 + = = =J**41::t378 + = = =J**42;;	378 + = = =J**41::y378 + = = =J**42;;9M378 + = = =J**41::q378 + = = = = =r,   r9   )r   r  )rL   r3   r4   r  r  re  s   `     r*   test_vectorz_TestNormGeneral.test_vectorQ  s    LLNN	= 	= 	= 	= 	=$ Q 	 	AE!HHHH)))5$'+B+B+B)))+ 	 	AE!HHHH	 	r,   c           	      *  	
 t          g dg dg| j                  	d dddddt          j        t          j         fD ]	fd	t	          	j        d                   D             }t          t          	d
          |           	fdt	          	j        d                   D             }t          t          	d
          |           t          j        dd| 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          
|
           Bt          
|
          }|||z   z
  ||k     r)
fdt	          
j                           D             }n(
fdt	          
j                           D             }t          ||           Čd S )Nr  ru   r   r-   r9   r   r   rq   rs   rt   c                 F    g | ]}t          d d |f                   S Nordr   r   kr  orders     r*   r   z._TestNormGeneral.test_axis.<locals>.<listcomp>u  s2    MMMaa1g5111MMMr,   r  r  c                 F    g | ]}t          |d d f                   S r  r  r  s     r*   r   z._TestNormGeneral.test_axis.<locals>.<listcomp>w  s2    MMMaa111g5111MMMr,      ru   r   r  c                 l    g | ]0}t          d d                              |                    1S Nr  r  )r   taker   r  Bk_indexr  s     r*   r   z._TestNormGeneral.test_axis.<locals>.<listcomp>  sT     $F $F $F() %)11117)C)C$O$O$O $F $F $Fr,   c                 v    g | ]5}t          d d                              |          j                  6S r  )r   r  r  r  s     r*   r   z._TestNormGeneral.test_axis.<locals>.<listcomp>  sW     $F $F $F() %)11117)C)C)E5$Q$Q$Q $F $F $Fr,   )r   r  r&   r   r  r   r   r   r'  r   r   r   combinationsr    r(  )rL   	expected0	expected1ndr  row_axiscol_axisr  r/  r  r  r  r  s            @@@@r*   	test_axisz_TestNormGeneral.test_axiso  s    999iii(888B1aBFRVG< 	G 	GEMMMMM5;L;LMMMIQE : : :IFFFMMMMM5;L;LMMMIQE : : :IFFFF Ia47+++33Aq!<<VB2q"&26'5A 	5 	5E!.ubS"~~qAA 5 5%)"(a<<NHa<<NHx''!*dA5tLLLLLQE555A !Hx$78G(**$F $F $F $F $F $F-21773C-D-D$F $F $F$F $F $F $F $F $F-21773C-D-D$F $F $F'84444)5	5 	5r,   c                    t          j        dd| j                                      ddd          }d}d}t	          |d d 	          }t	          |d d d
          }t          t          j        |          ||                    d d                      d}t          |j	        |k    |                    |j	        |d d                      d dddddt           j
        t           j
         fD ]}t          |j                  D ]}t	          |||	          }t	          |||d
          }t          t          j        |          ||                    ||                     t          |j	                  }d||<   t          |          }t          |j	        |k    |                    |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        |          ||                    ||                     t          |j	                  }d||d         <   d||d         <   t          |          }t          |j	        |k    |                    |j	        |||                     ͌d S )Nrq   r  r9   rs   rt   ru   zorder {0}, axis = {1}z;Shape mismatch found {0}, expected {1}, order={2}, axis={3}r  T)r  r  keepdims)rd  )rq   rq   rq   r   r   r   r  nuc)r&   r'  r  r   r   r   squeezeformatr   r   r   r  r   r   r   r   permutations)	rL   r  allclose_err	shape_errr/  foundexpected_shaper  r  s	            r*   test_keepdimsz_TestNormGeneral.test_keepdims  s'   Ia47+++33Aq!<<.Q	 t$///QDtd;;;
5))8 , 3 3D$ ? ?	A 	A 	A 	A"~-  ndDII	K 	K 	K B1aBFRVG< 
	Q 
	QE16]] 	Q 	Qu1555QEDAAA
5 1 18(4(;(;E1(E(EG G G G!%ag$%q!!&~!6!6~5!((neQOOQ Q Q Q	Q B2q"&26'5%H 	Q 	QE+E!&MM1== 
Q 
Qu1555QEDAAA
5 1 18(4(;(;E1(E(EG G G G!%ag'(qt$'(qt$!&~!6!6~5!((neQOOQ Q Q Q
Q	Q 	Qr,   N)rV   rW   rX   r}  r  r  r  r  rZ   r,   r*   r{  r{     si        F F F
() () ()T  <#5 #5 #5J(Q (Q (Q (Q (Qr,   r{  c                   :    e Zd Zej        Zd Zd Zd Zd Zd Z	dS )_TestNorm2Dc                 v    t          t          |                     g g| j                            d           d S )Nr9   r  )r   r   r   r  rT   s    r*   test_matrix_emptyz_TestNorm2D.test_matrix_empty  s4    T$**bT*99::C@@@@@r,   c                    |                      g dg dg          }t          j        d         }d}||z   }|D ]5}|                    |          }t	          |t          j                   }|                     ||           t          |d           t          j	                    5  t          j
        ddt                     t	          |d          }|                     ||           t          |d	           d d d            n# 1 swxY w Y   t	          |d
          }|                     ||           t          |d           t	          |d          }|                     ||           t          |d           t	          |d          }|                     ||           t          |d	           t	          |t          j                  }|                     ||           t          |d           t	          |d          }|                     ||           t          |d           t	          |d          }|                     ||           t          j                            |dd           7d S )Nr  rA  r  fdFDrc   r  r  r   rb   rq   rs   gLXz?r   r  r  gU&,t=@r-   r  )r   r&   r  r  r   r   rw  r   r  r  r  r  r  r  s           r*   test_matrix_return_typez#_TestNorm2D.test_matrix_return_type  s   JJ			999-..l<0
 -/	" &	N &	NI)$$Bb26'""BR$$$C((((** - -':NL L L"b\\  R(((#B,,,- - - - - - - - - - - - - - - b!BR$$$C(((b!BR$$$$4555b"BR$$$C(((b"&!!BR$$$C(((b%BR$$$C(((b%BR$$$ J**2/A1*MMMMM&	N &	Ns   #ADD	D	c                 "   |                      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           d S )Nrq   rt   r   r   r9   gT"@r  r  r  g      (@re   r   rg   rs   gW?"@r   gїʄ?nofror   r   )r   r  r   r   r   r    r(  rL   r  s     r*   test_matrix_2x2z_TestNorm2D.test_matrix_2x2  sB   JJAA'twJ77DGGY///DENNI666DENND111DCLL$///DSDMM3///DAJJ---DBKK---DAJJ(:;;;DBKK)<===j$7333j$2...j$1-----r,   c                    d|                      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           d S )Ng?r  )r-   r   r   )rt   rs   rq   r9   grj=Q0?r  r  gB+pc?g?g333333?rq   rb   r   g?rs   g&.d?r   gܸՠ?)r   r  r   r   r   r  s     r*   test_matrix_3x3z_TestNorm2D.test_matrix_3x3  s   
 JJ			999iii8JHHIDGG%9:::DENN,@AAADENN,>???DCLL#...DSDMM3///DAJJ,,,DBKK---DAJJ(;<<<DBKK)<=====r,   c                 @   |                      g dg dg| j                  }t          j        dd| 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 ]Y}t          t          t          ||d            t          t          t          ||d           t          t          t          ||d           Zt          t          t          |d d           t          t          t          |d d           t          t          t          |d d           d S )Nr  r  r9   rq   r  rs   rt   ru   r  r   r  testr   rt   rX  )rq   rs   rs   rt   r   rq   rs   )	r   r  r&   r'  r   r    r(  r   r   )rL   r  r  r  s       r*   test_bad_argsz_TestNorm2D.test_bad_args  sn    JJ			999-TWJ==Ia47+++33Aq!<<
 	j$5!444j$5!444j$At<<<j$At<<<j$A===  	> 	>E*dAud;;;*dAuf===*dAuf==== 	iq$222iq$777j$4;;;;;r,   N)
rV   rW   rX   r&   r   r  r  r  r  r  rZ   r,   r*   r  r    so         HEA A A2N 2N 2Nh. . . > > >"< < < < <r,   r  c                       e Zd ZdS )	_TestNormNr#  rZ   r,   r*   r  r  8  r  r,   r  c                        e Zd Zd Zd Zd ZdS )TestNorm_NonSystematicc                     t          j        dt           j                  }t          t	          |d          dd           d S )N
   r9   rt   r  gL)@rs   r  )r&   r'  
longdoubler2   r   rT  s     r*   test_longdouble_normz+TestNorm_NonSystematic.test_longdouble_norm>  s?     Ib...QAqAAAAAAr,   c                     t          j        dgt           j                  }t          t	          |d          dd           d S )Ni   r9   rt   r  l        r   r  )r&   r   int32r2   r   rT  s     r*   test_intminz"TestNorm_NonSystematic.test_intminD  sA     HhZrx000QACCCCCCr,   c                     t          j        dt           j                  }d|d<   d|d<   d}t          t           j                            |d	          |d
           |                    t           j                  }t          t           j                            |d	          |d           |                    t           j                  }t          t           j                            |d	          |d           d S )Nrs   r9   y      @      @r   y            @rq   gV;'@rt   r  r  r  	   r   )	r&   r   clongdoubler2   r   r   r  
complex128rE  )rL   r  rG  s      r*   test_complex_high_ordz,TestNorm_NonSystematic.test_complex_high_ordJ  s    HT000!!	qa 8 8#rJJJJHHR]##	qa 8 8#qIIIIHHR\""	qa 8 8#qIIIIIIr,   N)rV   rW   rX   r  r  r  rZ   r,   r*   r  r  <  sL        B B BD D D
J 
J 
J 
J 
Jr,   r  c                        e Zd Zej        ZdZdS )_TestNormDoubleBaser.   N)rV   rW   rX   r&   r	   r  rx  rZ   r,   r*   r  r  X  s        	B
CCCr,   r  c                        e Zd Zej        ZdZdS )_TestNormSingleBaser-   N)rV   rW   rX   r&   r  r  rx  rZ   r,   r*   r  r  ]  s        	B
CCCr,   r  c                        e Zd Zej        ZdZdS )_TestNormInt64Baser.   N)rV   rW   rX   r&   int64r  rx  rZ   r,   r*   r  r  b  s        	B
CCCr,   r  c                       e Zd ZdS )TestNormDoubleNr#  rZ   r,   r*   r  r  g  r  r,   r  c                       e Zd ZdS )TestNormSingleNr#  rZ   r,   r*   r  r  k  r  r,   r  c                       e Zd ZdS )TestNormInt64Nr#  rZ   r,   r*   r  r  o  r  r,   r  c                       e Zd Zd Zd ZdS )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            d S # 1 swxY w Y   d S )Nru   r  r   r   rt   r|  r   )rq   r   r   r   rq   )ru   )rt   ru   r   z#`tol` and `rtol` can't be both set.g{Gz?)tolr]  )r   r   r&   r}  rB  r   r!   r(  )rL   Imss      r*   test_matrix_rankzTestMatrixRank.test_matrix_ranku  s   QBF1II..///F1II&	[^^Q'''[&!1!122A666[..222[$00!444[!%%q)))Xq"&))RXf%5%5677[__bhyyy&9&9:::[^^Q''' >
 
 	0 	0 t$////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   F??GG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                     d S )Nru   Tr  rq   r|  r   r  r  rt   g:0yE>g|"BE>)rA   r  g;䡈E>)r   r   r&   r}  r  rB  )rL   r  s     r*   test_symmetric_rankz"TestMatrixRank.test_symmetric_rank  s    QBF1II>>>???QBGFOOtDDDEEEQBHV$4$4EEEFFFF1II&	QA666777&	QA7CCCDDDQA7CCCDDDDDr,   N)rV   rW   rX   r  r  rZ   r,   r*   r  r  s  s7        0 0 02E E E E Er,   r  c                     t           j                            d          } t          d          D ]}|                     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           d S )Ni3r  )(   r  sizerq   rs   r   r  ru   r   rt   ro   )r&   r  RandomStater  normalr   r   )rngiXs      r*   test_reduced_rankr    s    
)


)
)C3ZZ ( (JJHJ%%AAAqD'AaaadG#!!!Q$[^^Q'''AAAqD'AaaadG#!!!Q$[^^Q''''( (r,   c            	          e Zd Zej        Zd Zej                            ddgg d          d             Z	d Z
d Zd Zej                            d	g d
          ej                            dg d          ej                            dej        ej        ej        ej        g          d                                     ZdS )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                                        |          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                                        |
          t          j        |                     t          t          j        |          |           t	          j        |d          }t          |j        |k               t          t          ||                     t          ||           d S )Ncompletemodereducedr  )r$   r1   r   r  r   qrQRr   r%   r   r   r  r  r&   r}  triu)rL   r3   a_typea_dtyper  r  r  rG  r
  r  q1r1r2s                r*   check_qrzTestQR.check_qr  s    a'w11II i
+++uce17"###7"###
1f%%&&&
1f%%&&&Aq6!"""Aq6!"""C1IIq)))C

A..q		:::BGAJJ*** 19---BG#$$$G#$$$
2v&&'''
2v&&'''QF"###QF"###CBKK+++C		R00"&))<<<BGBKK,,, Yqs###G#$$$
2v&&'''B#####r,   r  r  )rt   r   r  rl   c                    t          ||          }t          j        ||f          }|                     |           t          j                            |d          \  }}t          |j        t          j                   t          |j        t          j                   t          |j	        ||f           t          |j	        |f           d S )Nrawr  )
r  r&   r   r  r   r	  r   r1   r	   r   )rL   r  r  r  r3   htaus          r*   test_qr_emptyzTestQR.test_qr_empty  s     1IIHaVaae,,3QWbi(((SY	***QWq!f%%%SY%%%%%r,   c                    |                      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               d S )Nrq   rs   rt   ru   r   r-   r9   r  r  r  r  r   )	r   r&   r	   r   r	  r   r1   r   r  )rL   r3   r  r  s       r*   test_mode_rawzTestQR.test_mode_raw  s    JJAAA/ryJAA 15)))329$%%%	RY&'''6!"""	T!"""13U+++329$%%%	RY&'''6!"""	T!"""""r,   c                 \   |                      ddgddgg          }|                      ddgddgddgg          }dD ]p}|                    |          }|                    |          }|                     |           |                     |           |                     |j                   qdD ]|}dd|                    |          z  z   }dd|                    |          z  z   }|                     |           |                     |           |                     |j                   }d S )	Nrq   rs   rt   ru   r   r-   fd              ?)r   r  r  r  )rL   r3   r4   r  m1m2s         r*   test_mode_all_but_economicz!TestQR.test_mode_all_but_economic  s2   JJAA'((JJAAA/0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                                          |          |
           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                                          |          |
           t          t          j        |dd d d d f                   |           t	          j        |d          }t          |j        |k               t          t          ||                     t          ||           d S )	Nr   r  r  r   rs   .r  r  )r$   r1   r   r  r   r	  r   r%   r   r   r&   r
   r  r   r  r  )rL   r3   r  r  r  r  r  qr  I_matstack_I_matr  r  r  s                 r*   check_qr_stackedzTestQR.check_qr_stacked  s|    a'wrss|11II y,,,17"###7"###
1f%%&&&
1f%%&&&A&'''A&'''F1aLL!,,,AGBK((oe~'99; ;F8Ar2#6#6#;#;#=#=qAA;OOOBGAc111aaaiL111555 19---BG#$$$G#$$$
2v&&'''
2v&&'''!Q'(((!Q'(((F2rNNA...BHRL))oe""!(;;= =F8BB#7#7#<#<#>#>CC'	) 	) 	)BGBsAAAqqqyM22B777 Yqs###G#$$$
2v&&'''B#####r,   r  ))rt   ru   )ru   rt   r|  r  r  
outer_size)r&  r  )rs   rt   ru   r  c                 T   t           j                            d          }|                    ||z                                 |          }|                    ||z                                 |          }|                     |           |                     |d|z  z              d S )N{   r  r  )r&   r  default_rngr  r  r%  )rL   r&  r  r  r  r  r  s          r*   test_stacked_inputszTestQR.test_stacked_inputs9  s     i##C((JJJ-J..55b99JJJ-J..55b99a   a#'k*****r,   N)rV   rW   rX   r&   r   r  r   r   r5  r  r  r   r%  r   r	   r   r   r*  rZ   r,   r*   r  r    sI       HE%$ %$ %$N [c3Z * * *  

& 
& 

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

BJ$  ! !+ +! !" " + + +r,   r  c                      e Zd Zej                            dg d          ej                            dej        ej        ej	        ej
        f          ej                            dddg          d                                     Zd Zd	 Zd
S )TestCholeskyr   )r   r&  rt   rt   )2   r.  )rt   r  r  r1   rS  FTc                 x   t           j                            d           t          j        j        | }t          j        |t           j                  r|dt          j        j        | z  z   }t          t          t          |                              }d|dd <   t          j	        |
                    |                                          |          }t          j        ||          }t           j                            ||          }|r;t          j	        |
                    |                                          |          }n:t          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                         d S )Nrq   r  )r   r   r   r9   rS  i  r    
)atolrd  r   )axis1axis2)r&   r  r  randnr  complexfloatingr   r  r  r   r  r  r   r   choleskyr   finfoepsr   diagonalr   r   isreal)
rL   r   r1   rS  r3   tr  r4   r3  r  s
             r*   test_basic_propertyz TestCholesky.test_basic_propertyL  s    		qIOU#= 233 	1B%000As5zz""##"##Iakk!nn))++Q//Jq&&&Iq..  	4	!++a..--//33AA	!Q[[^^002233AQWQZ"(5//"5514E1M1ME1M1MQ1M1M!1M1MNNNN K2...ry||$$%%%qAvr,   c                     G d dt           j                  }t          j        dt           j                                      |          }t          j        |          }t          |j        |j                   t          |j
        j        t           j        u            t          t          |t           j                             t          j        dt           j                                      |          }t          j        |          }t          |j        |j                   t          |j
        j        t           j        u            t          t          |t           j                             d S )Nc                       e Zd ZdS )/TestCholesky.test_0_size.<locals>.ArraySubclassNr#  rZ   r,   r*   r$  rA  q  r%  r,   r$  rA  r9   )rq   r   r   )r&   r'   rB  rC  r   r   r8  r   r   r   r1   r$   rD  r%   rE  rF  s       r*   r0  zTestCholesky.test_0_sizep  s(   	 	 	 	 	BJ 	 	 	HYbg...33MBBoa  QWci(((	"*,---
3
++,,,HYbl33388GGoa  QWci(((	",.///
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                                                   d S )Ny      ?        y               y               @y      @        Fr0  T)r&   r   r   r   r8  r  r  )rL   r3   s     r*   test_upper_lower_argz!TestCholesky.test_upper_lower_arg  s    Hvv&(89::V_Q''%)H)H)HIIIOAT***OA %%''	
 	
 	
 	
 	
r,   N)rV   rW   rX   r   r   r5  r&   r  rD  rE  r  r>  r0  rC  rZ   r,   r*   r,  r,  J  s        [@@@  ["*bj",F  [%            8- - - 	
 	
 	
 	
 	
r,   r,  c                   h   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
                            ee          e            eed          5  ej
                            eddej        f         e           ddd           dS # 1 swxY w Y   dS )	TestOuterrt   r  r  )r   rs   ru   z$Input arrays must be one-dimensionalN)rV   rW   rX   r&   r'  arr1arr2r   r/  r   r   outerr!   r(  newaxisrZ   r,   r*   rE  rE    s       29Q<<D29Q<<Drx				 H rytT22H===		:
 
 3 3 		QQQ
]+T2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   /+B''B+.B+rE  c                  h   t           j        dk    rd} nd} t          j        t          j        fD ]}t          j        d|          }|                    |j                            |                     }|                    |j                            d                    	                                }t          |j        j        d           t          j        t          j        t          j        fD ]?} ||          }t          | ||                     t          | ||                     @d S )Nlittle<rS   ru   r9   rr  =)sys	byteorderr&   r  rD  r}  r   r1   newbyteorderbyteswapr   r   r9  r  r  r   )nativedttr  n_arrsw_arrroutinerG  s          r*   test_byteorder_checkrW    s   
}  
BJ' 5 5fQc"""//7788#)005566??AASY(#...
FJ< 	5 	5G'#,,CsGGENN333sGGFOO4444	55 5r,   r=  r>  c                     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        |           d S )Nrq   rs   rt   ru   )ru   ru   rs   rs   .rl   )r&   r   rB  r    r   r   r9  )
invertiblenon_invertibler   s      r*    test_generalized_raise_multiloopr[    s    
 Aq6Aq6*++JX1v1v.//N
qt!t$AAcFAdG")':::::r,   z?skipping test that uses fork because there are multiple threadsz:Cannot safely use fork in tests on the free-threaded buildc                     d} 	 t          j                    }n+# t          t          f$ r t	          j        d           Y nw xY w|dk    rEt          j        d           t          j        d           dd l}|                    |j	        d           	 t          j        j                                         n9# t          $ r Y n-t          $ r! t          j        t           j                   Y nw xY w	 t          j        dgg          }t          j        j                            ddd|d||dd	  	         n<# t          $ r/}dt)          |          v rt          j        |            Y d }~nd }~ww xY wt          j        t           j                   d S t          j                    \  }}t          j        |          | k    rt	          j        d           d S d S )	N   zNot POSIX or fork failed.r   rq   rl   rb   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   dorgqrrH   waitWEXITSTATUS)	XERBLA_OKpidrd  r3   r   statuss         r*   test_xerbla_overriderq    s    I1gii^$ 1 1 1/000001 axx

8/888	#I!((**** 	 	 	D 	# 	# 	#HR\"""""	#
	$2$  AI!((1a1a     	$ 	$ 	$*c!ff44 ###		$ 	 giiV>&!!Y..K566666 /.s?    %A A #B6 6
C,'C,+C,0AD3 3
E,=%E''E,zCannot start subprocessc                  $   ddg} t          j        d          }| D ]t}|                    dd|          }t          j        t
          j        d|g           |                    dd|          }t          j        t
          j        d|g           ud S )	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)rv  ru  rw  )textwrapdedentr  
subprocess
check_callrN  
executable)bad_libstemplaterw  codes       r*   test_sdot_bug_8577r    s     "9-H 
  
	 
	H  < <&:"'.  0 0s~tT:;;; %9"'.  0 0s~tT:;;;;< <r,   c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestMultiDotc           
         t           j                            d          }t           j                            d          }t           j                            d          }t          t          |||g          |                    |                              |                     t          t          |||g          t          j        |t          j        ||                               d S Nr-   rs   rs   r-   r&   r  r   r   r   )rL   r  r  Cs       r*   (test_basic_function_with_three_argumentsz5TestMultiDot.test_basic_function_with_three_arguments  s     IV$$IV$$IV$$Iq!Qi00!%%((,,q//BBBIq!Qi00"&BF1aLL2I2IJJJJJr,   c                 J   t           j                            d          }t           j                            d          }t          t          ||g          |                    |                     t          t          ||g          t          j        ||                     d S r  r  )rL   r  r  s      r*   &test_basic_function_with_two_argumentsz3TestMultiDot.test_basic_function_with_two_arguments(  s~    IV$$IV$$Iq!f--quuQxx888Iq!f--rva||<<<<<r,   c                    t           j                            d          }t           j                            d          }t           j                            d          }t           j                            d          }t          t          ||||g          |                    |                              |                              |                     d S )Nr  r  rs   rq   r  )rL   r  r  r  Ds        r*   9test_basic_function_with_dynamic_programming_optimizationzFTestMultiDot.test_basic_function_with_dynamic_programming_optimization0  s     IV$$IV$$IV$$IV$$Iq!Ql33QUU1XX\\!__5H5H5K5KLLLLLr,   c                 J   t           j                            d          }t           j                            d          }t           j                            d          }t           j                            d          }t          t          ||||g          j        d           d S )Nrs   r  r  r&  r  r&   r  r   r   r   )rL   A1dr  r  r  s        r*   test_vector_as_first_argumentz*TestMultiDot.test_vector_as_first_argument9  s    iq!!IV$$IV$$IV$$ 	YQ1~..4d;;;;;r,   c                 J   t           j                            d          }t           j                            d          }t           j                            d          }t           j                            d          }t          t          ||||g          j        d           d S )Nr  r  rs   )r-   r  )rL   r  r  r  D1ds        r*   test_vector_as_last_argumentz)TestMultiDot.test_vector_as_last_argumentC  s    IV$$IV$$IV$$iq!! 	Y1a~..4d;;;;;r,   c                 J   t           j                            d          }t           j                            d          }t           j                            d          }t           j                            d          }t          t          ||||g          j        d           d S )Nrs   r  r  rZ   r  )rL   r  r  r  r  s        r*   &test_vector_as_first_and_last_argumentz3TestMultiDot.test_vector_as_first_and_last_argumentM  s    iq!!IV$$IV$$iq!! 	YQ3/006;;;;;r,   c           
         t           j                            d          }t           j                            d          }t           j                            d          }t          j        d          }t          |||g|          }||u sJ t	          ||                    |                              |                     t	          |t          j        |t          j        ||                               d S )Nr  r  r(   r&   r  rB  r   r   r   )rL   r  r  r  r(   rets         r*   test_three_arguments_and_outz)TestMultiDot.test_three_arguments_and_outW  s     IV$$IV$$IV$$hvAq	s+++czzzzCqa111C26!Q<<!8!899999r,   c                 h   t           j                            d          }t           j                            d          }t          j        d          }t          ||g|          }||u sJ t	          ||                    |                     t	          |t          j        ||                     d S )Nr  r  )r-   r-   r  r  )rL   r  r  r(   r  s        r*   test_two_arguments_and_outz'TestMultiDot.test_two_arguments_and_outd  s    IV$$IV$$hvAC(((czzzzCq***C1.....r,   c                    t           j                            d          }t           j                            d          }t           j                            d          }t           j                            d          }t          j        d          }t          ||||g|          }||u sJ t	          ||                    |                              |                              |                     d S )Nr  r  r  )r-   rq   r  r  )rL   r  r  r  r  r(   r  s          r*   -test_dynamic_programming_optimization_and_outz:TestMultiDot.test_dynamic_programming_optimization_and_outn  s     IV$$IV$$IV$$IV$$hvAq!#...czzzzCqa!4!4Q!7!788888r,   c           	      J   t           j                            d          t           j                            d          t           j                            d          t           j                            d          t           j                            d          t           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        |                     d S )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   rq   rq   rt   rt   rt   )r   r   rs   rt   rt   rt   )r   r   r   rt   rt   rt   )r   r   r   r   ru   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r9   rq   T)return_costsr   )r&   r  r   intr   r   r  )rL   arrays
m_expected
s_expectedr   r  s         r*   test_dynamic_programming_logicz+TestMultiDot.test_dynamic_programming_logicz  s    )""8,,)""8,,)""7++)""7++)""8,,)""8,,. XIIIIIIIIIIIIIIIIIIK L L
 X6666666666666666668
 @CD D D
 	a
,V$GGG1 	BGAcrc122gJ//GJssABBw$788	: 	: 	:BGAJJ
(;(;<<<<<r,   c                     t          t          t          g            t          t          t          t          j                            d          g           d S )Nr-  )r    r(  r   r&   r  rT   s    r*   test_too_few_input_arraysz&TestMultiDot.test_too_few_input_arrays  s?    j)R000j)bi.>.>v.F.F-GHHHHHr,   N)rV   rW   rX   r  r  r  r  r  r  r  r  r  r  r  rZ   r,   r*   r  r    s        K K K= = =M M M< < << < << < <: : :/ / /
9 
9 
9= = =<I I I I Ir,   r  c                   8   e Zd Zej                            d ej        d          df ej        d          dfg          d             Zej                            ddd	g          d
             Z	ej                            dddg          d             Z
d ZdS )TestTensorinvzarr, indru   r-   ro   rs   rs   rt   rt   rs   rq   c                     t          t                    5  t          j        ||           d d d            d S # 1 swxY w Y   d S )Nind)r    r   r   	tensorinv)rL   r  r  s      r*   test_non_square_handlingz&TestTensorinv.test_non_square_handling  s    
 ;'' 	+ 	+Sc****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   9= =z
shape, ind)ru   r-   ro   rt   rs   )   ro   rt   rq   c                     t          j        d                              |          }t          j        ||          }|j        |d          |j        d |         z   }|j        }t          ||           d S )Nr  r3   r  )r&   r}  r   r   r  r   r   )rL   r   r  r3   ainvr/  actuals          r*   test_tensorinv_shapez"TestTensorinv.test_tensorinv_shape  so     F2JJu%%!---7344=174C4=0VX&&&&&r,   r  r   r   c                     t          j        d                              d          }t          t                    5  t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr  r  r  )r&   r}  r   r    r(  r   r  )rL   r  r3   s      r*   test_tensorinv_ind_limitz&TestTensorinv.test_tensorinv_ind_limit  s     F2JJ|,,:&& 	+ 	+qc****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   A  A$'A$c                 ,   t          j        d                              d          }t          j        |d          }t          j        d          }t          t          j        ||d          t           j                            ||                     d S )Nr  r  rq   r  )	r&   r}  r   r   r  r  r   	tensordottensorsolve)rL   r3   r  r4   s       r*   test_tensorinv_resultz#TestTensorinv.test_tensorinv_result  su    F2JJz**q)))GBKKT1a00")2G2G12M2MNNNNNr,   N)rV   rW   rX   r   r   r5  r&   r  r  r  r  r  rZ   r,   r*   r  r    s        [Z			"			Q*
  + +	 + [\,
  
' ' 
' [U	2%
  + + +
O O O O Or,   r  c                       e Zd Zej                            d ej        d          df ej        d          dfg          d             Zej                            dg d          d	             Z	dS )
TestTensorsolveza, axesr  Nr  r   rs   c                     t          t                    5  t          j        |j        d d                   }t          j        |||           d d d            d S # 1 swxY w Y   d S Nrs   r  )r    r   r&   r  r   r   r  )rL   r3   r  r4   s       r*   r  z(TestTensorsolve.test_non_square_handling  s    
 ;'' 	0 	0$$Aq!$////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   9AA"Ar   ))rs   rt   r-   )rt   ru   ru   rt   )r   rt   rt   r   c           	         t          j        j        | }t          j        |j        d d                   }t           j                            ||          }t          t          j        ||t          |j                            |           d S r  )
r&   r  r6  r  r   r   r  r   r  r  )rL   r   r3   r4   r   s        r*   test_tensorsolve_resultz'TestTensorsolve.test_tensorsolve_result  sq     IOU#GAGBQBK  I!!!Q''QAG===qAAAAAr,   )
rV   rW   rX   r   r   r5  r&   r  r  r  rZ   r,   r*   r  r    s        [Y			%			V$)
  0 0	 0
 [W/// B B B B Br,   r  c                      t          j        ddgddggd          } t          t          d          5  t	          j        |            d d d            d S # 1 swxY w Y   d S )Nrq   r   rs   r   float16r9   zunsupported in linalg)r&   r   r!   r8  r   r8  )r  s    r*   test_unsupported_commontyper    s    
(QGaV$I
6
6
6C	Y(?	@	@                   s   A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           d S )N        rq   r9   )r   r   )r&   rB  r  r  r   r   )r  r3   r4   r  s       r*   test_blas64_dotr    sm    A
!Qrz***A
Abj)))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          |                                          }	t          d	|	cxk     od
k     nc            d S )Nl       rq   r9   r   r   infor  r  r  l        )
r&   rD  r   rg  dgeqrfrB  r   r  itemr   )
r1   lapack_routiner  r  ldar3   workr  resultslworks
             r*   !test_blas64_geqrf_lwork_smoketestr    s    JEY*1NAA
C 	!Qu%%%A8QCu%%%D
(A3e
$
$
$C nQ1c3b!<<G!$$$q!!!q!!! 		EEE!!!!E!!!!"""""r,   c                      t          j        d                              d          } t           j                            |           }t          j        g dg dg dg          }t          ||           d S )N<   rt   ru   r   )r   r-   r.      )r     r  &   )r  .   4   :   )r&   r'  r   r   r;  r   r   r   r  r/  s      r*   test_diagonalr  		  s{     		"i((AY""FxOO	
 H """""r,   c                      t          j        d                              d          } t           j                            |           }t          j        g d          }t          ||           d S )Nr  r  )$   t      )r&   r'  r   r   tracer   r   r  s      r*   
test_tracer  	  s[     		"i((AY__QFx''H"""""r,   c                  >   t          j        d                              d          } t           j                            | | dz             }t          j        g dg dg dg          }t          ||           g d}g d}t           j                            ||          }t          g d          }t          ||           t          t          d          5  | d d dd f         }t           j                            ||           d d d            d S # 1 swxY w Y   d S )	Nr  r-  rq   )r   rs   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  $	  sd   
	!V$$AY__QA&&Fx  H """ 			A		AY__Q""F\\\""H"""	C
 
 ( ( 111abb5
	'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   /DDDc                      t          j        d                              d          } t           j                            | |           dk    sJ t           j                            | | ddg          dk    sJ d S )Nr-   r  7   rX  r  )r&   r'  r   r   r  )r   s    r*   test_tensordotr  ?	  ss    
	!V$$A9q!$$****9q!66*:;;rAAAAAAr,   c                      t          j        d                              d          } t           j                            | | j                  }t          j        ddgddgg          }t          ||           d S )Nr-   r  r      r.  )r&   r'  r   r   r   r  r   r   r  s      r*   test_matmulr  G	  sj     		!V$$AYa%%Fx!R2r(+,,H"""""r,   c                  n   t          j        d                              d          } t           j                            |           }| j        }t          ||           t          t          d          5  t           j                            | d d df                    d d d            d S # 1 swxY w Y   d S )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  Q	  s    
	!V$$AY''**FsH"""	:
 
 , , 		""1QQQT7+++, , , , , , , , , , , , , , , , , ,s   3*B**B.1B.c                  h   t          j        d                              d          } t           j                            |           }t          |t          j        d          d           t           j                            | d          }t          |t          j        dgg          d           d S )Nr  r-  ^)ː,@rt   r6   Tr  )r&   r'  r   r   matrix_normr   rD  r   )r   r  s     r*   test_matrix_normr   ^	  s    
	!V$$AY""1%%F
7 3 3AFFFFY""1t"44F7) 5 5aHHHHHHr,   c                  x   dD ]5} t           j        t           j        t           j        fD ]}t          j        | |          }t          t           j                            |d          d           t          t           j                            |d          d           t          t           j                            |d          d           t          t           j                            |d          d           t          t           j                            |t           j                  d           7d S )N)r  )rs   r   rl   r  r  r   r  rq   rs   )	r&   rD  r  r  rB  r   r   r  r   )r   r1   r   s      r*   test_matrix_norm_emptyr  i	  s   ) B Bj"*bh7 	B 	BE&&A..qe.<<a@@@..qe.<<a@@@..qa.88!<<<..qa.88!<<<..qbf.==qAAAA	BB Br,   c                  0   t          j        d                              d          } t           j                            |           }t          |t          j        d          d           t           j                            | d          }t          |t          j        g d          d           t           j                            | d	
          }t          j        ddd          }t          |j
        |j
                   t          ||d           d S )Nr  r-  r  rt   r  r   r  )g|a2@gsh|? @gDioI#@Tr  r   rD  r9   )r&   r'  r   r   vector_normr   rD  r   fullr   r   r  s      r*   test_vector_normr  s	  s    
	!V$$AY""1%%F
7 3 3AFFFFY""11"--F00011!    Y""1t"44Fwvwi888Hx~...;;;;;;r,   c                     t           j        t           j        t           j        fD ]} t          j        d|           }t          t           j                            |d          d           t          t           j                            |d          d           t          t           j                            |t           j                  d           d S )Nr   rq   r  rs   )	r&   rD  r  r  rB  r   r   r  r   )r1   r   s     r*   test_vector_norm_emptyr  	  s    *bj"(3 > >HQRY**1!*44a888RY**1!*44a888RY**1"&*991====	> >r,   )r-   r.   )__doc__r   r^  rz  rN  rx  	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.linalg.lapack_liteImportErrorr+   r2   r:   r<   r>   r\   rF   r`   r  r  r   r   r  r   r   r   r   r   r   r   r   r  r  r  r  r  r7  r<  rJ  rR  rZ  ra  rl  ru  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r5  r  rE  rK  rb  rj  rr  r{  r  r  r  r  r  r  r  r  r  r  r  r  r,  rE  rW  rC  r[  active_countrq  r   r  r  r  r  r  rb  r  r  r  r  r  r  r  r  r  r   r  r  r  rZ   r,   r*   <module>r     sm        				     



                                             !           & & & & & & P P P P P P P P P P P P P P > > > > > >                       	##### 	 	 	 	D		* * * . 9 9 9 95 5 5
7 7 7
    , , , , , , , ,,   	t   
 8Jxur2hR)888ub"XV,,,. . Jxur2hR)888ub"XV,,,. . Jzur2hR)888ulllLLL1@@@B B Jyuw'&&)9:'JJJugw'w7779 9 Jyuw'&&)9:'JJJugw'w7779 9 J{uw'&&)9:'JJJu0002J2J2JKSZ[[[] ] Jurxf---rxF+++J      Juy~~a##y~~a  " " Juy~~a##y~~a  " " JzAA1v ;   
  
  F ;J~ulllLLL1@@@ub"XV,,,. . J~ur2hR2r(36BBBu\\\0002 2 J~ulllLLL1@@@ub"XV,,,. . J~ur2hR2r(36BBBu\\\0002 2 Ju///1L1L1LMU\^ ^ ^ugw'w7779 9 Jug&'(:Wg<NOW^` ` `u000@@@B B Ju///1L1L1LMU\^ ^ ^ugw'w7779 9 Jug&'(:Wg<NOW^` ` `u000@@@B B J u///1L1L1LMU\^ ^ ^uw(66*:;7KKKM M J ug&'(:Wg<NOW^` ` `uw(66*:VV<LMU\]]]_ _ Jvy~~a$$y~~a  " " Juy~~a##y~~a  " " Juy~~a##y~~a  " " Juy~~a##y~~a  J      Juy~~a##y~~a  J     e6! 6
 6
 6r ;Jyur2hR)888  Jyur2hR)888  Jzur6lVQK0@@@  Jzur6lVQK0@@@  Jxrxf---J      J{AA  Jur2hR)**  J}y~~a## /! 
 
 @  B 	 	 	"	" "-' -' -'`   				 1 1 1 1 1 1 1 1.2 2 2 2 2> 2 2 22 2 2 2 2n 2 2 22 2 2 2 2 2 2 2	F 	F 	F 	F 	Fn 	F 	F 	F	I 	I 	I 	I 	I 	I 	I 	I
+ 
+ 
+ 
+ 
+> 
+ 
+ 
+$ $ $+ + + + +%'F + + +H3 H3 H3 H3 H3
 H3 H3 H3V/ / / / /#%D / / /0 0 0 0 0h 0 0 0.) ) ) ) )')H ) ) )- - - - -, - - -66 6 6 6 6#%D 6 6 6!+ !+ !+ !+ !+h !+ !+ !+H5 5 5 5 5 5 5 5, , , , ,#%D , , ,8 8 8 8 8h 8 8 8,, , , , ,)+G , , ,(    (,   +1 +1 +1 +1 +1$&E +1 +1 +1\M* M* M* M* M*y M* M* M*`
0 
0 
0 
0 
0$'/2
0 
0 
0	 	 	 	 	y 	 	 	0 0 0 0 0*,H 0 0 0	 	 	 	 	* 	 	 	/ / /# # # # ##%D # # #*'1 '1 '1 '1 '1h '1 '1 '1T3 3 3 3 3%'> 3 3 3<.+ .+ .+ .+ .+
 .+ .+ .+b II5HIIIJJS: S: S: S: S: S: S: KJS:l? ? ? ? ?)+G ? ? ?3- 3- 3- 3- 3- 3- 3- 3-lB B B B B%'C B B B.8+ 8+ 8+ 8+ 8+ 8+ 8+ 8+v
= 
= 
= 
= 
= 
= 
= 
=\Q \Q \Q \Q \Q} \Q \Q \Q~v< v< v< v< v<- v< v< v<r	 	 	 	 	- 	 	 	J J J J J J J J8    -   
    -   
       
	 	 	 	 	Y 3 	 	 		 	 	 	 	Y 3 	 	 		 	 	 	 	I1 	 	 	&E &E &E &E &E &E &E &ER
( 
( 
(^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+B?
 ?
 ?
 ?
 ?
 ?
 ?
 ?
D3 3 3 3 3 3 3 3"5 5 5* G$BCC; ; DC; Iq L  N N G  I I.7 .7I IN N.7b G$=>>< <  ?><D~I ~I ~I ~I ~I ~I ~I ~IB#O #O #O #O #O #O #O #OLB B B B B B B B*   GHH  IH |#F  H H# #H H#4# # # # # #( ( (6B B B# # #
, 
, 
,I I IB B B< < <$> > > > >s   B BB