o
    Ö­jžÏ ã                   @   sL  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 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 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z= d d	lm>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP d d
lQmRZR d dlSmTZT d dlUmVZV d dlWmXZX zd dlYmZZZ W n e[yç   dZZY nw ejdkpòe \¡ dv Z]de^fdd„Z_ejEej`gZaejFejbgZceaec Zddd„ ZeG dd„ dƒZfG dd„ dƒZgG dd„ dƒZhG dd„ dƒZiG dd„ dƒZjG d d!„ d!ƒZkG d"d#„ d#ekƒZlejmjne]d$d%�ejm od&¡d'd(„ ƒƒZpG d)d*„ d*ƒZqG d+d,„ d,ƒZrG d-d.„ d.ƒZsG d/d0„ d0ƒZtG d1d2„ d2ƒZuG d3d4„ d4ƒZvd ZwZxeZdu�r•eZd5 d6 d7 ZweZd5 d6 d8 ZxG d9d:„ d:ƒZyG d;d<„ d<ƒZzG d=d>„ d>ƒZ{G d?d@„ d@ƒZ|dAdB„ Z}ejmjne \¡ dCkdDd%�dEdF„ ƒZ~dGdH„ ZdIdJ„ Z€ejmj�ddKdL�dMdN„ ƒZ‚G dOdP„ dPƒZƒdbdQdR„Z„ejmj…ejmjne †ej‡¡jˆdSk dTd%�dUdV„ ƒƒZ‰dWdX„ ZŠejm ‹dYeŒe^ejEe�ejFg¡dZd[„ ƒZŽG d\d]„ d]ƒZ�d^d_„ Z�G d`da„ daƒZ‘dS )cé    N)Úassert_equalÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚassert_Úassert_allclose)Úraises)ÚeigÚeigvalsÚluÚsvdÚsvdvalsÚcholeskyÚqrÚschurÚrsf2csfÚlu_solveÚ	lu_factorÚsolveÚdiagsvdÚ
hessenbergÚrqÚ
eig_bandedÚeigvals_bandedÚeighÚeigvalshÚqr_multiplyÚqzÚorthÚordqzÚsubspace_anglesÚhadamardÚeigvalsh_tridiagonalÚeigh_tridiagonalÚ
null_spaceÚcdf2rdfÚLinAlgError)	ÚdgbtrfÚdgbtrsÚzgbtrfÚzgbtrsÚdsbevÚdsbevdÚdsbevxÚzhbevdÚzhbevx)Únorm)Ú_select_function)Úortho_group)ÚarrayÚdiagÚfullÚlinalgÚargsortÚzerosÚarangeÚfloat32Ú	complex64ÚravelÚsqrtÚ	iscomplexÚshapeÚsortÚsignÚasarrayÚisfiniteÚndarrayÚeye)Úassert_no_overwrite)Úmatrix)Úcheck_free_memory)Ú	HAS_ILP64)ÚCONFIGÚ
emscripten)Úwasm32Úwasm64Fc                 C   s€   |t v rtj | | ¡tj | | ¡d  }|| ¡ j d }ntj | | ¡}||j d }|r;|td|  ƒt | ¡ 7 }| |¡S )z7Generate random sym/hermitian array of the given size nù              ð?é   )	ÚCOMPLEX_DTYPESÚnpÚrandomÚrandÚconjÚTr=   rE   Úastype)ÚnÚposdefÚdtypeÚA© r[   ú[/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/linalg/tests/test_decomp.pyÚ_random_hermitian_matrix,   s    
r]   c                 C   s„   t | tƒr| }| |¡d d }nt | tƒr%t| jƒdkr%| jd }| }ntdƒ‚t |¡}|j	 
¡ t|ƒ | }d|j	|  }|S )a  Return a random symmetric (Hermitian) matrix.

    If 'dim_or_eigv' is an integer N, return a NxN matrix, with eigenvalues
        uniformly distributed on (-1,1).

    If 'dim_or_eigv' is  1-D real array 'a', return a matrix whose
                      eigenvalues are 'a'.
    rO   é   r   zinput type not supported.ç      à?)Ú
isinstanceÚintrR   rD   Úlenr?   Ú	TypeErrorr2   ÚrvsrU   rT   r4   )Údim_or_eigvÚrngÚdimÚdÚvÚhr[   r[   r\   ÚsymrandB   s   
	


rk   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	e
eeeeg¡d
d„ ƒZdS )ÚTestEigValsc                 C   óN   g d¢g d¢g d¢g}t |ƒ}dtdƒ d ddtdƒ d g}t||ƒ d S )N©r^   rO   é   ©rO   é   é   é	   é]   rO   r   ©r
   r=   r   ©ÚselfÚaÚwÚexact_wr[   r[   r\   Útest_simple^   s   "zTestEigVals.test_simplec                 C   sd   t g d¢g d¢g d¢gdƒj}| ¡ }|j}t|ƒ}dtdƒ d ddtdƒ d g}t||ƒ d S )Nrn   rp   rh   rs   rt   rO   r   )r3   rU   Úcopyr
   r=   r   rv   r[   r[   r\   Útest_simple_trd   s   "zTestEigVals.test_simple_trc                 C   rm   )Nrn   ©rO   rq   y      @      ð?y      "@      ð?y      W@      @rO   r   ru   rv   r[   r[   r\   Útest_simple_complexl   s   þzTestEigVals.test_simple_complexc                 C   sR   g d¢g d¢g d¢g}t |dd�}dtdƒ d ddtdƒ d g}t||ƒ d S )	Nrn   rp   F©Úcheck_finiters   rt   rO   r   ru   rv   r[   r[   r\   Útest_finitet   s   "zTestEigVals.test_finiteÚdtc                 C   s~   t jd|d�}t|ƒ}|jdksJ ‚|jtt jd|d�ƒjks!J ‚t|dd�}|jdks.J ‚|jtt jd|d�ƒjks=J ‚d S )N©r   r   ©rY   ©r   rO   T©Úhomogeneous_eigvals©rO   r   )rQ   Úemptyr
   r?   rY   rE   )rw   rƒ   rx   ry   r[   r[   r\   Ú
test_emptyz   s   "zTestEigVals.test_emptyN)Ú__name__Ú
__module__Ú__qualname__r{   r}   r   r‚   ÚpytestÚmarkÚparametrizera   Úfloatr:   Úcomplexr;   r‹   r[   r[   r[   r\   rl   \   s    rl   c                   @   sž   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Z				d 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eeejeejg¡dd„ ƒZdS )!ÚTestEigc           	      C   s´  t g d¢g d¢g d¢gƒ}t|ƒ\}}dtdƒ d ddtdƒ d g}t dddtdƒd  d gƒ}t g d	¢ƒ}t dddtdƒd  d gƒ}|t|ƒ }|t|ƒ }|t|ƒ }t||ƒ t||d d …df t|d
 ƒ ƒ t||d d …df t|d ƒ ƒ t||d d …df t|d ƒ ƒ tdƒD ]}t||d d …|f  || |d d …|f  ƒ q–t|ddd�\}}tdƒD ]}t|j|d d …|f  || |d d …|f  ƒ q½d S )Nrn   rp   rs   rt   rO   r   r^   ro   ©ç      @r   éÿÿÿÿr„   ©r   r^   ©r   rO   ©ÚleftÚright)r3   r	   r=   r0   r   rA   ÚrangerU   ©	rw   rx   ry   ri   rz   Úv0Úv1Úv2Úir[   r[   r\   r{   ˆ   s&   "
"""02ÿzTestEig.test_simplec                 C   sÀ   t ddgddggƒ}t|ddd�\}}}t|t ddgƒƒ tdƒD ]}t||d d …|f  || |d d …|f  ƒ q!tdƒD ]}t| ¡ j|d d …|f  ||  ¡ |d d …|f  ƒ q?d S )Nr^   rO   éþÿÿÿrš   ù      ð?       @y      ð?       À)r3   r	   r   r�   rT   rU   ©rw   rx   ry   ÚvlÚvrr¢   r[   r[   r\   Útest_simple_complex_eigœ   s   0ÿÿzTestEig.test_simple_complex_eigc                 C   s´   t g d¢g d¢g d¢gƒ}t|ddd�\}}}tdƒD ]}t||d d …|f  || |d d …|f  ƒ qtdƒD ]}t| ¡ j|d d …|f  ||  ¡ |d d …|f  ƒ q9d S )Nrn   r~   r^   rš   ro   )r3   r	   r�   r   rT   rU   r¥   r[   r[   r\   r   ¦   s   0ÿÿzTestEig.test_simple_complexc                 C   sr   dgg}dgg}t ||dd�\}}t|d dƒ t|d dkƒ t|dƒ t ||ƒ\}}t|tjƒ t|dƒ d S )Nr^   r   Tr‡   ©r^   r   r„   )r	   r   r   r   rQ   Úinf)rw   rx   Úbry   r§   r[   r[   r\   Útest_gh_3054¯   s   
zTestEig.test_gh_3054ç‚vIhÂ%<=c                 C   s<  |d urt |ƒt |ƒ}}|}nt |ƒ}|}tj|jŽ }d|›d|›�}t||dd�\}	}
t||dd�}||
 |	dd d …f  }||
 |	dd d …f  }t|jd ƒD ]}t|d d …|f |d d …|f |||d� qS|d u r…t|	dd d …f dƒ t|dd d …f dƒ t |	¡}t |¡}t|	d d …|f |d d …|f dd|d� t 	t
|
ƒ¡}tt
|
ƒƒD ]}t|
d d …|f ƒ||< q±t|t |j¡|ddd	� |	dd d …f dk}|	d|f |	d|f  }t||ƒ\}	}
t||ƒ}||
 }||
 |	 }|| }t|jd ƒD ] }t t|d d …|f ƒ¡�r#t|d d …|f d|||d� �q|	t|	ƒ }|t|ƒ }d
tjd| dd� }d
tjd| dd� }tt|ƒ|j ƒ}tt|ƒ|j ƒ}t|| || dd|d� t 	t
|
ƒ¡}tt
|
ƒƒD ]}t|
d d …|f ƒ||< �qst|t |j¡|d� tt|ƒt|	t |	¡ ƒƒ d S )NÚ
Tr‡   r^   r   ©ÚrtolÚatolÚerr_msggH¯¼šò×z>)r±   r°   r²   )r²   r±   r°   y       €      ð¿rN   g»½×Ùß|Û=)Útol©r²   )rB   rQ   rE   r?   r	   r
   r�   r   ÚlexsortrŠ   rb   r0   ÚonesÚsizeÚallrC   Úreal_if_closer7   ÚabsÚimagr@   )rw   rZ   ÚBÚ
atol_homogÚ
rtol_homogr±   r°   ÚB0Úmsgry   r§   ÚwtÚval1Úval2r¢   ÚpermÚpermtÚlengthÚbeta_nonzeroÚwhÚresÚw_finÚwt_finr[   r[   r\   Ú_check_gen_eig»   sp   ÿ

"ÿÿ
ÿ€ÿ zTestEig._check_gen_eigc                 C   s�   t g d¢g d¢g d¢g d¢g d¢gƒ}t g d¢g d¢g d¢g d	¢g d
¢gƒ}tjdd�� | j||ddd� W d   ƒ d S 1 sAw   Y  d S )N)é   é"   é   rÏ   é   )é-   rÑ   é*   é   é   )é'   é/   é1   é   rÎ   )é   rÏ   rØ   é   é   )é&   é,   rÝ   é   é   )é   rØ   é   rÐ   rÞ   )rÏ   é.   é(   rØ   é%   )rØ   rã   rÓ   rá   rá   )é   rá   rÙ   é   é   )rÞ   é#   é   rÚ   rÍ   Úignore©r¸   gê-�™—a=)r½   r±   )r3   rQ   ÚerrstaterÌ   ©rw   rZ   r¼   r[   r[   r\   Útest_singular  s   üü"ÿzTestEig.test_singularc                 C   sÀ   t tg d¢ƒƒ}tg d¢g d¢g d¢fƒ}tg d¢g d¢g d¢fƒ}tdƒ}td	ƒ}t ||g|| gg¡}t ||g||gg¡}tjd
d�� |  ||¡ W d   ƒ d S 1 sYw   Y  d S )N)r^   r   ro   )rO   r—   r—   )r—   rO   r—   )r—   r—   rO   )r^   r—   r   )r—   r^   r   ©r   r   r   ©ro   ro   ro   rê   rë   )r4   r3   r8   rE   rQ   Úblockrì   rÌ   )rw   ÚMÚKÚDÚZÚI3rZ   r¼   r[   r[   r\   Útest_falker  s   "ÿzTestEig.test_falkerc                 C   sj   dd„ }t jdd��! tdƒD ]}||d d d�\}}|  ||¡ qW d   ƒ d S 1 s.w   Y  d S )Nc                 S   sf   d| d  }d|  }g d¢g d¢dd|dgddd|gg}g d¢g d¢ddd| gdd|dgg}||fS )	Né÷ÿÿÿrO   )r^   r   r   r   )r   r^   r   r   r   )r   r   r^   r   )r   r   r   r^   r^   r[   )ÚomegaÚc1Úc2rZ   r¼   r[   r[   r\   Úmatrices&  s   

ý
ýz)TestEig.test_bad_geneig.<locals>.matricesrê   rë   éd   ç      @)rù   )rQ   rì   r�   rÌ   )rw   rü   ÚkrZ   r¼   r[   r[   r\   Útest_bad_geneig#  s   þ"ÿzTestEig.test_bad_geneigc                 C   s„   t j d¡}td|ƒ}|  |d ¡ td|ƒ}|  ||¡ | d¡d| d¡  }|  |d ¡ | d¡d| d¡  }|  ||¡ d S )NéÒ  ro   rð   rN   )rQ   rR   ÚRandomStaterk   rÌ   )rw   rf   rZ   r¼   r[   r[   r\   Útest_make_eigvals:  s   

zTestEig.test_make_eigvalsc           	      C   sd  g d¢g d¢g d¢g}t |dd�\}}dtdƒ d ddtdƒ d g}td	d	d	tdƒd
  d gƒ}tg d¢ƒ}td	d	d	tdƒd
  d gƒ}|t|ƒ }|t|ƒ }|t|ƒ }t||ƒ t||d d …df t|d ƒ ƒ t||d d …d	f t|d ƒ ƒ t||d d …df t|d ƒ ƒ td
ƒD ]}t||d d …|f  || |d d …|f  ƒ q–d S )Nrn   rp   Fr€   rs   rt   rO   r   r^   ro   r•   r„   r˜   r™   )r	   r=   r3   r0   r   rA   r�   rž   r[   r[   r\   Útest_check_finiteH  s    "
"""0ÿzTestEig.test_check_finitec                 C   s"   t  d¡ dd¡}ttt|ƒ dS )z:Check that passing a non-square array raises a ValueError.rr   ro   rO   N)rQ   r9   ÚreshapeÚassert_raisesÚ
ValueErrorr	   )rw   rZ   r[   r[   r\   Útest_not_square_errorY  s   zTestEig.test_not_square_errorc                 C   s:   t dƒ}t d¡ dd¡}ttt||ƒ ttt||ƒ dS )zOCheck that passing arrays of with different shapes
        raises a ValueError.rO   ç      "@ro   N)rE   rQ   r9   r  r  r  r	   rí   r[   r[   r\   Útest_shape_mismatch^  s   zTestEig.test_shape_mismatchc                 C   sÆ   t jg d¢g d¢g d¢g d¢gdd�}t jg d¢g d¢g d	¢g d
¢gdd�}t||ƒ\}}t j ¡ �'}| td¡ t j|ddd� ¡ sEJ ‚t j|ddd� ¡ sQJ ‚W d   ƒ d S 1 s\w   Y  d S )N)g      (@ç      <@g      S@g     €k@)g      0@g      @@g      T@g      l@)g      8@ç      D@g      V@g      m@)r  g      L@g      Z@g      o@Úfloat64r…   )ç       @ç      @ç      $@r  )r–   rþ   ç      &@g      =@)rþ   ç      @g      *@g      ?@)r	  r  g      1@g     €A@z%invalid value encountered in multiplyr  ç›+¡†›„=©r±   ç       @)	rQ   r3   r	   ÚtestingÚsuppress_warningsÚfilterÚRuntimeWarningÚiscloseÚany)rw   rZ   r¼   rô   ÚVÚsupr[   r[   r\   Útest_gh_11577f  s(   
ýý
ýý	"üzTestEig.test_gh_11577rƒ   c                 C   sÌ   t jd|d�}t|ƒ\}}tt jd|d�ƒ\}}|jdksJ ‚|j|jks'J ‚t|t  d¡ƒ |jdks6J ‚|j|jks>J ‚t|dd�\}}|jdksMJ ‚|j|jksUJ ‚|jdks\J ‚|j|jksdJ ‚d S )Nr„   r…   rO   r†   Tr‡   r‰   )rQ   rŠ   r	   rE   r?   rY   r   )rw   rƒ   rx   ry   r§   Úw_nÚvr_nr[   r[   r\   r‹   ‚  s   zTestEig.test_emptyN)r­   r­   r­   r­   )rŒ   r�   rŽ   r{   r¨   r   r¬   rÌ   rî   r÷   r   r  r  r  r
  r  r�   r�   r‘   ra   r’   rQ   r:   r“   r;   r‹   r[   r[   r[   r\   r”   †   s$    
	
ÿJ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ej deeejeejg¡dd„ ƒZdS )ÚTestEigBandedc                 C   ó   |   ¡  d S ©N)Úcreate_bandmat©rw   r[   r[   r\   Úsetup_methodš  ó   zTestEigBanded.setup_methodc                 C   s  d}d| _ d| _tt|dƒƒtt|d dƒdƒ tt|d dƒdƒ tt|d dƒdƒ tt|d dƒdƒ | _tt|dƒƒd	tt|d dƒdƒ  d	tt|d dƒdƒ  tt|d dƒdƒ tt|d dƒdƒ | _tt|dƒƒtt|d dƒdƒ tt|d d
ƒdƒ tt|d dƒdƒ tt|d dƒdƒ | _d	tt|dƒƒ tt|d dƒdƒ d	tt|d d
ƒdƒ  tt|d dƒdƒ tt|d dƒdƒ | _t 	| j¡\}}|j
}t|ƒ}|| | _|dd…|f | _t 	| j¡\}}|j
}t|ƒ}|| | _|dd…|f | _| jd }t||ftd�| _t||ftd�| _t|ƒD ]%}t| j|ƒ| j|| d ||…f< t| j|ƒ| j|| d ||…f< �q%d| j  | j d }t||ftd�| _t| jƒ| jd| j  dd…f< t| j ƒD ]6}t| j|d ƒ| jd| j  d | |d |…f< t| j| d ƒ| jd| j  d | d|d | …f< �qrt||ftd�| _t| jƒ| jd| j  dd…f< t| j ƒD ]6}t| j|d ƒ| jd| j  d | |d |…f< t| j| d ƒ| jd| j  d | d|d | …f< �qÆdt|ƒ | _| jd | _dS )zbCreate the full matrix `self.fullmat` and
           the corresponding band matrix `self.bandmat`.é
   rO   ç      ð?r^   ç      ð¿r—   ç       Àr£   rN   ç      Àr  Nr…   r   ù      ð?      ð?)ÚKLÚKUr4   r5   Úsym_matÚherm_matÚreal_matÚcomp_matr6   r	   Úrealr7   Ú	w_sym_linÚevec_sym_linÚ
w_herm_linÚevec_herm_linr8   r’   Úbandmat_symr“   Úbandmat_hermr�   Úbandmat_realÚbandmat_compr9   r«   Úbc)rw   ÚNÚewÚevÚargsÚLDABr¢   r[   r[   r\   r$  �  s�   ÿÿþþÿþýüÿÿþþÿþýü


"&0,ÿ0,ÿzTestEigBanded.create_bandmatc                 C   óP   t | jdd�\}}}|dd…t|ƒf }tt|ƒ| jƒ tt|ƒt| jƒƒ dS )zTCompare dsbev eigenvalues and eigenvectors with
           the result of linalg.eig.r^   ©Ú	compute_vN)r+   r9  r7   r   r@   r5  rº   r6  ©rw   ry   ÚevecÚinfoÚevec_r[   r[   r\   Ú
test_dsbevî  ó   zTestEigBanded.test_dsbevc                 C   rC  )zUCompare dsbevd eigenvalues and eigenvectors with
           the result of linalg.eig.r^   rD  N)r,   r9  r7   r   r@   r5  rº   r6  rF  r[   r[   r\   Útest_dsbevdö  rK  zTestEigBanded.test_dsbevdc              	   C   ól   t | jƒ\}}t| jddd|ddd�\}}}}}|dd…t|ƒf }tt|ƒ| jƒ tt|ƒt| j	ƒƒ dS )zUCompare dsbevx eigenvalues and eigenvectors
           with the result of linalg.eig.ç        r^   rO   ©rE  r�   N)
r?   r0  r-   r9  r7   r   r@   r5  rº   r6  ©rw   r>  ry   rG  ÚnumÚifailrH  rI  r[   r[   r\   Útest_dsbevxþ  ó   ÿzTestEigBanded.test_dsbevxc                 C   rC  )zUCompare zhbevd eigenvalues and eigenvectors
           with the result of linalg.eig.r^   rD  N)r.   r:  r7   r   r@   r7  rº   r8  rF  r[   r[   r\   Útest_zhbevd	  rK  zTestEigBanded.test_zhbevdc              	   C   rM  )zUCompare zhbevx eigenvalues and eigenvectors
           with the result of linalg.eig.rN  r^   rO   rO  N)
r?   r1  r/   r:  r7   r   r@   r7  rº   r8  rP  r[   r[   r\   Útest_zhbevx  rT  zTestEigBanded.test_zhbevxc                 C   sn  t | jƒ}|j}tt|ƒ| jƒ t | jƒ}|j}tt|ƒ| jƒ d}t 	d¡}t | jd||fd�}tt|ƒ| j||d … ƒ t | jd||fd�}tt|ƒ| j||d … ƒ | j| d }| j| d }t | jd||fd�}	tt|	ƒ| j||d … ƒ | j| d }| j| d }t | jd||fd�}
tt|
ƒ| j||d … ƒ t | jdd	�}|j}tt|ƒ| jƒ d
S )z?Compare eigenvalues of eigvals_banded with those of linalg.eig.rO   rr   r¢   ©ÚselectÚselect_ranger^   çñhãˆµøä>ri   Fr€   N)
r   r9  r4  r   r@   r5  r:  r7  rQ   Úlonglong)rw   Úw_symÚw_hermÚind1Úind2Ú	w_sym_indÚ
w_herm_indÚv_lowerÚv_upperÚ	w_sym_valÚ
w_herm_valr[   r[   r\   Útest_eigvals_banded  sP   


ÿÿÿÿÿÿþÿz!TestEigBanded.test_eigvals_bandedc                 C   s�  t | jƒ\}}|dd…t|jƒf }tt|ƒ| jƒ tt|ƒt| jƒƒ t | j	ƒ\}}|dd…t|jƒf }tt|ƒ| j
ƒ tt|ƒt| jƒƒ d}d}t | jd||fd�\}	}
tt|	ƒ| j||d … ƒ tt|
ƒt| jdd…||d …f ƒƒ t | j	d||fd�\}}tt|ƒ| j
||d … ƒ tt|ƒt| jdd…||d …f ƒƒ | j| d }| j| d }t | jd||fd�\}}tt|ƒ| j||d … ƒ tt|ƒt| jdd…||d …f ƒƒ | j
| d }| j
| d }t | j	d||fd�\}}tt|ƒ| j
||d … ƒ tt|ƒt| jdd…||d …f ƒƒ t | jd	d
�\}}|dd…t|jƒf }tt|ƒ| jƒ tt|ƒt| jƒƒ dS )zXCompare eigenvalues and eigenvectors of eig_banded
           with those of linalg.eig. NrO   rr   r¢   rW  r^   rZ  ri   Fr€   )r   r9  r7   r4  r   r@   r5  rº   r6  r:  r7  r8  )rw   r\  Úevec_symÚ	evec_sym_r]  Ú	evec_hermÚ
evec_herm_r^  r_  r`  Úevec_sym_indra  Úevec_herm_indrb  rc  rd  Úevec_sym_valre  Úevec_herm_valr[   r[   r\   Útest_eig_bandedF  st   
þÿÿ
þÿÿ
þÿÿ
þÿÿzTestEigBanded.test_eig_bandedc                 C   ó¨   t | jƒ\}}t| j| j| jƒ\}}}t|d| j dd…f ƒ}t| j| j ƒD ]}|t|d| j d | |d |…f |d ƒ7 }q(t| jdd�\}}	}
t	||
ƒ dS )zZCompare dgbtrf  LU factorisation with the LU factorisation result
           of linalg.lu.rO   Nr^   r   ©Ú	permute_l)
r?   r2  r'   r;  r.  r/  r4   r�   r   r   ©rw   rò   r>  Úlu_symm_bandÚipivrH  Úur¢   Úp_linÚl_linÚu_linr[   r[   r\   Útest_dgbtrf€  ó   2zTestEigBanded.test_dgbtrfc                 C   rp  )zZCompare zgbtrf  LU factorisation with the LU factorisation result
           of linalg.lu.rO   Nr^   r   rq  )
r?   r3  r)   r<  r.  r/  r4   r�   r   r   rs  r[   r[   r\   Útest_zgbtrfŽ  r{  zTestEigBanded.test_zgbtrfc                 C   óP   t | j| j| jƒ\}}}t|| j| j| j|ƒ\}}t | j| j¡}t	||ƒ dS )zhCompare dgbtrs  solutions for linear equation system  A*x = b
           with solutions of linalg.solve.N)
r'   r;  r.  r/  r(   r«   r6   r   r2  r   ©rw   rt  ru  rH  ÚyÚy_linr[   r[   r\   Útest_dgbtrsœ  ó   zTestEigBanded.test_dgbtrsc                 C   r}  )zhCompare zgbtrs  solutions for linear equation system  A*x = b
           with solutions of linalg.solve.N)
r)   r<  r.  r/  r*   r=  r6   r   r3  r   r~  r[   r[   r\   Útest_zgbtrs¦  r‚  zTestEigBanded.test_zgbtrsrƒ   c                 C   s¦   t jd|d�}t|ƒ\}}tt jddgddgg|d�ƒ\}}|jdks%J ‚|j|jks-J ‚|jdks4J ‚|j|jks<J ‚t|dd�}|jdksIJ ‚|j|jksQJ ‚d S )Nr„   r…   r   r^   r†   T©Úeigvals_only)rQ   rŠ   r   r3   r?   rY   )rw   rƒ   Úa_bandry   ri   r  Úv_nr[   r[   r\   r‹   °  s   "zTestEigBanded.test_emptyN)rŒ   r�   rŽ   r&  r$  rJ  rL  rS  rU  rV  rf  ro  rz  r|  r�  rƒ  r�   r�   r‘   ra   r’   rQ   r:   r“   r;   r‹   r[   r[   r[   r\   r!  ™  s     Q*:

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 )ÚTestEigTridiagonalc                 C   r"  r#  )Úcreate_trimatr%  r[   r[   r\   r&  Â  r'  zTestEigTridiagonal.setup_methodc                 C   s‚   d}t |dƒ| _t |d dƒ| _t| jƒt| jdƒ t| jdƒ | _t | j¡\}}|j}t|ƒ}|| | _	|dd…|f | _
dS )z>Create the full matrix `self.fullmat`, `self.d`, and `self.e`.r(  r)  r^   r*  r—   N)r5   rh   Úer4   Úfull_matr6   r	   r4  r7   ry   rG  )rw   r>  r?  r@  rA  r[   r[   r\   r‰  Å  s   $
z TestEigTridiagonal.create_trimatc                 C   sx   t tt| j| jdd… ƒ t tt| j| jd ƒ t tt| j| jdd� t tt| j| jdd� t tt| j| jddd	� dS )
zTest error conditions.Nr—   rN   r)  ©Úlapack_driverÚfoor¢   ©r   r—   rW  )r  r  r"   rh   rŠ  rc   r%  r[   r[   r\   Útest_degenerateÔ  s   ÿÿ
ÿz"TestEigTridiagonal.test_degeneratec           	   
   C   s"  dD ]}t | j| j|d�}tt|ƒ| jƒ qdD ]}ttt | j| j|ddd� qdD ]d}t | j| jddt| jƒd	 f|d
�}tt|ƒ| jƒ d}d}t | j| jd||f|d
�}tt|ƒ| j||d	 … ƒ | j| d }| j| d }t | j| jd||f|d
�}tt|ƒ| j||d	 … ƒ q*dS )z>Compare eigenvalues of eigvalsh_tridiagonal with those of eig.)ÚsterfÚstevÚstebzÚstemrÚautorŒ  )r‘  r’  r¢   r˜   ©r�  rX  rY  ©r“  r”  r•  r   r^   ©rX  rY  r�  rO   rr   rZ  ri   N)	r"   rh   rŠ  r   r@   ry   r  r  rb   )	rw   Údriverry   Úw_indr^  r_  rb  rc  Úw_valr[   r[   r\   Útest_eigvalsh_tridiagonalã  s:   þþþþëz,TestEigTridiagonal.test_eigvalsh_tridiagonalc           	   	   C   sÒ  t tt| j| jdd� dD ])}t| j| j|d�\}}|dd…t|ƒf }tt|ƒ| jƒ tt	|ƒt	| j
ƒƒ qt tt| j| jdddd� d	D ] }d
}t| jƒd }t| j| jd||f|d�\}}tt|ƒ| jƒ tt	|ƒt	| j
ƒƒ d}d}t| j| jd||f|d�\}}tt|ƒ| j||d … ƒ tt	|ƒt	| j
dd…||d …f ƒƒ | j| d }| j| d }t| j| jd||f|d�\}}tt|ƒ| j||d … ƒ tt	|ƒt	| j
dd…||d …f ƒƒ qFdS )zWCompare eigenvalues and eigenvectors of eigh_tridiagonal
           with those of eig. r‘  rŒ  )r“  r’  r”  r•  Nr’  r¢   r˜   r–  r—  r   r^   r˜  rO   rr   rZ  ri   )r  r  r#   rh   rŠ  r7   r   r@   ry   rº   rG  rb   )	rw   r™  ry   rG  rI  r^  r_  rb  rc  r[   r[   r\   Útest_eigh_tridiagonal  sR   ÿÿ
þ
þÿ
þÿçz(TestEigTridiagonal.test_eigh_tridiagonalc                 C   sÊ   t  dg¡}t  g ¡}t||dd�}|jdksJ ‚t||ƒ t||ddd�\}}|jdks/J ‚|jdks6J ‚t||ƒ t|td	ggƒƒ t||d
dd�\}}|jdksUJ ‚|jdks\J ‚|jdkscJ ‚dS )zSee gh-20075r+  Tr„  r^   r¢   r„   rW  rO   r)  ri   )r£   r   r   r†   r©   N)rQ   r3   r#   Úndimr   r·   r?   )rw   rx   r«   Úxr  r[   r[   r\   Útest_eigh_tridiagonal_1x1/  s   


z,TestEigTridiagonal.test_eigh_tridiagonal_1x1N)	rŒ   r�   rŽ   r&  r‰  r�  rœ  r�  r   r[   r[   r[   r\   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e	j
 de¡e	j
 dd¡dd„ ƒƒZe	j
 dd¡dd„ ƒZe	j
 dd¡e	j
 dd¡dd„ ƒƒZdd„ Ze	j
 deeejeejg¡dd„ ƒZdS )ÚTestEighc                 C   s   t j d¡ d S )Nr  )rQ   rR   Úseedr%  r[   r[   r\   Úsetup_classC  ó   zTestEigh.setup_classc                 C   s  t ttt ddg¡ƒ t ttt ddg¡t ddg¡ƒ t ttt ddg¡t ddg¡ƒ t ttt ddg¡t ddg¡dd� t ttt ddg¡t ddg¡ddgddgd� t ttt ddg¡t ddg¡ddgd� t ttt ddg¡t ddg¡d	dgd� t ttt ddg¡t ddg¡ddgd� t ttt ddg¡t ddg¡ddgd
� t ttt ddg¡dd� t ttt ddg¡d dd� t ttt ddg¡t ddg¡dd� t ttt ddg¡t ddg¡dddgd� t ttt ddg¡t ddg¡dddgd� d S )Nr^   rO   ro   é   )Útype)Úsubset_by_valueÚsubset_by_indexr   ©r¨  r£   ©r§  Úwrong©r™  ÚgvxÚevrÚgvd)r™  r¨  )r  r  r   rQ   r¶   r%  r[   r[   r\   Útest_wrong_inputsF  s@   ""ÿÿÿÿÿÿÿÿ
ÿzTestEigh.test_wrong_inputsc                 C   s&   t ttt ddg¡t ddg¡ƒ d S )Nro   )r  r&   r   rQ   r¶   r%  r[   r[   r\   Útest_nonpositive_bl  s   &zTestEigh.test_nonpositive_bc                 C   s²   t tƒD ]R\}}td|d�}t|ddgd�\}}t|jd t|ƒƒ t|dk|dk @ ƒs.J ‚tdd|d�}t||ddgd�\}}t|jd t|ƒƒ t|dk|dk @ ƒsVJ ‚qd S )	Né   r…   r£   rO   rª  r^   T)rX   rY   )Ú	enumerateÚDTYPESr]   r   r   r?   rb   r¸   )rw   Úindrƒ   rx   ry   ri   r«   r[   r[   r\   Útest_value_subsetsp  s   özTestEigh.test_value_subsetsc                 C   sF   t ddgddggƒ}t ddgddggƒ}t|ƒ\}}t||ƒ\}}d S )Nr^   rO   é   ro   rq   )r3   r   )rw   rx   r«   ry   Úzr[   r[   r\   Útest_eigh_integer}  s   zTestEigh.test_eigh_integerc                 C   s>   dd l }|j d¡ ¡ }t |¡}ttt|ƒ ttt|ƒ d S )Nr   rO   )	Úscipy.sparseÚsparseÚidentityÚtocscrQ   Ú
atleast_2dr  r  r   )rw   Úscipyrx   r«   r[   r[   r\   Útest_eigh_of_sparseƒ  s
   
zTestEigh.test_eigh_of_sparseÚdtype_r™  )r@  Úevdr®  Úevxc                 C   sH   t d|d�}t||d�\}}t|| ||  ddt |¡j dd� d S )Nr²  )rW   rY   r¬  rN  éè  ©r±   r°   )r]   r   r   rQ   ÚfinfoÚeps)rw   r™  rÁ  rx   ry   ri   r[   r[   r\   Útest_various_drivers_standard‹  s   
þz&TestEigh.test_various_drivers_standardc                 C   s€   t dgg|d�\}}t|tdgƒdd� t|tdggƒdd� t dgg|d�\}}t|tdgƒdd� t|tdggƒdd� d S )Nr^   r¬  r)  çVçž¯Ò<r  rN   r   )r   r   r3   )rw   r™  ry   ri   r[   r[   r\   Útest_1x1_lwork”  s   zTestEigh.test_1x1_lworkr¦  rn   )Úgvr¯  r­  c                 C   s®   t  d¡}tdƒ}tddd�}t||||d�\}}|dkr/t|| |||   d|dd� d S |d	krEt|| | ||  d|dd� d S t|| | ||  d|dd� d S )
Ng     ˆ³@r²  T)rX   )rx   r«   r™  r¦  r^   rN  rÅ  rO   )rQ   Úspacingr]   r   r   )rw   r™  r¦  r±   rx   r«   ry   ri   r[   r[   r\   Ú test_various_drivers_generalizedŸ  s   
$$$z)TestEigh.test_various_drivers_generalizedc                 C   s’   t dƒ}t|ddgd�}tt|ƒdƒ t|ddgd�}tt|ƒdƒ t||ƒ t g d¢¡}t|ddgd�}tt|ƒdƒ t|t dd	g¡ƒ d S )
Nrq   r^   rO   r©  )r^   ç333333ó?çÍÌÌÌÌÌô?ç      ø?rO   gffffffö?rª  rÎ  rÏ  )r]   r   r   rb   r   rQ   r4   r3   )rw   rx   ry   Úw2r«   Úw3r[   r[   r\   Útest_eigvalsh_new_args­  s   
zTestEigh.test_eigvalsh_new_argsrƒ   c                 C   sª   t jd|d�}t|ƒ\}}tt jd|d�ƒ\}}|jdksJ ‚|j|jks'J ‚|jdks.J ‚|j|jks6J ‚t|dd�}t|t  d¡ƒ |jdksKJ ‚|j|jksSJ ‚d S )Nr„   r…   rO   r†   Tr„  )rQ   rŠ   r   rE   r?   rY   r   )rw   rƒ   rx   ry   ri   r  r‡  r[   r[   r\   r‹   »  s   zTestEigh.test_emptyN)rŒ   r�   rŽ   r£  r°  r±  r¶  r¹  rÀ  r�   r�   r‘   r´  rÈ  rÊ  rÍ  rÓ  ra   r’   rQ   r:   r“   r;   r‹   r[   r[   r[   r\   r¡  B  s$    &

r¡  c                   @   sú   e Zd 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ejje dd�ejjdd„ ƒƒZej dg d¢¡ej dg d¢¡ej de¡d d!„ ƒƒƒZej d"eeejeejg¡ej d#g d$¢¡d%d&„ ƒƒZd'S )(ÚTestSVD_GESDDÚgesddc                 C   s,   t ttdggdd� t ttdggdd� d S )Nr)  rŒ  rŽ  )r  rc   r   r  r%  r[   r[   r\   r�  Ñ  s   zTestSVD_GESDD.test_degeneratec                 C   s´   g d¢g d¢g d¢g}dD ]J}t ||| jd�\}}}t|j| tdƒƒ t|j| tdƒƒ t|jd |jd f|jjƒ}t	t
|ƒƒD ]
}|| |||f< qCt|| | |ƒ qd S )Nrn   ©r^   r²  ro   rp   ©TF©Úfull_matricesr�  ro   r   ©r   r�  r   rU   rE   r8   r?   rY   Úcharr�   rb   ©rw   rx   rÙ  rv  ÚsÚvhÚsigmar¢   r[   r[   r\   r{   Õ  ó   ÿøzTestSVD_GESDD.test_simplec                 C   s´   g d¢g d¢g d¢g}dD ]J}t ||| jd�\}}}t|j| tdƒƒ t|j| tdƒƒ t|jd |jd f|jjƒ}t	t
|ƒƒD ]
}|| |||f< qCt|| | |ƒ qd S )Nrn   rp   r×  rØ  ro   r   rÚ  rÜ  r[   r[   r\   Útest_simple_singulará  rà  z"TestSVD_GESDD.test_simple_singularc                 C   s    g d¢g d¢g}dD ]C}t ||| jd�\}}}t|j| t|jd ƒƒ t|jd |jd f|jjƒ}t	t
|ƒƒD ]
}|| |||f< q9t|| | |ƒ q
d S )Nrn   ©r¥  rq   rr   r×  rØ  r   ©r   r�  r   rU   rE   r?   r8   rY   rÛ  r�   rb   rÜ  r[   r[   r\   Útest_simple_underdetí  s   ÿùz"TestSVD_GESDD.test_simple_underdetc                 C   sº   ddgddgddgg}dD ]M}t ||| jd�\}}}t|j| t|jd ƒƒ t|j| tdƒƒ t|jd |jd f|jjƒ}t	t
|ƒƒD ]
}|| |||f< qFt|| | |ƒ qd S )	Nr^   rO   r¥  rq   ro   r×  rØ  r   rã  rÜ  r[   r[   r\   Útest_simple_overdetø  s   ÿøz!TestSVD_GESDD.test_simple_overdetc                 C   sî   t j d¡}d}d}tdƒD ]f}| ||g¡| ||g¡fD ]U}dD ]P}t||| jd�\}}}	t|j| t|j	d ƒƒ t|	|	j t|	j	d ƒƒ t
|j	d |	j	d f|jjƒ}
tt|ƒƒD ]
}|| |
||f< q^t||
 |	 |ƒ q"qqd S )	Nr  r²  rÛ   ro   r×  rØ  r^   r   )rQ   rR   r  r�   r   r�  r   rU   rE   r?   r8   rY   rÛ  rb   )rw   rf   rW   Úmr¢   rx   rÙ  rv  rÝ  rÞ  rß  r[   r[   r\   Útest_random  s$    ÿøÿÿzTestSVD_GESDD.test_randomc                 C   sÈ   g d¢g d¢g d¢g}dD ]T}t ||| jd�\}}}t| ¡ j| t|jd ƒƒ t| ¡ j| t|jd ƒƒ t|jd |jd f|jj	ƒ}t
t|ƒƒD ]
}|| |||f< qMt|| | |ƒ qd S )Nrn   )r^   y               @ro   rp   r×  rØ  r^   r   )r   r�  r   rT   rU   rE   r?   r8   rY   rÛ  r�   rb   rÜ  r[   r[   r\   r     s   ÿøz!TestSVD_GESDD.test_simple_complexc              	   C   sð   t j d¡}d}d}tdƒD ]g}dD ]b}| ||g¡| ||g¡fD ]Q}|d| t|jƒ¡  }t||| jd�\}}}	t| 	¡ j
| t|jd ƒƒ t|jd |	jd	 f|jjƒ}
tt|ƒƒD ]
}|| |
||f< q_t||
 |	 |ƒ q"qqd S )
Nr  r²  rÛ   ro   r×  rN   rØ  r^   r   )rQ   rR   r  r�   Úlistr?   r   r�  r   rT   rU   rE   r8   rY   rÛ  rb   )rw   rf   rW   ræ  r¢   rÙ  rx   rv  rÝ  rÞ  rß  r[   r[   r\   Útest_random_complex   s(    ÿÿôÿÿz!TestSVD_GESDD.test_random_complexc                 C   sZ   t j d¡}g d¢}|D ]}t jt jt jt jfD ]}|j|Ž  |¡}t	|| j
d� qqd S )Nr  ))rà   rç   )rß   é2   )é<   rý   rŒ  )rQ   rR   r  r:   r  r;   Ú
complex128rS   rV   r   r�  )rw   rf   ÚsizesÚszrƒ   rx   r[   r[   r\   Útest_crash_15804  s   ýÿzTestSVD_GESDD.test_crash_1580c                 C   sª   g d¢g d¢g d¢g}t |d| jd�\}}}t|j| tdƒƒ t|j| tdƒƒ t|jd |jd f|jjƒ}t	t
|ƒƒD ]
}|| |||f< q?t|| | |ƒ d S )Nrn   rÖ  rp   F)r�   r�  ro   r   rÚ  )rw   rx   rv  rÝ  rÞ  rß  r¢   r[   r[   r\   r  =  s   zTestSVD_GESDD.test_check_finitec                 C   s4   t  g d¢g d¢g d¢g d¢g¡}t|| jd� d S )N)çKÚ}\UUÅ?ç“vWUUå?rð  rN  rN  rN  )rN  rð  rñ  rð  rN  rN  )rN  rN  rð  rñ  rð  rN  )rN  rN  rN  rð  rñ  rð  rŒ  )rQ   r3   r   r�  )rw   r«   r[   r[   r\   Útest_gh_5039G  s   
ýÿzTestSVD_GESDD.test_gh_5039z64-bit LAPACK required©Úreasonc                 C   s`   t dd� tjddgtjd�}d|d< t|dd�\}}}t|d	 d
ƒ t|d |d  d
ƒ d S )NihB  )Úfree_mbr^   l        r…   r�  F©rÙ  r   r)  r„   )rH   rQ   r8   r:   r   r   )rw   rZ   rv  rÝ  rÞ  r[   r[   r\   Útest_large_matrixX  s   
zTestSVD_GESDD.test_large_matrixræ  ©r   r^   rO   rW   rY   c                 C   s8  t j||f|d�}t||ƒ}|jj}|dv r| ¡ n|}t|ƒ\}}	}
t|j||fƒ t|j|ƒ t|	j|fƒ t|	jt  |¡ƒ t|
j||fƒ t|
j|ƒ t|dd�\}}	}
t|j||fƒ t|j|ƒ t|	j|fƒ t|	jt  |¡ƒ t|
j||fƒ t|
j|ƒ t|dd�}	t|	j|fƒ t|	jt  |¡ƒ d S )Nr…   ÚFDFrö  ©Ú
compute_uv)	rQ   r8   ÚminrY   rÛ  Úlowerr   r   r?   )rw   ræ  rW   rY   rx   rÿ   ÚdcharÚ
real_dcharrv  rÝ  ri   r[   r[   r\   Útest_shape_dtypeb  s*   
zTestSVD_GESDD.test_shape_dtyperƒ   ©ræ  rW   ©r„   r™   r‰   c                 C   sF  t jd|d�}t|ƒ\}}}t j||f|d�}t|ƒ\}	}
}t|	t  |¡ƒ t|
t  d¡ƒ t|t  |¡ƒ |	j|jks>J ‚|j|jksFJ ‚|
j|jksNJ ‚t|dd�\}	}
}t|	t  |df¡ƒ t|
t  d¡ƒ t|t  d|f¡ƒ |	j|jks{J ‚|j|jksƒJ ‚|
j|jks‹J ‚t|dd�}
t|
t  d¡ƒ |
j|jks¡J ‚d S )Nro   r…   r†   Frö  r   rú  )rQ   rE   r   rŠ   r   r¼  rY   )rw   rƒ   ræ  rW   Úa0Úu0Ús0rŸ   rx   rv  rÝ  ri   r[   r[   r\   r‹     s(   zTestSVD_GESDD.test_emptyN)rŒ   r�   rŽ   r�  r�  r{   rá  rä  rå  rç  r   ré  rï  r  rò  r�   r�   ÚskipifrI   Úslowr÷  r‘   r´  r   ra   r’   rQ   r:   r“   r;   r‹   r[   r[   r[   r\   rÔ  Î  s.    	
rÔ  c                   @   s   e Zd ZdZdS )ÚTestSVD_GESVDÚgesvdN)rŒ   r�   rŽ   r�  r[   r[   r[   r\   r  �  s    r  zout of memory in WASMró  r(  c                  C   sF   t jdt jd�} ttƒ� t| ƒ W d   ƒ d S 1 sw   Y  d S )N)i¿  iŠÏ  r…   )rQ   r¶   r  r  r  r   )Údfr[   r[   r\   Útest_svd_gesdd_nofegfault£  s   

"ÿr  c                   @   sx   e Zd Zej deeej	e
ejg¡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jdd„ ƒZdS )ÚTestSVDValsrƒ   c                 C   sj   g gt  d¡t  d¡fD ]&}t j||d�}t|ƒ}t|t  d¡ƒ tt jd|d�ƒ}|j|jks2J ‚qd S )Nr‰   ©r   ro   r…   r   rO   )rQ   rŠ   r¶   r3   r   r   rE   rY   )rw   rƒ   rx   rÝ  r  r[   r[   r\   r‹   ¯  s   úzTestSVDVals.test_emptyc                 C   s`   g d¢g d¢g d¢g}t |ƒ}tt|ƒdkƒ t|d |d   ko*|d kƒ d S   ƒ d S )Nrn   rp   ro   r   r^   rO   ©r   r   rb   ©rw   rx   rÝ  r[   r[   r\   r{   ¹  ó   2zTestSVDVals.test_simplec                 C   ó@   g d¢g d¢g}t |ƒ}tt|ƒdkƒ t|d |d kƒ d S )Nrn   râ  rO   r   r^   r  r  r[   r[   r\   rä  ¿  ó   z TestSVDVals.test_simple_underdetc                 C   óF   ddgddgddgg}t |ƒ}tt|ƒdkƒ t|d |d kƒ d S )Nr^   rO   r¥  rq   ro   r   r  r  r[   r[   r\   rå  Å  ó   zTestSVDVals.test_simple_overdetc                 C   s`   g d¢g d¢g d¢g}t |ƒ}tt|ƒdkƒ t|d |d   ko*|d kƒ d S   ƒ d S )Nrn   )r^   r²  ù              @rp   ro   r   r^   rO   r  r  r[   r[   r\   r   Ë  r  zTestSVDVals.test_simple_complexc                 C   r  )Nrn   )r¥  y              @rr   rO   r   r^   r  r  r[   r[   r\   Útest_simple_underdet_complexÑ  r  z(TestSVDVals.test_simple_underdet_complexc                 C   r  )Nr^   rO   r¥  rq   r  r   r  r  r[   r[   r\   Útest_simple_overdet_complex×  r  z'TestSVDVals.test_simple_overdet_complexc                 C   sd   g d¢g d¢g d¢g}t |dd�}tt|ƒdkƒ t|d |d   ko,|d kƒ d S   ƒ d S )	Nrn   rp   Fr€   ro   r   r^   rO   r  r  r[   r[   r\   r  Ý  s   2zTestSVDVals.test_check_finitec                 C   s&   t j d¡ t j dd¡}t|ƒ d S )Nr  iÜ  ið
  )rQ   rR   r¢  rS   r   ©rw   rx   r[   r[   r\   Útest_crash_2609ã  s   zTestSVDVals.test_crash_2609N)rŒ   r�   rŽ   r�   r�   r‘   ra   r’   rQ   r:   r“   r;   r‹   r{   rä  rå  r   r  r  r  r  r  r[   r[   r[   r\   r  ­  s    
	r  c                   @   ó   e Zd Zdd„ ZdS )ÚTestDiagSVDc                 C   s,   t tg d¢ddƒg d¢g d¢g d¢gƒ d S )N©r^   r   r   ro   rï   )r   r   r%  r[   r[   r\   r{   í  s   ÿzTestDiagSVD.test_simpleN)rŒ   r�   rŽ   r{   r[   r[   r[   r\   r  ë  ó    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!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dWdX„ Z.dYdZ„ Z/d[d\„ Z0d]d^„ Z1d_d`„ Z2dadb„ Z3dcdd„ Z4dedf„ Z5dgdh„ Z6e7j8 9dig dj¢¡e7j8 9dkg dj¢¡e7j8 9dldmdng¡e7j8 9doe:¡dpdq„ ƒƒƒƒZ;e7j8 9drg ds¢¡dtdu„ ƒZ<dvdw„ Z=dxS )yÚTestQRc                 C   sH   g d¢g d¢g d¢g}t |ƒ\}}t|j| tdƒƒ t|| |ƒ d S ©N©é   rO   ro   ©rO   rs   ro   ©rq   ro   rr   ro   ©r   r   rU   rE   ©rw   rx   ÚqÚrr[   r[   r\   r{   ó  ó   zTestQR.test_simplec                 C   st   g d¢g d¢g d¢g}t |ƒ\}}g d¢}t||dƒ\}}t|| |ƒ t||ƒ t|tdƒdƒ\}}t||ƒ d S )Nr   r"  r#  rn   r›   ro   ©r   r   r   rE   ©rw   rx   r&  r'  ÚcÚqcÚr2r[   r[   r\   Útest_simple_leftù  s   
zTestQR.test_simple_leftc                 C   sp   g d¢g d¢g d¢g}t |ƒ\}}g d¢}t||ƒ\}}t|| |ƒ t||ƒ t|tdƒƒ\}}t||ƒ d S )Nr   r"  r#  rn   ro   r)  r*  r[   r[   r\   Útest_simple_right  s   
zTestQR.test_simple_rightc                 C   sº   t  g d¢g d¢g d¢g¡}t|dd�\}}}tt|ƒƒ}tt  |dd … |d d… k¡ƒ t|j| t	dƒƒ t|| |d d …|f ƒ t|d d …|f ƒ\}}t||ƒ t||ƒ d S )	Nr   r"  r#  T©Úpivotingr^   r—   ro   ©
rQ   rB   r   rº   r4   r   r¸   r   rU   rE   ©rw   rx   r&  r'  Úprh   Úq2r-  r[   r[   r\   Útest_simple_pivoting  s   "
zTestQR.test_simple_pivotingc                 C   sV   g d¢g d¢g d¢g}t |dd�\}}}g d¢}t||ddƒ\}}}t|| |ƒ d S )Nr   r"  r#  Tr0  rn   r›   ©r   r   r   ©rw   rx   r&  r'  Újpvtr+  r,  r[   r[   r\   Útest_simple_left_pivoting  ó
   z TestQR.test_simple_left_pivotingc                 C   sV   g d¢g d¢g d¢g}t |dd�\}}}g d¢}t||dd�\}}}t|| |ƒ d S )Nr   r"  r#  Tr0  rn   r7  r8  r[   r[   r\   Útest_simple_right_pivoting  r;  z!TestQR.test_simple_right_pivotingc                 C   sB   g d¢g d¢g}t |ƒ\}}t|j| tdƒƒ t|| |ƒ d S )Nr   r"  rO   r$  r%  r[   r[   r\   Útest_simple_trap&  ó   zTestQR.test_simple_trapc                 C   s´   t  g d¢g d¢g¡}t|dd�\}}}tt|ƒƒ}tt  |dd … |d d… k¡ƒ t|j| t	dƒƒ t|| |d d …|f ƒ t|d d …|f ƒ\}}t||ƒ t||ƒ d S )Nr   r"  Tr0  r^   r—   rO   r2  r3  r[   r[   r\   Útest_simple_trap_pivoting,  s   "
z TestQR.test_simple_trap_pivotingc                 C   sH   ddgddgddgg}t |ƒ\}}t|j| tdƒƒ t|| |ƒ d S ©Nr!  rO   rs   rq   ro   r$  r%  r[   r[   r\   Útest_simple_tall7  s   zTestQR.test_simple_tallc                 C   sº   t  ddgddgddgg¡}t|dd�\}}}tt|ƒƒ}tt  |dd … |d d	… k¡ƒ t|j| t	dƒƒ t|| |d d …|f ƒ t|d d …|f ƒ\}}t||ƒ t||ƒ d S )
Nr!  rO   rs   rq   ro   Tr0  r^   r—   r2  r3  r[   r[   r\   Útest_simple_tall_pivoting>  s   "
z TestQR.test_simple_tall_pivotingc                 C   sd   ddgddgddgg}t |dd�\}}t|j| tdƒƒ t|| |ƒ t|jdƒ t|jd	ƒ d S )
Nr!  rO   rs   rq   ro   Úeconomic©Úmode©ro   rO   ©rO   rO   ©r   r   rU   rE   r   r?   r%  r[   r[   r\   Útest_simple_tall_eJ  s   zTestQR.test_simple_tall_ec                 C   sÀ   t  ddgddgddgg¡}t|ddd�\}}}tt|ƒƒ}tt  |d	d … |d d
… k¡ƒ t|j| t	dƒƒ t|| |d d …|f ƒ t|d d …|f dd�\}}t||ƒ t||ƒ d S )Nr!  rO   rs   rq   ro   TrC  ©r1  rE  r^   r—   rD  r2  r3  r[   r[   r\   Útest_simple_tall_e_pivotingS  s   "
z"TestQR.test_simple_tall_e_pivotingc                 C   s®   ddgddgddgg}t |dd�\}}ddg}t||d	ƒ\}}t|| |ƒ t||ƒ tg d
¢ƒ}t||d	dd�\}}t||d d…  |ƒ t|tdƒd	ƒ\}}t||ƒ d S )Nr!  rO   rs   rq   ro   rC  rD  r^   r›   ©r^   rO   r   T©Úoverwrite_c©r   r   r   r3   rE   r*  r[   r[   r\   Útest_simple_tall_left_  ó   
zTestQR.test_simple_tall_leftc                 C   s„   ddgddgddgg}t |ddd�\}}}d	dg}t||d
dƒ\}}}t||ƒ t|| |ƒ t|tdƒd
dƒ\}}}t||ƒ d S )Nr!  rO   rs   rq   ro   rC  T©rE  r1  r^   r›   )r   r   r   r   rE   )rw   rx   r&  r'  r9  r+  r,  Úkpvtr[   r[   r\   Útest_simple_tall_left_pivotingl  s   
z%TestQR.test_simple_tall_left_pivotingc                 C   st   ddgddgddgg}t |dd�\}}g d¢}t||ƒ\}}t|| |ƒ t||ƒ t|tdƒƒ\}}t||ƒ d S )	Nr!  rO   rs   rq   ro   rC  rD  rn   r)  ©rw   rx   r&  r'  r+  Úcqr-  r[   r[   r\   Útest_simple_tall_rightv  s   
zTestQR.test_simple_tall_rightc                 C   sz   ddgddgddgg}t |ddd�\}}}g d	¢}t||dd
�\}}}t|| |ƒ t|tdƒdd
�\}}}t||ƒ d S )Nr!  rO   rs   rq   ro   TrC  rJ  rn   r0  r)  ©rw   rx   r&  r'  r9  r+  rV  r[   r[   r\   Útest_simple_tall_right_pivoting€  s   z&TestQR.test_simple_tall_right_pivotingc                 C   sZ   g d¢g d¢g}t |ƒ\}}t|j| tdƒƒ t|| |ƒ t|jdƒ t|jdƒ d S )N©r!  rO   rq   r"  rO   rG  ©rO   ro   rH  r%  r[   r[   r\   Útest_simple_fat‰  s   zTestQR.test_simple_fatc                 C   sÌ   t  g d¢g d¢g¡}t|dd�\}}}tt|ƒƒ}tt  |dd … |d d… k¡ƒ t|j| t	dƒƒ t|| |d d …|f ƒ t
|jdƒ t
|jd	ƒ t|d d …|f ƒ\}}t||ƒ t||ƒ d S )
NrZ  r"  Tr0  r^   r—   rO   rG  r[  ©rQ   rB   r   rº   r4   r   r¸   r   rU   rE   r   r?   r3  r[   r[   r\   Útest_simple_fat_pivoting’  s   "
zTestQR.test_simple_fat_pivotingc                 C   s^   g d¢g d¢g}t |dd�\}}t|j| tdƒƒ t|| |ƒ t|jdƒ t|jdƒ d S )Nr   ©rO   rs   rq   rC  rD  rO   rG  r[  rH  r%  r[   r[   r\   Útest_simple_fat_e   s   zTestQR.test_simple_fat_ec                 C   sÒ   t  g d¢g d¢g¡}t|ddd�\}}}tt|ƒƒ}tt  |dd … |d d… k¡ƒ t|j| t	dƒƒ t|| |d d …|f ƒ t
|jd	ƒ t
|jd
ƒ t|d d …|f dd�\}}t||ƒ t||ƒ d S )Nr   r_  TrC  rJ  r^   r—   rO   rG  r[  rD  r]  r3  r[   r[   r\   Útest_simple_fat_e_pivoting©  s   "
z!TestQR.test_simple_fat_e_pivotingc                 C   sr   g d¢g d¢g}t |dd�\}}ddg}t||dƒ\}}t|| |ƒ t||ƒ t|tdƒdƒ\}}t||ƒ d S )Nr   r_  rC  rD  r^   rO   r›   r)  r*  r[   r[   r\   Útest_simple_fat_left·  s   
zTestQR.test_simple_fat_leftc                 C   st   g d¢g d¢g}t |ddd�\}}}ddg}t||ddƒ\}}}t|| |ƒ t|tdƒddƒ\}}}t||ƒ d S )	Nr   r_  rC  TrR  r^   rO   r›   r)  r8  r[   r[   r\   Útest_simple_fat_left_pivotingÁ  ó   z$TestQR.test_simple_fat_left_pivotingc                 C   sn   g d¢g d¢g}t |dd�\}}ddg}t||ƒ\}}t|| |ƒ t||ƒ t|tdƒƒ\}}t||ƒ d S )Nr   r_  rC  rD  r^   rO   r)  rU  r[   r[   r\   Útest_simple_fat_rightÊ  s   
zTestQR.test_simple_fat_rightc                 C   st   g d¢g d¢g}t |ddd�\}}}ddg}t||dd�\}}}t|| |ƒ t|tdƒdd�\}}}t||ƒ d S )	Nr   r_  TrC  rJ  r^   rO   r0  r)  rX  r[   r[   r\   Útest_simple_fat_right_pivotingÔ  rd  z%TestQR.test_simple_fat_right_pivotingc                 C   sL   g d¢g d¢g d¢g}t |ƒ\}}t| ¡ j| tdƒƒ t|| |ƒ d S ©N©ro   ù      @      @rq   ©rq   rO   y       @      @©ro   rO   r·  ro   )r   r   rT   rU   rE   r%  r[   r[   r\   r   Ý  ó   zTestQR.test_simple_complexc                 C   sj   g d¢g d¢g d¢g}t |ƒ\}}g d¢}t||dƒ\}}t|| |ƒ t|tdƒdƒ\}}t||ƒ d S )Nrh  rj  rk  ©r^   rO   ri  r›   ro   r)  ©rw   rx   r&  r'  r+  r,  r[   r[   r\   Útest_simple_complex_leftã  s   zTestQR.test_simple_complex_leftc                 C   sf   g d¢g d¢g d¢g}t |ƒ\}}g d¢}t||ƒ\}}t|| |ƒ t|tdƒƒ\}}t||ƒ d S )Nrh  rj  rk  rm  ro   r)  rn  r[   r[   r\   Útest_simple_complex_rightì  s   z TestQR.test_simple_complex_rightc                 C   s®   ddgddgddgg}t |dd�\}}d	d
g}t||dƒ\}}t|| |ƒ t||ƒ tg d¢ƒ}t||ddd�\}}t||d d…  |ƒ t|tdƒdƒ\}}t||ƒ d S )Nr!  y       @      @rO   rs   y      @      @ro   rC  rD  r^   ù       @       @r›   rL  TrM  rO  r*  r[   r[   r\   Útest_simple_tall_complex_leftõ  rQ  z$TestQR.test_simple_tall_complex_leftc                 C   sT   g d¢g d¢g d¢g}t |ƒ\}}g d¢}t||ddd�\}}t| ¡ | |ƒ d S )Nrh  rj  rk  rm  r›   T©Ú	conjugate©r   r   r   rT   rn  r[   r[   r\   Ú"test_simple_complex_left_conjugate  s
   z)TestQR.test_simple_complex_left_conjugatec                 C   sX   ddgddgddgg}t |dd�\}}ddg}t||d	d
d�\}}t| ¡ | |ƒ d S )Nro   ri  rq   rq  rO   rC  rD  r^   r›   Trs  ru  rn  r[   r[   r\   Ú'test_simple_complex_tall_left_conjugate	  s
   z.TestQR.test_simple_complex_tall_left_conjugatec                 C   sX   g d¢g d¢g d¢g}t |ƒ\}}t g d¢¡}t||dd�\}}t|| ¡  |ƒ d S )Nrh  rj  rk  rm  Trs  )r   rQ   r3   r   r   rT   rn  r[   r[   r\   Ú#test_simple_complex_right_conjugate  s
   z*TestQR.test_simple_complex_right_conjugatec                 C   s¼   t g d¢g d¢g d¢gƒ}t|dd�\}}}tt|ƒƒ}tt |dd … |d d… k¡ƒ t| ¡ j	| t
dƒƒ t|| |d d …|f ƒ t|d d …|f ƒ\}}t||ƒ t||ƒ d S )	Nrh  rj  rk  Tr0  r^   r—   ro   )r3   r   rº   r4   r   rQ   r¸   r   rT   rU   rE   r3  r[   r[   r\   Útest_simple_complex_pivoting  s   "
z#TestQR.test_simple_complex_pivotingc                 C   sZ   t g d¢g d¢g d¢gƒ}t|dd�\}}}g d¢}t||ddƒ\}}}t|| |ƒ d S )Nrh  rj  rk  Tr0  rm  r›   ©r3   r   r   r   r8  r[   r[   r\   Ú!test_simple_complex_left_pivoting"  ó
   z(TestQR.test_simple_complex_left_pivotingc                 C   sZ   t g d¢g d¢g d¢gƒ}t|dd�\}}}g d¢}t||dd�\}}}t|| |ƒ d S )Nrh  rj  rk  Tr0  rm  rz  r8  r[   r[   r\   Ú"test_simple_complex_right_pivoting)  r|  z)TestQR.test_simple_complex_right_pivotingc                 C   s^   t j d¡}d}tdƒD ] }| ||g¡}t|ƒ\}}t|j| t|ƒƒ t|| |ƒ qd S ©Nr  r²  rO   ©rQ   rR   r  r�   r   r   rU   rE   ©rw   rf   rW   rÿ   rx   r&  r'  r[   r[   r\   rç  0  ó   üzTestQR.test_randomc           	      C   s„   t j d¡}d}tdƒD ]3}| ||g¡}t|ƒ\}}| |g¡}t||dƒ\}}t|| |ƒ t|t|ƒdƒ\}}t||ƒ qd S )Nr  r²  rO   r›   ©rQ   rR   r  r�   r   r   r   rE   ©	rw   rf   rW   rÿ   rx   r&  r'  r+  r,  r[   r[   r\   Útest_random_left9  s   ùzTestQR.test_random_leftc           	      C   s€   t j d¡}d}tdƒD ]1}| ||g¡}t|ƒ\}}| |g¡}t||ƒ\}}t|| |ƒ t|t|ƒƒ\}}t||ƒ qd S r~  r‚  ©	rw   rf   rW   rÿ   rx   r&  r'  r+  rV  r[   r[   r\   Útest_random_rightE  s   ùzTestQR.test_random_rightc                 C   sÊ   t j d¡}d}tdƒD ]V}| ||g¡}t|dd�\}}}tt|ƒƒ}tt  |dd … |d d… k¡ƒ t	|j
| t|ƒƒ t	|| |d d …|f ƒ t|d d …|f ƒ\}	}
t	||	ƒ t	||
ƒ qd S )Nr  r²  rO   Tr0  r^   r—   ©rQ   rR   r  r�   r   rº   r4   r   r¸   r   rU   rE   ©rw   rf   rW   rÿ   rx   r&  r'  r4  rh   r5  r-  r[   r[   r\   Útest_random_pivotingQ  s   "
÷zTestQR.test_random_pivotingc                 C   ób   t j d¡}d}d}tdƒD ] }| ||g¡}t|ƒ\}}t|j| t|ƒƒ t|| |ƒ qd S ©Nr  éÈ   rý   rO   r  ©rw   rf   ræ  rW   rÿ   rx   r&  r'  r[   r[   r\   Útest_random_tall_  s   üzTestQR.test_random_tallc           
      C   sŒ   t j d¡}d}d}tdƒD ]5}| ||g¡}t|dd�\}}| |g¡}t||dƒ\}	}t|| |	ƒ t|t|ƒdƒ\}	}t|	|ƒ qd S )Nr  rŒ  rý   rO   rC  rD  r›   r‚  )
rw   rf   ræ  rW   rÿ   rx   r&  r'  r+  r,  r[   r[   r\   Útest_random_tall_leftj  s   ùzTestQR.test_random_tall_leftc           
      C   sˆ   t j d¡}d}d}tdƒD ]3}| ||g¡}t|dd�\}}| |g¡}t||ƒ\}	}t|| |	ƒ t|t|ƒƒ\}	}t|	|ƒ qd S ©Nr  rŒ  rý   rO   rC  rD  r‚  )
rw   rf   ræ  rW   rÿ   rx   r&  r'  r+  rV  r[   r[   r\   Útest_random_tall_rightx  s   ùzTestQR.test_random_tall_rightc                 C   óÎ   t j d¡}d}d}tdƒD ]V}| ||g¡}t|dd�\}}}tt|ƒƒ}	tt  |	dd … |	d d… k¡ƒ t	|j
| t|ƒƒ t	|| |d d …|f ƒ t|d d …|f ƒ\}
}t	||
ƒ t	||ƒ qd S )	Nr  rŒ  rý   rO   Tr0  r^   r—   r‡  ©rw   rf   ræ  rW   rÿ   rx   r&  r'  r4  rh   r5  r-  r[   r[   r\   Útest_random_tall_pivoting†  s   "
÷z TestQR.test_random_tall_pivotingc                 C   s†   t j d¡}d}d}tdƒD ]2}| ||g¡}t|dd�\}}t|j| t|ƒƒ t|| |ƒ t|j	||fƒ t|j	||fƒ qd S r�  )
rQ   rR   r  r�   r   r   rU   rE   r   r?   r�  r[   r[   r\   Útest_random_tall_e–  s   úzTestQR.test_random_tall_ec                 C   sô   t j d¡}d}d}tdƒD ]i}| ||g¡}t|ddd�\}}}tt|ƒƒ}	tt  |	dd … |	d d	… k¡ƒ t	|j
| t|ƒƒ t	|| |d d …|f ƒ t|j||fƒ t|j||fƒ t|d d …|f dd
�\}
}t	||
ƒ t	||ƒ qd S )Nr  rŒ  rý   rO   TrC  rJ  r^   r—   rD  )rQ   rR   r  r�   r   rº   r4   r   r¸   r   rU   rE   r   r?   r“  r[   r[   r\   Útest_random_tall_e_pivoting£  s    "
õz"TestQR.test_random_tall_e_pivotingc                 C   rŠ  ©Nr  rý   rŒ  rO   r  r�  r[   r[   r\   Útest_random_trapµ  ó   üzTestQR.test_random_trapc                 C   r’  )	Nr  rý   rŒ  rO   Tr0  r^   r—   r‡  r“  r[   r[   r\   Útest_random_trap_pivoting¿  s   "
÷z TestQR.test_random_trap_pivotingc                 C   st   t j d¡}d}tdƒD ]+}| ||g¡d| ||g¡  }t|ƒ\}}t| ¡ j| t|ƒƒ t|| |ƒ qd S ©Nr  r²  rO   rN   )	rQ   rR   r  r�   r   r   rT   rU   rE   r€  r[   r[   r\   ré  Î  ó    üzTestQR.test_random_complexc           	      C   s¦   t j d¡}d}tdƒD ]D}| ||g¡d| ||g¡  }t|ƒ\}}| |g¡d| |g¡  }t||dƒ\}}t|| |ƒ t|t|ƒdƒ\}}t||ƒ qd S )Nr  r²  rO   rN   r›   r‚  rƒ  r[   r[   r\   Útest_random_complex_left×  s    ùzTestQR.test_random_complex_leftc           	      C   s¢   t j d¡}d}tdƒD ]B}| ||g¡d| ||g¡  }t|ƒ\}}| |g¡d| |g¡  }t||ƒ\}}t|| |ƒ t|t|ƒƒ\}}t||ƒ qd S r›  r‚  r…  r[   r[   r\   Útest_random_complex_rightã  s    ùz TestQR.test_random_complex_rightc                 C   sà   t j d¡}d}tdƒD ]a}| ||g¡d| ||g¡  }t|dd�\}}}tt|ƒƒ}tt  |dd … |d d… k¡ƒ t	| 
¡ j| t|ƒƒ t	|| |d d …|f ƒ t|d d …|f ƒ\}	}
t	||	ƒ t	||
ƒ qd S )	Nr  r²  rO   rN   Tr0  r^   r—   )rQ   rR   r  r�   r   rº   r4   r   r¸   r   rT   rU   rE   rˆ  r[   r[   r\   Útest_random_complex_pivotingï  s    "
÷z#TestQR.test_random_complex_pivotingc                 C   sL   g d¢g d¢g d¢g}t |dd�\}}t|j| tdƒƒ t|| |ƒ d S ©Nr   r"  r#  Fr€   ro   r$  r%  r[   r[   r\   r  ý  ó   zTestQR.test_check_finitec           
      C   s¾   g d¢g d¢g d¢g}t |d d�\}}t |dd�\}}t||ƒ t||ƒ t |dd�\}}t||ƒ t||ƒ t |dd�\}}	t||ƒ t|	|ƒ ttt |fdd	iƒ ttt |fdd
iƒ d S )Nr   r"  r#  )Úlworkro   r(  r—   r¢  r   rO   )r   r   r  Ú	Exception)
rw   rx   r&  r'  r5  r-  Úq3Úr3Úq4Úr4r[   r[   r\   Ú
test_lwork  s   





zTestQR.test_lworkræ  rø  rW   r1  FTrY   c                 C   sP  t ||ƒ}tj||f|d�}t||d�^}}}	t|j||fƒ t|j|ƒ t|j||fƒ t|j|ƒ t|	ƒ|r:dndks?J ‚|rR|	\}
t|
j|fƒ t|
jtjƒ t|d|d�^}}	t|j||fƒ t|j|ƒ t|	ƒ|rpdndksuJ ‚|rˆ|	\}
t|
j|fƒ t|
jtjƒ t|d|d�^}}}	t|j||fƒ t|j|ƒ t|j||fƒ t|j|ƒ t|	ƒ|rµdndksºJ ‚|rÍ|	\}
t|
j|fƒ t|
jtjƒ t|d|d�^\}}}}	t|j||fƒ t|j|ƒ t|j|fƒ t|j|ƒ t|j||fƒ t|j|ƒ t|	ƒ|�r
dndk�sJ ‚|�r&|	\}
t|
j|fƒ t|
jtjƒ d S d S )	Nr…   r0  r^   r   r'  rR  rC  Úraw)	rü  rQ   r8   r   r   r?   rY   rb   Úint32)rw   ræ  rW   r1  rY   rÿ   rx   r&  r'  Úotherr4  r©  Útaur[   r[   r\   r     sV   
ýzTestQR.test_shape_dtyper  r  c           
      C   s:  t ||ƒ}t ||f¡}t|ƒ\}}t|t |¡ƒ t|t ||f¡ƒ t|dd�\}}}t|t |¡ƒ t|t ||f¡ƒ t|t |¡ƒ t|dd�\}t|t ||f¡ƒ t|dd�\}}t|t ||f¡ƒ t|t ||f¡ƒ t|dd�\\}}	}t|t ||f¡ƒ t|	t |f¡ƒ t|t ||f¡ƒ d S )NTr0  r'  rD  rC  r©  )rü  rQ   rŠ   r   r   r¼  r9   )
rw   ræ  rW   rÿ   rx   r&  r'  r4  r©  r¬  r[   r[   r\   r‹   O  s$   
zTestQR.test_emptyc                 C   sš   t  d¡}t  d¡}t||ƒ\}}t|t  d¡ƒ t  d¡}t  d¡}t||ƒ\}}t|t  d¡ƒ t  d¡}t  d¡}t||ƒ\}}t|t  d¡ƒ d S )Nr„   r™   r‰   )rQ   rŠ   r   r   )rw   rx   r+  rV  r'  r[   r[   r\   Útest_multiply_emptyi  s   





zTestQR.test_multiply_emptyN)>rŒ   r�   rŽ   r{   r.  r/  r6  r:  r<  r=  r?  rA  rB  rI  rK  rP  rT  rW  rY  r\  r^  r`  ra  rb  rc  re  rf  r   ro  rp  rr  rv  rw  rx  ry  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  ò  sz    

	

			
	
				
	0
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ej dg d¢¡ej dg d¢¡ej de¡dd „ ƒƒƒZej d!g d"¢¡d#d$„ ƒZd%S )&ÚTestRQc                 C   sH   g d¢g d¢g d¢g}t |ƒ\}}t||j tdƒƒ t|| |ƒ d S r  ©r   r   rU   rE   ©rw   rx   r'  r&  r[   r[   r\   r{   {  r(  zTestRQ.test_simplec                 C   s<   g d¢g d¢g d¢g}t |ƒ\}}t |dd�}t||ƒ d S )Nr   r"  r#  r'  rD  )r   r   )rw   rx   r'  r&  r-  r[   r[   r\   Útest_r�  s   zTestRQ.test_rc                 C   s^   t j d¡}d}tdƒD ] }| ||g¡}t|ƒ\}}t||j t|ƒƒ t|| |ƒ qd S r~  ©rQ   rR   r  r�   r   r   rU   rE   ©rw   rf   rW   rÿ   rx   r'  r&  r[   r[   r\   rç  ‡  r�  zTestRQ.test_randomc                 C   sB   g d¢g d¢g}t |ƒ\}}t|j| tdƒƒ t|| |ƒ d S )Nr   r"  ro   r¯  r°  r[   r[   r\   r=  �  r>  zTestRQ.test_simple_trapc                 C   sH   ddgddgddgg}t |ƒ\}}t|j| tdƒƒ t|| |ƒ d S r@  r¯  r°  r[   r[   r\   rA  –  r(  zTestRQ.test_simple_tallc                 C   sB   g d¢g d¢g}t |ƒ\}}t||j tdƒƒ t|| |ƒ d S )NrZ  r"  ro   r¯  r°  r[   r[   r\   r\  œ  r>  zTestRQ.test_simple_fatc                 C   sL   g d¢g d¢g d¢g}t |ƒ\}}t|| ¡ j tdƒƒ t|| |ƒ d S rg  )r   r   rT   rU   rE   r°  r[   r[   r\   r   ¢  rl  zTestRQ.test_simple_complexc                 C   ób   t j d¡}d}d}tdƒD ] }| ||g¡}t|ƒ\}}t||j t|ƒƒ t|| |ƒ qd S r‹  r²  ©rw   rf   ræ  rW   rÿ   rx   r'  r&  r[   r[   r\   rŽ  ¨  r™  zTestRQ.test_random_tallc                 C   r´  r—  r²  rµ  r[   r[   r\   r˜  ²  r™  zTestRQ.test_random_trapc                 C   s†   t j d¡}d}d}tdƒD ]2}| ||g¡}t|dd�\}}t||j t|ƒƒ t|| |ƒ t|j	||fƒ t|j	||fƒ qd S )Nr  rý   rŒ  rO   rC  rD  )
rQ   rR   r  r�   r   r   rU   rE   r   r?   rµ  r[   r[   r\   Útest_random_trap_economic¼  s   úz TestRQ.test_random_trap_economicc                 C   st   t j d¡}d}tdƒD ]+}| ||g¡d| ||g¡  }t|ƒ\}}t|| ¡ j t|ƒƒ t|| |ƒ qd S r›  )	rQ   rR   r  r�   r   r   rT   rU   rE   r³  r[   r[   r\   ré  È  rœ  zTestRQ.test_random_complexc                 C   sœ   t j d¡}d}d}tdƒD ]=}| ||g¡d| ||g¡  }t|dd�\}}t|| ¡ j t|ƒƒ t|| |ƒ t	|j
||fƒ t	|j
||fƒ qd S )Nr  rý   rŒ  rO   rN   rC  rD  )rQ   rR   r  r�   r   r   rT   rU   rE   r   r?   rµ  r[   r[   r\   Útest_random_complex_economicÑ  s    úz#TestRQ.test_random_complex_economicc                 C   sL   g d¢g d¢g d¢g}t |dd�\}}t||j tdƒƒ t|| |ƒ d S r   r¯  r°  r[   r[   r\   r  Ý  r¡  zTestRQ.test_check_finiteræ  rø  rW   rY   c                 C   sÔ   t ||ƒ}tj||f|d�}t|ƒ\}}t|j||fƒ t|j||fƒ t|j|ƒ t|j|ƒ t|dd�}t|j||fƒ t|j|ƒ t|dd�\}}t|j||fƒ t|j|ƒ t|j||fƒ t|j|ƒ d S )Nr…   r'  rD  rC  )rü  rQ   r8   r   r   r?   rY   )rw   ræ  rW   rY   rÿ   rx   r'  r&  r[   r[   r\   r   ã  s   
zTestRQ.test_shape_dtyper  r  c                 C   s¤   t ||ƒ}t ||f¡}t|ƒ\}}t|t ||f¡ƒ t|t |¡ƒ t|dd�}t|t ||f¡ƒ t|dd�\}}t|t ||f¡ƒ t|t ||f¡ƒ d S )Nr'  rD  rC  )rü  rQ   rŠ   r   r   r¼  )rw   ræ  rW   rÿ   rx   r'  r&  r[   r[   r\   r‹   ú  s   
zTestRQ.test_emptyN)rŒ   r�   rŽ   r{   r±  rç  r=  rA  r\  r   rŽ  r˜  r¶  ré  r·  r  r�   r�   r‘   r´  r   r‹   r[   r[   r[   r\   r®  z  s(    	

	r®  c                   @   sx  e Zd Zdd„ Zdd„ Zej dde 	d¡ de 	d¡d	gfd
e 	d¡d	e 	d¡ dgfddd	e 	d¡e 	d¡ gfde 	d¡e 	d¡ dd	gfdd„ e 	d¡d	e 	d¡ dgfg¡dd„ ƒZ
dd„ Zdd„ Zej deeejeejg¡dd„ ƒZej dddg¡ej dddg¡ej dejejejejg¡dd„ ƒƒƒZej dddg¡ej dejejejejg¡dd „ ƒƒZd!S )"Ú	TestSchurc                 C   sN   t || | ¡ j |||dd� t || ¡ j t t|ƒ¡ dd|dd� d S )Nz&Schur decomposition does not match 'a'r¯   r   zu is not unitary)r   rT   rU   rQ   rE   rb   )rw   rx   Útrv  r°   r±   r[   r[   r\   Úcheck_schur  s   ÿ"
ÿzTestSchur.check_schurc                 C   s¦   g d¢g d¢g d¢g}t |ƒ\}}| j|||ddd� t |dƒ\}}tt tt|ƒƒ¡o4t tt|ƒƒ¡ƒ | j|||ddd� t||ƒ\}}| j|||ddd� d S )N©r!  é   ro   r"  ©r(  ro   rr   r  ç›+¡†›„ö<©r°   r±   r“   )r   rº  r   rQ   r  r<   r>   r   )rw   rx   r¹  r¸  ÚtcÚzcÚtc2Úzc2r[   r[   r\   r{     s   (zTestSchur.test_simplezsort, expected_diagÚlhprO   ç      à¿r_   ÚrhpÚiucÚoucc                 C   s   | dkS )NrN  r[   )rŸ  r[   r[   r\   Ú<lambda>&  ó    zTestSchur.<lambda>c                 C   sd   g d¢g d¢g d¢g d¢g}t ||d�\}}}| j|||ddd� tt |¡|d	d
� td|ƒ d S )N©r  r–   r)  r*  ©g      Àg      Àr*  r)  ©r	  ç      @ç      Àg      @©rÎ  r  r,  ç      @©r@   r  r¾  r¿  çê-�™—q=©r°   rO   )r   rº  r   rQ   r4   r   )rw   r@   Úexpected_diagrx   r¹  rv  Úsdimr[   r[   r\   Ú	test_sort   s   ýzTestSchur.test_sortc                 C   s@   g d¢g d¢g d¢g d¢g}t tt|dd� t tt|dd� d S )NrË  rÌ  rÍ  rÐ  ÚunsupportedrÒ  r^   )r  r  r   r  r[   r[   r\   Útest_sort_errors4  s   ýzTestSchur.test_sort_errorsc                 C   sB   g d¢g d¢g d¢g}t |dd�\}}t|| | ¡ j |ƒ d S )Nr»  r"  r½  Fr€   )r   r   rT   rU   )rw   rx   r¹  r¸  r[   r[   r\   r  <  s   zTestSchur.test_check_finiterƒ   c                 C   sÐ   t jd|d�}t|ƒ\}}tt jd|d�ƒ\}}t|t  d¡ƒ t|t  d¡ƒ |j|jks0J ‚|j|jks8J ‚t|dd�\}}}t|t  d¡ƒ t|t  d¡ƒ t|dƒ |j|jks^J ‚|j|jksfJ ‚d S )Nr„   r…   rO   rÄ  rÒ  r   )rQ   rŠ   r   rE   r   rY   r   )rw   rƒ   rx   r¹  r¸  Út0Úz0rÖ  r[   r[   r\   r‹   A  s   
zTestSchur.test_emptyr@   Úoutputr4  r“   rY   c                 C   sV   t  ddgddgg¡}t| |¡||d�d }|dkr!|dks)J ‚|dks'J ‚d S d S )Nçš™™™™™¹?r£   rO   ©r@   rÜ  r—   rÇ  r   )rQ   rB   r   rV   )rw   r@   rÜ  rY   rZ   rÖ  r[   r[   r\   Útest_gh_13137_sort_strR  s   (z TestSchur.test_gh_13137_sort_strc                    sx   t  ddgddgg¡}|dko|t jt jhv ‰ d
‡ fdd„	}t| |¡||d�d }ˆ r2|dks:J ‚|d	ks8J ‚d S d S )NrÝ  r£   rO   r4  c                    s^   ˆ rt  | ¡r	J ‚|d urt  |¡sJ ‚| |d  }nt  | ¡s"J ‚|d u s(J ‚| }|jdkS )NrN   rÉ  )rQ   ÚiscomplexobjÚisrealr»   )rŸ  r  r¸  ©Úall_realr[   r\   r@   y  s   
z1TestSchur.test_gh_13137_sort_custom.<locals>.sortrÞ  r—   r^   r#  )rQ   rB   r:   r  r   rV   )rw   rÜ  rY   rZ   r@   rÖ  r[   râ  r\   Útest_gh_13137_sort_customh  s
   $z#TestSchur.test_gh_13137_sort_customN)rŒ   r�   rŽ   rº  r{   r�   r�   r‘   rQ   r=   r×  rÙ  r  ra   r’   r:   r“   r;   r‹   r  rì  rß  rä  r[   r[   r[   r\   r¸    s8    	
 üþ

ÿÿ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
ej deeeeeg¡dd„ ƒZdS )ÚTestHessenbergc                 C   sb   g d¢g d¢g d¢g}g d¢g d¢g d¢g}t |dd�\}}t|j| | |ƒ t||d	d
� d S )N©ikÿÿÿiÎÿÿÿifÿÿÿ©é  é´   é"  ©iåÿÿÿrø   éçÿÿÿ©g      bÀgüs×E@gã¥›Ä ŠcÀ©gçŒ(mÍ€Àgkšwœ¢c@gÏfÕçjW�À©r   gÂ&S£²?g,eâX—@r^   ©Úcalc_qr¥  ©Údecimal©r   r   rU   ©rw   rx   Úh1rj   r&  r[   r[   r\   r{   �  s   þþzTestHessenberg.test_simplec                 C   sB   g d¢g d¢g d¢g}t |dd�\}}t| ¡ j| | |ƒ d S )Nræ  )rè  y             €f@rê  )y       €      ;Àrø   rì  r^   rð  )r   r   rT   rU   ©rw   rx   rj   r&  r[   r[   r\   r   ˜  s   þz"TestHessenberg.test_simple_complexc                 C   sV   g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}t |dd	�\}}t|j| | |ƒ d S )
N)r^   rO   ro   r¥  rq   rr   r·  )r   rO   ro   r¥  rr   r·  rO   )r   rO   rO   ro   r   ro   rO   )r   r   rO   r!  r   r   rO   )r   ro   r^   rO   r   r^   rO   )r   r^   rO   ro   r   r^   r   )r   r   r   r   r   r^   rO   r^   rð  rô  r÷  r[   r[   r\   Útest_simple2Ÿ  s   úzTestHessenberg.test_simple2c                 C   s:   t  d¡}d|d< t|dd�\}}t|j| | |ƒ d S )Nro   rO   )r—   r   r^   rð  )rQ   rE   r   r   rU   r÷  r[   r[   r\   Útest_simple3ª  s   
zTestHessenberg.test_simple3c                 C   sT   t j d¡}d}tdƒD ]}| ||g¡}t|dd�\}}t|j| | |ƒ qd S )Nr  r²  rO   r^   rð  )rQ   rR   r  r�   r   r   rU   ©rw   rf   rW   rÿ   rx   rj   r&  r[   r[   r\   rç  °  s   ýzTestHessenberg.test_randomc                 C   sj   t j d¡}d}tdƒD ]&}| ||g¡d| ||g¡  }t|dd�\}}t| ¡ j| | |ƒ qd S )Nr  r²  rO   rN   r^   rð  )rQ   rR   r  r�   r   r   rT   rU   rú  r[   r[   r\   ré  ¸  s    ýz"TestHessenberg.test_random_complexc                 C   sd   g d¢g d¢g d¢g}g d¢g d¢g d¢g}t |ddd	�\}}t|j| | |ƒ t||d
d� d S )Nræ  rç  rë  rí  rî  rï  r^   F)rñ  r�   r¥  rò  rô  rõ  r[   r[   r\   r  À  s   þþz TestHessenberg.test_check_finitec                 C   sx   ddgddgg}t |dd�\}}t|t d¡ƒ t||ƒ ddgdd	gg}t |dd�\}}t|t d¡ƒ t||ƒ d S )
NrO   r^   r·  r¼  rð  y       @      Àr¤   y      @      @y      (@       À)r   r   rQ   rE   )rw   rx   rj   r&  r«   Úh2r5  r[   r[   r\   Útest_2x2Ë  s   
zTestHessenberg.test_2x2rƒ   c                 C   s¢   t jd|d�}t|ƒ}|jdksJ ‚|jtt jd|d�ƒjks!J ‚t|dd�\}}t|dd�\}}|jdks8J ‚|j|jks@J ‚|jdksGJ ‚|j|jksOJ ‚d S )Nr„   r…   ro   Trð  )rQ   rŠ   r   r?   rY   rE   )rw   rƒ   rx   rj   r&  Úh3r¤  r[   r[   r\   r‹   ×  s   zTestHessenberg.test_emptyN)rŒ   r�   rŽ   r{   r   rø  rù  rç  ré  r  rü  r�   r�   r‘   ra   r’   r:   r“   r;   r‹   r[   r[   r[   r\   rå  ‹  s    rå  zBuild DependenciesÚblasÚnameÚversionc                   @   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 )ÚTestQZc           	      C   sÄ   t j d¡}d}| ||g¡ t¡}| ||g¡ t¡}t||ƒ\}}}}t|| |j |dd� t|| |j |dd� t||j t|ƒdd� t||j t|ƒdd� t	t  
t|ƒdk¡ƒ d S )Né90  rq   rò  r   )rQ   rR   r  rV   r:   r   r   rU   rE   r   r¸   r4   ©	rw   rf   rW   rZ   r¼   ÚAAÚBBÚQrõ   r[   r[   r\   Útest_qz_singleî  s   zTestQZ.test_qz_singlec           	      C   s¨   t j d¡}d}| ||g¡}| ||g¡}t||ƒ\}}}}t|| |j |ƒ t|| |j |ƒ t||j t|ƒƒ t||j t|ƒƒ tt  t	|ƒdk¡ƒ d S )Nr  rq   r   ©
rQ   rR   r  r   r   rU   rE   r   r¸   r4   r  r[   r[   r\   Útest_qz_doubleú  s   zTestQZ.test_qz_doublec           	      C   sô   t j d¡}d}| ||g¡d| ||g¡  }| ||g¡d| ||g¡  }t||ƒ\}}}}t|| | ¡ j |ƒ t|| | ¡ j |ƒ t|| ¡ j t|ƒƒ t|| ¡ j t|ƒƒ tt  	t
|ƒdk¡ƒ tt  	t
|ƒjdk¡ƒ d S )Nr  rq   rN   r   )rQ   rR   r  r   r   rT   rU   rE   r   r¸   r4   r»   r  r[   r[   r\   Útest_qz_complex	  s     zTestQZ.test_qz_complexc           	      C   s  t j d¡}d}| ||g¡d| ||g¡   t¡}| ||g¡d| ||g¡   t¡}t||ƒ\}}}}t|| | ¡ j |dd� t|| | ¡ j |dd� t|| ¡ j t	|ƒdd� t|| ¡ j t	|ƒdd� t
t  t|ƒdk¡ƒ t
t  t|ƒjdk¡ƒ d S )Nr  rq   rN   rò  r   )rQ   rR   r  rV   r;   r   r   rT   rU   rE   r   r¸   r4   r»   r  r[   r[   r\   Útest_qz_complex64	  s   &&zTestQZ.test_qz_complex64c                 C   sà   t j d¡}d}| ||g¡}| ||g¡}t||dd�\}}}}|| | ¡ j }	t|	j|ƒ t|	jdƒ || | ¡ j }
t|
j|ƒ t|
jdƒ t|| ¡ j t	|ƒƒ t|| ¡ j t	|ƒƒ t
t  t|ƒdk¡ƒ d S )Nr  rq   r“   )rÜ  r   )rQ   rR   r  r   rT   rU   r   r4  r»   rE   r   r¸   r4   )rw   rf   rW   rZ   r¼   r  r  r  rõ   ÚaaÚbbr[   r[   r\   Útest_qz_double_complex 	  s   zTestQZ.test_qz_double_complexc                 C   s^   t  g d¢g d¢g d¢g d¢g¡}t  g d¢g d¢g d¢g d¢g¡}ttt||d	d
„ d� d S )N)ç333333@ç      )@ç     @AÀg      @©ç333333@ç     €5@g     ÀGÀg      @)r  rÐ  ç     ÀEÀrÑ  )çš™™™™™@rÎ  ç      GÀrÎ  )r)  r)  r,  r)  )r)  r–   g      Àr  )r)  r  rÏ  r)  )rÎ  r–   rÏ  r  c                 S   s   |dkS )Nr   r[   )ÚarÚaiÚbetar[   r[   r\   rÉ  H	  rÊ  z,TestQZ.test_qz_double_sort.<locals>.<lambda>rÒ  )	rQ   r3   r  r  r   r   r   rU   rº   )rw   rZ   r¼   r  r  r  rõ   rÖ  r[   r[   r\   Útest_qz_double_sort0	  s   
ý
ýzTestQZ.test_qz_double_sortc           	      C   s¬   t j d¡}d}| ||g¡}| ||g¡}t||dd�\}}}}t|| |j |ƒ t|| |j |ƒ t||j t|ƒƒ t||j t|ƒƒ tt  t	|ƒdk¡ƒ d S )Nr  rq   Fr€   r   r  r  r[   r[   r\   r  “	  s   zTestQZ.test_check_finiteN)
rŒ   r�   rŽ   r  r	  r
  r  r  r  r  r[   r[   r[   r\   r  í  s    cr  c                   @   sp   e Zd Ze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 )Ú	TestOrdQZc           
      C   s  t  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¡}t  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¡}t  d¡}t  ddg¡}t  ddg¡}	|||||	g| _|||||	g| _d S )N)yš™™™™5À     €6Ày     ÀJ@     @IÀy     @AÀ     à_@y      @      à?)yq=
×£pÝ¿…ëQ¸Ày      À     ÀBÀy      /À     @M@y      %À      ø¿)y333333@      Àyš™™™™ÙC@š™™™™1Ày      QÀ      )@y      À      À)y      @š™™™™™@yÍÌÌÌÌÌ,@fffff¦E@y     @@À      GÀy      3À     @@À)y      ð?      Àyš™™™™™ù?333333ó?y      À        y              ð¿)yš™™™™™é?333333ã¿y              Ày      À      @y333333Àš™™™™™	À)y      ð?        y333333@ÍÌÌÌÌÌü?y      À      Ày              À)rN   yÍÌÌÌÌÌü¿333333@y              Ày      @      À)r  r  r  rÅ  r  )r  r  r  rÑ  )r  g      :@r  rÎ  )r^   rO   éýÿÿÿr^   )r^   ro   éûÿÿÿr¥  )r^   ro   éüÿÿÿro   )r^   ro   r  r¥  )rþ   r)  r–   r–   )r  r  r  r  )r  r  r)  r–   )rN  r  r  r  )r  r  rÎ  r  )r  r  r  r	  )r	  r)  rÎ  rÎ  )rþ   r)  r  r  rO   r   r^   )rQ   r3   rE   r4   rZ   r¼   )
ÚclsÚA1ÚB1ÚA2ÚB2ÚA3ÚB3ÚA4ÚB4ÚA5r[   r[   r\   r£  ¡	  sF   
ú
	ý
ý
ý
ý
ý
zTestOrdQZ.setup_classc                    sV   t jdd�� ‡ fdd„t| j| jƒD ƒ}W d   ƒ t|ƒS 1 s"w   Y  t|ƒS )NÚraiserë   c                    s   g | ]\}}t ||ˆ d �‘qS )rÒ  )r   )Ú.0ÚAiÚBirÒ  r[   r\   Ú
<listcomp>Ú	  s    z'TestOrdQZ.qz_decomp.<locals>.<listcomp>)rQ   rì   ÚziprZ   r¼   Útuple)rw   r@   Úretr[   rÒ  r\   Ú	qz_decompØ	  s   
ÿþzTestOrdQZ.qz_decompc
                 C   sf  t j|jŽ }
t||j ¡  |
ƒ t|	|	j ¡  |
ƒ t|| ||	 ƒ t|| ||	 ƒ tt  |d¡t  |j¡ƒ tt  |d¡t  |j¡ƒ t	|jd ƒD ]·}|dkr^|||d f dkr^qM||jd d k rÀ||d |f dkrÀt
|||d …||d …f |||d …||d …f ƒ\}}|d jdk r�|ddg }|||d … |||d …  }|d jdk rº|ddg }t||ƒ qM|| dkrß|| dkrßt|||f dƒ t|||f dƒ qM|| dkrït|||f dƒ qMt|||f |||f  || ||  ƒ qMt|ƒ}d}t	|jd ƒD ]}|t  || g¡t  || g¡ƒ}|�s-|�r-J ‚|}�qd S )Nr£   r—   r   r^   rO   T)rQ   rE   r?   r   rU   rT   r   Útrilr8   r�   r	   r»   r   r   r1   r3   )rw   rZ   r¼   r@   r  r  Úalphar  r  rõ   ÚIdr¢   ÚevalsÚ_ÚtmpÚsortfunÚlastsortÚcursortr[   r[   r\   ÚcheckÝ	  s@   &> ,"
úzTestOrdQZ.checkc                 C   s@   |   |¡}t|| j| jƒD ]\}}}| j|||g|¢R Ž  qd S r#  )r2  r/  rZ   r¼   r<  )rw   r@   r1  Úretir,  r-  r[   r[   r\   Ú	check_all
  s   
ÿzTestOrdQZ.check_allc                 C   ó   |   d¡ d S )NrÄ  ©r>  r%  r[   r[   r\   Útest_lhp
  ó   zTestOrdQZ.test_lhpc                 C   r?  )NrÆ  r@  r%  r[   r[   r\   Útest_rhp
  rB  zTestOrdQZ.test_rhpc                 C   r?  )NrÇ  r@  r%  r[   r[   r\   Útest_iuc
  rB  zTestOrdQZ.test_iucc                 C   r?  )NrÈ  r@  r%  r[   r[   r\   Útest_ouc
  rB  zTestOrdQZ.test_oucc                 C   ó   dd„ }|   |¡ d S )Nc                 S   s>   t j| td�}|dk}d|| < | | ||  jdk||< |S ©Nr…   r   F©rQ   Ú
empty_likeÚboolr»   ©rŸ  r  ÚoutÚnonzeror[   r[   r\   r@   
  ó
   
z TestOrdQZ.test_ref.<locals>.sortr@  ©rw   r@   r[   r[   r\   Útest_ref
  ó   zTestOrdQZ.test_refc                 C   rF  )Nc                 S   s>   t j| td�}|dk}d|| < | | ||  jdk||< |S rG  rH  rK  r[   r[   r\   r@   *
  rN  z TestOrdQZ.test_cef.<locals>.sortr@  rO  r[   r[   r\   Útest_cef(
  rQ  zTestOrdQZ.test_cefc                 C   s|   t | jd | jd dd�}| j| jd | jd dg|¢R Ž  t | jd | jd dd�}| j| jd | jd dg|¢R Ž  d S )Nr^   rO   rÄ  rÒ  )r   rZ   r¼   r<  )rw   r1  r[   r[   r\   Útest_diff_input_types3
  s   "&zTestOrdQZ.test_diff_input_typesc                 C   s
  t  d¡}t  ddg¡}dddgfdddgfdddgfdddgfg}t  d¡}t  d	d
g¡}dddgfdddgfdddgfdddgfg}t  d¡}t  ddg¡}ddt jgfddt jgfdt jdgfg}	t  d¡}
t  ddg¡}ddt jgfddt jgfdt jdgfg}t  ddg¡}t  ddg¡}ddt jgfddt jgfg}||||
|g}|||||g}|||	||g}t|||ƒD ]G\}}}|D ]?\}}t|||d�\}}}}}}|dk}|dk}t  |¡}t j|||@ < t j|| |@ < ||  ||   || < t||ƒ qÂq»d S )NrO   r£   r_   rÄ  rÅ  rÆ  rÇ  rÈ  y       À      ð?y      à?      à?yš™™™™™Ù¿š™™™™™É¿ù      ð?      ð¿r   r^   rÒ  )	rQ   rE   r4   rª   Únanr/  r   rI  r   )rw   r!  r"  Ú	expected1r#  r$  Ú	expected2r%  r&  Ú	expected3r'  r(  Ú	expected4r)  ÚB5Ú	expected5rZ   r¼   Úexpectedr,  r-  Ú	expectediÚsortstrÚexpected_eigvalsr7  r4  r  ÚazeroÚbzerorŸ  r[   r[   r\   Útest_sort_explicit:
  s\   




ý




ý
þ
þÿ
øÿzTestOrdQZ.test_sort_explicitN)rŒ   r�   rŽ   Úclassmethodr£  r2  r<  r>  rA  rC  rD  rE  rP  rR  rS  rb  r[   r[   r[   r\   r   	  s    
6.r  c                   @   s0   e Zd Zej d¡dd„ ƒZejjdd„ ƒZdS )ÚTestOrdQZWorkspaceSizerq   c                 C   s°   t j d¡}d}t jt jfD ] }| ||f¡ |¡}| ||f¡ |¡}t||dd„ dd�}qt jt jfD ] }| ||f¡ |¡}| ||f¡ |¡}t||dd„ dd�}q5d S )	Nr  éÊ   c                 S   ó   | |k S r#  r[   ©r4  r  r[   r[   r\   rÉ  t
  rÊ  z7TestOrdQZWorkspaceSize.test_decompose.<locals>.<lambda>r4  rÞ  c                 S   rf  r#  r[   rg  r[   r[   r\   rÉ  z
  rÊ  r“   )	rQ   rR   r  r:   r  rV   r   rì  r;   )rw   rf   r>  ÚddtyperZ   r¼   r7  r[   r[   r\   Útest_decomposek
  s   ÿÿýz%TestOrdQZWorkspaceSize.test_decomposec                 C   sp   t j d¡}d}t jt jt jt jfD ]#}| ||f¡ |¡}| ||f¡ |¡}t||dd�\}}}}	}
}qd S )Nr  re  rÈ  rÒ  )	rQ   rR   r  r:   r  rì  r;   rV   r   )rw   rf   r>  rh  rZ   r¼   ÚSrU   r4  r  ÚUr  r[   r[   r\   Útest_decompose_ouc}
  s   ýz)TestOrdQZWorkspaceSize.test_decompose_oucN)	rŒ   r�   rŽ   r�   r�   Ú	fail_slowri  r  rl  r[   r[   r[   r\   rd  j
  s
    

rd  c                   @   r  )ÚTestDatacopiedc                    s¾   ddl m} tddgddggƒ}t|ƒ‰ | ¡ }| ¡ }G ‡ fdd„dƒ}G ‡ fdd	„d	ƒ}|ƒ }|ƒ }|d
fˆ d
f|df|d
f|d
f|d
ffD ]\}	}
t|	ƒ}t|||	ƒ|
t|	ƒd� qHd S )Nr   )Ú_datacopiedr^   rO   ro   c                       s   e Zd Zd‡ fdd„	ZdS )z-TestDatacopied.test_datacopied.<locals>.Fake1Nc                    s   ˆ S r#  r[   )rw   rY   r|   ©rZ   r[   r\   Ú	__array__“
  s   z7TestDatacopied.test_datacopied.<locals>.Fake1.__array__)NN)rŒ   r�   rŽ   rq  r[   rp  r[   r\   ÚFake1’
  s    rr  c                       s   e Zd Z” jZdS )z-TestDatacopied.test_datacopied.<locals>.Fake2N)rŒ   r�   rŽ   Ú__array_interface__r[   rp  r[   r\   ÚFake2–
  s    
rt  FTr´   )Úscipy.linalg._decompro  rG   rB   Útolistr|   r   Úrepr)rw   ro  rò   ÚLÚM2rr  rt  ÚF1ÚF2ÚitemÚstatusÚarrr[   rp  r\   Útest_datacopiedŠ
  s"   ÿÿýzTestDatacopied.test_datacopiedN)rŒ   r�   rŽ   r  r[   r[   r[   r\   rn  ˆ
  r  rn  c                  C   óF   t dtjd�} tj| jddtd�}d|_t|dd� t|jdd� d	S )
z4Check linalg works with non-aligned memory (float32)i’  r…   rO   rý   ©ÚoffsetÚcountrY   ©r(  r(  T©Úoverwrite_aN)	r9   rQ   Úuint8Ú
frombufferÚdatar:   r?   r	   rU   ©rx   r¸  r[   r[   r\   Útest_aligned_mem_float£
  s
   r‹  Úppc64lezcrashes on ppc64lec                  C   r€  )
z4Check linalg works with non-aligned memory (float64)i$  r…   r¥  rý   r�  r„  Tr…  N)	r9   rQ   r‡  rˆ  r‰  r’   r?   r	   rU   rŠ  r[   r[   r\   Útest_aligned_mem°
  s
   r�  c                  C   r€  )
z>Check that complex objects don't need to be completely alignediH  r…   r!  rý   r�  r„  Tr…  N)	r8   rQ   r‡  rˆ  r‰  r“   r?   r	   rU   rŠ  r[   r[   r\   Útest_aligned_mem_complex¿
  s
   rŽ  c                 C   sÜ   t |ƒ}tt|ƒƒD ]a}|d d … }t|| tjƒrktj|| j|| jj	 d tj
d�}tj|jd|| j|| jd�}|| j|_|| |d< |||< | |i |¤Ž t|| jƒdkrk|| j||< | |i |¤Ž q
d S )Nr!  r…   r¥  r�  .r^   )rè  r�   rb   r`   rQ   rD   r8   r·   rY   Úitemsizer‡  rˆ  r‰  r?   rU   )ÚfuncrA  Úkwargsr¢   rx   r  r[   r[   r\   Úcheck_lapack_misalignedÍ
  s"   &ÿ€ór’  z0Ticket #1152, triggers a segfault in rare cases.)Úrunrô  c            	      C   s„  t jdtd�} t  d¡}d|_t jdt jd�}t j|jddtd�}d|_t  d¡}t	|ƒ\}}t
|ftdd	�ft|ftdd	�ft|ftdd	�ft	|ftdd	�ft||f|ftdd
�ft||ftddd�ft| ftdd	�ft|ftdd	�ft|ftdd	�ft|ftƒ ft|ftdd	�ft| ftdd	�ft|ftdd	�ft|ftdd	�ft|ftdd	�ft|ftdd	�ffD ]\}}}t|||ƒ q´d S )Nr(  r…   rý   r„  i N  r¥  r�  Tr…  )Úoverwrite_b)r†  r”  )rQ   rE   r’   r9   r?   r‡  rˆ  r‰  r¶   r   r	   Údictr
   r   r   r   r   r   r   r   r   r   r   r’  )	rò   ÚRrj  r«   ÚLUÚpivr�  rA  r‘  r[   r[   r\   Útest_lapack_misalignedß
  s6   

ðî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!S )"ÚTestOverwritec                 C   ó   t tdgƒ t tddgƒ d S ©Nrð   )rF   r	   r%  r[   r[   r\   Útest_eig  ó   zTestOverwrite.test_eigc                 C   r›  rœ  )rF   r   r%  r[   r[   r\   Ú	test_eigh  rž  zTestOverwrite.test_eighc                 C   ó   t tdgƒ d S ©NrF  )rF   r   r%  r[   r[   r\   ro  
  r¤  zTestOverwrite.test_eig_bandedc                 C   r   rœ  )rF   r
   r%  r[   r[   r\   Útest_eigvals  r¤  zTestOverwrite.test_eigvalsc                 C   r   rœ  )rF   r   r%  r[   r[   r\   Útest_eigvalsh  r¤  zTestOverwrite.test_eigvalshc                 C   r   r¡  )rF   r   r%  r[   r[   r\   rf    r¤  z!TestOverwrite.test_eigvals_bandedc                 C   r   rœ  )rF   r   r%  r[   r[   r\   Útest_hessenberg  r¤  zTestOverwrite.test_hessenbergc                 C   r   rœ  )rF   r   r%  r[   r[   r\   Útest_lu_factor  r¤  zTestOverwrite.test_lu_factorc                    s<   t  g d¢g d¢g d¢g¡}t|ƒ‰ t‡ fdd„dgƒ d S )Nrn   râ  )r·  r!  r!  c                    s
   t ˆ | ƒS r#  )r   )r«   ©Úxlur[   r\   rÉ    ó   
 z-TestOverwrite.test_lu_solve.<locals>.<lambda>)ro   )rQ   r3   r   rF   )rw   rŸ  r[   r¦  r\   Útest_lu_solve  s   zTestOverwrite.test_lu_solvec                 C   r   rœ  )rF   r   r%  r[   r[   r\   Útest_lu!  r¤  zTestOverwrite.test_luc                 C   r   rœ  )rF   r   r%  r[   r[   r\   Útest_qr$  r¤  zTestOverwrite.test_qrc                 C   r   rœ  )rF   r   r%  r[   r[   r\   Útest_rq'  r¤  zTestOverwrite.test_rqc                 C   r   rœ  )rF   r   r%  r[   r[   r\   Ú
test_schur*  r¤  zTestOverwrite.test_schurc                 C   s    t dd„ dgtjtjgd� d S )Nc                 S   s
   t | dƒS )Nr“   )r   ©rx   r[   r[   r\   rÉ  .  r¨  z2TestOverwrite.test_schur_complex.<locals>.<lambda>rð   )Údtypes)rF   rQ   r:   r  r%  r[   r[   r\   Útest_schur_complex-  s   

ÿz TestOverwrite.test_schur_complexc                 C   s    t tdgƒ t dd„ dgƒ d S )Nrð   c                 S   s   t | dd�S )Nr	  rŒ  )r   r®  r[   r[   r\   rÉ  3  s    z(TestOverwrite.test_svd.<locals>.<lambda>)rF   r   r%  r[   r[   r\   Útest_svd1  s   zTestOverwrite.test_svdc                 C   r   rœ  )rF   r   r%  r[   r[   r\   Útest_svdvals5  r¤  zTestOverwrite.test_svdvalsN)rŒ   r�   rŽ   r�  rŸ  ro  r¢  r£  rf  r¤  r¥  r©  rª  r«  r¬  r­  r°  r±  r²  r[   r[   r[   r\   rš    s"    rš  c                 C   s  t j| dftd� |¡}t  |¡j}d| }t|ƒ}t|j| dfƒ t	|| 
¡ |d� t|jƒ}t|jdƒ t	|| 
¡ |d� | dkrŠ|sŒt j d¡}| | d¡| d| ¡ }|d| | d¡ | d| ¡  }| |¡}t|d	d
�}t|j| dfƒ t|dd
�}t|j| dfƒ d S d S d S )NrO   r…   rÄ  r^   r  ©rO   r^   rq   ç-Cëâ6?çü©ñÒMbP?©Úrcondç�íµ ÷Æ°>rr   )rQ   r¶   r’   rV   rÆ  rÇ  r   r   r?   r   ÚmeanrU   rR   r  rS   )rW   rY   Úskip_bigÚXrÇ  r³   ÚYrf   r[   r[   r\   Ú_check_orth9  s&   
 
ör½  r!  z"test only on 64-bit, else too slowc               
   C   s>   d} zt | tjdd� W d S  ty } ztdƒ|‚d }~ww )Ni€–˜ T)rº  z.memory error perhaps caused by orth regression)r½  rQ   r  ÚMemoryErrorÚAssertionError)rW   rŠ  r[   r[   r\   Útest_orth_memory_efficiencyT  s   ÿþ€ÿrÀ  c                  C   s@   t jt jt jt jg} g d¢}t | |¡D ]	\}}t||ƒ qd S )N©r^   rO   ro   r(  rý   )rQ   r:   r  r;   rì  Ú	itertoolsÚproductr½  )r¯  rí  rƒ   rW   r[   r[   r\   Ú	test_orthe  s
   ÿrÄ  rƒ   c                 C   sJ   t jd| d�}t jd| d�}t|ƒ}|jt|ƒjksJ ‚|jdks#J ‚d S ©Nr„   r…   rO   )rQ   rŠ   rE   r   rY   r?   )rƒ   rx   r  Úoar[   r[   r\   Útest_orth_emptyk  s
   rÇ  c                   @   sv   e Zd Zdd„ Zej deee	j
ee	jg¡dd„ ƒZej dddg¡ej d	ddg¡ej d
ddg¡dd„ ƒƒƒZdS )ÚTestNullSpacec           
      C   s   t j d¡}t jt jt jt jg}g d¢}t ||¡D ]³\}}t j	d|f|d�}t  
|¡j}d| }t|ƒ}	t|	j||d fƒ t||	 d|d� t|jƒ}	t|	jdƒ t|j|	 d|d� | d|d  |¡}t|ƒ}	t|	j||d |d  fƒ t||	 d|d� |d	krÍt j d¡}| |d	¡| d	|¡ }|d
| |d¡ | d|¡  }| |¡}t|dd�}	t|	j||d	 fƒ t|dd�}	t|	j||d fƒ qd S )Nr^   rÁ  rO   r…   rÄ  r   r  r³  rq   r´  rµ  r¶  r¸  rr   )rQ   rR   r  r:   r  r;   rì  rÂ  rÃ  r¶   rÆ  rÇ  r$   r   r?   r   rU   ÚrandnrS   rV   )
rw   rf   r¯  rí  rƒ   rW   r»  rÇ  r³   r¼  r[   r[   r\   Útest_null_spacev  s8   
 
€ãzTestNullSpace.test_null_spacerƒ   c                 C   sJ   t jd|d�}t jd|d�}t|ƒ}|jdksJ ‚|jt|ƒjks#J ‚d S rÅ  )rQ   rŠ   rE   r$   r?   rY   )rw   rƒ   rx   r  Únsar[   r[   r\   Útest_null_space_empty›  s
   z#TestNullSpace.test_null_space_emptyr†  TFr�   r�  rÕ  r	  c                 C   s^   t j d¡}d}| d|d  |f¡}t| ¡ |||d�}t|| dt  |j¡j	d d� d S )	Nl   š'–YþœeN r(  r^   rO   )r†  r�   r�  r   rý   r  )
rQ   rR   Údefault_rngÚstandard_normalr$   r|   r   rÆ  rY   rÇ  )rw   r†  r�   r�  rf   rW   r»  r¼  r[   r[   r\   Útest_null_space_options¤  s   ÿ$z%TestNullSpace.test_null_space_optionsN)rŒ   r�   rŽ   rÊ  r�   r�   r‘   ra   r’   rQ   r:   r“   r;   rÌ  rÏ  r[   r[   r[   r\   rÈ  u  s    %
rÈ  c                  C   s¼  t dtƒ} | d d …d d…f }| d d …dd …f }tt||ƒtjd gd dd� tt||ƒtjd gd dd� ||fD ]}tt||ƒt |jd ¡dd� q=t g d¢g d¢g d	¢g d
¢g¡}d}tt|d d …d d…f |d d …dd …f ƒd |dd� tt|d d …dd …f |d d …d d…f ƒd |dd� d}tt|d d …d d…f |d d …dgf ƒ|dd� tt|d d …dgf |d d …d d…f ƒ|dd� d}tt|d d …d d…f |d d …dgf ƒ|dd� tt|d d …dgf |d d …d d…f ƒ|dd� d}tt|d d …d d…f |d d …dd …f ƒ|dgdd� t	t
t|d |ƒ t	t
t||d ƒ t	t
t|d d… |ƒ t g d¢g d¢g d¢g d¢g d¢g¡}t g d¢g d¢g d¢g d¢g d¢g¡}t tjd ddg¡}tt||ƒ|dd� dgdgg}ddgddgg}tt||ƒddd� tt||ƒddd� t d¡}t d¡}tt||ƒt d¡ƒ t d¡}t d¡}tt||ƒt d¡ƒ t d¡}t d¡}tt||ƒt d¡ƒ d S ) Nr!  ro   r  r  r  r^   )gñ�·‘4á?gVðR¦fÔ?g8Ô!“Ž @g•ÂÐë‚6ç?)gN÷$Ð—Wý?gÂã�Jìô¿gÑ~ý™Î'@gÊ÷3:]$°¿)g¢v•MÀg© çÀø¿Û¿g÷PT#™õ¿g eŸ‚,ßæ?)gºßÎ€ì–ë?gÜò¥+�íÕ?gòNô…G@g˜êS<Ê¿g™"Ó	´÷?rO   r   rÓ  rÔ  g¦®LÔ0âç?g•Ä¹»°-ß?gyßôv†Õ?r—   r  )r   r^   r   )r   r   r^   rï   r-  rT  rN  r„   r†   r‰   r™   r  )r!   r’   r   r    rQ   Úpir8   r?   r3   r  r  rŠ   )ÚHrZ   r¼   rŸ  r\  rx   r«   r[   r[   r\   Útest_subspace_angles°  s~   
  ÿýÿ0ÿ0ÿ22220ÿ
ü
ü





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S )ÚTestCDF2RDFc                 C   s   t  d||¡S )Nz...ij,...jk->...ik)rQ   Úeinsum)rw   rx   r«   r[   r[   r\   Úmatmul÷  rB  zTestCDF2RDF.matmulc                 C   s   t |  ||¡|  ||¡ƒ d S r#  )r   rÕ  )rw   ry   ri   rŸ  r[   r[   r\   Úassert_eig_validú  s   

þzTestCDF2RDF.assert_eig_validc                 C   s@   t  d¡}t  d¡t  d¡}}t||ƒ\}}|  |||¡ d S )Nr„   r   )rQ   rŠ   r%   rÖ  ©rw   r»  ry   ri   Úwrr§   r[   r[   r\   Útest_single_array0x0real   s   
z$TestCDF2RDF.test_single_array0x0realc                 C   sF   t  ddgddgg¡}t j |¡\}}t||ƒ\}}|  |||¡ d S )Nr^   rO   ro   r—   ©rQ   r3   r6   r	   r%   rÖ  r×  r[   r[   r\   Útest_single_array2x2_real  ó   z%TestCDF2RDF.test_single_array2x2_realc                 C   sF   t  ddgddgg¡}t j |¡\}}t||ƒ\}}|  |||¡ d S )Nr^   rO   r£   rÚ  r×  r[   r[   r\   Útest_single_array2x2_complex  rÜ  z(TestCDF2RDF.test_single_array2x2_complexc                 C   sL   t  g d¢g d¢g d¢g¡}t j |¡\}}t||ƒ\}}|  |||¡ d S )Nrn   rp   rÚ  r×  r[   r[   r\   Útest_single_array3x3_real  ó   z%TestCDF2RDF.test_single_array3x3_realc                 C   sL   t  g d¢g d¢g d¢g¡}t j |¡\}}t||ƒ\}}|  |||¡ d S ©Nrn   )r   r¥  rq   )r   r  r¥  rÚ  r×  r[   r[   r\   Útest_single_array3x3_complex  rß  z(TestCDF2RDF.test_single_array3x3_complexc                 C   s\   t ddƒD ]&}tj d¡ tj d||¡}tj |¡\}}t||ƒ\}}|  |||¡ qd S )Nr^   r·  iÿÉš;rý   )	r�   rQ   rR   r¢  rS   r6   r	   r%   rÖ  ©rw   rò   r»  ry   ri   rØ  r§   r[   r[   r\   Útest_random_1d_stacked_arrays  s   ûz)TestCDF2RDF.test_random_1d_stacked_arraysc                 C   sR   t ddƒD ]!}tj dd||¡}tj |¡\}}t||ƒ\}}|  |||¡ qd S )Nr^   r·  r(  )r�   rQ   rR   rS   r6   r	   r%   rÖ  râ  r[   r[   r\   Útest_random_2d_stacked_arrays(  s   üz)TestCDF2RDF.test_random_2d_stacked_arraysc                 C   s(   t  d¡t  d¡}}ttt||ƒ d S )Nr[   )rO   )rQ   rŠ   r3   r  r  r%   ©rw   ry   ri   r[   r[   r\   Útest_low_dimensionality_error0  s   z)TestCDF2RDF.test_low_dimensionality_errorc                 C   s0   t  d¡t  d¡ dd¡}}ttt||ƒ d S )Nro   rr   rO   ©rQ   r9   r  r  r  r%   rå  r[   r[   r\   r  4  ó   z!TestCDF2RDF.test_not_square_errorc                 C   s>   t  g d¢g d¢g d¢g¡}t j |¡\}}ttt||ƒ d S rà  ©rQ   r3   r6   r	   r  r  r%   ©rw   r»  ry   ri   r[   r[   r\   Útest_swapped_v_w_error9  s   z"TestCDF2RDF.test_swapped_v_w_errorc                 C   s0   t  d¡t  d¡ dd¡}}ttt||ƒ d S )Nro   rå   r¥  rç  rå  r[   r[   r\   Útest_non_associated_error?  rè  z%TestCDF2RDF.test_non_associated_errorc                 C   sŽ   t  g d¢g d¢g d¢g¡}t j |¡\}}ttt||ƒ t  g d¢g d¢g d¢gg d¢g d¢g d¢gg¡}t j |¡\}}ttt||ƒ d S )Nrn   r~   )rO   rq   y      @      ð¿ré  rê  r[   r[   r\   Útest_not_conjugate_pairsD  s   þz$TestCDF2RDF.test_not_conjugate_pairsN)rŒ   r�   rŽ   rÕ  rÖ  rÙ  rÛ  rÝ  rÞ  rá  rã  rä  ræ  r  rë  rì  rí  r[   r[   r[   r\   rÓ  õ  s    	rÓ  )F)’rÂ  ÚplatformÚsysÚnumpyrQ   Únumpy.testingr   r   r   r   r   r   r�   r   r  Úscipy.linalgr	   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&   Úscipy.linalg.lapackr'   r(   r)   r*   r+   r,   r-   r.   r/   Úscipy.linalg._miscr0   Úscipy.linalg._decomp_qzr1   Úscipy.statsr2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   Úscipy.linalg._testutilsrF   Úscipy.sparse._sputilsrG   Úscipy._lib._testutilsrH   Úscipy.linalg.blasrI   Úscipy.__config__rJ   ÚImportErrorÚmachineÚIS_WASMr’   r]   r  ÚREAL_DTYPESrì  rP   r´  rk   rl   r”   r!  rˆ  r¡  rÔ  r  r�   r  rm  r  r  r  r  r®  r¸  rå  Úblas_providerÚblas_versionr  r  rd  rn  r‹  r�  rŽ  r’  Úxfailr™  rš  r½  r  rY   Úintpr�  rÀ  rÄ  r‘   ra   r“   rÇ  rÈ  rÒ  rÓ  r[   r[   r[   r\   Ú<module>   s¸     €,Tÿ*    *   P
>       \
 4 Kÿ
ÿ
 
8ÿ
	;E