o
    Ô­j1 ã                   @   s’
  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+ zddl,ZW n	 e-y‰   Y nw d
d„ Z.e&Z/dôdd„Z&dd„ Z0dd„ Z1dd„ Z2h d£Z3G dd„ dƒZ4dd„ Z5e	j6 7d¡ g Z8e8e5de4de
ddgd d!gged"�e
ddged"�ƒe4d#e
ddgd d!gged"�e
ddged"�ƒe4d$e
ddgd d!gged"�e
g d%¢g d&¢ged"�ƒe4d'e
d(d)gd*d+gged"�e
d,d(ged"�ƒe4d-e
d(d)gd*d+gged"�e
d,d(ged"�ƒe4d.e
d(d)gd*d+gged"�e
g d/¢g d0¢ged"�ƒe4d1e	j9d2ed"�e	j9d3ed"�d4hd5�e4d6e	j6 :d7d7¡e	j6 :d7¡ƒe4d8e	j6 :d9d9¡e	j6 :d9¡ƒe4d:d9d;gd<d=ggd;d9gƒg
ƒ7 Z8e8e5d>e4d?e
g d@¢g d&¢ged"�e
ddged"�ƒe4dAe
ddgd d!gdBdCgged"�e
g dD¢ed"�ƒe4dEe
g d@¢g d&¢ged"�e
ddged"�ƒe4dFe
ddgd d!gdBdCgged"�e
g dD¢ed"�ƒe4dGe
g dH¢g dI¢ged"�e
d,d(ged"�ƒe4dJe
dKdLgdMdNgdOdPgged"�e
g dQ¢ed"�ƒe4dRe
g dH¢g dI¢ged"�e
d,d(ged"�ƒe4dSe
dKdLgdMdNgdOdPgged"�e
g dQ¢ed"�ƒe4dTe
g dH¢g dI¢ged"�e
d,d(gdUdVgged"�ƒe4dWe
dKdLgdMdNgdOdPgged"�e
d,d(gdUdVgdUdVgged"�ƒe4dXe	j6 :d7dY¡e	j6 :d7¡ƒe4dZe	j6 :d9d[¡e	j6 :d9¡ƒe4d\e	j6 :d[d9¡e	j6 :d[¡ƒe4d]e	j6 :dd=¡e	j6 :d¡d4hd5�e4d^e	j6 :d=d¡e	j6 :d=¡d4hd5�gƒ7 Z8e8e5d_e4d`e
ddgddgged"�dƒe4dae
ddgddgged"�dƒe4dbe
dd)gdcd9gged"�dƒe4dde
dd)gdcd9gged"�dƒe4dee	j9d2ed"�dd4hd5�e4dfd9d;gd;d9ggdƒe4dge
ddgddggƒdƒe4dhe	j6 :d9d9¡dƒgƒ7 Z8didj„ Z;e8e;ƒ 7 Z8dkdl„ Z<dmdn„ Z=e8e=ƒ 7 Z8G dodp„ dpƒZ>G dqdr„ dre>ƒZ?G dsdt„ dte>ƒZ@G dudv„ dve>ƒZAG dwdx„ dxe>ƒZBG dydz„ dze>ƒZCG d{d|„ d|e>ƒZDd}d~„ ZEdd€„ ZFG d�d‚„ d‚e?eBƒZGG dƒd„„ d„eGƒZHG d…d†„ d†e?eBƒZIG d‡dˆ„ dˆeIƒZJG d‰dŠ„ dŠe?eBƒZKG d‹dŒ„ dŒeKƒZLG d�dŽ„ dŽe?eBƒZMG d�d�„ d�eMƒZNG d‘d’„ d’ƒZOG d“d”„ d”e?eBƒZPG d•d–„ d–ePeOƒZQG d—d˜„ d˜eAeDƒZRG d™dš„ dšeReOƒZSG d›dœ„ dœe?eBƒZTG d�dž„ džeTƒZUG dŸd „ d e?e@eBeCƒZVG d¡d¢„ d¢eVƒZWG d£d¤„ d¤eAeDƒZXG d¥d¦„ d¦eXƒZYG d§d¨„ d¨e?eBƒZZG d©dª„ dªeZƒZ[G d«d¬„ d¬e?e@ƒZ\G d­d®„ d®e\ƒZ]ej^ _d¯d°d±„ d²D ƒ¡G d³d´„ d´ƒƒZ`G dµd¶„ d¶eAeDƒZaG d·d¸„ d¸ƒZbG d¹dº„ dºeAeDƒZcG d»d¼„ d¼ƒZdG d½d¾„ d¾ƒZeG d¿dÀ„ dÀeeƒZfG dÁdÂ„ dÂeeƒZgG dÃdÄ„ dÄegefƒZhG dÅdÆ„ dÆƒZiG dÇdÈ„ dÈeeƒZjG dÉdÊ„ dÊeeƒZkG dËdÌ„ dÌeeƒZlG dÍdÎ„ dÎehejƒZmG dÏdÐ„ dÐehekƒZnG dÑdÒ„ dÒehelƒZoG dÓdÔ„ dÔƒZpdÕdÖ„ ZqG d×dØ„ dØƒZrG dÙdÚ„ dÚƒZsdÛdÜ„ Ztej^jue+dÝdÞ�dßdà„ ƒZvdádâ„ Zwej^jue+dãdÞ�ej^jxdädå„ ƒƒZyG dædç„ dçƒZzG dèdé„ déƒZ{G dêdë„ dëƒZ|dìdí„ Z}ej^j~dîdÞ�dïdð„ ƒZej^j€e* dñdÞ�dòdó„ ƒZ�d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                 C   s$   t | ƒt|tjƒrt |ƒu S tju S ©N)ÚtypeÚ
isinstanceÚnpÚndarray)ÚoutÚin_© r'   ú[/var/www/html/CropPilot/venv/lib/python3.10/site-packages/numpy/linalg/tests/test_linalg.pyÚconsistent_subclass!   s   ÿr)   é   é   c                 K   s8   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,   r'   r'   r(   r   +   s   r   c                 C   s   t t tttt tti|  S r    )r   r   r   r   ©r-   r'   r'   r(   Úget_real_dtype3   ó
   ÿÿr5   c                 C   s   t ttttttti|  S r    )r   r   r   r   r4   r'   r'   r(   Úget_complex_dtype8   r6   r7   c                 C   s   | t tfv rdS dS )Ngñhãˆµøä>g•dyáý¥=)r   r   r4   r'   r'   r(   Úget_rtol=   s   r8   >   ÚsquareÚstridedÚ	hermitianÚ	nonsquareÚgeneralizedúsize-0c                   @   s*   e Zd Zeƒ fdd„Zdd„ Zdd„ ZdS )Ú
LinalgCasec                 C   s.   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Únamer/   r0   Ú	frozensetÚtags)ÚselfrA   r/   r0   rC   r'   r'   r(   Ú__init__M   s
   zLinalgCase.__init__c                 C   s   || j | j| jd� dS )zN
        Run the function `do` on this test case, expanding arguments
        ©rC   N)r/   r0   rC   )rD   Údor'   r'   r(   ÚcheckX   s   zLinalgCase.checkc                 C   s   d| j › d�S )Nz<LinalgCase: ú>)rA   ©rD   r'   r'   r(   Ú__repr__^   s   zLinalgCase.__repr__N)Ú__name__Ú
__module__Ú__qualname__ÚsetrE   rH   rK   r'   r'   r'   r(   r?   L   s    r?   c                 C   s,   | t v sJ dƒ‚|D ]	}|j| hB |_q
|S )z^
    Add the given tag (a string) to each of the cases (a list of LinalgCase
    objects)
    zInvalid tag)Úall_tagsrC   )ÚtagÚcasesÚcaser'   r'   r(   Ú	apply_tagb   s   rT   éÒ  r9   r   ç      ð?ç       @ç      @ç      @r4   r   Údouble_2)rW   rV   rY   )rX   rY   ç      @r   ù      ð?       @y       @      @y      @      @y      @      @ù       @      ð?r   Ú	cdouble_2)r]   r\   y      ð?      @)y      ð?       Ày      ð?      Ày      ð?      ÀÚ0x0©r   r   ©r   r>   rF   Ú8x8é   Ú1x1é   Únonarrayé   é   é   r<   Úsingle_nsq_1)rV   rW   rX   Úsingle_nsq_2g      @r[   )rW   rV   rX   Údouble_nsq_1Údouble_nsq_2Úcsingle_nsq_1)ù      ð?      ð?ù       @       @ù      @      À)y      @      Ày      @      "@y      @       @Úcsingle_nsq_2ro   rp   rq   y      @      "Ày      @      Ày      @       @)r]   r\   rq   Ú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                  C   s  g } t D ]„}t|jtjƒsqt |jd|j d|j g¡}|jd u r%d }nt |jd|j d|j g¡}t|jd |||j	dhB d�}|  
|¡ t |jgd d ¡ d|jj ¡}|jd u rbd }nt |jgd d ¡ d|jj ¡}t|jd	 |||j	dhB d�}|  
|¡ q| S )
Nrg   rh   é   r*   Ú_tile3r=   rF   ©rh   rg   Ú_tile213)ÚCASESr"   r/   r#   r$   r   r0   r?   rA   rC   ÚappendÚreshapeÚshape)Ú	new_casesrS   r/   r0   Únew_caser'   r'   r(   Ú_make_generalized_casesò   s*   

ÿ
$
$
ÿr�   c                 c   sà  � t | tjƒs| dfV  dS dg| j }d|d< | jdkr!d|d< | jdkr*d	|d
< tjt|ƒŽ D ]¼}dd„ t| j|ƒD ƒ}tdd„ |D ƒƒ}tj	|| j
d�}| tj¡ d¡ || }| |d< | | j¡}tt || k¡ƒ |dd dd„ |D ƒ¡ fV  | jdkr¡| jd dkr¡t| jƒ}d|d< tjjj| |d�}|dfV  | jdkrÄ| jd dkrÄt| jƒ}d|d< tjjj| |d�}|dfV  | jdkrí| jdd… dkrít| jƒ}d|d< d|d< tjjj| |d�}|dfV  q1dS )z<
    Generate cartesian product of strides for all axes
    ÚnopN©re   )re   rh   éüÿÿÿéÿÿÿÿre   éþÿÿÿrg   )re   r“   éýÿÿÿc                 S   s   g | ]
\}}t || ƒ‘qS r'   )Úabs)Ú.0r/   r0   r'   r'   r(   Ú
<listcomp>%  s    z%_stride_comb_iter.<locals>.<listcomp>c                 S   s   g | ]}t d d |ƒ‘qS r    )Úslice)r˜   Úrepeatr'   r'   r(   r™   &  s    r4   l   ï>[= .Ústride_Ú_c                 S   s   g | ]}d | ‘qS )z%+dr'   )r˜   Újr'   r'   r(   r™   /  s    r   )ÚstridesÚstride_xxx_0Ústride_xxx_0_x©re   re   Ústride_xxx_0_0)r"   r#   r$   ÚndimÚ	itertoolsÚproductÚtupleÚzipr�   Úemptyr-   ÚviewÚuint32ÚfillÚ	__class__r   ÚallÚjoinÚlistrŸ   ÚlibÚstride_tricksÚ
as_strided)ÚxÚ
stride_setÚrepeatsÚ	new_shapeÚslicesÚxiÚsr'   r'   r(   Ú_stride_comb_iter  sL   €








€ãr»   c               	   C   sn   g } t D ]0}t|jƒD ](\}}t|jƒD ]\}}t|jd | d | |||jdhB d�}|  |¡ qqq| S )Nr�   r:   rF   )rŠ   r»   r/   r0   r?   rA   rC   r‹   )rŽ   rS   r/   Úa_labelr0   Úb_labelr�   r'   r'   r(   Ú_make_strided_casesD  s   
ÿýÿr¾   c                   @   s"   e Zd ZeZeƒ eƒ fdd„ZdS )ÚLinalgTestCasec                 C   sv   | j D ]5}|j|@ |krq|j|@ rqz| | j¡ W q ty8 } zd|›d�}|t ¡ 7 }t|ƒ|‚d}~w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_CASESrC   rH   rG   Ú	ExceptionÚ	tracebackÚ
format_excÚAssertionError)rD   ÚrequireÚexcluderS   ÚeÚmsgr'   r'   r(   Úcheck_casesX  s   


€ý÷zLinalgTestCase.check_casesN)rL   rM   rN   rŠ   rÀ   rO   rÉ   r'   r'   r'   r(   r¿   U  s    r¿   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚLinalgSquareTestCasec                 C   ó   | j dhddhd� d S )Nr9   r=   r>   ©rÅ   rÆ   ©rÉ   rJ   r'   r'   r(   Útest_sq_casesn  ó   
ÿz"LinalgSquareTestCase.test_sq_casesc                 C   ó   | j ddhdhd� d S )Nr9   r>   r=   rÍ   rÎ   rJ   r'   r'   r(   Útest_empty_sq_casesr  ó   

ÿz(LinalgSquareTestCase.test_empty_sq_casesN)rL   rM   rN   rÏ   rÒ   r'   r'   r'   r(   rË   l  ó    rË   c                   @   rÊ   )ÚLinalgNonsquareTestCasec                 C   rÌ   )Nr<   r=   r>   rÍ   rÎ   rJ   r'   r'   r(   Útest_nonsq_casesy  rÐ   z(LinalgNonsquareTestCase.test_nonsq_casesc                 C   rÑ   )Nr<   r>   r=   rÍ   rÎ   rJ   r'   r'   r(   Útest_empty_nonsq_cases}  rÓ   z.LinalgNonsquareTestCase.test_empty_nonsq_casesN)rL   rM   rN   rÖ   r×   r'   r'   r'   r(   rÕ   w  rÔ   rÕ   c                   @   rÊ   )ÚHermitianTestCasec                 C   rÌ   )Nr;   r=   r>   rÍ   rÎ   rJ   r'   r'   r(   Útest_herm_cases„  rÐ   z!HermitianTestCase.test_herm_casesc                 C   rÑ   )Nr;   r>   r=   rÍ   rÎ   rJ   r'   r'   r(   Útest_empty_herm_casesˆ  rÓ   z'HermitianTestCase.test_empty_herm_casesN)rL   rM   rN   rÙ   rÚ   r'   r'   r'   r(   rØ   ‚  rÔ   rØ   c                   @   ó,   e Zd Zejjdd„ ƒZejjdd„ ƒZdS )ÚLinalgGeneralizedSquareTestCasec                 C   rÑ   )Nr=   r9   r>   rÍ   rÎ   rJ   r'   r'   r(   Útest_generalized_sq_cases�  ó   

ÿz9LinalgGeneralizedSquareTestCase.test_generalized_sq_casesc                 C   ó   | j h d£d� d S )N>   r9   r=   r>   ©rÅ   rÎ   rJ   r'   r'   r(   Útest_generalized_empty_sq_cases”  ó   z?LinalgGeneralizedSquareTestCase.test_generalized_empty_sq_casesN)rL   rM   rN   ÚpytestÚmarkÚslowrÝ   rá   r'   r'   r'   r(   rÜ   �  ó
    
rÜ   c                   @   rÛ   )Ú"LinalgGeneralizedNonsquareTestCasec                 C   rÑ   )Nr=   r<   r>   rÍ   rÎ   rJ   r'   r'   r(   Útest_generalized_nonsq_cases›  rÞ   z?LinalgGeneralizedNonsquareTestCase.test_generalized_nonsq_casesc                 C   rß   )N>   r<   r=   r>   rà   rÎ   rJ   r'   r'   r(   Ú"test_generalized_empty_nonsq_cases   râ   zELinalgGeneralizedNonsquareTestCase.test_generalized_empty_nonsq_casesN)rL   rM   rN   rã   rä   rå   rè   ré   r'   r'   r'   r(   rç   ™  ræ   rç   c                   @   rÛ   )ÚHermitianGeneralizedTestCasec                 C   rÑ   )Nr=   r;   r>   rÍ   rÎ   rJ   r'   r'   r(   Útest_generalized_herm_cases§  rÞ   z8HermitianGeneralizedTestCase.test_generalized_herm_casesc                 C   s   | j h d£dhd� d S )N>   r;   r=   r>   ÚnonerÍ   rÎ   rJ   r'   r'   r(   Ú!test_generalized_empty_herm_cases¬  rÞ   z>HermitianGeneralizedTestCase.test_generalized_empty_herm_casesN)rL   rM   rN   rã   rä   rå   rë   rí   r'   r'   r'   r(   rê   ¥  ræ   rê   c                 C   s¾   t | ƒ} | jdkrZ| j|jkr| jd d… |jdd …  }n| j|jd kr.| jd d… }ntdƒ‚tj|t | |¡d�}tjt	t
| jd d… ƒŽ D ]}t| | || ƒ||< qJ|S t| |ƒS )Nrh   r”   re   zNot implemented...r4   r•   )r   r¤   r�   Ú
ValueErrorr#   r©   Úcommon_typer¥   r¦   ÚmapÚranger   )r/   r0   r·   ÚrÚcr'   r'   r(   Údot_generalized²  s   

rô   c                 C   sH   t | ƒ} | jdkrtj| j| jd�}t| jd ƒ|d< |S t| jd ƒS )Nrh   r4   r•   .r   )r   r¤   r#   r©   r�   r-   r   )r/   rò   r'   r'   r(   Úidentity_like_generalizedÅ  s   
rõ   c                   @   ó   e Zd Zdd„ ZdS )Ú
SolveCasesc                 C   s.   t  ||¡}t|t||ƒƒ tt||ƒƒ d S r    )r   Úsolver   rô   r   r)   )rD   r/   r0   rC   r´   r'   r'   r(   rG   Ñ  s   zSolveCases.doN©rL   rM   rN   rG   r'   r'   r'   r(   r÷   Ï  ó    r÷   c                   @   s:   e Zd Zej deeee	g¡dd„ ƒZ
dd„ Zdd„ ZdS )	Ú	TestSolver-   c                 C   s2   t jddgddgg|d�}tt ||¡j|ƒ d S ©Nre   ç      à?r4   )r#   r   r   r   rø   r-   ©rD   r-   r´   r'   r'   r(   Ú
test_typesØ  s   zTestSolve.test_typesc              	   C   s.  G dd„ dt jƒ}t  d¡ ddd¡}t  d¡ ddd¡ |¡}t ||¡d d …dd…d d …f }t |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  d¡ ddd¡}t
ttj||ƒ t
ttj|dd… |dd… ƒ t  d¡ dd¡ |¡}t ||¡d d …dd…f }t |d d …dd…dd…f |d d …dd…f ¡}t||ƒ tt	||ƒƒ t  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 )z,TestSolve.test_0_size.<locals>.ArraySubclassN©rL   rM   rN   r'   r'   r'   r(   ÚArraySubclassÞ  ó    r  rc   rg   r*   re   rh   r   )r#   r$   ÚarangerŒ   rª   r   rø   r   r   r"   r   r   rî   ©rD   r  r/   r0   ÚexpectedÚresultr'   r'   r(   Útest_0_sizeÝ  s*   "8
(& 2
 *zTestSolve.test_0_sizec                 C   s  G dd„ dt jƒ}t  d¡ ddd¡}t  d¡ ddd¡ |¡}t ||¡d d …d d …dd…f }t ||d d …d d …dd…f ¡}t||ƒ tt	||ƒƒ t ||¡d d …dd…dd…f }t |d d …dd…dd…f |d d …dd…dd…f ¡}t||ƒ tt	||ƒƒ d S )	Nc                   @   r   )z.TestSolve.test_0_size_k.<locals>.ArraySubclassNr  r'   r'   r'   r(   r     r  r  ri   re   rg   r*   rh   r   )
r#   r$   r  rŒ   rª   r   rø   r   r   r"   r  r'   r'   r(   Útest_0_size_kþ  s   ""
"8
zTestSolve.test_0_size_kN)rL   rM   rN   rã   rä   Úparametrizer   r   r   r   rÿ   r  r	  r'   r'   r'   r(   rû   ×  s
    
!rû   c                   @   rö   )ÚInvCasesc                 C   s0   t  |¡}tt||ƒt|ƒƒ tt||ƒƒ d S r    )r   Úinvr   rô   rõ   r   r)   )rD   r/   r0   rC   Úa_invr'   r'   r(   rG     s
   

ÿzInvCases.doNrù   r'   r'   r'   r(   r    rú   r  c                   @   ó2   e Zd Zej deeee	g¡dd„ ƒZ
dd„ ZdS )ÚTestInvr-   c                 C   s0   t jddgddgg|d�}tt |¡j|ƒ d S rü   )r#   r   r   r   r  r-   rþ   r'   r'   r(   rÿ     s   zTestInv.test_typesc                 C   s²   G dd„ dt jƒ}t jdt jd� |¡}t |¡}t|jj	t j
u ƒ t|j|jƒ tt||ƒƒ t jdt jd� |¡}t |¡}t|jj	t ju ƒ t|j|jƒ tt||ƒƒ d S )Nc                   @   r   )z*TestInv.test_0_size.<locals>.ArraySubclassNr  r'   r'   r'   r(   r  "  r  r  ©r   re   re   r4   r`   )r#   r$   ÚzerosÚint_rª   r   r  r   r-   r!   Úfloat64r   r�   r"   Ú	complex64©rD   r  r/   Úresr'   r'   r(   r     s   

zTestInv.test_0_sizeN©rL   rM   rN   rã   rä   r
  r   r   r   r   rÿ   r  r'   r'   r'   r(   r    s    
r  c                   @   rö   )ÚEigvalsCasesc                 C   s&   t  |¡}t  |¡\}}t||ƒ d S r    )r   ÚeigvalsÚeigr   )rD   r/   r0   rC   ÚevÚevaluesÚevectorsr'   r'   r(   rG   3  s   
zEigvalsCases.doNrù   r'   r'   r'   r(   r  1  rú   r  c                   @   r  )ÚTestEigvalsr-   c                 C   s`   t jddgddgg|d�}tt |¡j|ƒ t jddgddgg|d�}tt |¡jt|ƒƒ d S ©Nre   rý   r4   r”   )r#   r   r   r   r  r-   r7   rþ   r'   r'   r(   rÿ   :  s   zTestEigvals.test_typesc                 C   s²   G dd„ dt jƒ}t jdt jd� |¡}t |¡}t|jj	t j
u ƒ td|jƒ tt|t jƒƒ t jdt jd� |¡}t |¡}t|jj	t ju ƒ td|jƒ tt|t jƒƒ d S )Nc                   @   r   )z.TestEigvals.test_0_size.<locals>.ArraySubclassNr  r'   r'   r'   r(   r  C  r  r  r  r4   ©r   re   r`   ra   )r#   r$   r  r  rª   r   r  r   r-   r!   r  r   r�   r"   r  r  r'   r'   r(   r  A  ó   

zTestEigvals.test_0_sizeNr  r'   r'   r'   r(   r  9  s    
r  c                   @   rö   )ÚEigCasesc                 C   sb   t  |¡}|j|j}}tt||ƒt |¡t |¡dd d d …f  t|j	ƒd� t
t||ƒƒ d S )N.©Úrtol)r   r  ÚeigenvaluesÚeigenvectorsr   rô   r#   r   r8   r-   r   r)   )rD   r/   r0   rC   r  r%  r&  r'   r'   r(   rG   V  s   

 þzEigCases.doNrù   r'   r'   r'   r(   r"  T  rú   r"  c                   @   r  )ÚTestEigr-   c                 C   s�   t jddgddgg|d�}t j |¡\}}t|j|ƒ t|j|ƒ t jddgddgg|d�}t j |¡\}}t|jt|ƒƒ t|jt|ƒƒ d S r  )r#   r   r   r  r   r-   r7   ©rD   r-   r´   ÚwÚvr'   r'   r(   rÿ   `  s   zTestEig.test_typesc                 C   sú   G dd„ dt jƒ}t jdt jd� |¡}t |¡\}}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d� |¡}t |¡\}}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                   @   r   )z*TestEig.test_0_size.<locals>.ArraySubclassNr  r'   r'   r'   r(   r  n  r  r  r  r4   r   r`   ra   )r#   r$   r  r  rª   r   r  r   r-   r!   r  r   r�   r"   r  ©rD   r  r/   r  Úres_vr'   r'   r(   r  l  ó   zTestEig.test_0_sizeNr  r'   r'   r'   r(   r'  _  s    
r'  c                   @   s.   e Zd ZdZej deee	e
g¡dd„ ƒZdS )ÚSVDBaseTestsFr-   c                 C   sˆ   t jddgddgg|d�}t |¡}|j|j|j}}}t|j|ƒ t|jt	|ƒƒ t|j|ƒ tj|d| j
d�}t|jt	|ƒƒ d S )Nre   rý   r4   F©Ú
compute_uvr;   )r#   r   r   ÚsvdÚUÚSÚVhr   r-   r5   r;   )rD   r-   r´   r  r2  r3  r4  rº   r'   r'   r(   rÿ   †  s   
zSVDBaseTests.test_typesN)rL   rM   rN   r;   rã   rä   r
  r   r   r   r   rÿ   r'   r'   r'   r(   r.  ƒ  s    r.  c                   @   rö   )ÚSVDCasesc              	   C   sp   t  |d¡\}}}t|tt |¡t |¡dd d d …f  t |¡ƒt|jƒd� tt	||ƒƒ tt	||ƒƒ d S )NF.r#  )
r   r1  r   rô   r#   r   r8   r-   r   r)   )rD   r/   r0   rC   Úurº   Úvtr'   r'   r(   rG   ”  s   &ÿþzSVDCases.doNrù   r'   r'   r'   r(   r5  ’  rú   r5  c                   @   rö   )ÚTestSVDc                 C   s˜   t  d¡}tj|d| jd�\}}}t|jdƒ t|jdƒ t|t  d¡ƒ t  d¡}tj|d| jd�\}}}t|jdƒ t|jdƒ t|t  d¡ƒ dS )	z6 Empty input should put an identity matrix in u or vh )ri   r   Tr/  ©ri   ri   r`   ri   )r   ri   N)r#   r©   r   r1  r;   r   r�   Úeye)rD   r´   r6  rº   Úvhr'   r'   r(   Útest_empty_identityž  s   

zTestSVD.test_empty_identityN)rL   rM   rN   r<  r'   r'   r'   r(   r8  �  s    r8  c                   @   rö   )ÚSVDHermitianCasesc              	   C   sò   t j|ddd�\}}}t|tt |¡t |¡dd d d …f  t |¡ƒt|jƒd� dd„ }tt 	|||ƒ¡t 
t |jd ¡|j¡ƒ tt 	|||ƒ¡t 
t |jd ¡|j¡ƒ tt |¡dd d d…f |ƒ tt||ƒƒ tt||ƒƒ d S )	NFT©r;   .r#  c                 S   s<   t t| jƒƒ}|d |d |d< |d< t tj| |d�¡S )Nr•   r”   ©Úaxes)r°   rñ   r¤   r#   ÚconjÚ	transpose)Úmatr@  r'   r'   r(   r;   ´  s   z'SVDHermitianCases.do.<locals>.hermitianr”   )r   r1  r   rô   r#   r   r8   r-   r   r	   Úbroadcast_tor:  r�   r   Úsortr   r)   )rD   r/   r0   rC   r6  rº   r7  r;   r'   r'   r(   rG   ¯  s   &ÿþ,,zSVDHermitianCases.doNrù   r'   r'   r'   r(   r=  ­  rú   r=  c                   @   s   e Zd ZdZdS )ÚTestSVDHermitianTN)rL   rM   rN   r;   r'   r'   r'   r(   rF  À  s    rF  c                   @   rö   )Ú	CondCasesc                 C   sê  t |ƒ}d|v rtttj|ƒ d S tj|dd�}tt |¡|d |d  ddd� tt |d	¡|d |d  ddd� tt |d
¡|d |d  ddd� tj |¡}tt |d¡t	|ƒ 
d
¡ d¡t	|ƒ 
d
¡ d¡ ddd� tt |d¡t	|ƒ 
d
¡ d¡t	|ƒ 
d
¡ d¡ ddd� tt |tj¡t	|ƒ 
d¡ d¡t	|ƒ 
d¡ d¡ ddd� tt |tj ¡t	|ƒ 
d¡ d¡t	|ƒ 
d¡ d¡ ddd� tt |d¡t t	|ƒd	  
d¡ 
d¡t	|ƒd	  
d¡ 
d¡ ¡ddd� d S )Nr>   F)r0  ).r   ).r”   rz   rx   ©r1   r2   rg   r•   re   r”   Úfro)r   r   r   r   Úcondr1  r   r#   r  r—   ÚsumÚmaxÚminr   Úsqrt)rD   r/   r0   rC   ró   rº   Úcinvr'   r'   r(   rG   Ç  sZ   þþþ
&ý
&ý&ý&ý
ÿ
üzCondCases.doNrù   r'   r'   r'   r(   rG  Ä  s    rG  c                   @   s>   e Zd Zdd„ Zdd„ Zejjdddd�d	d
„ ƒZdd„ Z	dS )ÚTestCondc                 C   s€   t g d¢g d¢g d¢gƒ}tt |t¡dƒ tt |t ¡dƒ tt |d¡dƒ tt |d¡dƒ tt |d	¡t d
¡ƒ d S )N)rV   r   re   )r   g       Àr   )r   r   rX   ri   gUUUUUUå?re   r”   rý   rI  gUUUUU6@)r   r   r   rJ  r   r#   rN  ©rD   ÚAr'   r'   r(   Útest_basic_nonsvdó  s   zTestCond.test_basic_nonsvdc                 C   st   t  d¡t  d¡g}g d¢}ddg}t ||¡D ]\}}tt ||¡dkƒ qt ||¡D ]
\}}t ||¡ q-d S )N©rg   rg   ©Nre   rg   rI  r”   r•   ç  4&õkC)r#   r  Úonesr¥   r¦   r   r   rJ  )rD   ÚAsÚp_posÚp_negrR  Úpr'   r'   r(   Útest_singularü  s   ÿzTestCond.test_singularTFz/Platform/LAPACK-dependent failure, see gh-18914)ÚrunÚreasonc                 C   sê   g d¢}g d¢}t  d¡}t j|d< |D ]}t ||¡}tt|t jƒƒ tt  |¡ƒ qt  d¡}t j|d< |D ]:}t ||¡}tt  |d ¡ƒ ||v r^t|d d	kƒ t|d
 d	kƒ q8tt  |d ¡ ƒ tt  |d
 ¡ ƒ q8d S )N)Nre   r”   rg   r•   rI  rU  rT  r   )rh   rg   rg   ©re   r   re   re   r   rV  rg   )	r#   rW  Únanr   rJ  r   r"   Úfloat_Úisnan)rD   ÚpsrY  rR  r[  ró   r'   r'   r(   Útest_nan
  s&   



øzTestCond.test_nanc                 C   sŒ   t j d¡ t j dddd¡}d|d< d|d< dD ]*}t ||¡}t|d t jƒ t|d t jƒ tt  	|d ¡ƒ tt  	|d ¡ƒ qd S )	NrU   rg   r   r`   r¢   )Nre   rg   rI  r”   r•   r   ©re   r   )
r#   ÚrandomÚseedÚrandr   rJ  r   r   r   Úisfinite)rD   rR  r[  ró   r'   r'   r(   Útest_stacked_singular%  s   ûzTestCond.test_stacked_singularN)
rL   rM   rN   rS  r\  rã   rä   Úxfailrd  rj  r'   r'   r'   r(   rP  ò  s    	
ÿ
rP  c                   @   rö   )Ú	PinvCasesc                 C   s<   t  |¡}t}t||||ƒ|ƒ|ddd� tt||ƒƒ d S )Nrz   rx   rH  ©r   Úpinvrô   r   r   r)   ©rD   r/   r0   rC   Úa_ginvr   r'   r'   r(   rG   :  s   
zPinvCases.doNrù   r'   r'   r'   r(   rl  5  s    rl  c                   @   r   )ÚTestPinvNr  r'   r'   r'   r(   rq  B  r  rq  c                   @   rö   )ÚPinvHermitianCasesc                 C   s@   t j|dd�}t}t||||ƒ|ƒ|ddd� tt||ƒƒ d S )NTr>  rz   rx   rH  rm  ro  r'   r'   r(   rG   H  s   zPinvHermitianCases.doNrù   r'   r'   r'   r(   rr  F  rú   rr  c                   @   r   )ÚTestPinvHermitianNr  r'   r'   r'   r(   rs  P  r  rs  c                   @   rö   )ÚDetCasesc                 C   sÖ   t  |¡}t  |¡}|j|j}}t|ƒjjtt	fv r#t|ƒ 
t	¡}nt|ƒ 
t¡}t  |¡}	t|tj|	dd�ƒ t|t |¡ tj|	dd�ƒ t |¡}t |¡}|dk}
tt ||
 ¡dƒ t||
  t ƒ d S )Nr”   ©Úaxisr   re   )r   ÚdetÚslogdetÚsignÚ	logabsdetr   r-   r!   r   r   Úastyper   r  r   r   Úreducer#   ÚexpÚ
atleast_1dr—   r   r   )rD   r/   r0   rC   Údr  rº   ÚldÚadr  Úmr'   r'   r(   rG   V  s   




zDetCases.doNrù   r'   r'   r'   r(   rt  T  rú   rt  c                   @   s:   e Zd Zdd„ Zej deee	e
g¡dd„ ƒZdd„ ZdS )	ÚTestDetc                 C   s   t t dgg¡dƒ t tt dgg¡ƒtƒ t t dgg¡dƒ t tt dgg¡ƒtƒ t t dgg¡dt fƒ t tt dgg¡d ƒtƒ t tt dgg¡d ƒtƒ t t dgg¡dt fƒ t tt dgg¡d ƒtƒ t tt dgg¡d ƒtƒ d S )Nç        y                r   re   )r   r   rw  r!   r   r   rx  r   rJ   r'   r'   r(   Ú	test_zeroj  s    zTestDet.test_zeror-   c                 C   s^   t jddgddgg|d�}tt j |¡j|ƒ t j |¡\}}t|jt|ƒƒ t|j|ƒ d S rü   )r#   r   r   r   rw  r-   rx  r5   )rD   r-   r´   Úphrº   r'   r'   r(   rÿ   w  s
   zTestDet.test_typesc                 C   sð   t jdt jd�}t |¡}t|dƒ t|jjt ju ƒ t 	|¡}t|dƒ t|d jjt ju ƒ t|d jjt j
u ƒ t jdt jd�}t |¡}t|dƒ t|jjt ju ƒ t 	|¡}t|dƒ t|d jjt ju ƒ t|d jjt ju ƒ d S )Nr`   r4   rV   re  r   re   )r#   r  r  r   rw  r   r   r-   r!   rx  Úfloat32r  )rD   r/   r  r'   r'   r(   r    s    







zTestDet.test_0_sizeN)rL   rM   rN   r…  rã   rä   r
  r   r   r   r   rÿ   r  r'   r'   r'   r(   rƒ  i  s
    
rƒ  c                   @   rö   )Ú
LstsqCasesc                 C   sL  t  |¡}|j\}}t |d¡\}}}	tj||dd�\}
}}}|dkr+t|
dk ¡ ƒ ||kr=t|t	||
ƒƒ t
||ƒ nt
||ƒ t|| |¡ƒ ||kr}||kr}t  tt  	||
¡| ƒ¡d jdd�}t  |¡}t  |¡jdkr|d|_t
|j|jƒ n
t  g ¡ t|
ƒ¡}t||ƒ tt  |jt j¡ƒ tt|
|ƒƒ tt||ƒƒ d S )	NFr”   ©Úrcondr   rg   ru  re   r’   )r#   r   r�   r   r1  Úlstsqr   r®   r   r   r   Ú__array_wrap__r—   rK  r¤   r   rª   r!   Ú
issubdtyper-   Úfloatingr)   )rD   r/   r0   rC   Úarrr‚  Únr6  rº   r7  r´   Ú	residualsÚrankÚsvÚexpect_residsr'   r'   r(   rG   •  s0   


 ÿ
€
zLstsqCases.doNrù   r'   r'   r'   r(   rˆ  “  rú   rˆ  c                   @   s:   e Zd Zdd„ Zej g d¢g d¢¡dd„ ƒZdd„ Zd	S )
Ú	TestLstsqc           	      C   sâ   t  g d¢g d¢g d¢g d¢g¡j}t  g d¢¡}tƒ �K}| td¡}t ||¡\}}}}t|dkƒ tj||dd	�\}}}}t|dkƒ tj||d d	�\}}}}t|d
kƒ tt	|ƒdkƒ W d   ƒ d S 1 sjw   Y  d S )N)r„  rV   r„  rV   rW   r„  )r„  rW   r„  r„  rV   r„  )rV   r„  rV   r„  r„  rY   )r„  r„  r„  rW   rX   r„  )re   r   r   r   r   r   z`rcond` parameter will changeri   r”   r‰  rh   re   )
r#   r   ÚTr   ÚrecordÚFutureWarningr   r‹  r   Úlen)	rD   r/   r0   Úsupr)  r´   r‘  r’  rº   r'   r'   r(   Útest_future_rcond²  s$   
ýý"÷zTestLstsq.test_future_rcond)r‚  r�  Ún_rhs))ri   rg   rg   )r   ri   re   )r   ri   rg   )ri   r   re   )ri   r   rg   )ri   rg   r   )r   r   r   c                 C   sÜ   t  || ¡ ||¡}t  ||f¡}tj||d d�\}}}}	|dkr*t|dk ¡ ƒ t|j	||fƒ t|j	||kr<|fndƒ ||krZ|dkrZ|t  
||¡ }
t||
|
 jdd�ƒ t|t||ƒƒ t|	j	t||ƒfƒ d S )Nr‰  r   ra   r•   ru  )r#   r  rŒ   rW  r   r‹  r   r®   r   r�   r   r   rK  rM  )rD   r‚  r�  rœ  r/   r0   r´   r‘  r’  rº   rò   r'   r'   r(   Útest_empty_a_bÄ  s   
zTestLstsq.test_empty_a_bc                 C   sv   t  g d¢¡}t  g d¢¡}t  |t  t|ƒ¡g¡j}ttdƒ� tj	||d d� W d   ƒ d S 1 s4w   Y  d S )N)r   re   rg   rh   )r”   gš™™™™™É?gÍÌÌÌÌÌì?gÍÌÌÌÌÌ @gffffff
@zIncompatible dimensionsr‰  )
r#   r   ÚvstackrW  r™  r–  r   r   r   r‹  )rD   r´   ÚyrR  r'   r'   r(   Útest_incompatible_dimsÜ  s   "ÿz TestLstsq.test_incompatible_dimsN)	rL   rM   rN   r›  rã   rä   r
  r�  r   r'   r'   r'   r(   r•  ±  s
    
	r•  Údtc                 C   s   g | ]}t  |¡‘qS r'   )r#   r-   )r˜   ró   r'   r'   r(   r™   å  s    r™   z?bBhHiIqQefdgFDGOc                   @   sÜ   e Zd Ze 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 egggd ¡Zee d¡e d	¡e d
¡gZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zejjedd�dd„ ƒZdS )ÚTestMatrixPowerri   )rh   r   re   rg   )rg   rh   r   re   )re   rg   rh   r   re   r   rg   rÇ   ÚgÚGc                 C   s˜   | j  |¡}tt|dd d d d ƒ| jƒ tt|dd d d d ƒ| j ƒ tt|dd d d d ƒ| jƒ tt|dd d d d ƒ| jƒ d S )Nrg   éd   i   é    r   re   rh   )Úrshft_1r{  r   r   Úrshft_0Úrshft_2Úrshft_3)rD   r¡  Úrshftr'   r'   r(   Útest_large_powerò  s   ÿÿÿÿz TestMatrixPower.test_large_powerc                 C   ó>   dd„ }| j D ]}|| |¡ƒ |tkr|| j |¡ƒ qd S )Nc                 S   s*   t | dƒ}t|t| ƒƒ t|j| jƒ d S )Nr   )r   r   rõ   r-   )ÚMÚmzr'   r'   r(   Útzþ  s   
z.TestMatrixPower.test_power_is_zero.<locals>.tz©Ú	rshft_allr{  ÚobjectÚstacked©rD   r¡  r°  rC  r'   r'   r(   Útest_power_is_zeroý  ó   
€ýz"TestMatrixPower.test_power_is_zeroc                 C   r­  )Nc                 S   s&   t | dƒ}t|| ƒ t|j| jƒ d S )Nre   )r   r   r-   )rC  r¯  r'   r'   r(   r°  	  s   

z-TestMatrixPower.test_power_is_one.<locals>.tzr±  rµ  r'   r'   r(   Útest_power_is_one  r·  z!TestMatrixPower.test_power_is_onec                 C   r­  )Nc                 S   s>   t | dƒ}| jtkrtnt}t||| | ƒƒ t|j| jƒ d S )Nrg   )r   r-   r³  r	   r   r   )rC  r¯  Úmmulr'   r'   r(   r°    s   
z-TestMatrixPower.test_power_is_two.<locals>.tzr±  rµ  r'   r'   r(   Útest_power_is_two  s   
€ýz!TestMatrixPower.test_power_is_twoc                 C   s0   dd„ }| j D ]}|| jvr|| |¡ƒ qd S )Nc                 S   s4   t | dƒ}| jtkrtnt}t||| ƒt| ƒƒ d S ©Nr”   )r   r-   r³  r	   r   r   rõ   )rC  Úinvmatr¹  r'   r'   r(   r°     s
   
ÿz3TestMatrixPower.test_power_is_minus_one.<locals>.tz)r²  Údtnoinvr{  rµ  r'   r'   r(   Útest_power_is_minus_one  s   

€þz'TestMatrixPower.test_power_is_minus_onec                 C   s.   | j  |¡}ttt|dƒ ttt|dgƒ d S )Ng      ø?re   )r¨  r{  r   Ú	TypeErrorr   ©rD   r¡  rC  r'   r'   r(   Útest_exceptions_bad_power*  s   z)TestMatrixPower.test_exceptions_bad_powerc                 C   sP   t ttt dg|¡dƒ t ttt dgdgg|¡dƒ t ttt d|¡dƒ d S )Nre   rg   )ri   rh   rg   )r   r   r   r#   r   rW  )rD   r¡  r'   r'   r(   Útest_exceptions_non_square/  s   z*TestMatrixPower.test_exceptions_non_squareúfp errors don't work in wasm©r^  c                 C   s,   || j v rd S | j |¡}ttt|dƒ d S r»  )r½  Únoninvr{  r   r   r   rÀ  r'   r'   r(   Útest_exceptions_not_invertible4  s   
z.TestMatrixPower.test_exceptions_not_invertibleN)rL   rM   rN   r#   r:  r¨  r§  r©  rª  r²  r   rÅ  Úblockr´  r³  r-   r½  r¬  r¶  r¸  rº  r¾  rÁ  rÂ  rã   rä   Úskipifr   rÆ  r'   r'   r'   r(   r¢  å  s$    
r¢  c                   @   rö   )ÚTestEigvalshCasesc                 C   s^   t  |d¡}t  |¡\}}|jdd� t||t|jƒd� t  |d¡}t||t|jƒd� d S )NÚLr”   ru  r#  r2  )r   Úeigvalshr  rE  r   r8   r-   )rD   r/   r0   rC   r  r  r  Úev2r'   r'   r(   rG   >  s   zTestEigvalshCases.doNrù   r'   r'   r'   r(   rÉ  <  rú   rÉ  c                   @   óB   e Zd Zej deeee	g¡dd„ ƒZ
dd„ Zdd„ Zdd	„ Zd
S )ÚTestEigvalshr-   c                 C   s:   t jddgddgg|d�}t j |¡}t|jt|ƒƒ d S rü   )r#   r   r   rË  r   r-   r5   )rD   r-   r´   r)  r'   r'   r(   rÿ   K  s   zTestEigvalsh.test_typesc                 C   óX   t jddgddggt jd�}ttt jj|dd� ttt jj|dƒ ttt jj|dƒ d S ©Nre   rý   r4   Úlrong©ÚUPLOÚlowerÚupper)r#   r   r‡  r   rî   r   rË  ©rD   r´   r'   r'   r(   Útest_invalidQ  ó   zTestEigvalsh.test_invalidc                 C   sì   t jddgddggt jd�}t jddgddggt jd�}t jddgt jd�}tt jƒ}t j |¡}t|||d� t jj|dd�}t|||d� t jj|dd�}t|||d� t jj|d	d�}t|||d� t jj|d
d�}t|||d� d S ©Nr   re   r4   r”   r#  rÊ  rÒ  Úlr2  r6  )r#   r   r   r8   r   rË  r   )rD   ÚKloÚKupÚtgtr$  r)  r'   r'   r(   Ú	test_UPLOW  s   
zTestEigvalsh.test_UPLOc                 C   s²   G dd„ dt jƒ}t jdt jd� |¡}t |¡}t|jj	t j
u ƒ td|jƒ tt|t jƒƒ t jdt jd� |¡}t |¡}t|jj	t ju ƒ td|jƒ tt|t jƒƒ d S )Nc                   @   r   )z/TestEigvalsh.test_0_size.<locals>.ArraySubclassNr  r'   r'   r'   r(   r  o  r  r  r  r4   r   r`   ra   )r#   r$   r  r  rª   r   rË  r   r-   r!   r  r   r�   r"   r  r‡  r  r'   r'   r(   r  m  r!  zTestEigvalsh.test_0_sizeN©rL   rM   rN   rã   rä   r
  r   r   r   r   rÿ   r×  rÞ  r  r'   r'   r'   r(   rÎ  J  s    
rÎ  c                   @   rö   )ÚTestEighCasesc                 C   sÐ   t  |¡}|j|j}}t  |¡\}}|jdd� t||ƒ tt||ƒt	 
|¡dd d d …f t	 
|¡ t|jƒd� t  |d¡\}	}
t|	|ƒ tt||
ƒt	 
|	¡dd d d …f t	 
|
¡ t|jƒt|ƒd� d S )Nr”   ru  .r#  r2  )r$  Úerr_msg)r   Úeighr%  r&  r  rE  r   r   rô   r#   r   r8   r-   Úrepr)rD   r/   r0   rC   r  r  Úevcr  r  rÌ  Úevc2r'   r'   r(   rG   ‚  s   


 þ

 
þzTestEighCases.doNrù   r'   r'   r'   r(   rà  €  rú   rà  c                   @   rÍ  )ÚTestEighr-   c                 C   sJ   t jddgddgg|d�}t j |¡\}}t|jt|ƒƒ t|j|ƒ d S rü   )r#   r   r   râ  r   r-   r5   r(  r'   r'   r(   rÿ   ˜  s   zTestEigh.test_typesc                 C   rÏ  rÐ  )r#   r   r‡  r   rî   r   râ  rÖ  r'   r'   r(   r×  Ÿ  rØ  zTestEigh.test_invalidc                 C   s   t jddgddggt jd�}t jddgddggt jd�}t jddgt jd�}tt jƒ}t j |¡\}}t|||d� t jj|dd�\}}t|||d� t jj|dd�\}}t|||d� t jj|d	d�\}}t|||d� t jj|d
d�\}}t|||d� d S rÙ  )r#   r   r   r8   r   râ  r   )rD   rÛ  rÜ  rÝ  r$  r)  r*  r'   r'   r(   rÞ  ¥  s   
zTestEigh.test_UPLOc                 C   sú   G dd„ dt jƒ}t jdt jd� |¡}t |¡\}}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d� |¡}t |¡\}}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                   @   r   )z+TestEigh.test_0_size.<locals>.ArraySubclassNr  r'   r'   r'   r(   r  ½  r  r  r  r4   r   r`   ra   )r#   r$   r  r  rª   r   râ  r   r-   r!   r  r   r�   r"   r  r‡  r+  r'   r'   r(   r  »  r-  zTestEigh.test_0_sizeNrß  r'   r'   r'   r(   ræ  —  s    
ræ  c                   @   s    e Zd ZdZdZedd„ ƒZdS )Ú_TestNormBaseNc                 C   s<   t | jjtjƒrt|j| jjƒ d S tt |jjtjƒƒ d S r    )	Ú
issubclassr-   r!   r#   Úinexactr   Úrealr   rŽ  )r´   r  r'   r'   r(   Úcheck_dtypeÖ  s   z_TestNormBase.check_dtype)rL   rM   rN   r¡  ÚdecÚstaticmethodrë  r'   r'   r'   r(   rç  Ò  s
    rç  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú_TestNormGeneralc                 C   sF   t tg ƒdƒ t ttg | jd�ƒdƒ t tttg | jd�ƒƒdƒ d S )Nr„  r4   )r   r   r   r¡  r   rJ   r'   r'   r(   Ú
test_emptyá  s    z_TestNormGeneral.test_emptyc           	   	   C   s‚  t  g d¢¡}t jd }t jd }|| }|D ]§}| |¡}t|t j ƒ}|  ||¡ t|dƒ tƒ �}| 	t
d¡ t|dƒ}|  ||¡ t|dƒ W d   ƒ n1 sTw   Y  t|dƒ}|  ||¡ t|dƒ t|d	ƒ}|  ||¡ t|d
ƒ t|dƒ}|  ||¡ t||j d
¡|j d¡ ƒ t|dƒ}|  ||¡ t||j d
¡|j d¡ ƒ t|t jƒ}|  ||¡ t|dƒ qd S )Nr_  Ú
AllIntegerÚAllFloatr„  údivide by zero encounteredr”   r   rg   re   rW   rý   ri   g      Ð?rV   )r#   r   Ú	typecodesr{  r   r   rë  r   r   ÚfilterÚRuntimeWarningr-   r!   ©	rD   r/   Úexact_typesÚinexact_typesÚ	all_typesÚ	each_typeÚatÚanrš  r'   r'   r(   Útest_vector_return_typeæ  s>   




ü





áz(_TestNormGeneral.test_vector_return_typec                    sv   g d¢}g d¢}g d¢}‡ fdd„}|||fD ]}||ƒ qt |ˆ jd�t |ˆ jd�t |ˆ jd�fD ]}||ƒ q2d S )N)re   rg   rh   ri   )r”   r•   r–   r“   )r”   rg   r–   ri   c                    sÔ   t jjt| ƒdˆ jd� t jjt| tƒdˆ jd� t jjt| t ƒdˆ jd� t jjt| dƒdˆ jd� t jjt| dƒdˆ jd� t jjt| d	ƒdˆ jd� t jjt| d
ƒdˆ jd� t jjt| dƒdˆ jd� d S )Ng�¥6Ò­è@©r,   rY   rV   re   ç      $@r”   g¸…ëQ¸Þ?rg   r•   gÊsÔcÙÑê?r   ri   )r#   Útestingr   r   rì  r   )r*  rJ   r'   r(   Ú_test  s0   ÿÿÿÿÿÿÿ
ÿz+_TestNormGeneral.test_vector.<locals>._testr4   )r   r¡  )rD   r/   r0   ró   r  r*  r'   rJ   r(   Útest_vector  s   
ÿ
þz_TestNormGeneral.test_vectorc           	   	      s°  t g d¢g d¢g| jd�‰ d dddddtjtj fD ]4‰‡ ‡fd	d
„tˆ jd ƒD ƒ}ttˆ ˆdd�|ƒ ‡ ‡fdd
„tˆ jd ƒD ƒ}ttˆ ˆdd�|ƒ qtjdd| jd� 	ddd¡‰ˆj
}d ddddtjtj dfD ]h‰t t| |ƒd¡D ][}|\}}|dk r‡||7 }|dk r�||7 }||kr�tttˆˆ|d� qytˆˆ|d�}|||  ‰||k r¿‡‡‡fdd
„tˆjˆ ƒD ƒ}n‡‡‡fdd
„tˆjˆ ƒD ƒ}t||ƒ qyqmd S )N©re   rg   rh   ©ri   rz   r*   r4   r”   r   re   rg   rh   c                    s$   g | ]}t ˆ d d …|f ˆd�‘qS ©N©Úord©r   ©r˜   Úk©rR  Úorderr'   r(   r™   3  ó   $ z._TestNormGeneral.test_axis.<locals>.<listcomp>©r  rv  c                    s$   g | ]}t ˆ |d d …f ˆd�‘qS r  r  r	  r  r'   r(   r™   5  r  é   ri   r•   rI  c                    s*   g | ]}t ˆ d d … j|ˆd�ˆd�‘qS ©Nru  r  )r   Útaker	  ©ÚBÚk_indexr  r'   r(   r™   K  s    "ÿc                    s,   g | ]}t ˆ d d … j|ˆd�jˆd�‘qS r  )r   r  r–  r	  r  r'   r(   r™   N  s    $ÿ)r   r¡  r#   ÚInfrñ   r�   r   r   r  rŒ   r¤   r¥   Úcombinationsr   rî   )	rD   Ú	expected0Ú	expected1Úndrv  Úrow_axisÚcol_axisr�  r  r'   )rR  r  r  r  r(   Ú	test_axis-  s:   ÿÿìÿz_TestNormGeneral.test_axisc           	   
   C   sâ  t jdd| jd� ddd¡}d}d}t|d d d	�}t|d d d
d�}tt  |¡|| d d ¡d� d}t|j	|k| |j	|d d ¡ƒ d dddddt j
t j
 fD ]C}t|jƒD ];}t|||d	�}t|||d
d�}tt  |¡|| ||¡d� t|j	ƒ}d||< t|ƒ}t|j	|k| |j	|||¡ƒ qTqMd ddddt j
t j
 ddf	D ]O}t t|jƒd¡D ]C}t|||d	�}t|||d
d�}tt  |¡|| ||¡d� t|j	ƒ}d||d < d||d < t|ƒ}t|j	|k| |j	|||¡ƒ qªqŸd S )Nre   r  r4   rg   rh   ri   zorder {0}, axis = {1}z;Shape mismatch found {0}, expected {1}, order={2}, axis={3}r  T)r  rv  Úkeepdims)rá  )re   re   re   r”   r   r•   rI  Únuc)r#   r  r¡  rŒ   r   r   ÚsqueezeÚformatr   r�   r  rñ   r¤   r°   r§   r¥   Úpermutations)	rD   rR  Úallclose_errÚ	shape_errr  ÚfoundÚexpected_shaper  r
  r'   r'   r(   Útest_keepdimsR  sT   
ÿ
ÿ
ÿ

ÿø 
ÿ

ÿ÷ÿz_TestNormGeneral.test_keepdimsN)rL   rM   rN   rï  rý  r  r  r&  r'   r'   r'   r(   rî  ß  s    )%rî  c                   @   s:   e Zd ZejZdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dS )Ú_TestNorm2Dc                 C   s    t t| jg g| jd�ƒdƒ d S )Nr4   r„  )r   r   r   r¡  rJ   r'   r'   r(   Útest_matrix_empty‚  s    z_TestNorm2D.test_matrix_emptyc           	   	   C   s„  |   g d¢g d¢g¡}tjd }d}|| }|D ]§}| |¡}t|tj ƒ}|  ||¡ t|dƒ tƒ �}| 	t
d¡ t|dƒ}|  ||¡ t|dƒ W d   ƒ n1 sUw   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j|ddd� qd S )Nr_  r  rð  ÚfdFDrW   rò  r”   rV   re   rg   gªLXèz¶û?r•   rI  r  gU&,t=Û@r*   rþ  )r   r#   ró  r{  r   r   rë  r   r   rô  rõ  r   rö  r'   r'   r(   Útest_matrix_return_type…  sD   



ü









Ûz#_TestNorm2D.test_matrix_return_typec                 C   sÚ   | j ddgddgg| jd�}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 )Nre   rh   rz   r†   r4   g…¹ŽT"@rI  r  rÿ  g      (@rY   r”   r[   rg   g„öW³?"@r•   gÑ—€Ê„ì?Únofror–   r   )r   r¡  r   r   r   r   rî   rQ  r'   r'   r(   Útest_matrix_2x2¸  s   z_TestNorm2D.test_matrix_2x2c                 C   sº   d| j g d¢g d¢g d¢g| jd� }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   rz   )rh   rg   re   r4   grj=Q0î?rI  r  gþB+pcõ?gš™™™™™ñ?g333333ã?re   rV   r”   gš™™™™™Ù?rg   gû&Þê.dì?r•   gÜ¸Õ ˆçÈ?)r   r¡  r   r   r   rQ  r'   r'   r(   Útest_matrix_3x3È  s    ÿz_TestNorm2D.test_matrix_3x3c                 C   s  | j g d¢g d¢g| jd�}tjdd| jd� 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 ]}ttt||d ƒ ttt||dƒ ttt||dƒ qLttjt|d dƒ ttjt|d dƒ ttt|d dƒ d S )Nr  r  r4   re   r  rg   rh   ri   rI  r   r  Útest©r   rh   r   )re   rg   ©rg   rh   )r   re   rg   )	r   r¡  r#   r  rŒ   r   rî   r   Ú	AxisError)rD   rR  r  r  r'   r'   r(   Útest_bad_argsÙ  s   z_TestNorm2D.test_bad_argsN)
rL   rM   rN   r#   r   r(  r*  r,  r-  r2  r'   r'   r'   r(   r'  }  s    3r'  c                   @   r   )Ú	_TestNormNr  r'   r'   r'   r(   r3  õ  r  r3  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestNorm_NonSystematicc                 C   s*   t jdt jd�}tt|dd�ddd� d S )Né
   r4   rh   r  gÍÌÌÌÌL)@rg   rþ  )r#   r  Ú
longdoubler.   r   rÖ  r'   r'   r(   Útest_longdouble_normû  s   z+TestNorm_NonSystematic.test_longdouble_normc                 C   s,   t jdgt jd�}tt|dd�ddd� d S )Ni   €r4   rh   r  l        rz   rþ  )r#   r   Úint32r.   r   rÖ  r'   r'   r(   Útest_intmin  s   z"TestNorm_NonSystematic.test_intminc                 C   sŽ   t jdt jd�}d|d< d|d< d}tt jj|dd	�|d
d� | t j¡}tt jj|dd	�|dd� | t j¡}tt jj|dd	�|dd� d S )N©rg   r4   y      @      @r   y      À      @re   g¨ËþÿV;'@rh   r  r5  rþ  é	   rz   )	r#   r©   Úclongdoubler.   r   r   r{  Ú
complex128r  )rD   r  r  r'   r'   r(   Útest_complex_high_ord  s   z,TestNorm_NonSystematic.test_complex_high_ordN)rL   rM   rN   r7  r9  r>  r'   r'   r'   r(   r4  ù  s    r4  c                   @   ó   e Zd ZejZdZdS )Ú_TestNormDoubleBaser+   N)rL   rM   rN   r#   r   r¡  rì  r'   r'   r'   r(   r@    ó    r@  c                   @   r?  )Ú_TestNormSingleBaser*   N)rL   rM   rN   r#   r‡  r¡  rì  r'   r'   r'   r(   rB    rA  rB  c                   @   r?  )Ú_TestNormInt64Baser+   N)rL   rM   rN   r#   Úint64r¡  rì  r'   r'   r'   r(   rC    rA  rC  c                   @   r   )ÚTestNormDoubleNr  r'   r'   r'   r(   rE  $  r  rE  c                   @   r   )ÚTestNormSingleNr  r'   r'   r'   r(   rF  (  r  rF  c                   @   r   )ÚTestNormInt64Nr  r'   r'   r'   r(   rG  ,  r  rG  c                   @   rÊ   )ÚTestMatrixRankc                 C   sÄ   t dtt d¡ƒƒ t d¡}d|d< t t|ƒdƒ t tt d¡ƒdƒ t tg d¢ƒdƒ t tt d	¡ƒdƒ t tdgƒdƒ t |t d¡t d¡g¡}t t|ƒt g d
¢¡ƒ t tdƒdƒ d S )Nri   r„  ©r”   r”   rh   r9  r   )re   r   r   r   re   )ri   )rh   ri   r   )r   r   r#   r:  r  r   )rD   ÚIÚmsr'   r'   r(   Útest_matrix_rank2  s   
zTestMatrixRank.test_matrix_rankc                 C   s    t dtt d¡dd�ƒ t dtt d¡dd�ƒ t dtt d¡dd�ƒ t d¡}d|d< t d	t|dd�ƒ d
|d< t dt|ddd�ƒ t d	t|ddd�ƒ d S )Nri   Tr>  re   r9  r   r„  rI  rh   g:Œ0âŽyE>g¾Ü|"•BE>)r;   Útolgµ;ä¡ˆ°E>)r   r   r#   r:  rW  r  )rD   rJ  r'   r'   r(   Útest_symmetric_rankF  s   
z"TestMatrixRank.test_symmetric_rankN)rL   rM   rN   rL  rN  r'   r'   r'   r(   rH  0  s    rH  c                  C   sž   t j d¡} tdƒD ]B}| jdd�}|d d …df |d d …df  |d d …df< tt|ƒdƒ |d d …d	f |d d …d
f  |d d …df< tt|ƒdƒ q
d S )NiŠ3r¥  )é(   r5  ©Úsizere   rg   r   r;  ri   rz   rh   rc   )r#   rf  ÚRandomStaterñ   Únormalr   r   )ÚrngÚiÚXr'   r'   r(   Útest_reduced_rankT  s   ,,ùrW  c                	   @   sš   e Zd ZejZdd„ Zej ddgg d¢¡dd„ ƒZ	dd	„ Z
d
d„ Zd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d„ ƒƒƒZdS )ÚTestQRc                 C   s¸  t |ƒ}|j}|j\}}t||ƒ}tj|d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 |¡ƒ t
t |	¡|	ƒ tj|d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 |¡ƒ t
t |¡|ƒ tj|dd�}t|j|kƒ tt	||ƒƒ t
||ƒ d S )NÚcomplete©ÚmodeÚreducedrò   )r!   r-   r�   rM  r   ÚqrÚQÚRr   r"   r   r   r–  rA  r#   r:  Útriu)rD   r/   Úa_typeÚa_dtyper‚  r�  r
  r  r^  r_  Úq1Úr1Úr2r'   r'   r(   Úcheck_qre  s:   

zTestQR.check_qrr‚  r�  )©rh   r   r/  r`   c                 C   st   t ||ƒ}t ||f¡}|  |¡ tjj|dd�\}}t|jtjƒ t|jtjƒ t|j	||fƒ t|j	|fƒ d S )NÚrawrZ  )
rM  r#   r©   rf  r   r]  r   r-   r   r�   )rD   r‚  r�  r
  r/   ÚhÚtaur'   r'   r(   Útest_qr_empty�  s   

zTestQR.test_qr_emptyc                 C   sÄ   | j ddgddgddggtjd�}tj|dd	�\}}t|jtjkƒ t|jtjkƒ t|jd
kƒ t|jdkƒ tj|jdd	�\}}t|jtjkƒ t|jtjkƒ t|jdkƒ t|jdkƒ d S )Nre   rg   rh   ri   rz   r*   r4   rh  rZ  r0  r:  rˆ   )	r   r#   r   r   r]  r   r-   r�   r–  )rD   r/   ri  rj  r'   r'   r(   Útest_mode_rawž  s   "zTestQR.test_mode_rawc                 C   sÂ   |   ddgddgg¡}|   ddgddgddgg¡}dD ]}| |¡}| |¡}|  |¡ |  |¡ |  |j¡ qdD ]$}dd| |¡  }dd| |¡  }|  |¡ |  |¡ |  |j¡ q:d S )	Nre   rg   rh   ri   rz   r*   Úfdù              ð?)r   r{  rf  r–  )rD   r/   r0   r¡  Úm1Úm2r'   r'   r(   Útest_mode_all_but_economic´  s   





ûz!TestQR.test_mode_all_but_economicc                 C   sf  t |ƒ}|j}|jdd … \}}t||ƒ}tj|d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d ¡}	t
 |	|jd d… |jd fd  ¡}
tt	t|ddƒ ¡ |ƒ|
ƒ tt
 |dd d …d d …f ¡|ƒ tj|d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d ¡}	t
 |	|jd d… |jd fd  ¡}
tt	t|ddƒ ¡ |ƒ|
ƒ tt
 |dd d …d d …f ¡|ƒ tj|dd�}t|j|kƒ tt||ƒƒ t||ƒ d S )	Nr•   rY  rZ  r”   rg   .r\  rò   )r!   r-   r�   rM  r   r]  r   r"   r   r	   r#   r   rD  r
   rA  r`  )rD   r/   ra  rb  r‚  r�  r
  Úqrò   ÚI_matÚstack_I_matrc  rd  re  r'   r'   r(   Úcheck_qr_stackedÅ  sL   
ÿ"ÿÿ"zTestQR.check_qr_stackedrQ  ))rh   ri   )ri   rh   r9  rg  r/  Ú
outer_size)rT  r:  )rg   rh   ri   r¡  c                 C   sP   t jj|| d� |¡}t jj|| d� |¡}|  |¡ |  |d|  ¡ d S )NrP  rn  )r#   rf  rS  r{  ru  )rD   rv  rQ  r¡  rR  r  r'   r'   r(   Útest_stacked_inputsò  s   

zTestQR.test_stacked_inputsN)rL   rM   rN   r#   r   rf  rã   rä   r
  rk  rl  rq  ru  r   r   r   r   rw  r'   r'   r'   r(   rX  a  s    (
-þrX  c                   @   sL   e Zd Zej dg d¢¡ej dejejej	ej
f¡dd„ ƒƒZdd„ ZdS )	ÚTestCholeskyr�   )r¢   rT  ©rh   rh   )é2   rz  )rh   r5  r5  r-   c                 C   s  t j d¡ t jj|Ž }t  |t j¡r|dt jj|Ž   }ttt|ƒƒƒ}d|dd …< t  	| 
|¡ ¡ |¡}t j||d�}t j |¡}t  	|| 
|¡ ¡ ¡}t  ¡ � d|jd  t  |¡j }W d   ƒ n1 sjw   Y  t||||› d|› d	|› d	|› �d
� d S )Nre   rn  )r”   r•   r•   r4   iô  r   ú Ú
)Úatolrá  )r#   rf  rg  Úrandnr�  Úcomplexfloatingr°   rñ   r™  r	   rB  rA  r   r   ÚcholeskyÚ_no_nep50_warningr�   ÚfinfoÚepsr   )rD   r�   r-   r/   Útró   r0   r}  r'   r'   r(   Útest_basic_property  s   
ÿ*z TestCholesky.test_basic_propertyc                 C   s¶   G dd„ dt jƒ}t jdt jd� |¡}t |¡}t|j|jƒ t	|j
jt ju ƒ t	t|t jƒƒ t jdt jd� |¡}t |¡}t|j|jƒ t	|j
jt ju ƒ t	t|t jƒƒ d S )Nc                   @   r   )z/TestCholesky.test_0_size.<locals>.ArraySubclassNr  r'   r'   r'   r(   r     r  r  r  r4   )re   r   r   )r#   r$   r  r  rª   r   r€  r   r�   r   r-   r!   r  r"   r  r  r'   r'   r(   r    s   

zTestCholesky.test_0_sizeN)rL   rM   rN   rã   rä   r
  r#   r‡  r  r  r=  r…  r  r'   r'   r'   r(   rx    s    ÿÿrx  c                  C   s˜   t jdkrd} nd} tjtjfD ]9}tjd|d�}| | ¡}| d¡ ¡ }t|j	jdƒ t
jt
jt
jfD ]}||ƒ}t|||ƒƒ t|||ƒƒ q4qd S )NÚlittleú<rI   ri   r4   r3  ú=)ÚsysÚ	byteorderr#   r‡  r  r:  ÚnewbyteorderÚbyteswapr   r-   r   r  rw  rn  r   )ÚnativeÚdttr�  Ún_arrÚsw_arrÚroutiner  r'   r'   r(   Útest_byteorder_check0  s   

úûr’  rÃ  rÄ  c                  C   sl   t  ddgddgg¡} t  ddgddgg¡}t  g d¢¡dd d… }| |d< ||d< tt jjt jj|ƒ d S )Nre   rg   rh   ri   )ri   ri   rg   rg   .r`   )r#   r   r  r   r   r   r  )Ú
invertibleÚnon_invertibler´   r'   r'   r(   Ú test_generalized_raise_multiloopE  s   r•  c                  C   sL  d} zt  ¡ }W n ttfy   t d¡ Y nw |dkr�t  d¡ t  d¡ dd l}| |j	d¡ zt
jj ¡  W n tyC   Y n tyQ   t  t j¡ Y nw zt
 dgg¡}t
jj ddd|d||dd¡	 W n ty‡ } zdt|ƒv r}t  | ¡ W Y d }~nd }~ww t  t j¡ d S t  ¡ \}}t  |¡| kr¤t d¡ d S d S )	Néÿ   zNot POSIX or fork failed.r   re   r`   rV   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   Údorgqrr@   ÚwaitÚWEXITSTATUS)Ú	XERBLA_OKÚpidr�  r/   rÇ   Ústatusr'   r'   r(   Útest_xerbla_overrideT  sF   þ

ÿý
€üÿrª  zCannot start subprocessc                  C   sd   ddg} t  d¡}| D ]$}|jdd|d�}t tjd|g¡ |jdd|d�}t tjd|g¡ qd 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)r®  r­  r¯  )ÚtextwrapÚdedentr   Ú
subprocessÚ
check_callr‰  Ú
executable)Úbad_libsÚtemplater¯  Úcoder'   r'   r(   Útest_sdot_bug_8577…  s   
ÿÿør¸  c                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestMultiDotc              	   C   sl   t j d¡}t j d¡}t j d¡}tt|||gƒ| |¡ |¡ƒ tt|||gƒt  |t  ||¡¡ƒ d S ©N©r*   rg   ©rg   r*   ©r#   rf  r   r   r   )rD   rR  r  ÚCr'   r'   r(   Ú(test_basic_function_with_three_arguments«  s
    (z5TestMultiDot.test_basic_function_with_three_argumentsc                 C   sN   t j d¡}t j d¡}tt||gƒ| |¡ƒ tt||gƒt  ||¡ƒ d S rº  r½  )rD   rR  r  r'   r'   r(   Ú&test_basic_function_with_two_argumentsµ  s   z3TestMultiDot.test_basic_function_with_two_argumentsc                 C   s\   t j d¡}t j d¡}t j d¡}t j d¡}tt||||gƒ| |¡ |¡ |¡ƒ d S )Nr»  r¼  ©rg   re   r½  )rD   rR  r  r¾  ÚDr'   r'   r(   Ú9test_basic_function_with_dynamic_programming_optimization½  s
   ,zFTestMultiDot.test_basic_function_with_dynamic_programming_optimizationc                 C   sL   t j d¡}t j d¡}t j d¡}t j d¡}tt||||gƒjdƒ d S )Nrg   r¼  r»  rT  r:  ©r#   rf  r   r   r�   )rD   ÚA1dr  r¾  rÂ  r'   r'   r(   Útest_vector_as_first_argumentÆ  ó
   z*TestMultiDot.test_vector_as_first_argumentc                 C   sL   t j d¡}t j d¡}t j d¡}t j d¡}tt||||gƒjdƒ d S )Nr»  r¼  rg   )r*   rÄ  )rD   rR  r  r¾  ÚD1dr'   r'   r(   Útest_vector_as_last_argumentÐ  rÇ  z)TestMultiDot.test_vector_as_last_argumentc                 C   sL   t j d¡}t j d¡}t j d¡}t j d¡}tt||||gƒjdƒ d S )Nrg   r¼  r»  r'   rÄ  )rD   rÅ  r  r¾  rÈ  r'   r'   r(   Ú&test_vector_as_first_and_last_argumentÚ  rÇ  z3TestMultiDot.test_vector_as_first_and_last_argumentc              	   C   s€   t j d¡}t j d¡}t j d¡}t  d¡}t|||g|d�}||u s&J ‚t|| |¡ |¡ƒ t|t  |t  ||¡¡ƒ d S )Nr»  r¼  ©r%   ©r#   rf  r  r   r   r   )rD   rR  r  r¾  r%   Úretr'   r'   r(   Útest_three_arguments_and_outä  s   
z)TestMultiDot.test_three_arguments_and_outc                 C   sd   t j d¡}t j d¡}t  d¡}t||g|d�}||u sJ ‚t|| |¡ƒ t|t  ||¡ƒ d S )Nr»  r¼  )r*   r*   rË  rÌ  )rD   rR  r  r%   rÍ  r'   r'   r(   Útest_two_arguments_and_outñ  s   
z'TestMultiDot.test_two_arguments_and_outc                 C   sz   t j d¡}t j d¡}t j d¡}t j d¡}t  d¡}t||||g|d�}||u s-J ‚t|| |¡ |¡ |¡ƒ d S )Nr»  r¼  rÁ  )r*   re   rË  rÌ  )rD   rR  r  r¾  rÂ  r%   rÍ  r'   r'   r(   Ú-test_dynamic_programming_optimization_and_outû  s   
 z:TestMultiDot.test_dynamic_programming_optimization_and_outc              	   C   s  t j d¡t j d¡t j d¡t j d¡t j d¡t j d¡g}t  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�}|d8 }t|dd�\}}tt  |d d…dd …f ¡t  |d d…dd …f ¡ƒ tt  |¡t  |¡ƒ d S )N)é   é#   )rÒ  é   )rÓ  rz   )rz   r5  )r5  é   )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   re   re   rh   rh   rh   )r   r   rg   rh   rh   rh   )r   r   r   rh   rh   rh   )r   r   r   r   ri   rz   )r   r   r   r   r   rz   )r   r   r   r   r   r   r4   re   T)Úreturn_costsr”   )r#   rf  r   Úintr   r   r`  )rD   ÚarraysÚ
m_expectedÚ
s_expectedrº   r‚  r'   r'   r(   Útest_dynamic_programming_logic  s:   





û
û
ûûÿz+TestMultiDot.test_dynamic_programming_logicc                 C   s&   t ttg ƒ t tttj d¡gƒ d S )Nry  )r   rî   r   r#   rf  rJ   r'   r'   r(   Útest_too_few_input_arrays%  s   z&TestMultiDot.test_too_few_input_arraysN)rL   rM   rN   r¿  rÀ  rÃ  rÆ  rÉ  rÊ  rÎ  rÏ  rÐ  rÚ  rÛ  r'   r'   r'   r(   r¹  ©  s    
	



r¹  c                   @   sv   e Zd Zej de d¡dfe d¡dfg¡dd„ ƒZej dd	d
g¡dd„ ƒZ	ej dddg¡dd„ ƒZ
dd„ ZdS )ÚTestTensorinvzarr, ind©ri   r*   rc   rg   rg   ©rh   rh   rg   re   c                 C   s<   t tƒ� tj||d� W d   ƒ d S 1 sw   Y  d S )N©Úind)r   r   r   Ú	tensorinv)rD   r�  rà  r'   r'   r(   Útest_non_square_handling,  s   
"ÿz&TestTensorinv.test_non_square_handlingz
shape, ind)©ri   r*   rc   rh   rg   )©é   rc   rh   re   c                 C   sN   t  d¡}||_tj||d�}|j|d … |jd |…  }|j}t||ƒ d S )Nrå  ©r/   rà  )r#   r:  r�   r   rá  r   )rD   r�   rà  r/   Úainvr  Úactualr'   r'   r(   Útest_tensorinv_shape4  s   
z"TestTensorinv.test_tensorinv_shaperà  r   r•   c                 C   sL   t  d¡}d|_ttƒ� tj||d� W d   ƒ d S 1 sw   Y  d S )Nrå  rã  ræ  )r#   r:  r�   r   rî   r   rá  )rD   rà  r/   r'   r'   r(   Útest_tensorinv_ind_limitA  s
   

"ÿz&TestTensorinv.test_tensorinv_ind_limitc                 C   sJ   t  d¡}d|_tj|dd�}t  d¡}tt  ||d¡t j ||¡ƒ d S )Nrå  rä  re   rß  )	r#   r:  r�   r   rá  rW  r   Ú	tensordotÚtensorsolve)rD   r/   rç  r0   r'   r'   r(   Útest_tensorinv_resultJ  s
   

"z#TestTensorinv.test_tensorinv_resultN)rL   rM   rN   rã   rä   r
  r#   rW  râ  ré  rê  rí  r'   r'   r'   r(   rÜ  *  s     þ
ý
ÿ
rÜ  c                   @   sT   e Zd Zej de d¡dfe d¡dfg¡dd„ ƒZej dg d	¢¡d
d„ ƒZ	dS )ÚTestTensorsolveza, axesrÝ  NrÞ  )r   rg   c                 C   sR   t tƒ� t |jd d… ¡}tj|||d� W d   ƒ d S 1 s"w   Y  d S ©Nrg   r?  )r   r   r#   rW  r�   r   rì  )rD   r/   r@  r0   r'   r'   r(   râ  U  s   
"þz(TestTensorsolve.test_non_square_handlingr�   ))rg   rh   r*   )rh   ri   ri   rh   )r   rh   rh   r   c                 C   sN   t jj|Ž }t  |jd d… ¡}t j ||¡}tt j||t	|jƒd�|ƒ d S rï  )
r#   rf  r~  rW  r�   r   rì  r   rë  r™  )rD   r�   r/   r0   r´   r'   r'   r(   Útest_tensorsolve_result^  s    z'TestTensorsolve.test_tensorsolve_result)
rL   rM   rN   rã   rä   r
  r#   rW  râ  rð  r'   r'   r'   r(   rî  S  s    þ
ÿrî  c                  C   sT   t jddgddggdd�} ttdƒ� t | ¡ W d   ƒ d S 1 s#w   Y  d S )Nre   r•   rg   rz   Úfloat16r4   zunsupported in linalg)r#   r   r   r¿  r   r€  )r�  r'   r'   r(   Útest_unsupported_commontypeh  s   "ÿrò  z,Bad memory reports lead to OOM in ci testingc                  C   sR   d} t jd| gt jd�}t jddgt jd�}d|d< t  ||¡}t|d dƒ d S )Nì        re   r4   )r   r”   )r#   r  r‡  rW  r   r   )r�  r/   r0   ró   r'   r'   r(   Útest_blas64_dots  s   rô  z*Numpy not compiled with 64-bit BLAS/LAPACKc            
   	   C   sÀ   t j} t jjj}d}d}|}t jddg| d�}t jdg| d�}t jdg| d�}|||||||ddƒ}t|d dƒ t|d |ƒ t|d |ƒ t| ¡ ƒ}	t	d	|	  k oZd
k ƒ d S   ƒ d S )Nl       re   r4   r”   r   Úinfor‚  r�  ró  l        )
r#   r  r   r   Údgeqrfr  r   rÖ  Úitemr   )
r-   Úlapack_routiner‚  r�  Úldar/   Úworkrj  ÚresultsÚlworkr'   r'   r(   Ú!test_blas64_geqrf_lwork_smoketest}  s   
&rý  )r*   r+   )‚Ú__doc__r—  r‰  r¥   rÂ   r°  r²  rã   Únumpyr#   r   r   r   r   r   r   r   r	   Ú
numpy.corer
   r   r   r   r   r   Únumpy.linalgr   r   r   r   r   Únumpy.linalg.linalgr   Únumpy.testingr   r   r   r   r   r   r   r   r   r   Únumpy.linalg.lapack_liteÚImportErrorr)   r.   r5   r7   r8   rP   r?   rT   rf  rg  rŠ   r©   rh  r�   r»   r¾   r¿   rË   rÕ   rØ   rÜ   rç   rê   rô   rõ   r÷   rû   r  r  r  r  r"  r'  r.  r5  r8  r=  rF  rG  rP  rl  rq  rr  rs  rt  rƒ  rˆ  r•  rä   r
  r¢  rÉ  rÎ  rà  ræ  rç  rî  r'  r3  r4  r@  rB  rC  rE  rF  rG  rH  rW  rX  rx  r’  rÈ  r•  rª  rå   r¸  r¹  rÜ  rî  rò  r›  rô  rk  rý  r'   r'   r'   r(   Ú<module>   s   (0ü
	þþþþþþý
þ
þþã#þþþþÿýÿýÿýÿýÿýÿý
þ
þ
þ
ý
ýÎ9þþþþýþþþé 
0

:	$.Cý
*4V6; x$ ".
1" )

	ÿ