
    G/PhE                       d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z
ddl	mZmZmZmZmZmZmZmZ ddlmZ ddlmZ ddl	mZmZmZmZ ddl	mZ ddlmZmZmZm Z m!Z! dd	l"m#Z# dd
l$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. 	 ddl/Z	n# e0$ r Y nw xY wd Z1e)Z2ddZ)d Z3d Z4d Z5h dZ6 G d d          Z7d Z8e
j9        :                    d           g Z;e; e8d e7d eddgddgge           eddge                     e7d eddgddgge           eddge                     e7d eddgddgge           eg d g d!ge                     e7d" ed#d$gd%d&gge           ed'd#ge                     e7d( ed#d$gd%d&gge           ed'd#ge                     e7d) ed#d$gd%d&gge           eg d*g d+ge                     e7d, e
j<        d-e           e
j<        d.e          d/h0           e7d1e
j9        =                    d2d2          e
j9        =                    d2                     e7d3e
j9        =                    d4d4          e
j9        =                    d4                     e7d5d4d6gd7d8ggd6d4g          g
          z  Z;e; e8d9 e7d: eg d;g d!ge           eddge                     e7d< eddgddgd=d>gge           eg d?e                     e7d@ eg d;g d!ge           eddge                     e7dA eddgddgd=d>gge           eg d?e                     e7dB eg dCg dDge           ed'd#ge                     e7dE edFdGgdHdIgdJdKgge           eg dLe                     e7dM eg dCg dDge           ed'd#ge                     e7dN edFdGgdHdIgdJdKgge           eg dLe                     e7dO eg dCg dDge           ed'd#gdPdQgge                     e7dR edFdGgdHdIgdJdKgge           ed'd#gdPdQgdPdQgge                     e7dSe
j9        =                    d2dT          e
j9        =                    d2                     e7dUe
j9        =                    d4dV          e
j9        =                    d4                     e7dWe
j9        =                    dVd4          e
j9        =                    dV                     e7dXe
j9        =                    dd8          e
j9        =                    d          d/h0           e7dYe
j9        =                    d8d          e
j9        =                    d8          d/h0          g          z  Z;e; e8dZ e7d[ eddgddgge          d           e7d\ eddgddgge          d           e7d] edd$gd^d4gge          d           e7d_ edd$gd^d4gge          d           e7d` e
j<        d-e          dd/h0           e7dad4d6gd6d4ggd           e7db eddgddgg          d           e7dce
j9        =                    d4d4          d          g          z  Z;dd Z>e; e>            z  Z;de Z?df Z@e; e@            z  Z; G dg dh          ZA G di djeA          ZB G dk dleA          ZC G dm dneA          ZD G do dpeA          ZE G dq dreA          ZF G ds dteA          ZGdu ZH G dv dweBeE          ZI G dx dyeI          ZJ G dz d{eBeE          ZK G d| d}eK          ZL G d~ deBeE          ZM G d deM          ZN G d deBeE          ZO G d deO          ZP G d d          ZQ G d deBeE          ZR G d deReQ          ZS G d deDeG          ZT G d deTeQ          ZU G d deBeE          ZV G d deV          ZW G d deBeCeEeF          ZX G d deX          ZY G d deDeG          ZZ G d deZ          Z[d Z\ G d deBeE          Z] G d de]          Z^ G d deBeC          Z_ G d de_          Z`eja        b                    dd dD                        G d d                      Zc G d deDeG          Zd G d d          Ze G d deDeG          Zf G d d          Zg G d d          Zh G d deh          Zi G d deh          Zj G d dejei          Zk G d d          Zl G d deh          Zm G d deh          Zn G d deh          Zo G d dekem          Zp G dĄ deken          Zq G dƄ dekeo          Zr G dȄ dɦ          Zsdʄ Zt G d˄ d̦          Zu G d̈́ dΦ          Zv G dτ dЦ          Zwdф Zxeja        y                    e.dҬӦ          dԄ             Zzeja        y                     ej{                    d4k    dլӦ          dք             Z|eja        y                    e.d׬Ӧ          eja        j}        d؄                         Z~ G dل dڦ          Z G dۄ dܦ          Z G d݄ dަ          Zd߄ Zeja                            dӦ          d             Zeja                            e- dӦ          d             Zd Zd Zd Zd Zd Zd Zd Zd ZdS )z# Test functions for linalg module

    N)arraysingledoublecsinglecdoubledotidentitymatmul)swapaxes)	AxisError)multiply
atleast_2dinfasarray)linalg)matrix_powernormmatrix_rank	multi_dotLinAlgError)_multi_dot_matrix_chain_order)
assert_assert_equalassert_raisesassert_array_equalassert_almost_equalassert_allclosesuppress_warningsassert_raises_regexHAS_LAPACK64IS_WASMc                     t          |           t          |t          j                  rt          |          nt          j        u S N)type
isinstancenpndarray)outin_s     ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/linalg/tests/test_linalg.pyconsistent_subclassr+   #   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   -   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:   5   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<   :   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>   ?   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__O   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.checkZ   s'     	4646	******r,   c                     d| j          dS )Nz<LinalgCase: >)rI   rL   s    r*   __repr__zLinalgCase.__repr__`   s    +ty++++r,   N)__name__
__module____qualname__setrM   rQ   rU    r,   r*   rF   rF   N   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`   d   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>,  s&    BBBDAqSQZZBBBr,   c                 0    g | ]}t          d d |          S r#   )slice)r   repeats     r*   r   z%_stride_comb_iter.<locals>.<listcomp>-  s$    HHHfdD&11HHHr,   r9   l   >[= .stride__c                     g | ]}d |z  S )z%+drZ   )r   js     r*   r   z%_stride_comb_iter.<locals>.<listcomp>6  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     s     
 a$$ h!&JJrNvzz#
2vzz 
2$eJ&7&78 ' 'BBC,A,ABBB	HHHHHII 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   K  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_cases_  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   \  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_casesu  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_casesy  s5    (H!5"/ 	 	2 	2 	2 	2 	2r,   N)rV   rW   rX   r   r   rZ   r,   r*   r   r   s  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#  r2    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)  r/  r3  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.do  sW    
1F1e,,5a88	: 	: 	:#E1--.....r,   Nr  rZ   r,   r*   r6  r6    s#        / / / / /r,   r6  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   r8  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?  .  r$  r,   r#  r   rq   rq   r9   rl   )r&   r'   zerosint_r   r   r8  r   r1   r$   float64r   r   r%   	complex64rL   r#  r3   ress       r*   r/  zTestInv.test_0_size,  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   r4  r   r   r   r   r  r/  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.do?  s9    ^A"JqMMB(((((r,   Nr  rZ   r,   r*   rI  rI  =  s#        ) ) ) ) )r,   rI  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   rK  r1   r<   r  s      r*   r  zTestEigvals.test_typesF  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#  rV  O  r$  r,   r#  r@  r9   r   rq   rl   rm   )r&   r'   rA  rB  r   r   rK  r   r1   r$   rC  r   r   r%   rD  rE  s       r*   r/  zTestEigvals.test_0_sizeM  s$   	 	 	 	 	BJ 	 	 	HYbg...33MBBnQ	"*,---VSY'''
3
++,,,HV2<00055mDDnQ	",.///T39%%%
3
++,,,,,r,   NrG  rZ   r,   r*   rQ  rQ  E  s\        [Wvvw&HIIH H JIH- - - - -r,   rQ  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   rL  eigenvalueseigenvectorsr   r
   r&   r   r>   r1   r   r+   )rL   r3   r4   rK   rF  r]  r^  s          r*   rP   zEigCases.dob  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*   rY  rY  `  s#        6 6 6 6 6r,   rY  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 rS  )r&   r   r   rL  r   r1   r<   rL   r1   r   wvs        r*   r  zTestEig.test_typesl  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#  rg  z  r$  r,   r#  r@  r9   rW  rl   rm   )r&   r'   rA  rB  r   r   rL  r   r1   r$   rC  r   r   r%   rD  rL   r#  r3   rF  res_vs        r*   r/  zTestEig.test_0_sizex  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,   NrG  rZ   r,   r*   r`  r`  k  sY        [Wvvw&HII	8 	8 JI	8+ + + + +r,   r`  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   rF  rp  rq  rr  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   r4  r   r   r   r   r  rZ   r,   r*   rk  rk    sO        I[Wvvw&HII5 5 JI5 5 5r,   rk  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   ro  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*   rt  rt    s#        , , , , ,r,   rt  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   Trm  ru   ru   rl   ru   )r   ru   N)r&   r   r   ro  rA   r   r   eye)rL   r   rv  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  Frm  )r&   r   r   ro  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*   ry  ry    s2        $ $ $8 8 8 8 8r,   ry  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   ro  r   r
   r&   r   r>   r1   r   r  r|  r   r   sortr   r+   )rL   r3   r4   rK   rv  r   rw  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)rn  r  ).r   r   r   r5   r6   rs   r   rq   r   fro)r   r   r   r   condro  r   r&   r8  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                   l    e Zd Zd Zd Zej                            ddd          d             Zd Z	d	S )
TestCondc                    t          g dg dg dg          }t          t          j        |t                    d           t          t          j        |t                     d           t          t          j        |d          d           t          t          j        |d          d           t          t          j        |d	          t          j        d
                     d S )N)rb   r   rq   )r   g       r   )r   r   rd   ru   gUUUUUU?rq   r   r  r  gUUUUU6@)r   r   r   r  r   r&   r  rL   As     r*   test_basic_nonsvdzTestCond.test_basic_nonsvd  s    :::{{{JJJ788FK3//333FKC400#666FK1--q111FK2..444FK5112783D3DEEEEEr,   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&   rA  onesr   r   r   r   r  )rL   Asp_posp_negr  ps         r*   test_singularzTestCond.test_singular  s     hv0###R%b%00 	. 	.DAq FK1%%,----%b%00 	 	DAqK1	 	r,   TFz/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%  rW  )rt   rs   rs   rq   r   rq   rq   r   r  rs   )	r&   r  nanr   r  r   r%   rC  isnan)rL   psr  r  r  r  s         r*   test_nanzTestCond.test_nan  sX   
 )((###GFOO# 	! 	!AAq!!AJq"*--...BHQKK    GI6% 	, 	,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   rW  rq   r   )
r&   randomseedrandr   r  r   r   r   isfinite)rL   r  r  r  s       r*   test_stacked_singularzTestCond.test_stacked_singular7  s     		tINN1aA&&##, 	) 	)AAq!!A3(((3(((BK#''(((BK#''((((	) 	)r,   N)
rV   rW   rX   r  r  r   r   xfailr  r  rZ   r,   r*   r  r    s        F F F   [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.doL  sa    QCCAv22AaXZ[[[[#FA../////r,   Nr  rZ   r,   r*   r  r  G  s#        
0 0 0 0 0r,   r  c                       e Zd ZdS )TestPinvNr"  rZ   r,   r*   r  r  T          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.doZ  sh    Q$///CCAv22AaXZ[[[[#FA../////r,   Nr  rZ   r,   r*   r  r  X  s#        0 0 0 0 0r,   r  c                       e Zd ZdS )TestPinvHermitianNr"  rZ   r,   r*   r  r  b  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  f  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   rK  r   r   reducer&   exp
atleast_1dr   r   r   )rL   r3   r4   rK   drF  r   ldadrM  ms              r*   rP   zDetCases.dov  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  t  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&   rA  rD  r   r  r   r   r1   r$   r  float32rC  )rL   r3   rF  s      r*   r/  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   r4  r   r   r   r   r  r/  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   ro  lstsqr   r   r   r   r   __array_wrap__r   r  r   r   r   r$   
issubdtyper1   floatingr+   )rL   r3   r4   rK   arrr  nrv  r   rw  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   r4  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_power  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>.tz&  s;    c1%%BS!!!39-----r,   r  r   s       r*   test_power_is_onez!TestMatrixPower.test_power_is_one%  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>.tz1  sZ    c1%%B Y&0066cDTT#s^^,,,39-----r,   r  r   s       r*   test_power_is_twoz!TestMatrixPower.test_power_is_two0  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>.tz=  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_powerG  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_squareL  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 r+  )r-  noninvr  r   r   r   r1  s      r*   test_exceptions_not_invertiblez.TestMatrixPower.test_exceptions_not_invertibleQ  sC    Fk  $$k<b99999r,   N)rV   rW   rX   r&   r|  r  r  r  r  r  r   r8  blockr  r  r1   r-  r  r!  r$  r(  r.  r2  r4  r   r   skipifr!   r9  rZ   r,   r*   r  r    sb        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[  rp  )r   eigvalshrL  r  r   r>   r1   )rL   r3   r4   rK   rM  rN  rO  ev2s           r*   rP   zTestEigvalshCases.do[  s     _Q$$"JqMM"G(28*<*<====oa%%W8BH+=+=>>>>>>r,   Nr  rZ   r,   r*   r=  r=  Y  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 )TestEigvalshr1   c                     t          j        ddgddgg|          }t           j                            |          }t	          |j        t          |                     d S r  )r&   r   r   r@  r   r1   r:   )rL   r1   r   rc  s       r*   r  zTestEigvalsh.test_typesh  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   r@  rL   r   s     r*   test_invalidzTestEigvalsh.test_invalidn  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[  r?  rH  lrp  rv  )r&   r   r   r>   r   r@  r   )rL   KloKuptgtr\  rc  s         r*   	test_UPLOzTestEigvalsh.test_UPLOt  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#  rW    r$  r,   r#  r@  r9   rW  rl   rm   )r&   r'   rA  rB  r   r   r@  r   r1   r$   rC  r   r   r%   rD  r  rE  s       r*   r/  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   r4  r   r   r   r   r  rM  rT  r/  rZ   r,   r*   rC  rC  g  sz        [Wvvw&HII5 5 JI5
B B B+ + +,- - - - -r,   rC  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[  rp  )r\  err_msg)r   eighr]  r^  rL  r  r   r   r
   r&   r   r>   r1   repr)rL   r3   r4   rK   rF  rM  evcrN  rO  rA  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*   rZ  rZ    s(        B B B B Br,   rZ  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   r]  r   r1   r:   rb  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 rF  )r&   r   r  r   r'  r   r]  rL  s     r*   rM  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 rO  )r&   r   r   r>   r   r]  r   )rL   rQ  rR  rS  r\  rc  rd  s          r*   rT  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#  rh    r$  r,   r#  r@  r9   rW  rl   rm   )r&   r'   rA  rB  r   r   r]  r   r1   r$   rC  r   r   r%   rD  r  rh  s        r*   r/  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,   NrX  rZ   r,   r*   rb  rb    sw        [Wvvw&HII% % JI%> > >+ + +,+ + + + +r,   rb  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   rF  s     r*   check_dtypez_TestNormBase.check_dtype  s\    aglBJ// 	=AFL11111 Jsy~r{;;<<<<<r,   )rV   rW   rX   r  decstaticmethodro  rZ   r,   r*   rj  rj    s7        	B
C= = \= = =r,   rj  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                 (   t          j        g d          }t           j        d         }t           j        d         }||z   }|D ]N}|                    |          }t	          |t           j                   }|                     ||           t          |d           t                      5 }|	                    t          d           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           Pd S )Nr  
AllIntegerAllFloatr  divide by zero encounteredr   r   rs   rq   rc   r  ru   g      ?rb   )r&   r   	typecodesr  r   r   ro  r   r   filterRuntimeWarningr1   r$   	rL   r3   exact_typesinexact_types	all_types	each_typeatansups	            r*   test_vector_return_typez(_TestNormGeneral.test_vector_return_type  s   HYYYl<0Z0-/	" 	) 	)I)$$Bb26'""BR$$$C((("$$ -

>+GHHH"b\\  R(((#B,,,	- - - - - - - - - - - - - - - b!BR$$$A&&&b!BR$$$C(((b!BR$$$BHMM#$6$6g8N8N$NOOOb!BR$$$BHMM#$6$6g8N8N$NOOOb"&!!BR$$$C((((?	) 	)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   rp  r   )rd  rL   s    r*   _testz+_TestNormGeneral.test_vector.<locals>._test1  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  rd  s   `     r*   test_vectorz_TestNormGeneral.test_vector,  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>P  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>R  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>h  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>k  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_axisJ  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)r\  )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_keepdimso  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   ru  r  r  r  r  rZ   r,   r*   rs  rs    si        F F F
') ') ')R  <#5 #5 #5J(Q (Q (Q (Q (Qr,   rs  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 ]0}|                    |          }t	          |t          j                   }|                     ||           t          |d           t                      5 }|	                    t          d           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           2d S )Nr  r@  rw  fdFDrc   ry  r   rb   rq   rs   gLXz?r   r  r  gU&,t=@r-   r  )r   r&   rz  r  r   r   ro  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((("$$ -

>+GHHH"b\\  R(((#B,,,	- - - - - - - - - - - - - - - b!BR$$$C(((b!BR$$$N333b"BR$$$C(((b"&!!BR$$$C(((b%BR$$$C(((b%BR$$$ J**2/A1*MMMMK%	N %	Ns   AC<<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'  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   rW  )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1N 1N 1Nf. . . > > >"< < < < <r,   r  c                       e Zd ZdS )	_TestNormNr"  rZ   r,   r*   r  r    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   rL  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   rL  s     r*   test_intminz"TestNorm_NonSystematic.test_intmin  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  
complex128rD  )rL   r  rF  s      r*   test_complex_high_ordz,TestNorm_NonSystematic.test_complex_high_ord$  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  rp  rZ   r,   r*   r  r  2  s        	B
CCCr,   r  c                        e Zd Zej        ZdZdS )_TestNormSingleBaser-   N)rV   rW   rX   r&   r  r  rp  rZ   r,   r*   r  r  7  s        	B
CCCr,   r  c                        e Zd Zej        ZdZdS )_TestNormInt64Baser.   N)rV   rW   rX   r&   int64r  rp  rZ   r,   r*   r  r  <  s        	B
CCCr,   r  c                       e Zd ZdS )TestNormDoubleNr"  rZ   r,   r*   r  r  A  r  r,   r  c                       e Zd ZdS )TestNormSingleNr"  rZ   r,   r*   r  r  E  r  r,   r  c                       e Zd ZdS )TestNormInt64Nr"  rZ   r,   r*   r  r  I  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|  rA  r   r   r'  )rL   Imss      r*   test_matrix_rankzTestMatrixRank.test_matrix_rankO  s   QBF1II..///F1II&	[^^Q'''[&!1!122A666[..222[$00!444[!%%q)))Xq"&))RXe__566[__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  rA  )rL   r  s     r*   test_symmetric_rankz"TestMatrixRank.test_symmetric_rankh  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  M  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  v  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  rF  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~a'77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""(99; ;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_inputs  s     i##C((JJJ-J..55b99JJJ-J..55b99a   a#a%i(((((r,   N)rV   rW   rX   r&   r   r  r   r   r4  r  r  r  r  r   r   r   r   r  rZ   r,   r*   r  r    sI       HE%$ %$ %$P [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   rK  FTc                    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	        ||
                    |                                                    }t          j                    5  d|j        d         z  t          j        |          j        z  }d d d            n# 1 swxY w Y   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   rK  i  r    
)atolr\  r   )axis1axis2)r&   r  r  randnr  complexfloatingr   r  r  r
   r  r  r   r   cholesky_no_nep50_warningr   finfoepsr   diagonalr   r   isreal)
rL   r   r1   rK  r3   tr  r4   r(  r  s
             r*   test_basic_propertyz TestCholesky.test_basic_property'  s=    		qIOU#= 233 	/Bry...As5zz""##"##Iakk!nn))++Q//Jq&&&Iq..  	4	!++a..--//33AA	!Q[[^^002233A!## 	: 	:#bhuoo&99D	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:14E1M1ME1M1MQ1M1M!1M1MNNNN K2...ry||$$%%%qAvs   +GGG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#  r7  L  r$  r,   r#  r@  r9   )rq   r   r   )r&   r'   rA  rB  r   r   r-  r   r   r   r1   r$   rC  r%   rD  rE  s       r*   r/  zTestCholesky.test_0_sizeK  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      @        Fr%  T)r&   r   r   r   r-  r  r  )rL   r3   s     r*   test_upper_lower_argz!TestCholesky.test_upper_lower_arg[  s    HtTlT4L122V_Q''%)H)H)HIIIOAT***OA %%''	
 	
 	
 	
 	
r,   N)rV   rW   rX   r   r   r4  r&   r  rC  rD  r  r4  r/  r9  rZ   r,   r*   r!  r!  %  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*   r;  r;  g  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+r;  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   rq  =)sys	byteorderr&   r  rC  r|  r   r1   newbyteorderbyteswapr   r   r8  r  r  r   )nativedttr  n_arrsw_arrroutinerF  s          r*   test_byteorder_checkrM  x  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,   r5  r6  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   rA  r   r   r   r8  )
invertiblenon_invertibler   s      r*    test_generalized_raise_multilooprQ    s    
 Aq6Aq6*++JX1v1v.//N
qt!t$AAcFAdG")':::::r,   z?skipping test that uses fork because there are multiple threadsc                     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pidrZ  r3   r   statuss         r*   test_xerbla_overriderg    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)rl  rk  rm  )textwrapdedentr  
subprocess
check_callrD  
executable)bad_libstemplaterm  codes       r*   test_sdot_bug_8577rv    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 rz  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_optimization  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_argument  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_argument  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_argument$  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  rA  r   r   r   )rL   r  r  r~  r(   rets         r*   test_three_arguments_and_outz)TestMultiDot.test_three_arguments_and_out.  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_out;  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_outE  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_logicQ  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_arrayso  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*   rx  rx    s        K K K= = =M M M< < << < << < <: : :/ / /
9 
9 
9= = =<I I I I Ir,   rx  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_handlingv  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   )rL   r   r  r3   ainvr.  actuals          r*   test_tensorinv_shapez"TestTensorinv.test_tensorinv_shape~  sh     F2JJ!---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  sn    F2JJq)))GBKKT1a00")2G2G12M2MNNNNNr,   N)rV   rW   rX   r   r   r4  r&   r  r  r  r  r  rZ   r,   r*   r  r  t  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  r+  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   r4  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   r0  r   r-  )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&   rA  r  r  r   r   )r  r3   r4   r  s       r*   test_blas64_dotr    sm    A
!Qrz***A
Abj)))AAdG
q!A4!r,   z*Numpy not compiled with 64-bit BLAS/LAPACKc            
         t           j        } t           j        j        j        }d}d}|}t          j        ddg|           }t          j        dg|           }t          j        dg|           } |||||||dd          }t          |d         d           t          |d         |           t          |d         |           t          |                                          }	t          d	|	cxk     od
k     nc            d S )Nl       rq   r9   r   r   infor  r  r  l        )
r&   rC  r   r]  dgeqrfrA  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   r1  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.  rv  rd  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   rW  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  !	  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  +	  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   rC  r   )r   r  s     r*   test_matrix_normr  8	  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                  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   rC  r9   )r&   r&  r   r   vector_normr   rC  r   fullr   r   r  s      r*   test_vector_normr  C	  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,   )r-   r.   )__doc__rT  rD  r   	threadingr   rn  rp  r   numpyr&   r   r   r   r   r   r   r	   r
   numpy._corer   numpy.exceptionsr   r   r   r   r   r   numpy.linalgr   r   r   r   r   numpy.linalg._linalgr   numpy.testingr   r   r   r   r   r   r   r   r    r!   numpy.linalg.lapack_liteImportErrorr+   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  r6  r;  rI  rQ  rY  r`  rk  rt  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r4  r  r=  rC  rZ  rb  rj  rs  r  r  r  r  r  r  r  r  r  r  r  r  r!  r;  rM  r;  rQ  active_countrg  r   rv  rx  r  r  r  rX  r  r  r  r  r  r  r  r  r  r  r  rZ   r,   r*   <module>r     s    
			 



                       P P P P P P P P P P P P P P P P P P P P             & & & & & & 4 4 4 4 4 4 4 4 4 4 4 4       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\@) @) @) @) @)y @) @) @)F
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|u< u< u< u< u<- u< u< u<p	 	 	 	 	- 	 	 	J J J J J J J J8    -   
    -   
       
	 	 	 	 	Y 3 	 	 		 	 	 	 	Y 3 	 	 		 	 	 	 	I1 	 	 	&E &E &E &E &E &E &E &ER
( 
( 
(_) _) _) _) _) _) _) _)D?
 ?
 ?
 ?
 ?
 ?
 ?
 ?
D3 3 3 3 3 3 3 3"5 5 5* G$BCC; ; DC; Iq L  N N.7 .7N N.7b G$=>>< <  ?><D~I ~I ~I ~I ~I ~I ~I ~IB&O &O &O &O &O &O &O &OR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< < < < <s   B BB