
    Ng1                       d Z ddlZddlZddlZddlZddlZddlZddlZddlZ	ddlm
Z
mZmZmZmZmZmZmZ ddlmZ ddlmZmZmZmZ ddlmZ ddlmZmZmZmZmZ ddlm Z  dd	l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ 	 ddl,Zn# e-$ r Y nw xY wd
 Z.e&Z/ddZ&d Z0d Z1d Z2h dZ3 G d d          Z4d Z5e	j6        7                    d           g Z8e8 e5d e4d e
ddgddgge           e
ddge                     e4d e
ddgddgge           e
ddge                     e4d e
ddgddgge           e
g dg d ge                     e4d! e
d"d#gd$d%gge           e
d&d"ge                     e4d' e
d"d#gd$d%gge           e
d&d"ge                     e4d( e
d"d#gd$d%gge           e
g d)g d*ge                     e4d+ e	j9        d,e           e	j9        d-e          d.h/           e4d0e	j6        :                    d1d1          e	j6        :                    d1                     e4d2e	j6        :                    d3d3          e	j6        :                    d3                     e4d4d3d5gd6d7ggd5d3g          g
          z  Z8e8 e5d8 e4d9 e
g d:g d ge           e
ddge                     e4d; e
ddgddgd<d=gge           e
g d>e                     e4d? e
g d:g d ge           e
ddge                     e4d@ e
ddgddgd<d=gge           e
g d>e                     e4dA e
g dBg dCge           e
d&d"ge                     e4dD e
dEdFgdGdHgdIdJgge           e
g dKe                     e4dL e
g dBg dCge           e
d&d"ge                     e4dM e
dEdFgdGdHgdIdJgge           e
g dKe                     e4dN e
g dBg dCge           e
d&d"gdOdPgge                     e4dQ e
dEdFgdGdHgdIdJgge           e
d&d"gdOdPgdOdPgge                     e4dRe	j6        :                    d1dS          e	j6        :                    d1                     e4dTe	j6        :                    d3dU          e	j6        :                    d3                     e4dVe	j6        :                    dUd3          e	j6        :                    dU                     e4dWe	j6        :                    dd7          e	j6        :                    d          d.h/           e4dXe	j6        :                    d7d          e	j6        :                    d7          d.h/          g          z  Z8e8 e5dY e4dZ e
ddgddgge          d           e4d[ e
ddgddgge          d           e4d\ e
dd#gd]d3gge          d           e4d^ e
dd#gd]d3gge          d           e4d_ e	j9        d,e          dd.h/           e4d`d3d5gd5d3ggd           e4da e
ddgddgg          d           e4dbe	j6        :                    d3d3          d          g          z  Z8dc Z;e8 e;            z  Z8dd Z<de Z=e8 e=            z  Z8 G df dg          Z> G dh die>          Z? G dj dke>          Z@ G dl dme>          ZA G dn doe>          ZB G dp dqe>          ZC G dr dse>          ZDdt ZEdu ZF G dv dwe?eB          ZG G dx dyeG          ZH G dz d{e?eB          ZI G d| d}eI          ZJ G d~ de?eB          ZK G d deK          ZL G d de?eB          ZM G d deM          ZN G d d          ZO G d de?eB          ZP G d dePeO          ZQ G d deAeD          ZR G d deReO          ZS G d de?eB          ZT G d deT          ZU G d de?e@eBeC          ZV G d deV          ZW G d deAeD          ZX G d deX          ZY G d de?eB          ZZ G d deZ          Z[ G d de?e@          Z\ G d de\          Z]ej^        _                    dd dD                        G d d                      Z` G d deAeD          Za G d d          Zb G d deAeD          Zc G d d          Zd G d d          Ze G d dee          Zf G d dee          Zg G d degef          Zh G d d          Zi G d dee          Zj G d dee          Zk G d dee          Zl G d dehej          Zm G dÄ dehek          Zn G dń dehel          Zo G dǄ dȦ          ZpdɄ Zq G dʄ d˦          Zr G d̄ dͦ          Zsd΄ Ztej^        u                    e+dϬЦ          dф             Zvd҄ Zwej^        u                    e+dӬЦ          ej^        jx        dԄ                         Zy G dՄ d֦          Zz G dׄ dئ          Z{ G dل dڦ          Z|dۄ Z}ej^        ~                    dܬЦ          d݄             Zej^                            e* dެЦ          d߄             ZdS )z# Test functions for linalg module

    N)arraysingledoublecsinglecdoubledotidentitymatmul)swapaxes)multiply
atleast_2dinfasarray)linalg)matrix_powernormmatrix_rank	multi_dotLinAlgError)_multi_dot_matrix_chain_order)
assert_assert_equalassert_raisesassert_array_equalassert_almost_equalassert_allclosesuppress_warningsassert_raises_regexHAS_LAPACK64IS_WASMc                     t          |           t          |t          j                  rt          |          nt          j        u S N)type
isinstancenpndarray)outin_s     Z/var/www/html/ai-engine/env/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kwr/   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   r0   s    r)   get_real_dtyper9   3   s&    FFFVWf..35 5r+   c                 r    t           t          t          t          t          t          t          t          i|          S r"   )r   r   r   r   r8   s    r)   get_complex_dtyper;   8   s&    GVWWgw0057 7r+   c                 *    | t           t          fv rdS dS )Ngh㈵>gdy=)r   r   r8   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namer2   r3   	frozensettags)selfrH   r2   r3   rJ   s        r)   __init__zLinalgCase.__init__M   sB    
 	
4%%&&&	dOO			r+   c                 @     || j         | j        | j                   dS )zN
        Run the function `do` on this test case, expanding arguments
        rJ   N)r2   r3   rJ   )rK   dos     r)   checkzLinalgCase.checkX   s'     	4646	******r+   c                     d| j          dS )Nz<LinalgCase: >)rH   rK   s    r)   __repr__zLinalgCase.__repr__^   s    +ty++++r+   N)__name__
__module____qualname__setrL   rP   rT    r+   r)   rE   rE   L   sO        (+ 	$ 	$ 	$ 	$+ + +, , , , ,r+   rE   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_tagsrJ   )tagcasescases      r)   	apply_tagr_   b   s=    
 (???M??? & &I%		Lr+     r>   r         ?       @      @      @r8   r   double_2)rb   ra   rd   )rc   rd         @r         ?       @y       @      @y      @      @y      @      @       @      ?r   	cdouble_2)rh   rg   y      ?      @)y      ?       y      ?      y      ?      0x0r   r   r   rC   rN   8x8   1x1   nonarray         rA   single_nsq_1)ra   rb   rc   single_nsq_2g      @rf   )rb   ra   rc   double_nsq_1double_nsq_2csingle_nsq_1)      ?      ?       @       @      @      )y      @      y      @      "@y      @       @csingle_nsq_2rz   r{   r|   y      @      "y      @      y      @       @)rh   rg   r|   cdouble_nsq_1cdouble_nsq_2cdouble_nsq_1_2y      ?      y       @       cdouble_nsq_2_28x11   1x5   5x10x44x0r@   hsinglehdoublehcsingley       @      hcdoublehempty	hnonarraymatrix_b_onlyhmatrix_1x1c                     g } t           D ]}t          |j        t          j                  s#t          j        |j        d|j        z  d|j        z  g          }|j        d }n,t          j        |j        d|j        z  d|j        z  g          }t          |j        dz   |||j	        dhz            }| 
                    |           t          j        |j        gdz  dz                                d|j        j        z             }|j        d }n@t          j        |j        gdz  dz                                d|j        j        z             }t          |j        d	z   |||j	        dhz            }| 
                    |           | S )
Nrr   rs      r,   _tile3rB   rN   rs   rr   _tile213)CASESr$   r2   r%   r&   r   r3   rE   rH   rJ   appendreshapeshape)	new_casesr^   r2   r3   new_cases        r)   _make_generalized_casesr      s   I # #$&"*-- 	Hdfa$&j!df*5666>AA$&!df*a$&j9::Adi(2Aq#'9#>@ @ @"""HdfX\A%&&..v/DEE6>AA$&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rp   )rp   rs   rp   rr   )rp   r   c                 8    g | ]\  }}t          ||z            S rY   )abs).0r2   r3   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+   r8   l   >[= .stride__c                     g | ]}d |z  S )z%+drY   )r   js     r)   r   z%_stride_comb_iter.<locals>.<listcomp>/  s    'C'C'Ca	'C'C'Cr+   r   )stridesstride_xxx_0stride_xxx_0_xrp   rp   stride_xxx_0_0)r$   r%   r&   ndim	itertoolsproducttuplezipr   emptyr0   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?   rN   )r   r   r2   r3   rE   rH   rJ   r   )r   r^   r2   a_labelr3   b_labelr   s          r)   _make_strided_casesr   D  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_CASESrJ   rP   rO   	Exception	traceback
format_excAssertionError)rK   requireexcluder^   emsgs         r)   check_caseszLinalgTestCase.check_casesX  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)rU   rV   rW   r   r   rX   r   rY   r+   r)   r   r   U  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>   rB   rC   r   r   r   rS   s    r)   test_sq_casesz"LinalgSquareTestCase.test_sq_casesn  s5    ("/!: 	 	< 	< 	< 	< 	<r+   c                 :    |                      ddhdh           d S )Nr>   rC   rB   r   r   rS   s    r)   test_empty_sq_casesz(LinalgSquareTestCase.test_empty_sq_casesr  s5    (H!5"/ 	 	2 	2 	2 	2 	2r+   N)rU   rV   rW   r   r   rY   r+   r)   r   r   l  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 )NrA   rB   rC   r   r   rS   s    r)   test_nonsq_casesz(LinalgNonsquareTestCase.test_nonsq_casesy  5    +"/!: 	 	< 	< 	< 	< 	<r+   c                 :    |                      ddhdh           d S )NrA   rC   rB   r   r   rS   s    r)   test_empty_nonsq_casesz.LinalgNonsquareTestCase.test_empty_nonsq_cases}  5    +x!8"/ 	 	2 	2 	2 	2 	2r+   N)rU   rV   rW   r   r   rY   r+   r)   r   r   w  r   r+   r   c                       e Zd Zd Zd ZdS )HermitianTestCasec                 :    |                      dhddh           d S )Nr@   rB   rC   r   r   rS   s    r)   test_herm_casesz!HermitianTestCase.test_herm_cases  r   r+   c                 :    |                      ddhdh           d S )Nr@   rC   rB   r   r   rS   s    r)   test_empty_herm_casesz'HermitianTestCase.test_empty_herm_cases  r   r+   N)rU   rV   rW   r   r   rY   r+   r)   r   r     r   r+   r   c                   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 )NrB   r>   rC   r   r   rS   s    r)   test_generalized_sq_casesz9LinalgGeneralizedSquareTestCase.test_generalized_sq_cases  s5    -!:"* 	 	- 	- 	- 	- 	-r+   c                 6    |                      h d           d S )N>   r>   rB   rC   r   r   rS   s    r)   test_generalized_empty_sq_casesz?LinalgGeneralizedSquareTestCase.test_generalized_empty_sq_cases  s&    !D!D!DEEEEEr+   N)rU   rV   rW   pytestmarkslowr   r   rY   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 )NrB   rA   rC   r   r   rS   s    r)   test_generalized_nonsq_casesz?LinalgGeneralizedNonsquareTestCase.test_generalized_nonsq_cases  5    -!="* 	 	- 	- 	- 	- 	-r+   c                 6    |                      h d           d S )N>   rA   rB   rC   r   r   rS   s    r)   "test_generalized_empty_nonsq_caseszELinalgGeneralizedNonsquareTestCase.test_generalized_empty_nonsq_cases  s&    !G!G!GHHHHHr+   N)rU   rV   rW   r   r   r   r  r  rY   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 )NrB   r@   rC   r   r   rS   s    r)   test_generalized_herm_casesz8HermitianGeneralizedTestCase.test_generalized_herm_cases  r  r+   c                 :    |                      h ddh           d S )N>   r@   rB   rC   noner   r   rS   s    r)   !test_generalized_empty_herm_casesz>HermitianGeneralizedTestCase.test_generalized_empty_herm_cases  s7    !G!G!G"( 	 	+ 	+ 	+ 	+ 	+r+   N)rU   rV   rW   r   r   r   r  r  rY   r+   r)   r  r    sT        [- - - [+ + + + +r+   r  c                    t          |           } | j        dk    r| j        |j        k    r | j        d d         |j        dd          z   }n2| j        |j        dz   k    r| j        d d         }nt          d          t	          j        |t	          j        | |                    }t          j        t          t          | j        d d                    D ]!}t          | |         ||                   ||<   "|S t          | |          S )Nrs   r   rp   zNot implemented...r8   r   )r   r   r   
ValueErrorr%   r   common_typer   r   mapranger   )r2   r3   r   rcs        r)   dot_generalizedr    s    

Av{{6QVqwrss|3IIVqvz!!II1222HYbnQ&:&:;;;"Cqwss|$<$<= 	# 	#AqtQqT??AaDD1ayyr+   c                     t          |           } | j        dk    r?t          j        | j        | j                  }t          | j        d                   |d<   |S t          | j        d                   S )Nrs   r8   r   .r   )r   r   r%   r   r   r0   r	   )r2   r  s     r)   identity_like_generalizedr    s`    

Av{{HQWAG,,,!'"+&&#
###r+   c                       e Zd Zd ZdS )
SolveCasesc                     t          j        ||          }t          |t          ||                     t	          t          ||                     d S r"   )r   solver   r  r   r*   )rK   r2   r3   rJ   r   s        r)   rO   zSolveCases.do  sL    LAAq!44555#Aq))*****r+   NrU   rV   rW   rO   rY   r+   r)   r  r    s#        + + + + +r+   r  c                   j    e Zd Zej                            deeee	g          d             Z
d Zd ZdS )	TestSolver0   c                     t          j        ddgddgg|          }t          t          j        ||          j        |           d S Nrp         ?r8   )r%   r   r   r   r  r0   rK   r0   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                              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                              dd                              |          }t          j        ||          d d ddf         }t          j        |d d ddddf         |d d ddf                   }t          ||           t          t          ||                     t          j        d                              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>.ArraySubclassNrU   rV   rW   rY   r+   r)   ArraySubclassr$            Dr+   r&  rn   rr   r,   rp   rs   r   )r%   r&   aranger   r   r   r  r   r   r$   r   r   r  rK   r&  r2   r3   expectedresults         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  A&&++M::<1%%aaa1f-a1Q3!na1Q3i88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%  rY   r+   r)   r&  r/     r'  r+   r&  rt   rp   rr   r,   rs   r   )
r%   r&   r(  r   r   r   r  r   r   r$   r)  s         r)   test_0_size_kzTestSolve.test_0_size_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)rU   rV   rW   r   r   parametrizer   r   r   r   r!  r,  r0  rY   r+   r)   r  r    sl        [Wvvw&HII6 6 JI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*   )rK   r2   r3   rJ   a_invs        r)   rO   zInvCases.do  sW    
1OAu555a88	: 	: 	:#E1--.....r+   Nr  rY   r+   r)   r3  r3    s#        / / / / /r+   r3  c                   d    e Zd Zej                            deeee	g          d             Z
d ZdS )TestInvr0   c                     t          j        ddgddgg|          }t          t          j        |          j        |           d S r  )r%   r   r   r   r5  r0   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%  rY   r+   r)   r&  r<  "  r'  r+   r&  r   rp   rp   r8   rk   )r%   r&   zerosint_r   r   r5  r   r0   r#   float64r   r   r$   	complex64rK   r&  r2   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rU   rV   rW   r   r   r1  r   r   r   r   r!  r,  rY   r+   r)   r8  r8    sY        [Wvvw&HII1 1 JI10 0 0 0 0r+   r8  c                       e Zd Zd ZdS )EigvalsCasesc                 |    t          j        |          }t          j        |          \  }}t          ||           d S r"   )r   eigvalseigr   )rK   r2   r3   rJ   evevaluesevectorss          r)   rO   zEigvalsCases.do3  s9    ^A"JqMMB(((((r+   Nr  rY   r+   r)   rF  rF  1  s#        ) ) ) ) )r+   rF  c                   d    e Zd Zej                            deeee	g          d             Z
d ZdS )TestEigvalsr0   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 Nrp   r  r8   r   )r%   r   r   r   rH  r0   r;   r   s      r)   r!  zTestEigvals.test_types:  s    Hq#ha)777V^A&&,e444Hq#hQ(666V^A&&,.?.F.FGGGGGr+   c                     G d dt           j                  }t          j        dt           j                                      |          }t          j        |          }t          |j        j	        t           j
        u            t          d|j                   t          t          |t           j                             t          j        dt           j                                      |          }t          j        |          }t          |j        j	        t           j        u            t          d|j                   t          t          |t           j                             d S )Nc                       e Zd ZdS ).TestEigvals.test_0_size.<locals>.ArraySubclassNr%  rY   r+   r)   r&  rS  C  r'  r+   r&  r=  r8   r   rp   rk   rl   )r%   r&   r>  r?  r   r   rH  r   r0   r#   r@  r   r   r$   rA  rB  s       r)   r,  zTestEigvals.test_0_sizeA  s$   	 	 	 	 	BJ 	 	 	HYbg...33MBBnQ	"*,---VSY'''
3
++,,,HV2<00055mDDnQ	",.///T39%%%
3
++,,,,,r+   NrD  rY   r+   r)   rN  rN  9  s\        [Wvvw&HIIH H JIH- - - - -r+   rN  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   rI  eigenvalueseigenvectorsr   r  r%   r   r=   r0   r   r*   )rK   r2   r3   rJ   rC  rZ  r[  s          r)   rO   zEigCases.doV  s    jmm$'OS5E\<88
<002:k3J3J3PTVWVWVW<3XX%k&788	: 	: 	: 	: 	#L!4455555r+   Nr  rY   r+   r)   rV  rV  T  s#        6 6 6 6 6r+   rV  c                   d    e Zd Zej                            deeee	g          d             Z
d ZdS )TestEigr0   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 rP  )r%   r   r   rI  r   r0   r;   rK   r0   r   wvs        r)   r!  zTestEig.test_types`  s    Hq#ha)777y}}Q1QWe$$$QWe$$$Hq#hQ(666y}}Q1QW/66777QW/6677777r+   c                     G d dt           j                  }t          j        dt           j                                      |          }t          j        |          \  }}t          |j        j	        t           j
        u            t          |j        j	        t           j
        u            t          |j        |j                   t          d|j                   t          t          |t           j                             t          j        dt           j                                      |          }t          j        |          \  }}t          |j        j	        t           j        u            t          |j        j	        t           j        u            t          |j        |j                   t          d|j                   t          t          |t           j                             d S )Nc                       e Zd ZdS )*TestEig.test_0_size.<locals>.ArraySubclassNr%  rY   r+   r)   r&  rd  n  r'  r+   r&  r=  r8   rT  rk   rl   )r%   r&   r>  r?  r   r   rI  r   r0   r#   r@  r   r   r$   rA  rK   r&  r2   rC  res_vs        r)   r,  zTestEig.test_0_sizel  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+   NrD  rY   r+   r)   r]  r]  _  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 )SVDBaseTestsFr0   c                    t          j        ddgddgg|          }t          j        |          }|j        |j        |j        }}}t          |j        |           t          |j        t          |                     t          |j        |           t          j        |d| j
                  }t          |j        t          |                     d S )Nrp   r  r8   F
compute_uvr@   )r%   r   r   svdUSVhr   r0   r9   r@   )rK   r0   r   rC  rm  rn  ro  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)rU   rV   rW   r@   r   r   r1  r   r   r   r   r!  rY   r+   r)   rh  rh    sO        I[Wvvw&HII5 5 JI5 5 5r+   rh  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.rX  )
r   rl  r   r  r%   r   r=   r0   r   r*   )rK   r2   r3   rJ   ur   vts          r)   rO   zSVDCases.do  s    :a''1b?2:a==2:a==dTUTUTU;V+V+-:b>>; ;%ag..	0 	0 	0 	0 	#Aq))***#B**+++++r+   Nr  rY   r+   r)   rq  rq    s#        , , , , ,r+   rq  c                       e 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 )rt   r   Trj  rt   rt   rk   rt   )r   rt   N)r%   r   r   rl  r@   r   r   eye)rK   r   rs  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+   N)rU   rV   rW   r{  rY   r+   r)   rv  rv    s#        $ $ $ $ $r+   rv  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r@   .rX  c                     t          t          | j                            }|d         |d         c|d<   |d<   t          j        t          j        | |                    S )Nr   r   axes)r   r  r   r%   conj	transpose)matr  s     r)   r@   z'SVDHermitianCases.do.<locals>.hermitian  sR    ch((D!%b48DHd2h72<$777888r+   r   )r   rl  r   r  r%   r   r=   r0   r   r
   broadcast_tory  r   r   sortr   r*   )rK   r2   r3   rJ   rs  r   rt  r@   s           r)   rO   zSVDHermitianCases.do  s   :a$7771b?2:a==2:a==dTUTUTU;V+V+-: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  rY   r+   r)   r}  r}    s#        , , , , ,r+   r}  c                       e Zd ZdZdS )TestSVDHermitianTN)rU   rV   rW   r@   rY   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 )NrC   F)rk  ).r   ).r   r   r   r4   r5   rr   r   rp   r   fro)r   r   r   r   condrl  r   r%   r5  r   summaxminr   sqrt)rK   r2   r3   rJ   r  r   cinvs          r)   rO   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  rY   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)ra   r   rp   )r   g       r   )r   r   rc   rt   gUUUUUU?rp   r   r  r  gUUUUU6@)r   r   r   r  r   r%   r  rK   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 )Nrr   rr   Nrp   rr   r  r   r     4&kC)r%   r>  onesr   r   r   r   r  )rK   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)Nrp   r   rr   r   r  r  r  rT  )rs   rr   rr   rp   r   rp   rp   r   r  rr   )	r%   r  nanr   r  r   r$   float_isnan)rK   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 )	Nr`   rr   r   rk   r   )Nrp   rr   r  r   r   rT  rp   r   )
r%   randomseedrandr   r  r   r   r   isfinite)rK   r  r  r  s       r)   test_stacked_singularzTestCond.test_stacked_singular%  s     		tINN1aA&&##, 	) 	)AAq!!A3(((3(((BK#''(((BK#''((((	) 	)r+   N)
rU   rV   rW   r  r  r   r   xfailr  r  rY   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*   rK   r2   r3   rJ   a_ginvr   s         r)   rO   zPinvCases.do:  sa    QCCAv22AaXZ[[[[#FA../////r+   Nr  rY   r+   r)   r  r  5  s#        
0 0 0 0 0r+   r  c                       e Zd ZdS )TestPinvNr%  rY   r+   r)   r  r  B          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)   rO   zPinvHermitianCases.doH  sh    Q$///CCAv22AaXZ[[[[#FA../////r+   Nr  rY   r+   r)   r  r  F  s#        0 0 0 0 0r+   r  c                       e Zd ZdS )TestPinvHermitianNr%  rY   r+   r)   r  r  P  r  r+   r  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   rp   )r   detslogdetsign	logabsdetr   r0   r#   r   r   astyper   rH  r   r   reducer%   exp
atleast_1dr   r   r   )rK   r2   r3   rJ   drC  r   ldadrJ  ms              r)   rO   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  rY   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   rp   )r   r   r  r#   r   r   r  r   rS   s    r)   	test_zerozTestDet.test_zeroj  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+   r0   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  r0   r  r9   )rK   r0   r   phr   s        r)   r!  zTestDet.test_typesw  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 )Nrk   r8   ra   r  r   rp   )r%   r>  rA  r   r  r   r   r0   r#   r  float32r@  )rK   r2   rC  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)rU   rV   rW   r  r   r   r1  r   r   r   r   r!  r,  rY   r+   r)   r  r  i  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   rcondr   rr   r  rp   r   )r%   r   r   r   rl  lstsqr   r   r   r   r   __array_wrap__r   r  r   r   r   r#   
issubdtyper0   floatingr*   )rK   r2   r3   rJ   arrr  nrs  r   rt  r   	residualsranksvexpect_residss                  r)   rO   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  rY   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                 V   t          j        g dg dg dg dg          j        }t          j        g d          }t                      5 }|                    t
          d          }t          j        ||          \  }}}}t          |dk               t          j        ||d	          \  }}}}t          |dk               t          j        ||d 	          \  }}}}t          |d
k               t          t          |          dk               d d d            d S # 1 swxY w Y   d S )N)r  ra   r  ra   rb   r  )r  rb   r  r  ra   r  )ra   r  ra   r  r  rd   )r  r  r  rb   rc   r  )rp   r   r   r   r   r   z`rcond` parameter will changert   r   r  rs   rp   )
r%   r   Tr   recordFutureWarningr   r  r   len)	rK   r2   r3   supr`  r   r  r  r   s	            r)   test_future_rcondzTestLstsq.test_future_rcond  s   H2222222222224 5 5 67 	

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

=*IJJA$*LA$6$6!Ay$DAI$*LAR$@$@$@!Ay$DAI$*LAT$B$B$B!Ay$DAICFFaK   		! 		! 		! 		! 		! 		! 		! 		! 		! 		! 		! 		! 		! 		! 		! 		! 		! 		!s   
CDD"%D")r  r  n_rhs))rt   rr   rr   )r   rt   rp   )r   rt   rr   )rt   r   rp   )rt   r   rr   )rt   rr   r   )r   r   r   c                    t          j        ||z                                ||          }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   rl   r   r  )r%   r(  r   r  r   r  r   r   r   r   r   r   r  r  )rK   r  r  r  r2   r3   r   r  r  r   r  s              r)   test_empty_a_bzTestLstsq.test_empty_a_b  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   rp   rr   rs   )r   g?g?g @gffffff
@zIncompatible dimensionsr  )
r%   r   vstackr  r  r  r   r   r   r  )rK   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)	rU   rV   rW   r  r   r   r1  r  r  rY   r+   r)   r  r    sz        ! ! !$ [000 3 3 3  , , ,+ + + + +r+   r  dtc                 6    g | ]}t          j        |          S rY   )r%   r0   )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 )TestMatrixPowerrt   )rs   r   rp   rr   )rr   rs   r   rp   )rp   rr   rs   r   rp   r   rr   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 )Nrr   d   i       r   rp   rs   )rshft_1r  r   r   rshft_0rshft_2rshft_3)rK   r  rshfts      r)   test_large_powerz TestMatrixPower.test_large_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  r0   )Mmzs     r)   tzz.TestMatrixPower.test_power_is_zero.<locals>.tz  sD    a##B6q99:::17+++++r+   	rshft_allr  objectstackedrK   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 )Nrp   )r   r   r0   )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 )Nrr   )r   r0   r  r
   r   r   )r  r  mmuls      r)   r  z-TestMatrixPower.test_power_is_two.<locals>.tz  sZ    c1%%B Y&0066cDTT#s^^,,,39-----r+   r  r  s       r)   test_power_is_twoz!TestMatrixPower.test_power_is_two  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   r0   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      ?rp   )r  r  r   	TypeErrorr   rK   r  r  s      r)   test_exceptions_bad_powerz)TestMatrixPower.test_exceptions_bad_power*  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 )Nrp   rr   )rt   rs   rr   )r   r   r   r%   r   r  )rK   r  s     r)   test_exceptions_non_squarez*TestMatrixPower.test_exceptions_non_square/  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   r'  s      r)   test_exceptions_not_invertiblez.TestMatrixPower.test_exceptions_not_invertible4  sC    Fk  $$k<b99999r+   N)rU   rV   rW   r%   ry  r  r  r	  r
  r  r   r.  blockr  r  r0   r#  r  r  r  r  r$  r(  r*  r   r   skipifr    r/  rY   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  rX  rm  )r   eigvalshrI  r  r   r=   r0   )rK   r2   r3   rJ   rJ  rK  rL  ev2s           r)   rO   zTestEigvalshCases.do>  s     _Q$$"JqMM"G(28*<*<====oa%%W8BH+=+=>>>>>>r+   Nr  rY   r+   r)   r3  r3  <  s#        	? 	? 	? 	? 	?r+   r3  c                   p    e Zd Zej                            deeee	g          d             Z
d Zd Zd ZdS )TestEigvalshr0   c                     t          j        ddgddgg|          }t           j                            |          }t	          |j        t          |                     d S r  )r%   r   r   r6  r   r0   r9   )rK   r0   r   r`  s       r)   r!  zTestEigvalsh.test_typesK  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 Nrp   r  r8   lrongUPLOlowerupper)r%   r   r  r   r  r   r6  rK   r   s     r)   test_invalidzTestEigvalsh.test_invalidQ  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   rp   r8   r   rX  r5  r>  lrm  rs  )r%   r   r   r=   r   r6  r   )rK   KloKuptgtrY  r`  s         r)   	test_UPLOzTestEigvalsh.test_UPLOW  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%  rY   r+   r)   r&  rM  o  r'  r+   r&  r=  r8   rT  rk   rl   )r%   r&   r>  r?  r   r   r6  r   r0   r#   r@  r   r   r$   rA  r  rB  s       r)   r,  zTestEigvalsh.test_0_sizem  s$   	 	 	 	 	BJ 	 	 	HYbg...33MBBoa  	"*,---VSY'''
3
++,,,HV2<00055mDDoa  	"*,---T39%%%
3
++,,,,,r+   NrU   rV   rW   r   r   r1  r   r   r   r   r!  rC  rJ  r,  rY   r+   r)   r9  r9  J  sz        [Wvvw&HII5 5 JI5
B B B+ + +,- - - - -r+   r9  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  .rX  rm  )rY  err_msg)r   eighrZ  r[  rI  r  r   r   r  r%   r   r=   r0   repr)rK   r2   r3   rJ   rC  rJ  evcrK  rL  r7  evc2s              r)   rO   zTestEighCases.do  sD    k!nn/3#3C"JqMM"B(((3//
2sD!!!|4rz#F%bh//	1 	1 	1 	1 K3''	TC)))400
3T1115
48H8HH%bh//a	B 	B 	B 	B 	B 	Br+   Nr  rY   r+   r)   rP  rP    s(        B B B B Br+   rP  c                   p    e Zd Zej                            deeee	g          d             Z
d Zd Zd ZdS )TestEighr0   c                     t          j        ddgddgg|          }t           j                            |          \  }}t	          |j        t          |                     t	          |j        |           d S r  )r%   r   r   rS  r   r0   r9   r_  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 r<  )r%   r   r  r   r  r   rS  rB  s     r)   rC  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 rE  )r%   r   r   r=   r   rS  r   )rK   rG  rH  rI  rY  r`  ra  s          r)   rJ  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%  rY   r+   r)   r&  r^    r'  r+   r&  r=  r8   rT  rk   rl   )r%   r&   r>  r?  r   r   rS  r   r0   r#   r@  r   r   r$   rA  r  re  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+   NrN  rY   r+   r)   rX  rX    sw        [Wvvw&HII% % JI%> > >+ + +,+ + + + +r+   rX  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"   )	
issubclassr0   r#   r%   inexactr   realr   r  )r   rC  s     r)   check_dtypez_TestNormBase.check_dtype  s\    aglBJ// 	=AFL11111 Jsy~r{;;<<<<<r+   )rU   rV   rW   r  decstaticmethodre  rY   r+   r)   r`  r`    s7        	B
C= = \= = =r+   r`  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  r8   )r   r   r   r  r   rS   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   rr   rp   rb   r  rt   g      ?ra   )r%   r   	typecodesr  r   r   re  r   r   filterRuntimeWarningr0   r#   	rK   r2   exact_typesinexact_types	all_types	each_typeatanr  s	            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)rp   rr   rs   rt   )r   r   r   r   )r   rr   r   rt   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ҭ@r/   rd   ra   rp         $@r   gQ?rr   r   gsc?r   rt   )r%   testingr   r   rf  r   )ra  rK   s    r)   _testz+_TestNormGeneral.test_vector.<locals>._test  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+   r8   )r   r  )rK   r2   r3   r  r  ra  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 )Nrp   rr   rs   rt   r   r,   r8   r   r   rp   rr   rs   c                 F    g | ]}t          d d |f                   S Nordr   r   kr  orders     r)   r   z._TestNormGeneral.test_axis.<locals>.<listcomp>3  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>5  s2    MMMaa111g5111MMMr+      rt   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>K  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>N  sW     $F $F $F() %)11117)C)C)E5$Q$Q$Q $F $F $Fr+   )r   r  r%   Infr  r   r   r   r(  r   r   r   combinationsr   r  )rK   	expected0	expected1ndr  row_axiscol_axisr  r*  r  r  r  r  s            @@@@r)   	test_axisz_TestNormGeneral.test_axis-  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 )Nrp   r  r8   rr   rs   rt   zorder {0}, axis = {1}z;Shape mismatch found {0}, expected {1}, order={2}, axis={3}r  T)r  r  keepdims)rR  )rp   rp   rp   r   r   r   r  nuc)r%   r(  r  r   r   r   squeezeformatr   r   r  r  r   r   r   r   permutations)	rK   r  allclose_err	shape_errr*  foundexpected_shaper  r  s	            r)   test_keepdimsz_TestNormGeneral.test_keepdimsR  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)rU   rV   rW   rk  rz  r  r  r  rY   r+   r)   ri  ri    si        F F F
') ') ')R  <#5 #5 #5J(Q (Q (Q (Q (Qr+   ri  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 )Nr8   r  )r   r   r   r  rS   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=  rm  fdFDrb   ro  r   ra   rp   rr   gLXz?r   r  r  gU&,t=@r,   r}  )r   r%   rp  r  r   r   re  r   r   rq  rr  r  rs  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 )Nrp   rs   r   r   r8   gT"@r  r  r~  g      (@rd   r   rf   rr   gW?"@r   gїʄ?nofror   r   )r   r  r   r   r   r   r  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   )rs   rr   rp   r8   grj=Q0?r  r  gB+pc?g?g333333?rp   ra   r   g?rr   g&.d?r   gܸՠ?)r   r  r   r   r   r  s     r)   test_matrix_3x3z_TestNorm2D.test_matrix_3x3  s   
 JJ			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                 T   |                      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          j        t          |d d           t          t          j        t          |d d           t          t          t          |d d           d S )Nr  r  r8   rp   r  rr   rs   rt   r  r   r  testr   rs   rT  )rp   rr   rr   rs   )r   rp   rr   )	r   r  r%   r(  r   r   r  r   	AxisError)rK   r  r  r  s       r)   test_bad_argsz_TestNorm2D.test_bad_args  sr    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==== 	blD!T1555blD!T6:::j$4;;;;;r+   N)
rU   rV   rW   r%   r   r  r  r  r  r  rY   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%  rY   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
   r8   rs   r  gL)@rr   r}  )r%   r(  
longdoubler1   r   rB  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   r8   rs   r  l        r   r}  )r%   r   int32r1   r   rB  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rr   r8   y      @      @r   y            @rp   gV;'@rs   r  r  r}  	   r   )	r%   r   clongdoubler1   r   r   r  
complex128rA  )rK   r  rC  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)rU   rV   rW   r  r  r  rY   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)rU   rV   rW   r%   r   r  rf  rY   r+   r)   r  r    s        	B
CCCr+   r  c                        e Zd Zej        ZdZdS )_TestNormSingleBaser,   N)rU   rV   rW   r%   r  r  rf  rY   r+   r)   r  r    s        	B
CCCr+   r  c                        e Zd Zej        ZdZdS )_TestNormInt64Baser-   N)rU   rV   rW   r%   int64r  rf  rY   r+   r)   r  r    s        	B
CCCr+   r  c                       e Zd ZdS )TestNormDoubleNr%  rY   r+   r)   r  r  $  r  r+   r  c                       e Zd ZdS )TestNormSingleNr%  rY   r+   r)   r  r  (  r  r+   r  c                       e Zd ZdS )TestNormInt64Nr%  rY   r+   r)   r  r  ,  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           d S )Nrt   r  r   r   rs   rx  r   )rp   r   r   r   rp   )rt   )rs   rt   r   )r   r   r%   ry  r>  r   )rK   Imss      r)   test_matrix_rankzTestMatrixRank.test_matrix_rank2  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'''''r+   c                 &   t          dt          t          j        d          d                     t          dt          t          j        d          d                     t          dt          t          j        d          d                     t          j        d          }d|d<   t          d	t          |d                     d
|d<   t          dt          |dd                     t          d	t          |dd                     d S )Nrt   Tr  rp   rx  r   r  r  rs   g:0yE>g|"BE>)r@   tolg;䡈E>)r   r   r%   ry  r  r>  )rK   r  s     r)   test_symmetric_rankz"TestMatrixRank.test_symmetric_rankF  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)rU   rV   rW   r  r  rY   r+   r)   r  r  0  s7        ( ( ((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  sizerp   rr   r   r  rt   r   rs   rn   )r%   r  RandomStater  normalr   r   )rngiXs      r)   test_reduced_rankr  T  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#   r0   r   r  r   qrQRr   r$   r   r   r  r  r%   ry  triu)rK   r2   a_typea_dtyper  r  r  rC  r  r  q1r1r2s                r)   check_qrzTestQR.check_qre  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  )rs   r   r  rk   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   r0   r   r   )rK   r  r  r  r2   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 )Nrp   rr   rs   rt   r   r,   r8   r  r  r  r  r   )	r   r%   r   r   r  r   r0   r   r  )rK   r2   r  r  s       r)   test_mode_rawzTestQR.test_mode_raw  s    JJAAA/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 )	Nrp   rr   rs   rt   r   r,   fd              ?)r   r  r  r  )rK   r2   r3   r  m1m2s         r)   test_mode_all_but_economicz!TestQR.test_mode_all_but_economic  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   rr   .r  r  )r#   r0   r   r  r   r  r   r$   r   r
   r%   r	   r  r   r  r  )rK   r2   r  r  r  r  r  qr  I_matstack_I_matr  r  r  s                 r)   check_qr_stackedzTestQR.check_qr_stacked  s|    a'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  ))rs   rt   )rt   rs   rx  r  r  
outer_size)r  r  )rr   rs   rt   r  c                 >   t           j                            ||z                                 |          }t           j                            ||z                                 |          }|                     |           |                     |d|z  z              d S )Nr  r	  )r%   r  r  r  r  )rK   r  r  r  r  r  s         r)   test_stacked_inputszTestQR.test_stacked_inputs  s     I*t"344;;B??I*t"344;;B??a   a#a%i(((((r+   N)rU   rV   rW   r%   r   r  r   r   r1  r  r  r  r  r   r   r   r   r  rY   r+   r)   r  r  a  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          d                         Zd ZdS )TestCholeskyr   )r   r  rs   rs   )2   r  )rs   r  r  r0   c                 r   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                            |          }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	| 
           d S )Nrp   r	  )r   r   r   r8   i  r    
)atolrR  )r%   r  r  randnr  complexfloatingr   r  r  r
   r  r  r   r   cholesky_no_nep50_warningr   finfoepsr   )rK   r   r0   r2   tr  r3   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!!IaQ,,..//!## 	: 	:#bhuoo&99D	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:14E1M1ME1M1MQ1M1M!1M1MNNNNNNs   +FFF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%  rY   r+   r)   r&  r'     r'  r+   r&  r=  r8   )rp   r   r   )r%   r&   r>  r?  r   r   r  r   r   r   r0   r#   r@  r$   rA  rB  s       r)   r,  zTestCholesky.test_0_size  s(   	 	 	 	 	BJ 	 	 	HYbg...33MBBoa  QWci(((	"*,---
3
++,,,HYbl33388GGoa  QWci(((	",.///
3
++,,,,,r+   N)rU   rV   rW   r   r   r1  r%   r  r@  rA  r  r$  r,  rY   r+   r)   r  r    s         [@@@  ["*bj",F O O  O(- - - - -r+   r  c                     t           j        dk    rd} nd} t          j        t          j        fD ]}t          j        d|          }|                    |           }|                    d                                          }t          |j	        j        d           t          j        t          j        t          j        fD ]?} ||          }t          | ||                     t          | ||                     @d S )Nlittle<rR   rt   r8   rn  =)sys	byteorderr%   r  r@  ry  newbyteorderbyteswapr   r0   r   r5  r  r  r   )nativedttr  n_arrsw_arrroutinerC  s          r)   test_byteorder_checkr5  0  s    
}  
BJ' 5 5fQc"""  ((!!#&&//11SY(#...
FJ< 	5 	5G'#,,CsGGENN333sGGFOO4444	55 5r+   r+  r,  c                     t          j        ddgddgg          } t          j        ddgddgg          }t          j        g d          dd d         }| |d<   ||d<   t          t           j        j        t           j        j        |           d S )Nrp   rr   rs   rt   )rt   rt   rr   rr   .rk   )r%   r   r>  r   r   r   r5  )
invertiblenon_invertibler   s      r)    test_generalized_raise_multiloopr9  E  s    
 Aq6Aq6*++JX1v1v.//N
qt!t$AAcFAdG")':::::r+   c                     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   rp   rk   ra   zDORGQR parameter number 5zNumpy xerbla not linked in.)osforkOSErrorAttributeErrorr   skipcloseresource	setrlimitRLIMIT_COREr%   r   lapack_litexerblar  r   _exit	EX_CONFIGr   dorgqrrG   waitWEXITSTATUS)	XERBLA_OKpidrB  r2   r   statuss         r)   test_xerbla_overriderO  T  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)rT  rS  rU  )textwrapdedentr  
subprocess
check_callr,  
executable)bad_libstemplaterU  codes       r)   test_sdot_bug_8577r^    s     "9-H 
  
	 
	H  < <&:"'.  0 0s~tT:;;; %9"'.  0 0s~tT:;;;;< <r+   c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestMultiDotc           
         t           j                            d          }t           j                            d          }t           j                            d          }t          t          |||g          |                    |                              |                     t          t          |||g          t          j        |t          j        ||                               d S Nr,   rr   rr   r,   r%   r  r   r   r   )rK   r  r  Cs       r)   (test_basic_function_with_three_argumentsz5TestMultiDot.test_basic_function_with_three_arguments  s     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 rb  re  )rK   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 )Nrc  rd  rr   rp   re  )rK   r  r  rf  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 )Nrr   rd  rc  r  r  r%   r  r   r   r   )rK   A1dr  rf  rl  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 )Nrc  rd  rr   )r,   ro  )rK   r  r  rf  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 )Nrr   rd  rc  rY   ro  )rK   rp  r  rf  rs  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 )Nrc  rd  r'   r%   r  r>  r   r   r   )rK   r  r  rf  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 )Nrc  rd  )r,   r,   rx  ry  )rK   r  r  r'   rz  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 )Nrc  rd  rk  )r,   rp   rx  ry  )rK   r  r  rf  rl  r'   rz  s          r)   -test_dynamic_programming_optimization_and_outz:TestMultiDot.test_dynamic_programming_optimization_and_out  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   rp   rp   rs   rs   rs   )r   r   rr   rs   rs   rs   )r   r   r   rs   rs   rs   )r   r   r   r   rt   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r8   rp   T)return_costsr   )r%   r  r   intr   r   r  )rK   arrays
m_expected
s_expectedr   r  s         r)   test_dynamic_programming_logicz+TestMultiDot.test_dynamic_programming_logic  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  rS   s    r)   test_too_few_input_arraysz&TestMultiDot.test_too_few_input_arrays%  s?    j)R000j)bi.>.>v.F.F-GHHHHHr+   N)rU   rV   rW   rg  ri  rm  rq  rt  rv  r{  r}  r  r  r  rY   r+   r)   r`  r`    s        K K K= = =M M M< < << < << < <: : :/ / /
9 
9 
9= = =<I I I I Ir+   r`  c                   8   e Zd Zej                            d ej        d          df ej        d          dfg          d             Zej                            ddd	g          d
             Z	ej                            dddg          d             Z
d ZdS )TestTensorinvzarr, indrt   r,   rn   rr   rr   rs   rs   rr   rp   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)rK   r  r  s      r)   test_non_square_handlingz&TestTensorinv.test_non_square_handling,  s    
 ;'' 	+ 	+Sc****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   9= =z
shape, ind)rt   r,   rn   rs   rr   )   rn   rs   rp   c                     t          j        d          }||_        t          j        ||          }|j        |d          |j        d |         z   }|j        }t          ||           d S )Nr  r2   r  )r%   ry  r   r   r  r   )rK   r   r  r2   ainvr*  actuals          r)   test_tensorinv_shapez"TestTensorinv.test_tensorinv_shape4  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%   ry  r   r   r  r   r  )rK   r  r2   s      r)   test_tensorinv_ind_limitz&TestTensorinv.test_tensorinv_ind_limitA  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  rp   r  )	r%   ry  r   r   r  r  r   	tensordottensorsolve)rK   r2   r  r3   s       r)   test_tensorinv_resultz#TestTensorinv.test_tensorinv_resultJ  sn    F2JJq)))GBKKT1a00")2G2G12M2MNNNNNr+   N)rU   rV   rW   r   r   r1  r%   r  r  r  r  r  rY   r+   r)   r  r  *  s        [Z			"			Q*
  + +	 + [\,
  
' ' 
' [U	2%
  + + +O O O O Or+   r  c                       e Zd Zej                            d ej        d          df ej        d          dfg          d             Zej                            dg d          d	             Z	dS )
TestTensorsolveza, axesr  Nr  )r   rr   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 Nrr   r  )r   r   r%   r  r   r   r  )rK   r2   r  r3   s       r)   r  z(TestTensorsolve.test_non_square_handlingU  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   ))rr   rs   r,   )rs   rt   rt   rs   )r   rs   rs   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  )rK   r   r2   r3   r   s        r)   test_tensorsolve_resultz'TestTensorsolve.test_tensorsolve_result^  sq     IOU#GAGBQBK  I!!!Q''QAG===qAAAAAr+   )
rU   rV   rW   r   r   r1  r%   r  r  r  rY   r+   r)   r  r  S  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 )Nrp   r   rr   r   float16r8   zunsupported in linalg)r%   r   r   r&  r   r  )r  s    r)   test_unsupported_commontyper  h  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        rp   r8   )r   r   )r%   r>  r  r  r   r   )r  r2   r3   r  s       r)   test_blas64_dotr  s  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       rp   r8   r   r   infor  r  r  l        )
r%   r@  r   rE  dgeqrfr>  r   r  itemr   )
r0   lapack_routiner  r  ldar2   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+   )r,   r-   )__doc__r<  r,  r   r   rV  rX  r   numpyr%   r   r   r   r   r   r   r	   r
   
numpy.corer   r   r   r   r   r   numpy.linalgr   r   r   r   r   numpy.linalg.linalgr   numpy.testingr   r   r   r   r   r   r   r   r   r    numpy.linalg.lapack_liteImportErrorr*   r1   r9   r;   r=   r[   rE   r_   r  r  r   r   r  r   r   r   r   r   r   r   r   r   r  r  r  r  r  r3  r8  rF  rN  rV  r]  rh  rq  rv  r}  r  r  r  r  r  r  r  r  r  r  r  r   r1  r  r3  r9  rP  rX  r`  ri  r  r  r  r  r  r  r  r  r  r  r  r  r  r5  r1  r9  rO  r   r^  r`  r  r  r  r@  r  r  r  rY   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## /! 
 
 @  8 	 	 	"	" "-' -' -'`   				 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 + + +73 73 73 73 73
 73 73 73t/ / / / /#%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 , , ,$ $ $ $ $h $ $ $ , , , , ,)+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<1+ 1+ 1+ 1+ 1+
 1+ 1+ 1+h 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H
( 
( 
(^) ^) ^) ^) ^) ^) ^) ^)B+- +- +- +- +- +- +- +-\5 5 5* G$BCC; ; DC;.7 .7 .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# # #s   <B B	B	