a
    ‡ù»jX ã                   @   s.  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mZmZmZ d dl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#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/ d d	l0m1Z1 d d
l2m3Z3 ejej4ej5fZ6ej7ej8ej9fZ:e6e: Z;dd„ Z<G dd„ dƒZ=G dd„ dƒZ>G dd„ dƒZ?G dd„ dƒZ@G dd„ dƒZAG dd„ dƒZBd0dd„ZCG dd„ dƒZDG dd„ dƒZEG dd „ d ƒZFejG Hd!d"¡ejG Hd#eef¡d$d%„ ƒƒZIG d&d'„ d'ƒZJG d(d)„ d)ƒZKG d*d+„ d+ƒZLG d,d-„ d-ƒZMG d.d/„ d/ƒZNdS )1é    N)ÚarangeÚarrayÚdotÚzerosÚidentityÚ	conjugateÚ	transposeÚfloat32)Úrandom)Úassert_equalÚassert_almost_equalÚassert_Úassert_array_almost_equalÚassert_allcloseÚassert_array_equalÚsuppress_warnings)Úraises)ÚsolveÚinvÚdetÚlstsqÚpinvÚpinvhÚnormÚsolve_bandedÚsolveh_bandedÚsolve_triangularÚsolve_circulantÚ	circulantÚLinAlgErrorÚ
block_diagÚmatrix_balanceÚqrÚLinAlgWarning©Úassert_no_overwrite)Úcheck_free_memoryÚIS_MUSL)Ú	HAS_ILP64)Ú_NoValuec                 C   s2   | }|t jkrt j}n|t jkr&t j}t  |¡jS )z;Get the epsilon for dtype, possibly downcast to BLAS types.)ÚnpÚ
longdoubleÚfloat64ÚclongdoubleÚ
complex128ÚfinfoÚeps)ZdtypÚdt© r2   úCE:\soccer\ml_env\Lib\site-packages\scipy/linalg/tests/test_basic.pyÚ	_eps_cast   s    

r4   c                   @   sL   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S )ÚTestSolveBandedc                 C   sÖ   t g d¢g d¢g d¢g d¢gƒ}t g d¢g d¢g d¢g d¢gƒ}d	\}}t g d
¢ƒ}| dd¡}t ddgddgddgddggƒ}t g d¢g d¢g d¢g d¢gƒ}||||fD ]$}	t||f||	ƒ}
tt||
ƒ|	ƒ q¬d S )N©ç      ð?é   r   r   ©éâÿÿÿé   é   r   ©é   é   r8   r>   ©r   éÿÿÿÿé   é   ©ç        r8   r<   r>   ©r?   r;   r8   rC   ©r:   r?   rB   r   ©r>   rA   r   r   ©r>   r?   ©ç      $@rE   ç       @g      ,@rA   r?   r>   r:   r;   é   ©r?   r   r   r   ©r   r   r   r?   ©r   r?   r   r   ©r   Úreshaper   r   r   ©ÚselfÚaÚabÚlÚuÚb4Úb4by1Úb4by2Úb4by4ÚbÚxr2   r2   r3   Ú	test_real*   s4    ýýýýzTestSolveBanded.test_realc                 C   sÖ   t g d¢g d¢g d¢g d¢gƒ}t g d¢g d¢g d¢g d¢gƒ}d	\}}t g d
¢ƒ}| dd¡}t ddgddgddgddggƒ}t g d¢g d¢g d¢g d¢gƒ}||||fD ]$}	t||f||	ƒ}
tt||
ƒ|	ƒ q¬d S )Nr6   r9   )ù               @r?   r8   r`   r@   ©rE   r8   r<   r`   rF   rG   )r`   rA   r   r   rI   ©rK   rE   rL   y              ,@rA   r?   r>   r:   r;   rM   rN   )r   r   r   ù              ð?rP   rQ   rS   r2   r2   r3   Útest_complexB   s4    ýýýýzTestSolveBanded.test_complexc           	      C   sì   t g d¢g d¢g d¢gƒ}t |ddd …f d¡t |dd d …f d¡ t |dd d…f d¡ }t g d¢ƒ}| dd¡}t ddgd	d
gddgddggƒ}t g d¢g d¢g d¢g d¢gƒ}||||fD ] }td||ƒ}tt||ƒ|ƒ qÆd S )NrD   rF   rG   r   r?   r>   rA   rJ   r:   r;   rM   rN   rO   rP   ©r?   r?   ©r   r*   ÚdiagrR   r   r   r   ©	rT   rV   rU   rY   rZ   r[   r\   r]   r^   r2   r2   r3   Útest_tridiag_realZ   s,    þ2ÿýýz!TestSolveBanded.test_tridiag_realc           	      C   sì   t g d¢g d¢g d¢gƒ}t |ddd …f d¡t |dd d …f d¡ t |dd d…f d¡ }t g d¢ƒ}| dd¡}t ddgd	d
gddgddggƒ}t g d¢g d¢g d¢g d¢gƒ}||||fD ] }td||ƒ}tt||ƒ|ƒ qÆd S )Nra   rF   rG   r   r?   r>   rA   rb   r:   r;   rM   rN   rO   rP   re   rf   rh   r2   r2   r3   Útest_tridiag_complexn   s,    þ2ÿýýz$TestSolveBanded.test_tridiag_complexc                 C   s|   t g d¢g d¢g d¢g d¢gƒ}t g d¢g d¢g d¢g d¢gƒ}d	\}}t g d
¢ƒ}t||f||dd�}tt||ƒ|ƒ d S )Nr6   r9   r=   r@   rD   rF   rG   rH   rI   rJ   F©Úcheck_finite)r   r   r   r   )rT   rU   rV   rW   rX   rY   r^   r2   r2   r3   Útest_check_finite‚   s    ýýz!TestSolveBanded.test_check_finitec                 C   s€   t g d¢g d¢g d¢g d¢gƒ}d\}}t g d¢ƒ dd¡}ttt||f||ƒ ttt||f|d	d
gƒ tttd|d	d
gƒ d S )NrD   rF   rG   rH   rI   )r7   rL   ç      @ç      @rA   r;   r7   rL   re   )r   rR   Úassert_raisesÚ
ValueErrorr   )rT   rV   rW   rX   Úbadr2   r2   r3   Útest_bad_shape�   s    ýzTestSolveBanded.test_bad_shapec                 C   s\   t g d¢gƒ}tddgdgdgg|ƒ}t|g d¢gƒ t|jt d¡ƒ t|g d¢gƒ d S )N©r7   rL   rn   re   r   r>   )ç      à?r7   g      ø?Úf8)r   r   r   r   Údtyper*   )rT   r]   r^   r2   r2   r3   Útest_1x1�   s
    zTestSolveBanded.test_1x1c                 C   sl   g d¢g d¢g d¢g d¢g}g d¢g d¢g d¢g d¢g}d	\}}g d
¢}t ||f||ƒ}tt||ƒ|ƒ d S )Nr6   r9   r=   r@   rD   rF   rG   rH   rI   rJ   )r   r   r   )rT   rU   rV   rW   rX   r]   r^   r2   r2   r3   Útest_native_list_arguments¤   s    ýýz*TestSolveBanded.test_native_list_argumentsN)Ú__name__Ú
__module__Ú__qualname__r_   rd   ri   rj   rm   rs   rx   ry   r2   r2   r2   r3   r5   (   s   r5   c                   @   s¼   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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 ).ÚTestSolveHBandedc                 C   sB   t g d¢g d¢g d¢gƒ}t g d¢ƒ}t||ƒ}t|g d¢ƒ d S ©N©rE   rE   rL   rL   ©é�ÿÿÿr7   r7   r7   ©ro   ro   ro   ro   ©r7   ro   r7   rL   ©rE   r7   rE   rE   ©r   r   r   ©rT   rV   r]   r^   r2   r2   r3   Útest_01_upperµ   s    þ
zTestSolveHBanded.test_01_upperc                 C   sr   t g d¢g d¢g d¢gƒ}t ddgddgddgddggƒ}t||ƒ}t ddgddgddgddggƒ}t||ƒ d S )	Nr   r€   r‚   r7   ç      @ro   rL   rE   r…   ©rT   rV   r]   r^   Úexpectedr2   r2   r3   Útest_02_upperÃ   s     þý
ýzTestSolveHBanded.test_02_upperc                 C   sV   t g d¢g d¢g d¢gƒ}t g d¢ƒ dd¡}t||ƒ}t|t g d¢ƒ dd¡ƒ d S )Nr   r€   r‚   rƒ   rA   r?   r„   ©r   rR   r   r   r†   r2   r2   r3   Útest_03_upperØ   s    þ
zTestSolveHBanded.test_03_upperc                 C   sF   t g d¢g d¢g d¢gƒ}t g d¢ƒ}t||dd�}t|g d¢ƒ d S )Nr‚   ©r7   r7   r7   r�   ©rL   rL   rE   rE   rƒ   T©Úlowerr„   r…   r†   r2   r2   r3   Útest_01_loweræ   s    þzTestSolveHBanded.test_01_lowerc                 C   sv   t g d¢g d¢g d¢gƒ}t ddgddgddgddggƒ}t||dd	�}t d
dgdd
gd
dgd
d
ggƒ}t||ƒ d S )Nr‚   rŽ   r�   r7   rˆ   ro   rL   Tr�   rE   r…   r‰   r2   r2   r3   Útest_02_lowerô   s     þýýzTestSolveHBanded.test_02_lowerc                 C   sJ   t g d¢g d¢g d¢gtd�}t g d¢td�}t||ƒ}t|g d¢ƒ d S )Nr   r€   r‚   ©rw   rƒ   r„   ©r   r	   r   r   r†   r2   r2   r3   Útest_01_float32	  s    þþ
z TestSolveHBanded.test_01_float32c                 C   sz   t g d¢g d¢g d¢gtd�}t ddgddgddgddggtd�}t||ƒ}t d	dgdd	gd	dgd	d	ggƒ}t||ƒ d S )
Nr   r€   r‚   r”   r7   rˆ   ro   rL   rE   r•   r‰   r2   r2   r3   Útest_02_float32  s(    þþýý
ýz TestSolveHBanded.test_02_float32c                 C   sB   t g d¢g d¢g d¢gƒ}t g d¢ƒ}t||ƒ}t|g d¢ƒ d S )Nr   ©r�   ù       €      ð¿r™   r™   r‚   )ù       @      ð¿ù      @      ð¿ù      @      ð?ù       @      ð?)rE   r7   r7   rE   r…   r†   r2   r2   r3   Útest_01_complex,  s    þ
z TestSolveHBanded.test_01_complexc                 C   sr   t g d¢g d¢g d¢gƒ}t ddgddgdd	gd
dggƒ}t||ƒ}t ddgddgddgddggƒ}t||ƒ d S )Nr   r˜   r‚   rš   ù       @      @r›   ù      ð¿      ð¿rœ   y      @       @r�   rc   rE   r7   r…   r‰   r2   r2   r3   Útest_02_complex:  s     þý
ýz TestSolveHBanded.test_02_complexc                 C   s<   t g d¢g d¢gƒ}t g d¢ƒ}t||ƒ}t|g d¢ƒ d S )N©r�   r7   r7   ©ro   ro   ro   ©r7   ro   r7   ©rE   r7   rE   r…   r†   r2   r2   r3   Útest_tridiag_01_upperO  s    
z&TestSolveHBanded.test_tridiag_01_upperc                 C   s`   t g d¢g d¢gƒ}t ddgddgddggƒ}t||ƒ}t ddgddgddggƒ}t||ƒ d S )Nr¢   r£   r7   ro   rL   rE   r…   r‰   r2   r2   r3   Útest_tridiag_02_upperZ  s    ÿþ
þz&TestSolveHBanded.test_tridiag_02_upperc                 C   sP   t g d¢g d¢gƒ}t g d¢ƒ dd¡}t||ƒ}t|t g d¢ƒ dd¡ƒ d S )Nr¢   r£   r¤   rA   r?   r¥   rŒ   r†   r2   r2   r3   Útest_tridiag_03_upperk  s    
z&TestSolveHBanded.test_tridiag_03_upperc                 C   s@   t g d¢g d¢gƒ}t g d¢ƒ}t||dd�}t|g d¢ƒ d S )Nr£   ©r7   r7   r�   r¤   Tr�   r¥   r…   r†   r2   r2   r3   Útest_tridiag_01_lowerv  s    ÿz&TestSolveHBanded.test_tridiag_01_lowerc                 C   sd   t g d¢g d¢gƒ}t ddgddgddggƒ}t||dd�}t ddgddgddggƒ}t||ƒ d S )	Nr£   r©   r7   ro   rL   Tr�   rE   r…   r‰   r2   r2   r3   Útest_tridiag_02_lower‚  s    ÿþþz&TestSolveHBanded.test_tridiag_02_lowerc                 C   sD   t g d¢g d¢gtd�}t g d¢td�}t||ƒ}t|g d¢ƒ d S )Nr¢   r£   r”   r¤   r¥   r•   r†   r2   r2   r3   Útest_tridiag_01_float32“  s    
z(TestSolveHBanded.test_tridiag_01_float32c                 C   sh   t g d¢g d¢gtd�}t ddgddgddggtd�}t||ƒ}t ddgddgddggƒ}t||ƒ d S )Nr¢   r£   r”   r7   ro   rL   rE   r•   r‰   r2   r2   r3   Útest_tridiag_02_float32ž  s"    ÿÿþþ
þz(TestSolveHBanded.test_tridiag_02_float32c                 C   s<   t g d¢g d¢gƒ}t g d¢ƒ}t||ƒ}t|g d¢ƒ d S )N©r�   r™   r™   r£   )r™   r›   rœ   )rE   r7   r7   r…   r†   r2   r2   r3   Útest_tridiag_01_complex¯  s    
z(TestSolveHBanded.test_tridiag_01_complexc                 C   s`   t g d¢g d¢gƒ}t ddgddgddggƒ}t||ƒ}t d	d
gdd	gddggƒ}t||ƒ d S )Nr®   r£   r™   ù              @r›   r    rœ   ro   rE   rc   r7   r…   r‰   r2   r2   r3   Útest_tridiag_02_complexº  s    ÿþ
þz(TestSolveHBanded.test_tridiag_02_complexc                 C   s@   t g d¢g d¢gƒ}t g d¢ƒ}t||dd�}t|g d¢ƒ d S )Nr¢   r£   r¤   Frk   r¥   r…   r†   r2   r2   r3   rm   Ë  s    z"TestSolveHBanded.test_check_finitec                 C   s\   t g d¢g d¢gƒ}t ddgddggƒ}ttt||ƒ ttt|ddgƒ ttt|dgƒ d S )Nr¢   r£   r7   ro   rL   )r   rp   rq   r   )rT   rV   r]   r2   r2   r3   Útest_bad_shapesÖ  s    ÿÿz TestSolveHBanded.test_bad_shapesc                 C   s:   t dggg d¢gƒ}t|g d¢gƒ t|jt d¡ƒ d S )Nr?   ©r?   r>   rM   rt   rv   )r   r   r   rw   r*   )rT   r^   r2   r2   r3   rx   ß  s    zTestSolveHBanded.test_1x1c                 C   s:   g d¢g d¢g d¢g}g d¢}t ||ƒ}t|g d¢ƒ d S r~   )r   r   r†   r2   r2   r3   ry   ä  s    þ
z+TestSolveHBanded.test_native_list_argumentsN)rz   r{   r|   r‡   r‹   r�   r’   r“   r–   r—   rž   r¡   r¦   r§   r¨   rª   r«   r¬   r­   r¯   r±   rm   r²   rx   ry   r2   r2   r2   r3   r}   ³   s,   	r}   c                   @   s  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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/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!e"j#j$d?d@�dAdB„ ƒZ%dCS )DÚ	TestSolvec                 C   s   t j d¡ d S ©NéÒ  ©r*   r
   Úseed©rT   r2   r2   r3   Úsetup_methodï  s    zTestSolve.setup_methodc                 C   sl   ddgddgg}t |ddgƒ}tt||ƒddgƒ ddgddgg}ddg}t ||ƒ}tt||ƒddgƒ d S )Nr?   r7   r   ù                ç333333ó?©r   r   r   )rT   rU   Zx0r]   r2   r2   r3   Útest_20Feb04_bugò  s    
zTestSolve.test_20Feb04_bugc                 C   sZ   ddgddgg}ddgddggddgddgddggfD ]}t ||ƒ}tt||ƒ|ƒ q6d S )Nr?   r8   r:   r;   r   r>   r½   ©rT   rU   r]   r^   r2   r2   r3   Útest_simpleý  s    þ
zTestSolve.test_simplec                 C   sd   t ddgddggdƒ}ddgddgddggdd	gt ddgdƒfD ]}t||ƒ}tt||ƒ|ƒ q@d S )
Né   r>   r`   r;   ÚDrc   r   r?   r»   )r   r   r   r   r¿   r2   r2   r3   Útest_simple_complex  s    ý
zTestSolve.test_simple_complexc                 C   s\   ddgddgg}dD ]B}ddgddggddgfD ]$}t ||d|d�}tt||ƒ|ƒ q0qd S )	Nr>   rM   rÁ   ©r   r?   r?   r   Úpos©Úassume_ar‘   r½   ©rT   rU   r‘   r]   r^   r2   r2   r3   Útest_simple_pos  s    ÿzTestSolve.test_simple_posc                 C   sP   ddgddgg}ddgddgddggfD ]"}t ||dd�}tt||ƒ|ƒ q(d S )NrÁ   r>   r;   rc   r   rÅ   ©rÇ   r½   r¿   r2   r2   r3   Útest_simple_pos_complexb  s    ÿz"TestSolve.test_simple_pos_complexbc                 C   s\   ddgddgg}dD ]B}ddgddggddgfD ]$}t ||d|d�}tt||ƒ|ƒ q0qd S )	Nr>   rM   éûÿÿÿrÄ   r?   r   ÚsymrÆ   r½   rÈ   r2   r2   r3   Útest_simple_sym!  s    ÿzTestSolve.test_simple_symc                 C   sP   ddgddgg}ddgddgddggfD ]"}t ||dd�}tt||ƒ|ƒ q(d S )NrÁ   r>   éüÿÿÿrc   r   rÍ   rÊ   r½   r¿   r2   r2   r3   Útest_simple_sym_complexb*  s    ÿz"TestSolve.test_simple_sym_complexbc                 C   sV   ddgddgg}ddgddgddgddggfD ]"}t ||dd	�}tt||ƒ|ƒ q.d S )
NrÁ   r�   rÏ   rc   r   r?   r>   rÍ   rÊ   r½   r¿   r2   r2   r3   Útest_simple_sym_complex2  s    þz!TestSolve.test_simple_sym_complexc                 C   sb   ddgddgg}dD ]H}ddgddggddgddgfD ]$}t ||d|d	�}tt||ƒ|ƒ q6qd S )
Nr>   rM   rÌ   rÄ   r?   r   rc   ÚherrÆ   r½   rÈ   r2   r2   r3   Útest_simple_her_actuallysym;  s    þz%TestSolve.test_simple_her_actuallysymc                 C   sV   ddgddgg}ddgddgddgddggfD ]"}t ||d	d
�}tt||ƒ|ƒ q.d S )NrÁ   r�   rš   rÏ   rc   r   r?   r>   rÒ   rÊ   r½   r¿   r2   r2   r3   Útest_simple_herE  s    þzTestSolve.test_simple_herc                 C   sŽ   d}t ||gƒt ||gƒd  }t||fdƒ}t|ƒ}t|ƒt|ƒd  }td|ƒD ]*}|d d …|f }t||ƒ|d d …|f< qTt||ƒ d S )Nr>   rc   rÂ   r»   r   )r
   r   r   r   r   r   r   )rT   ÚnÚAÚXZAinvÚRÚiÚrr2   r2   r3   Útest_nils_20Feb04N  s    zTestSolve.test_nils_20Feb04c                 C   sr   d}t ||gƒ}t|ƒD ] }dd|||f   |||f< qtdƒD ]*}t |dgƒ}t||ƒ}tt||ƒ|ƒ qBd S )Nr8   çš™™™™™¹?r;   rM   ©r
   Úranger   r   r   ©rT   rÕ   rU   rÙ   r]   r^   r2   r2   r3   Útest_randomY  s    
zTestSolve.test_randomc                 C   s‚   d}t ||gƒdt ||gƒ  }t|ƒD ] }dd|||f   |||f< q(tdƒD ]*}t |dgƒ}t||ƒ}tt||ƒ|ƒ qRd S )Nr8   rc   rÜ   r>   rM   rÝ   rß   r2   r2   r3   Útest_random_complexd  s    
zTestSolve.test_random_complexc                 C   sš   d}t ||gƒ}t|ƒD ]F}tdd|||f   ƒ|||f< t|ƒD ]}|||f |||f< qDqtdƒD ],}t |gƒ}t||dd�}tt||ƒ|ƒ qhd S )Nr8   rÜ   r;   rÅ   rÊ   )r
   rÞ   Úabsr   r   r   ©rT   rÕ   rU   rÙ   Újr]   r^   r2   r2   r3   Útest_random_symn  s     
zTestSolve.test_random_symc                 C   sÀ   d}t ||gƒ}|dt ||gƒ  }t|ƒD ]J}tdd|||f   ƒ|||f< t|ƒD ]}t|||f ƒ|||f< qXq,t |gƒdt |gƒ  }tdƒD ]"}t||dd�}tt||ƒ|ƒ q˜d S )Nr8   rc   rÜ   r`   r>   rÅ   rÊ   )r
   rÞ   râ   r   r   r   r   rã   r2   r2   r3   Útest_random_sym_complexz  s     z!TestSolve.test_random_sym_complexc                 C   s^   ddgddgg}ddgddggddgddgddggfD ]"}t ||dd�}tt||ƒ|ƒ q6d S )	Nr?   r8   r:   r;   r   r>   Frk   r½   r¿   r2   r2   r3   rm   ‡  s    ÿzTestSolve.test_check_finitec                 C   s8   d}g d¢}t ||ƒ}t| ¡ |ƒ t|jdkdƒ d S )Nr?   r³   ©rM   z'Scalar_a_1D_b test returned wrong shape)r   r   Zravelr   Úshaper¿   r2   r2   r3   Útest_scalar_a_and_1D_bŽ  s
    
z TestSolve.test_scalar_a_and_1D_bc                 C   sp   t  g d¢g d¢g d¢g d¢g¡}t  ddgddgd	d
gddgg¡}t||ƒ}t|t  g d¢g d¢g¡jƒ d S )N)çÍÌÌÌÌÌü?g
×£p=
@gffffff @g{®Gázì¿)g     h€@g     prÀg     ÀWÀg     ÀwÀ)gHáz®Gù?g…ëQ¸…Àg333333Àg¤p=
×£ð¿)gÃõ(\�Âñ¿g…ëQ¸å¿gáz®Gáâ¿gš™™™™™é?g
×£p=
#@g¸…ëQx2@g     £@g      l@g¤p=
×£è?g�Âõ(\�*Àgáz®GáÀg×£p=
×À)r7   rA   rM   rÌ   )rM   r>   r;   r?   )r*   r   r   r   ÚTr¿   r2   r2   r3   Útest_simple2•  s    
ý
ý
ÿzTestSolve.test_simple2c              	   C   sz   t  g d¢g d¢g d¢g d¢g¡}t  ddgddgd	d
gddgg¡}t||ƒ}t|t  ddgddgddgddgg¡ƒ d S )N)yq=
×£põ¿ffffff@yìQ¸…ëÑ?\�Âõ(\	@y�Âõ(\�Àš™™™™™Ày
×£p=
ç?q=
×£pí¿)y333333û¿333333,ÀyÍÌÌÌÌŒ@@      ø¿y      ø¿ÍÌÌÌÌÌ*@yÍÌÌÌÌÌ)@š™™™™™+@)yR¸…ëQ
À…ëQ¸Ày�Âõ(\�þ¿®Gáz®@yìQ¸…ëÁ¿š™™™™™õ¿y…ëQ¸…û?š™™™™™õ?)yHáz®G@ö(\�ÂõØ?yìQ¸…ëá¿…ëQ¸…÷?y�Âõ(\�ê¿®Gázæ¿y\�Âõ(\ÿ¿q=
×£på?yÃõ(\�B:@¤p=
×ãI@yR¸…ëQ?@ÍÌÌÌÌÌÀy33333P@33333³UÀy33333Óc@ffffff,Ày      À�Âõ(\O9@y333333Àq=
×£0>@y�Âõ(\�ò?�Âõ(\�@y{®GázÀ333333@ù      ð?      ð?y      ð¿       Ày       @      Ày      @      ð?y      À      Ày      À      @y              @)r*   r   r   r   r¿   r2   r2   r3   Útest_simple_complex2¤  s     
ý
ý
ýzTestSolve.test_simple_complex2c                 C   s¢   t  g d¢g d¢g d¢g d¢g¡}t  ddgddgd	d
gddgg¡}t  ddgddgddgddgg¡}t||dd�}t||ƒ t| ¡ j|ddd�}t||ƒ d S )N)gq=
×£pý¿y)\�Âõ(¼?)\�Âõ(¼¿y{®Gázü¿áz®Gáò¿yHáz®G@      ø¿)r   g…ëQ¸…Àyq=
×£pý¿¸…ëQ¸ž?y®Gáz®@áz®GáÊ?)r   r   g=
×£p½!ÀyHáz®Gù?ÍÌÌÌÌÌì¿)r   r   r   gÃõ(\�Âõ¿y×£p=
×@\�Âõ(\$Ày®Gáz®<@R¸…ëñCÀy)\�Âõ(#À
×£p=
@y
×£p=Ê8ÀÍÌÌÌÌÌ Ày¤p=
×£è¿ÍÌÌÌÌ0ÀyìQ¸…ë@áz®G�QÀy)\�Âõ(@ìQ¸…ë@yR¸…ë±AÀÃõ(\�2@r�   y       À      @y      @       Ày      @       Ày      ð¿       @y      ð¿      @ù      ð?      ð¿y      @      ÀrÒ   rÊ   TrÆ   )r*   r   r   r   Úconjrë   )rT   rU   r]   Úresr^   r2   r2   r3   Útest_hermitianµ  s&    
ý
ý
ý
zTestSolve.test_hermitianc                 C   sp   t  dd¡ dd¡}tt  |¡d t  d¡dd�}t|g d¢ƒ tt  |¡d t  d¡dd�}t|g d¢ƒ d S )	Nr?   é
   rM   é	   rÅ   rÊ   )ç      "@rê   r7   rÍ   ©r*   r   rR   r   ÚtrilÚonesr   ©rT   rÖ   r^   r2   r2   r3   Útest_pos_and_symÉ  s
    zTestSolve.test_pos_and_symc                 C   sh   t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g	¡}t  d¡d d …d f }ttt||ƒ d S )N)	r?   r   r   r   r   r   r?   r   r?   )	r?   r?   r?   r   r   r   r?   r   r?   )	r   r?   r?   r   r   r   r?   r   r?   )	r?   r   r?   r?   r?   r?   r   r   r   )	r?   r?   r?   r?   r?   r?   r?   r?   r?   rô   )r*   r   r   rp   r   r   ©rT   rU   r]   r2   r2   r3   Útest_singularityÐ  s    
ø	zTestSolve.test_singularityc                 C   sd   t  ddgddgg¡}t  d¡}t ¡ �( t d¡ ttt||ƒ W d   ƒ n1 sV0    Y  d S )Nr?   r7   gÿÿÿÿÿÿï?r>   Úerror)	r*   r   rø   ÚwarningsÚcatch_warningsÚsimplefilterrp   r#   r   rû   r2   r2   r3   Útest_ill_condition_warningÝ  s
    


z$TestSolve.test_ill_condition_warningc                 C   s@   t  d¡}g g g}t||ƒ}t|jdkdƒ t|jdkdƒ d S )Nr>   r   zReturned array is not empty)r>   r   z#Returned empty array shape is wrong)r*   Úeyer   r   Úsizerè   r¿   r2   r2   r3   Útest_empty_rhsä  s
    

zTestSolve.test_empty_rhsc                 C   s2   t  d¡}t j ddd¡}t||ƒ}t||ƒ d S )Nr>   rM   r;   )r*   r  r
   Úrandr   r   r¿   r2   r2   r3   Útest_multiple_rhsë  s    

zTestSolve.test_multiple_rhsc                 C   sr   t  d¡ dd¡d }tt  |¡d t  d¡dd�}t|g d¢ƒ tt  |¡d t  d¡dd�}t|g d¢ƒ d S )	Nrô   rM   r?   T©Ú
transposed)r¼   gš™™™™™É?r?   F)rô   gš™™™™™Àg333333ó¿rö   rù   r2   r2   r3   Útest_transposed_keywordñ  s
    z!TestSolve.test_transposed_keywordc                 C   sJ   t  d¡ t¡}ttƒ� t||dd� W d   ƒ n1 s<0    Y  d S )NrM   Tr  )r*   r  ÚastypeÚcomplexrp   ÚNotImplementedErrorr   ©rT   rU   r2   r2   r3   Útest_transposed_notimplementedø  s    
z(TestSolve.test_transposed_notimplementedc                 C   s   t ttddgdƒ d S )Nr?   r>   ©rp   rq   r   r¹   r2   r2   r3   Útest_nonsquare_aý  s    zTestSolve.test_nonsquare_ac                 C   s@   t tt d¡t d¡ƒt d¡ƒ tttt d¡t d¡ƒ d S )NrM   r;   )r   r   r*   r  rø   rp   rq   r¹   r2   r2   r3   Útest_size_mismatch_with_1D_b   s    "z&TestSolve.test_size_mismatch_with_1D_bc                 C   s   t ttdddd� d S )Nr?   ZzxcvrÊ   r  r¹   r2   r2   r3   Útest_assume_a_keyword  s    zTestSolve.test_assume_a_keywordz5Failure on OS X (gh-7500), crash on Windows (gh-8064)©Úreasonc                 C   sÆ  ddg}g d¢}t jt jt jt jg}t |||¡D �]Œ\}}}|t jt jfv }|dkr\|s\q2d|› d|› d|› �}t j ||¡ 	|¡}	t j |¡ 	|¡}
|r¸|	dt j ||¡  	|¡ }	|d	krÌ|	|	j
 }	n@|dkrä|	|	j
 ¡  }	n(|d
k�r|	 ¡ j
 |	¡dt  |¡  }	|t jt jfv �r"dnd}|dv �rJ|t jt jfv �rJ|d9 }t|	|
|d�}t|	 |¡|
|| || |d� |d	kr2|t jt jfvr2t|	|
|dd�}t|	 |¡|
|| || |d� q2d S )Nró   éd   )ÚgenrÍ   rÅ   rÒ   rÒ   zFailed for size: z, assume_a: z,dtype: rc   rÍ   rÅ   rÜ   çê-�™—q=g�íµ ÷Æ°>)r  rÍ   rÒ   rÊ   ©ÚatolÚrtolÚerr_msgT)rÇ   r  )r*   r	   r,   Ú	complex64r.   Ú	itertoolsÚproductr
   Úrandnr
  rë   rð   r   r  r   r   )rT   ÚsizesZ	assume_asZdtypesr  rÇ   rw   Z
is_complexr  rU   r]   Útolr^   r2   r2   r3   Ú'test_all_type_size_routine_combinations  sR    ÿÿ

ýÿýz1TestSolve.test_all_type_size_routine_combinationsN)&rz   r{   r|   rº   r¾   rÀ   rÃ   rÉ   rË   rÎ   rÐ   rÑ   rÓ   rÔ   rÛ   rà   rá   rå   ræ   rm   ré   rì   rî   rò   rú   rü   r  r  r  r	  r  r  r  r  ÚpytestÚmarkÚskipr"  r2   r2   r2   r3   r´   î  sB   	
			
	
r´   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestSolveTriangularc                 C   s¦   t ddgddggƒ}ddg}t||dd�}t|ddgƒ t|j|dd�}t|ddgƒ t||ddd�}t|ddgƒ tdƒ}t||ddd�}t|d	d
gddggƒ dS )ú:
        solve_triangular on a simple 2x2 matrix.
        r?   r   r>   Tr�   Fru   ©r‘   Ztransr7   ç      à¿N)r   r   r   rë   r   ©rT   rÖ   r]   Zsolr2   r2   r3   rÀ   ;  s    zTestSolveTriangular.test_simplec                 C   s>  t ddgddggƒ}tdƒ}t||ddd�}t|dd	gdd
ggƒ t ddg¡}t||ddd�}t|ddgddggƒ t||ddd�}t|ddgddggƒ t||ddd�}t|ddgddggƒ t|j|ddd�}t|ddgddggƒ t|j|ddd�}t|ddgddggƒ t|j|ddd�}t|ddgddggƒ dS )zA
        solve_triangular on a simple 2x2 complex matrix
        rí   r   rc   r>   Tr?   r(  y      à?      à¿y      Ð¿      Ð¿ru   ù      ð?       @y       €      à¿y      à?      ð?y      Ð?      è¿y      è¿      Ð¿Fr)  N)r   r   r   r   r*   rg   rë   r*  r2   r2   r3   rÃ   P  s"    z'TestSolveTriangular.test_simple_complexc                 C   s>   t ddgddggƒ}ddg}t||ddd�}t|ddgƒ dS )r'  r?   r   r>   TF)r‘   rl   N)r   r   r   r*  r2   r2   r3   rm   m  s    z%TestSolveTriangular.test_check_finiteN)rz   r{   r|   rÀ   rÃ   rm   r2   r2   r2   r3   r&  9  s   r&  c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestInvc                 C   s   t j d¡ d S rµ   r·   r¹   r2   r2   r3   rº   x  s    zTestInv.setup_methodc                 C   sf   ddgddgg}t |ƒ}tt||ƒt d¡ƒ g d¢g d¢g d¢g}t |ƒ}tt||ƒt d¡ƒ d S )Nr?   r>   rM   r;   r³   ©r;   rÁ   r<   ©rB   é   ró   )r   r   r   r*   r  ©rT   rU   Úa_invr2   r2   r3   rÀ   {  s    zTestInv.test_simplec                 C   sh   d}t dƒD ]V}t||gƒ}t |ƒD ] }dd|||f   |||f< q$t|ƒ}tt||ƒt|ƒƒ qd S )Nr8   r;   rÜ   ©rÞ   r
   r   r   r   r   ©rT   rÕ   rÙ   rU   r1  r2   r2   r3   rà   ƒ  s    
ÿzTestInv.test_randomc                 C   s8   ddgddgg}t |ƒ}tt||ƒddgddggƒ d S )Nr?   r>   rM   r°   r   ©r   r   r   r0  r2   r2   r3   rÃ   �  s    zTestInv.test_simple_complexc                 C   sx   d}t dƒD ]f}t||gƒdt||gƒ  }t |ƒD ] }dd|||f   |||f< q4t|ƒ}tt||ƒt|ƒƒ qd S )Nr8   r;   r`   rÜ   r2  r3  r2   r2   r3   rá   ’  s    
ÿzTestInv.test_random_complexc                 C   s<   ddgddgg}t |dd�}tt||ƒddgddggƒ d S )Nr?   r>   rM   r;   Frk   r   r4  r0  r2   r2   r3   rm   œ  s    zTestInv.test_check_finiteN)	rz   r{   r|   rº   rÀ   rà   rÃ   rá   rm   r2   r2   r2   r3   r,  w  s   

r,  c                   @   sª   e Zd Zdd„ Zdd„ Zdd„ Zej dddgd	d	gg d
¢g¡dd„ ƒZ	dd„ Z
ej ddd„ ejd dd	… D ƒ¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚTestDetc                 C   s   t j d¡| _d S )Nl   ¯*ƒnê`/ )r*   r
   Zdefault_rngÚrngr¹   r2   r2   r3   rº   £  s    zTestDet.setup_methodc                 C   sÔ   t  dgg¡}t|ƒ}|jjdks&J ‚t  |¡s4J ‚|dks@J ‚t jdggggdd�}t|ƒ}|jjdksnJ ‚t  |¡s|J ‚|dksˆJ ‚t jdgggt jd�}t|ƒ}|jjdks¶J ‚t  |¡sÄJ ‚|dksÐJ ‚d S )Nr?   Údr7   Úfr”   y      ð?      @rÂ   )r*   r   r   rw   ÚcharZisscalarr  ©rT   rU   Údetar2   r2   r3   Útest_1x1_all_singleton_dims¦  s    z#TestDet.test_1x1_all_singleton_dimsc                 C   s¦   | j jg d¢tjd�}t|ƒ}|jjdks.J ‚|jdks<J ‚t|t 	|¡ƒ | j jg d¢tjd�t 
d¡ }t|ƒ}|jjdks„J ‚|jdks’J ‚t|t 	|¡ƒ d S )N)r;   rÁ   r?   r?   r”   r7  ©r;   rÁ   rc   rÂ   )r6  r
   r*   r	   r   rw   r9  rè   r   Zsqueezer  r:  r2   r2   r3   Útest_1by1_stacked_input_output·  s     z&TestDet.test_1by1_stacked_input_outputrè   r>   r8   )rM   r>   r8   r8   c                 C   s‚   | j jdd|d�}t|ƒtj |¡ }}t||ƒ | j jdd|d�d }|| j jdd|d�7 }t|ƒtj |¡ }}t||ƒ d S )Nç      ð¿r7   )r  rc   r)  ru   )r6  Úuniformr   r*   Úlinalgr   )rT   rè   rU   Zd1Zd2r]   Zd3Zd4r2   r2   r3   Ú#test_simple_det_shapes_real_complexÄ  s    
z+TestDet.test_simple_det_shapes_real_complexc                 C   sê   t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¡}tt|ƒd	ƒ ttt  d
¡ dd¡ƒdƒ t jg d¢g d¢g d¢g d¢gt jd�}tt|ƒdƒ t  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¡d }tt|ƒdƒ d S )N)r?   r?   r?   r?   r?   r?   r?   r?   )r?   rA   r?   rA   r?   rA   r?   rA   )r?   r?   rA   rA   r?   r?   rA   rA   )r?   rA   rA   r?   r?   rA   rA   r?   )r?   r?   r?   r?   rA   rA   rA   rA   )r?   rA   r?   rA   rA   r?   rA   r?   )r?   r?   rA   rA   rA   rA   r?   r?   )r?   rA   rA   r?   rA   r?   r?   rA   g      °@é   rÁ   rE   )r»   r»   ù              ð¿rï   )r»   r»   ù      ð?        rD  )rc   rí   r»   r»   )rE  rc   r»   r»   r”   y      @        )g       Àç      Àr7   rE   rE   rE   rE   rE   )r7   rE   rE   rE   rE   rE   rE   rE   )rE   g      ÀrE   g      Àr7   rE   rE   rE   )rE   r7   rE   rE   rE   rE   rE   rE   )rE   rE   rE   g      ÀrE   g      Àr7   rE   )rE   rE   rE   r7   rE   rE   rE   rE   )rE   rE   rE   rE   rE   g       ÀrE   g      "À)rE   rE   rE   rE   rE   r7   rE   rE   rc   rõ   )r*   r   r   r   r   rR   r  r  r2   r2   r3   Útest_for_known_det_valuesÏ  s>    
ù
ýý
ùùz!TestDet.test_for_known_det_valuesÚtypc                 C   s   g | ]}|d vr|‘qS )ZgGr2   )Ú.0r^   r2   r2   r3   Ú
<listcomp>ô  s   ÿzTestDet.<listcomp>ZAllNc                 C   s8   d}| j  ||g¡ |¡}tt|ƒtjtjfƒs4J ‚d S )Nr;   )r6  r
   r
  Ú
isinstancer   r*   r,   r.   )rT   rH  rÕ   rU   r2   r2   r3   Ú"test_sample_compatible_dtype_inputô  s    z*TestDet.test_sample_compatible_dtype_inputc              	   C   sB  d}t dg d¢ƒD ]P\}}tt|d��, ttjddggd |d�ƒ W d   ƒ q1 sX0    Y  qtt|d��, ttjd	d
ggd dd�ƒ W d   ƒ n1 s¢0    Y  tt|d��, ttjddggd dd�ƒ W d   ƒ n1 sê0    Y  tt|d��, ttjddggd dd�ƒ W d   ƒ n1 �s40    Y  d S )Nz!cannot be cast to float\(32, 64\)ZSUO)Zbytes8Zstr32Úobject©ÚmatchrU   r]   r>   r”   ó   aó   bÚVr  éÈ   zdatetime64[s]ztimedelta64[s])Úziprp   Ú	TypeErrorr   r*   r   )rT   ÚmsgÚcÚtr2   r2   r3   Útest_incompatible_dtype_inputû  s    <::z%TestDet.test_incompatible_dtype_inputc                 C   sR  t tt ddg¡ƒdƒ t tt g d¢¡ƒt g ¡ƒ t tt g d¢¡ƒt g d¢¡ƒ ttdd��" tt g d¢¡ƒ W d   ƒ n1 sŒ0    Y  ttd	d�� tt g ¡ƒ W d   ƒ n1 sÆ0    Y  ttdd��  tt g g¡ƒ W d   ƒ n1 �s0    Y  ttdd��" tt g gg¡ƒ W d   ƒ n1 �sD0    Y  d S )
Nr   r7   )r   r   r   )rM   r   r   ©r7   r7   r7   zLast 2 dimensionsrN  )r   r   rM   zat least two-dimensional)r   r   r*   Úemptyr   rp   rq   r¹   r2   r2   r3   Útest_empty_edge_cases	  s    "0,0zTestDet.test_empty_edge_casesc                 C   sL   t  d¡ dd¡ t j¡}| ¡ }t|dd�}t|dƒ ||k ¡ rHJ ‚d S )Nrô   rM   T©Úoverwrite_arE   )	r*   r   rR   r
  r	   Úcopyr   r   Úall)rT   rU   Úacr;  r2   r2   r3   Útest_overwrite_a  s
    
zTestDet.test_overwrite_ac                 C   s>   t  g d¢g d¢g d¢g¡}|jdd� tt|dd�dƒ d S )	N)rL   rE   r7   )ç      @rn   r?  rZ  F)ÚwriteTr]  rK   )r*   r   Zsetflagsr   r   r  r2   r2   r3   Útest_readonly_array!  s    zTestDet.test_readonly_arrayc                 C   sJ   ddgdt jgg}ttdd�� t|ƒ W d   ƒ n1 s<0    Y  d S )Nr?   r>   rM   zarray must not containrN  )r*   Úinfrp   rq   r   r  r2   r2   r3   Útest_simple_check_finite'  s    z TestDet.test_simple_check_finite)rz   r{   r|   rº   r<  r>  r#  r$  ÚparametrizerB  rG  r*   Ú	typecodesrL  rY  r\  rb  re  rg  r2   r2   r2   r3   r5  ¢  s   

%$
r5  c                 C   s2   t | ƒ}|rt|ƒ}t|| ƒ}t||ƒ}t||ƒS )N)r   r   r   r   )rU   r]   ÚcmplxÚatÚa1Úb1r2   r2   r3   Údirect_lstsq-  s    

rn  c                   @   sp   e Zd Z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d„ Zdd„ Zdd„ Zdd„ ZdS )Ú	TestLstsq)ZgelsdZgelssÚgelsyNc                 C   sÊ   t D ]À}tjddgddgg|d�}tjD ]š}dD ]�}dD ]†}| ¡ }tj||d�}| ¡ }t|||||d�}	|	d	 }
|	d
 }t|d
kd| ƒ tt	||
ƒ|dt
|jƒ dt
|jƒ d| d� q8q0q(qd S )Nr?   r8   r:   r;   r”   ©TF©)©r?   r   rÄ   rs  )rI   ©r:   r;   ©Úlapack_driverr^  Úoverwrite_br   r>   ú!expected efficient rank 2, got %srC  ú
driver: %sr  )ÚREAL_DTYPESr*   r   ro  Úlapack_driversr_  r   r   r   r   r4   rw   )rT   rw   rU   rv  Ú	overwriteÚbtrl  r]   rm  Úoutr^   rÚ   r2   r2   r3   Útest_simple_exact9  s.    
ýÿýzTestLstsq.test_simple_exactc              
   C   s4  t D �](}tjddgddgddgg|d�}tjg d¢|d�}tjD ]ê}dD ]à}| ¡ }| ¡ }t|||||d	�}|d
 }	|dkršt || |	¡ d ¡}
n|d }
|d }t	|dkd| ƒ t
tt||	ƒ| d ƒjd
d�|
dt|jƒ dt|jƒ d| d� t
|	ddt|jƒ dt|jƒ d| d� qJqBqd S )Nr?   r>   r;   rÁ   rM   r”   r³   rq  ru  r   rp  rx  ©ÚaxisrC  ry  ©r  r  r  )gã¶mÛ¶mÛ¿g›¶mÛ¶më?)rz  r*   r   ro  r{  r_  r   Úsumr   r   r   râ   r4   rw   )rT   rw   rU   r]   rv  r|  rl  rm  r~  r^   Ú	residualsrÚ   r2   r2   r3   Útest_simple_overdetR  s8    
 
þüýzTestLstsq.test_simple_overdetc              
   C   s<  t D �]0}tjddgddgddgg|d�}tjg d¢|d�}tjD ]ò}dD ]è}| ¡ }| ¡ }t|||||d	�}|d
 }	|dkr¢|| |	¡ }
t |
|
 	¡  ¡}n|d }|d }t
|dkd| ƒ ttt||	ƒ| d ƒjd
d�|dt|jƒ dt|jƒ d| d� t|	ddt|jƒ dt|jƒ d| d� qJqBqd S )Nr+  r>   r;   rÁ   rM   r”   )r?   rŸ   rM   rq  ru  r   rp  r?   rx  r€  rC  ry  r‚  )yîu¯{ÝëÞ¿E(BŠÐ?yÓ½îu¯{í?(YÉJV²Ò?)ÚCOMPLEX_DTYPESr*   r   ro  r{  r_  r   r   rƒ  rð   r   r   râ   r4   rw   )rT   rw   rU   r]   rv  r|  rl  rm  r~  r^   rñ   r„  rÚ   r2   r2   r3   Útest_simple_overdet_complexo  s<    
 
þüûz%TestLstsq.test_simple_overdet_complexc              
   C   s¾   t D ]´}tjg d¢g d¢g|d�}tjddg|d�}tjD ]|}dD ]r}| ¡ }| ¡ }t|||||d�}|d }	|d }
t|
dkd	|
 ƒ t|	d
dt	|j
ƒ dt	|j
ƒ d| d� qBq:qd S )Nr³   r-  r”   r?   r>   rq  ru  r   rx  )gÌÆqÇq¬¿gÇqÇq¼?gdÇqÇÑ?rC  ry  r‚  )rz  r*   r   ro  r{  r_  r   r   r   r4   rw   )rT   rw   rU   r]   rv  r|  rl  rm  r~  r^   rÚ   r2   r2   r3   Útest_simple_underdet�  s&    
þüzTestLstsq.test_simple_underdetc                 C   sd  t j d¡}tD �]L}dD �]@}tjD �]2}dD �]&}t j| ||g¡|d�}t|ƒD ] }dd|||f   |||f< qVtdƒD ]Ö}t j| |dg¡|d�}| ¡ }	| ¡ }
t	|	|
|||d	�}|d
 }|d }t
||kd|› d|› �ƒ |t ju �r&tt||ƒ|dt|	jƒ dt|	jƒ d| d� q€tt||ƒ|dt|	jƒ dt|	jƒ d| d� q€q0q&qqd S )Nr¶   ©r8   rS  rq  r”   r8   rÜ   r;   rM   ru  r   r>   úexpected efficient rank ú, got iô  ry  r‚  éè  )r*   r
   ÚRandomStaterz  ro  r{  ÚasarrayrÞ   r_  r   r   r	   r   r   r4   rw   ©rT   r6  rw   rÕ   rv  r|  rU   rÙ   r]   rl  rm  r~  r^   rÚ   r2   r2   r3   Útest_random_exact¦  sF    


ýÿ
ü
üzTestLstsq.test_random_exactz$may segfault on Alpine, see gh-17630r  c                 C   sv  t j d¡}tD �]^}dD �]R}tjD �]D}dD �]8}t j| ||g¡d| ||g¡  |d�}t|ƒD ] }dd|||f   |||f< qhtdƒD ]Ö}t j| |d	g¡|d�}| ¡ }	| ¡ }
t	|	|
|||d
�}|d }|d }t
||kd|› d|› �ƒ |t ju �r8tt||ƒ|dt|	jƒ dt|	jƒ d| d� q’tt||ƒ|dt|	jƒ dt|	jƒ d| d� q’q0q&qqd S )Nr¶   r‰  rq  rc   r”   r8   rÜ   r>   rM   ru  r   rŠ  r‹  i�  ry  r‚  rŒ  )r*   r
   r�  r†  ro  r{  rŽ  rÞ   r_  r   r   r  r   r   r4   rw   r�  r2   r2   r3   Útest_random_complex_exactÉ  sH    


"ÿþÿ
ü
üz#TestLstsq.test_random_complex_exactc                 C   s*  t j d¡}tD �]}dD �]\}}tjD ]ö}dD ]ì}t j| ||g¡|d�}t|ƒD ] }dd|||f   |||f< qVtdƒD ]œ}t j| |dg¡|d�}	| ¡ }
|	 ¡ }t	|
||||d	�}|d
 }|d }t
||kd|› d|› �ƒ t|t||	d
d�dt|
jƒ dt|
jƒ d| d� q€q2q*qqd S )Nr¶   ©)r8   é   )rS  r>   rq  r”   r8   rÜ   r;   rM   ru  r   r>   rŠ  r‹  ©rj  rC  ry  r‚  )r*   r
   r�  rz  ro  r{  rŽ  rÞ   r_  r   r   r   rn  r4   rw   ©rT   r6  rw   rÕ   Úmrv  r|  rU   rÙ   r]   rl  rm  r~  r^   rÚ   r2   r2   r3   Útest_random_overdetí  s8    

ýÿüzTestLstsq.test_random_overdetc                 C   s>  t j d¡}tD �]&}dD �]\}}tjD �]}dD ]þ}t j| ||g¡d| ||g¡  |d�}t|ƒD ] }dd|||f   |||f< qjtdƒD ]œ}t j| |d	g¡|d�}	| ¡ }
|	 ¡ }t	|
||||d
�}|d }|d }t
||kd|› d|› �ƒ t|t||	dd�dt|
jƒ dt|
jƒ d| d� q”q4q*qqd S )Nr¶   r’  rq  rc   r”   r8   rÜ   r>   rM   ru  r   rŠ  r‹  r?   r”  rC  ry  r‚  )r*   r
   r�  r†  ro  r{  rŽ  rÞ   r_  r   r   r   rn  r4   rw   r•  r2   r2   r3   Útest_random_complex_overdet	  s<    
"ÿýÿüz%TestLstsq.test_random_complex_overdetc              	   C   sò   t ƒ �}| td¡ W d   ƒ n1 s(0    Y  t d¡}t tdtj	dd¡D ]œ\}}}}}| 
|¡}tj||d�}	| ¡ }
|	 ¡ }t|
|||||d�}|d }|d }t|dkd	| ƒ tt||ƒ|	d
t|jƒ d
t|jƒ d| d� qPd S )NzIinternal gelsd driver lwork query error,.*Falling back to 'gelss' driver.))r?   r8   rt  rr  rq  r”   )rv  rl   r^  rw  r   r>   rx  rC  ry  r‚  )r   ÚfilterÚRuntimeWarningr*   r   r  r  rz  ro  r{  r
  r_  r   r   r   r   r4   rw   )rT   Úsuprk  rw   r}  rv  r|  rl   rU   r]   rl  rm  r~  r^   rÚ   r2   r2   r3   rm   '  s8    ÿ"
üÿ
þýzTestLstsq.test_check_finitec           	   	   C   s¤   dD ]š\}}t  |¡}tt  |¡|ƒ\}}}}t|t  |d f|dd …  ¡ƒ |d rbt  d¡nt jj|dd�d }t||ƒ t|dkdƒ t|t  d¡ƒ qd S )N))©r   r>   ©r   ))r   r;   rœ  )©r;   r   )r;   )rž  )r;   r>   r?   r�  r   r€  r>   zexpected rank 0)	r*   rø   r   r   r   r[  rA  r   r   )	rT   Za_shapeZb_shaper]   r^   ZresiduesZrankÚsZresidues_should_ber2   r2   r3   Útest_zero_sizeG  s    
"ÿ
zTestLstsq.test_zero_sizeN)rz   r{   r|   r{  r  r…  r‡  rˆ  r�  r#  r$  Úskipifr'   r‘  r—  r˜  rm   r   r2   r2   r2   r3   ro  6  s   !#
# ro  c                   @   sŒ   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ej dddeg¡ej dddeg¡dd„ ƒƒZdd„ ZdS )ÚTestPinvc                 C   s   t j d¡ d S rµ   r·   r¹   r2   r2   r3   rº   W  s    zTestPinv.setup_methodc                 C   s@   t g d¢g d¢g d¢gtd�}t|ƒ}tt||ƒt d¡ƒ d S ©Nr³   r-  r.  r”   rM   ©r   Úfloatr   r   r   r*   r  ©rT   rU   Úa_pinvr2   r2   r3   Útest_simple_realZ  s    zTestPinv.test_simple_realc                 C   sb   t g d¢g d¢g d¢gtd�dt g d¢g d¢g d¢gtd�  }t|ƒ}tt||ƒt d	¡ƒ d S ©
Nr³   r-  r.  r”   rc   )ró   r/  rB   )r<   rÁ   r;   )rM   r>   r?   rM   r¤  r¦  r2   r2   r3   rÃ   _  s    ÿÿÿzTestPinv.test_simple_complexc                 C   sN   t g d¢g d¢g d¢gtd�}t|ƒ}t g d¢g d¢g d¢gƒ}t||ƒ d S )Nr³   r-  ©rB   r/  rô   r”   ©g|�Çqä¿gÔ•VUUÅ¿gãcä8ŽÓ?©gƒÓÇq¬¿gù°^©0Á¢<gƒÓÇq¬?©gù9Žãà?gÔ•VUUÅ?g:8ï7ŽãÈ¿©r   r¥  r   r   ©rT   rU   r§  rŠ   r2   r2   r3   Útest_simple_singularf  s    þzTestPinv.test_simple_singularc                 C   sH   t g d¢g d¢gtd�}t|ƒ}t ddgddgdd	ggƒ}t||ƒ d S )
Nr³   r-  r”   g’Ö‹ã8î¿g#¬ÇqÜ?g#¬Çq¼¿g#¬Çq¼?gIëÅqç?g#¬ÇqÌ¿r®  r¯  r2   r2   r3   Útest_simple_colsn  s    þzTestPinv.test_simple_colsc                 C   sH   t ddgddgddggtd�}t|ƒ}t g d¢g d	¢gƒ}t||ƒ d S )
Nr?   r>   rM   r;   rÁ   r<   r”   )g·DpTUUõ¿gÚÁQUUÕ¿g“vWUUå?)g·DpTUUñ?gÚÁQUUÕ?g&í>®ªªÚ¿r®  r¯  r2   r2   r3   Útest_simple_rowsv  s    ÿzTestPinv.test_simple_rowsc                 C   s@   t g d¢g d¢g d¢gƒ}t|dd�}tt||ƒt d¡ƒ d S )Nr³   )r;   rÁ   rˆ   r.  Frk   rM   )r   r   r   r   r*   r  r¦  r2   r2   r3   rm   }  s    zTestPinv.test_check_finitec                 C   sF   g d¢g d¢g d¢g}t |ƒ}tg d¢g d¢g d¢gƒ}t||ƒ d S )Nr³   r-  rª  r«  r¬  r­  )r   r   r   r¯  r2   r2   r3   Útest_native_list_argument‚  s    þz"TestPinv.test_native_list_argumentc                 C   sü   d}t tj ||¡ƒ\}}t d¡ dd¡}| ¡ }d|d< d}d}t||d	d
�}|| | | }	|| | | }
ttj	 
|	¡ddd� ttj	 
|
¡ddd� t|||d
�}|| | | }	|| | | }
ttj	 
|	¡ddd� ttj	 
|
¡ddd� d S )Né   g     €A@rB   rÁ   gü©ñÒMbP?)r   r   çñhãˆµøä>gš™™™™™©?rE   ©r  r  gü©ñÒMb@?©r  g‚vIhÂ%,=g;ßO�—î@ç{®Gáz„?©r  )r"   r*   r
   r  r   rR   r_  r   r   rA  r   )rT   rÕ   ÚqÚ_Úa_mrU   r  r  Úa_pÚadiff1Úadiff2r2   r2   r3   Útest_atol_rtolŠ  s"    zTestPinv.test_atol_rtolÚcondr?   NÚrcondc                 C   sj   |t u r&|t u r&tt d¡||d� n@tjdd��$ tt d¡||d� W d   ƒ n1 s\0    Y  d S )N©r>   r>   )rÁ  rÂ  z"cond" and "rcond"rN  )r)   r   r*   rø   r#  Údeprecated_call)rT   rÁ  rÂ  r2   r2   r3   Útest_cond_rcond_deprecation¥  s    z$TestPinv.test_cond_rcond_deprecationc                 C   sB   t jdd��" tt d¡ddƒ W d   ƒ n1 s40    Y  d S )Nzuse keyword argumentsrN  rÃ  rE   ç»½×Ùß|Û=)r#  rÄ  r   r*   rø   r¹   r2   r2   r3   Útest_positional_deprecation°  s    z$TestPinv.test_positional_deprecation)rz   r{   r|   rº   r¨  rÃ   r°  r±  r²  rm   r³  rÀ  r#  r$  rh  r)   rÅ  rÇ  r2   r2   r2   r3   r¢  V  s   	r¢  c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestPinvSymmetricc                 C   s   t j d¡ d S rµ   r·   r¹   r2   r2   r3   rº   ·  s    zTestPinvSymmetric.setup_methodc                 C   sP   t g d¢g d¢g d¢gtd�}t ||j¡}t|ƒ}tt ||¡t d¡ƒ d S r£  )r   r¥  r*   r   rë   r   r   r  r¦  r2   r2   r3   r¨  º  s    z"TestPinvSymmetric.test_simple_realc                 C   s|   t g d¢g d¢g d¢gtd�}t ||j¡}tj |¡\}}}|d  d9  < t || |¡}t|ƒ}t|ƒ}t	||ƒ d S )Nr³   r-  rª  r”   r   rA   )
r   r¥  r*   r   rë   rA  Zsvdr   r   r   )rT   rU   rX   rŸ  Úvtr§  Za_pinvhr2   r2   r3   Útest_nonpositiveÀ  s    z"TestPinvSymmetric.test_nonpositivec                 C   sv   t g d¢g d¢g d¢gtd�dt g d¢g d¢g d¢gtd�  }t || ¡ j¡}t|ƒ}tt ||¡t d	¡ƒ d S r©  )	r   r¥  r*   r   rð   rë   r   r   r  r¦  r2   r2   r3   rÃ   Ê  s    ÿÿÿz%TestPinvSymmetric.test_simple_complexc                 C   sT   t g d¢g d¢g d¢gtd�}t ||j¡}t| ¡ ƒ}tt ||¡t d¡ƒ d S r£  )	r   r¥  r*   r   rë   r   Útolistr   r  r¦  r2   r2   r3   r³  Ò  s    z+TestPinvSymmetric.test_native_list_argumentc                 C   s  d}t tj ||¡ƒ\}}t g d¢dg|d   ¡}|j| | }t g d¢dg|d   ¡}|j| | }d}d}t||dd	�}|| | | }	|| | | }
tt|	ƒ|d
d� tt|
ƒddd� t|||d	�}|| | | }	|| | | }
tt|	ƒdd
d� tt|
ƒdd
d� d S )Nr´  )r;   rM   r>   r?   çvk™Çó?g’ï­£Ãä>guŒñ‚œ°>r<   )r;   rM   r>   r?   rÌ  rE   rE   rµ  gü‹ 1“¨?r¶  rÜ   r¹  r  g•dyáý¥=r·  ç-Cëâ6?)	r"   r*   r
   r  rg   rë   r   r   r   )rT   rÕ   rº  r»  rU   r¼  r  r  r½  r¾  r¿  r2   r2   r3   rÀ  Ø  s$    z TestPinvSymmetric.test_atol_rtolN)	rz   r{   r|   rº   r¨  rÊ  rÃ   r³  rÀ  r2   r2   r2   r3   rÈ  µ  s   
rÈ  Úscale)g#B’¡œÇ;r7   ç@Œµx¯DÚpinv_c                 C   sD   t  ddgddgg¡|  }t  dt  |¡ ¡}||ƒ}t||ƒ d S )Nr?   r   rÆ  r7   )r*   r   rg   r   )rÎ  rÐ  r^   rŠ   Zx_invr2   r2   r3   Útest_auto_rcondô  s    rÑ  c                   @   sV   e Z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 )ÚTestVectorNormsc                 C   sÜ   t jd D ]`}t jg d¢|d�}tdt  |¡jjd ƒ}tt|ƒt  	d¡|d� tt|dƒt  	d¡|d� q
t jd	 D ]`}t jg d
¢|d�}tdt  |¡jjd ƒ}tt|ƒt  	d¡|d� tt|dƒt  	d¡|d� qvd S )NZAllFloatr³   r”   gVçž¯Ò<r8   rC   r¹  r>   ÚComplex)rc   r`   y              @)
r*   ri  r   Úmaxr/   r0   Úrealr   r   Úsqrt)rT   rw   r^   r!  r2   r2   r3   Ú
test_typesÿ  s    zTestVectorNorms.test_typesc                 C   s    t dgtd�}tt|ƒ|ƒ d S )NrÏ  r”   )r   r	   r   r   r  r2   r2   r3   Útest_overflow  s    zTestVectorNorms.test_overflowc                 C   sd   t dgdgd  td�}ztt|ƒd ddd� W n, ty^   d}tt|ƒd d	|d
� Y n0 d S )Nç     ˆÃ@r?   i'  r”   ru   r¸  r·  zO: Result should equal either 0.0 or 0.5 (depending on implementation of snrm2).rE   )r  )r   r	   r   r   ÚAssertionErrorr   )rT   rU   rV  r2   r2   r3   Útest_stable  s    zTestVectorNorms.test_stablec                 C   s,   t tg d¢dƒdƒ t tg d¢dƒdƒ d S )N)r?   r   rM   r   r>   r³   rM   )r   r   r¹   r2   r2   r3   Útest_zero_norm  s    zTestVectorNorms.test_zero_normc                 C   s^   t  ddgddgggd d¡}tt|dd�ddggd ƒ tt|ddd�d	gd gd ƒ d S )
Nr>   r?   rM   r;   r7  r€  ç5ýD+Ø@çÃ6ûf~@rc  )r*   r   r   r   r  r2   r2   r3   Útest_axis_kwd#  s    zTestVectorNorms.test_axis_kwdc                 C   sx   t  ddgddgggd d¡}t|ddd�}t|dd	gggd ƒ t|jd
kƒ tt|dddd�dgdgggd ƒ d S )Nr>   r?   rM   r;   r7  T)r�  ÚkeepdimsrÝ  rÞ  )r>   r?   r>   rn   g      @)r*   r   r   r   r   rè   rû   r2   r2   r3   Útest_keepdims_kwd(  s
    z!TestVectorNorms.test_keepdims_kwdz64-bit BLAS requiredr  c                 C   s<   t dd� tjdgtjd�}d|d< t|ƒ}~t|dƒ d S )NihB  )Zfree_mbl        r”   r?   rA   r7   )r&   r*   r   r,   r   r   )rT   r^   rñ   r2   r2   r3   Útest_large_vector/  s    
z!TestVectorNorms.test_large_vectorN)rz   r{   r|   r×  rØ  rÛ  rÜ  rß  rá  r#  r$  r¡  r(   râ  r2   r2   r2   r3   rÒ  ý  s   rÒ  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestMatrixNormsc           	   
   C   sö   t j d¡ dD ]à\}}t jt jt jt jt jfD ]¾}dt j ||¡ 	|¡ }t  
|jt j¡r€|dt j ||¡   	|¡}t j}nt j}d ddddd	t jt j fD ]L}t||d
�}t jj||d
�}t  ||¡s t jj| 	|¡|d
�}t||ƒ q q0qd S )Nr¶   )re   )r?   rM   )rM   r?   )r;   r;   r=  )rÁ   r;   ró   y              $@Zfror?   rA   r>   éþÿÿÿ)Úord)r*   r
   r¸   r	   r,   r  r.   Zint64r  r
  Z
issubdtyperw   Zcomplexfloatingrf  r   rA  Zallcloser   )	rT   rÕ   r–  rX  rÖ   Zt_highÚorderÚactualZdesiredr2   r2   r3   Útest_matrix_norms;  s    z!TestMatrixNorms.test_matrix_normsc                 C   s  t  ddgddgggd d¡}t|t jdd�}tt  |dd¡t jd	d�}t|dd	d�}t||ƒ t||ƒ t||ƒ t|j|j  koŽ|jkn  ƒ t|ddd�}tt  |dd¡dd	d�}t|t jd	d�}t||ƒ t||ƒ t||ƒ t|j|j  k�o|jkn  ƒ d S )
Nr>   r?   rM   r;   r7  rs  )rå  r�  r   rÄ   )r*   r   r   rf  Úswapaxesr   r   rè   )rT   rU   r]   rW  r7  r2   r2   r3   rß  O  s    


"


zTestMatrixNorms.test_axis_kwdc                 C   sZ   t jddd� dddd¡}t|t jdd	d
�}t|ddd	d
�}t||ƒ t|j|jkƒ d S )Néx   r7  r”   r>   rM   r;   rÁ   rs  T)rå  r�  rà  r?   rÄ   )r*   r   rR   r   rf  r   r   rè   )rT   rU   r]   rW  r2   r2   r3   rá  `  s
    
z!TestMatrixNorms.test_keepdims_kwdN)rz   r{   r|   rè  rß  rá  r2   r2   r2   r3   rã  9  s   rã  c                   @   sT   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S )ÚTestOverwritec                 C   s   t tddgƒ d S ©N©rM   rM   rç   )r%   r   r¹   r2   r2   r3   Ú
test_solvei  s    zTestOverwrite.test_solvec                 C   s   t tddgƒ d S rì  )r%   r   r¹   r2   r2   r3   Útest_solve_triangularl  s    z#TestOverwrite.test_solve_triangularc                 C   s   t dd„ ddgƒ d S )Nc                 S   s   t d| |ƒS )NrI   )r   )rV   r]   r2   r2   r3   Ú<lambda>p  ó    z1TestOverwrite.test_solve_banded.<locals>.<lambda>)r;   r<   ©r<   r$   r¹   r2   r2   r3   Útest_solve_bandedo  s    ÿzTestOverwrite.test_solve_bandedc                 C   s   t tddgƒ d S )N)r>   r<   rò  )r%   r   r¹   r2   r2   r3   Útest_solveh_bandeds  s    z TestOverwrite.test_solveh_bandedc                 C   s   t tdgƒ d S ©Nrí  )r%   r   r¹   r2   r2   r3   Útest_invv  s    zTestOverwrite.test_invc                 C   s   t tdgƒ d S rõ  )r%   r   r¹   r2   r2   r3   Útest_dety  s    zTestOverwrite.test_detc                 C   s   t tddgƒ d S )N)rM   r>   rç   )r%   r   r¹   r2   r2   r3   Ú
test_lstsq|  s    zTestOverwrite.test_lstsqc                 C   s   t tdgƒ d S rõ  )r%   r   r¹   r2   r2   r3   Ú	test_pinv  s    zTestOverwrite.test_pinvc                 C   s   t tdgƒ d S rõ  )r%   r   r¹   r2   r2   r3   Ú
test_pinvh‚  s    zTestOverwrite.test_pinvhN)rz   r{   r|   rî  rï  ró  rô  rö  r÷  rø  rù  rú  r2   r2   r2   r3   rë  h  s   rë  c                   @   sL   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S )ÚTestSolveCirculantc                 C   sB   t  g d¢¡}t  g d¢¡}t||ƒ}tt|ƒ|ƒ}t||ƒ d S ©N)r?   r>   rM   rÁ   )r?   rA   r?   r   )r*   r   r   r   r   r   ©rT   rW  r]   r^   Úyr2   r2   r3   Útest_basic1ˆ  s
    
zTestSolveCirculant.test_basic1c                 C   sF   t  g d¢¡}t  d¡ dd¡}t||ƒ}tt|ƒ|ƒ}t||ƒ d S )N©r?   r>   éýÿÿÿrÌ   r´  r;   rM   ©r*   r   r   rR   r   r   r   r   rý  r2   r2   r3   Útest_basic2�  s
    
zTestSolveCirculant.test_basic2c                 C   sH   t  g d¢¡}t  d¡ ddd¡}t||ƒ}tt|ƒ|ƒ}t||ƒ d S )Nr   é   r;   rM   r>   r  rý  r2   r2   r3   Útest_basic3—  s
    
zTestSolveCirculant.test_basic3c                 C   sJ   t  g d¢¡}t  d¡ dd¡d }t||ƒ}tt|ƒ|ƒ}t||ƒ d S )N)r+  r  r°   rÁ   r/  r;   r>   y              à?r  rý  r2   r2   r3   rd   Ÿ  s
    
zTestSolveCirculant.test_complexc                 C   sJ   t j d¡ t j d¡}t j d¡}t||ƒ}tt|ƒ|ƒ}t||ƒ d S )Ni1Ô  é2   )r*   r
   r¸   r  r   r   r   r   rý  r2   r2   r3   Útest_random_b_and_c§  s    
z&TestSolveCirculant.test_random_b_and_cc                 C   s\   t  g d¢¡}t  g d¢¡}t||dd�}tt|ƒ|ƒ\}}}}t||ƒ ttt||ƒ d S )N©r?   r?   r   r   )r?   r>   rM   r;   r   )Zsingular)r*   r   r   r   r   r   rp   r   )rT   rW  r]   r^   rþ  rñ   ZrnkrŸ  r2   r2   r3   Útest_singular°  s    
z TestSolveCirculant.test_singularc                 C   s  t  g d¢gg d¢gg¡}t  g d¢g d¢g d¢g¡}t||dd�}t|jdƒ t  |¡}tt|d	 ƒ|jƒ|d d …d	d d …f< tt|d ƒ|jƒ|d d …dd d …f< t	||ƒ t||dd
d�}t|jdƒ t	t  
|d
d	¡|ƒ tt  |dd¡|jdd�}t|jdƒ t	||ƒ d S )N)rA   g      @rM   g      @)r?   r<   r<   g      @)r   r   r?   r?   r  )r?   rA   r   r   r?   )Úbaxis)r;   r>   rM   r   rA   )r
  Zoutaxis)r>   rM   r;   r>   )Zcaxis)r*   r   r   r   rè   Ú
empty_liker   r   rë   r   Zmoveaxisré  )rT   rW  r]   r^   rŠ   r2   r2   r3   Útest_axis_args¹  s    
&&
z!TestSolveCirculant.test_axis_argsc                 C   s6   g d¢}g d¢}t ||ƒ}tt|ƒ|ƒ}t||ƒ d S rü  )r   r   r   r   rý  r2   r2   r3   ry   Ò  s
    
z-TestSolveCirculant.test_native_list_argumentsN)rz   r{   r|   rÿ  r  r  rd   r  r	  r  ry   r2   r2   r2   r3   rû  †  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S )ÚTestMatrix_Balancec                 C   s   t ttdƒ d S )NzSome string for fail)rp   rq   r!   r¹   r2   r2   r3   Útest_string_argÝ  s    z"TestMatrix_Balance.test_string_argc                 C   sD   t ttt ddgdtjgg¡ƒ t ttt ddgdtjgg¡ƒ d S )Nr?   r>   rM   )rp   rq   r!   r*   r   rf  Únanr¹   r2   r2   r3   Útest_infnan_argà  s    ÿÿz"TestMatrix_Balance.test_infnan_argc                 C   s@   t t ddgddgg¡ƒ\}}tt t t |¡¡¡dgƒ d S )NrŒ  r?   r   rÁ   )r!   r*   r   r   ÚdiffÚlog2rg   )rT   r»  rþ  r2   r2   r3   Útest_scalingæ  s    zTestMatrix_Balance.test_scalingc                 C   sB   t  g d¢g d¢g d¢g¡}t|ƒ\}}tt||ƒ |¡|ƒ d S )N)r?   r   rÍ  )r?   r?   r¸  )rÙ  g      Y@r?   )r*   r   r!   r   r   r   )rT   rÖ   r^   rþ  r2   r2   r3   Útest_scaling_orderí  s    z%TestMatrix_Balance.test_scaling_orderc                 C   sR   t t ddgddgg¡dd�\}\}}tt t |¡¡dgƒ t|t d¡ƒ d S )NrŒ  r?   r   ©ZseparaterÁ   r>   )r!   r*   r   r   r  r  r   r   )rT   r»  rþ  Úzr2   r2   r3   Útest_separateò  s
    ÿz TestMatrix_Balance.test_separatec                 C   s`   t t d¡t t d¡¡t d¡ƒ}t|dd�\}\}}t|t |¡ƒ t|t g d¢¡ƒ d S )NrÃ  rí  r?   r  )r   r?   r<   rÁ   r;   rM   r>   )r    r*   rø   r÷   r!   r   Z	ones_liker   )rT   rÖ   r^   rþ  r  r2   r2   r3   Útest_permutationø  s    ÿz#TestMatrix_Balance.test_permutationc              	   C   sè   t  g d¢g d¢g d¢g d¢g d¢g¡t  g d¢g d¢g d¢g d¢g¡t  g d	¢g d
¢g d¢g d¢g¡f}|D ]t}t|ƒ\}}t|dd�\}\}}t  |¡}t  |jd ¡||< t|t  |¡|d d …f ƒ tt||ƒ 	|¡|ƒ qnd S )N)rE   rE   rE   rE   ç�íµ ÷ÆÀ>)rE   rE   rE   rE   rE   )rL   rL   rE   rE   rE   )rE   rE   r  rE   rE   )r)  rE   rE   rE   )rE   r?  rE   rE   )r7   rE   r)  rE   )rE   r7   rE   r?  )rF  rE   r7   rE   )r?  r?  ç       €r7   )rF  r  r  rE   )r?  r  r7   r?  r?   r  r   )
r*   r   r!   r  r   rè   r   rg   r   r   )rT   ZcasesrÖ   r^   rþ  rŸ  ÚpÚipr2   r2   r3   Útest_perm_and_scalingÿ  s0    
ü
ý
ýô
z(TestMatrix_Balance.test_perm_and_scalingN)
rz   r{   r|   r  r  r  r  r  r  r  r2   r2   r2   r3   r  Û  s   r  )r   )Or  rþ   Únumpyr*   r   r   r   r   r   r   r   r	   Znumpy.randomr
   Znumpy.testingr   r   r   r   r   r   r   r#  r   rp   Zscipy.linalgr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   Zscipy.linalg._testutilsr%   Zscipy._lib._testutilsr&   r'   Zscipy.linalg.blasr(   Zscipy._lib.deprecationr)   r,   r+   rz  r  r.   r-   r†  ZDTYPESr4   r5   r}   r´   r&  r,  r5  rn  ro  r¢  rÈ  r$  rh  rÑ  rÒ  rã  rë  rû  r  r2   r2   r2   r3   Ú<module>   sT   ($L
   =  M>+ 
	  "_?</U