U
    »mœdVh  ã                   @   sà  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	m
Z
mZmZmZ d dl mZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+ d	d
„ Z,G dd„ dƒZ-G dd„ dƒZ.G dd„ dƒZ/G dd„ dƒZ0G dd„ dƒZ1G dd„ dƒZ2G dd„ dƒZ3G dd„ dƒZ4G dd„ dƒZ5G dd„ dƒZ6G dd „ d ƒZ7G d!d"„ d"ƒZ8G d#d$„ d$ƒZ9G d%d&„ d&ƒZ:G d'd(„ d(ƒZ;d)d*„ Z<d+d,„ Z=d-d.„ Z>d/d0„ Z?G d1d2„ d2ƒZ@dS )3é    N)ÚarangeÚaddÚarrayÚeyeÚcopyÚsqrt)Úassert_equalÚassert_array_equalÚassert_array_almost_equalÚassert_allclose)Úraises)Úfft)Úcomb)ÚtoeplitzÚhankelÚ	circulantÚhadamardÚleslieÚdftÚ	companionÚtriÚtriuÚtrilÚkronÚ
block_diagÚhelmertÚhilbertÚ
invhilbertÚpascalÚ	invpascalÚfiedlerÚfiedler_companionÚeigvalsÚconvolution_matrix)Úcondc                 C   s   t | ƒ}t ||¡}|S ©N)r   r   Úouter)ÚnÚdata© r)   úa/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/linalg/tests/test_special_matrices.pyÚget_mat   s    r+   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestTric              
   C   s~   t tdƒtddddgddddgddddgddddggƒƒ t tddd�tddddgddddgddddgddddggdƒƒ d S )Né   é   r   Úf©Údtype©r   r   r   ©Úselfr)   r)   r*   Ú
test_basic   s    


ý


ýýzTestTri.test_basicc              
   C   s€   t tddd�tddddgddddgddddgddddggƒƒ t tddd�tddddgddddgddddgddddggƒƒ d S )Nr-   r.   ©Úkr   éÿÿÿÿr2   r3   r)   r)   r*   Ú	test_diag$   s    


ý


ýzTestTri.test_diagc              	   C   sj   t tddƒtdddgdddgdddgdddggƒƒ t tddƒtddddgddddgddddggƒƒ d S )Nr-   é   r.   r   r2   r3   r)   r)   r*   Útest_2d.   s    ý

þzTestTri.test_2dc              	   C   sr   t tdddd�tddddgddddgddddggƒƒ t tdddd�tdddgdddgdddgdddggƒƒ d S )Nr:   r-   é   r6   r.   r   éþÿÿÿr2   r3   r)   r)   r*   Útest_diag2d7   s    

þýzTestTri.test_diag2dN)Ú__name__Ú
__module__Ú__qualname__r5   r9   r;   r>   r)   r)   r)   r*   r,      s   

	r,   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestTrilc                 C   sZ   dt dƒ  d¡}| ¡ }tdƒD ]$}t|d dƒD ]}d|||f< q4q"tt|ƒ|ƒ d S ©Néd   é   Úlr.   r   )r+   Úastyper   Úranger   r   ©r4   ÚaÚbr7   rF   r)   r)   r*   r5   B   s    zTestTril.test_basicc                 C   s®   dt dƒ  d¡}| ¡ }tdƒD ]$}t|d dƒD ]}d|||f< q4q"tt|dd�|ƒ | ¡ }tdƒD ],}tt|d dfƒdƒD ]}d|||f< q„qjtt|d	d�|ƒ d S )
NrD   rE   r/   r:   r   r<   r6   r.   r=   )r+   rG   r   rH   r   r   ÚmaxrI   r)   r)   r*   r9   J   s    zTestTril.test_diagN©r?   r@   rA   r5   r9   r)   r)   r)   r*   rB   A   s   rB   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestTriuc                 C   sZ   dt dƒ  d¡}| ¡ }tdƒD ]$}t|d dƒD ]}d|||f< q4q"tt|ƒ|ƒ d S rC   )r+   rG   r   rH   r   r   rI   r)   r)   r*   r5   Y   s    zTestTriu.test_basicc                 C   s®   dt dƒ  d¡}| ¡ }tdƒD ],}tt|d dfƒdƒD ]}d|||f< q<q"tt|dd�|ƒ | ¡ }tdƒD ]$}t|d dƒD ]}d|||f< q„qrtt|d	d�|ƒ d S )
NrD   rE   r/   r.   r   r<   r6   r:   r=   )r+   rG   r   rH   rL   r   r   rI   r)   r)   r*   r9   a   s    zTestTriu.test_diagNrM   r)   r)   r)   r*   rN   X   s   rN   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚTestToeplitzc                 C   sl   t dddgƒ}t|dddgdddgdddggƒ t dddgdddgƒ}t|dddgdddgdddggƒ d S ©Nr.   r<   r:   r-   rE   ©r   r	   ©r4   Úyr)   r)   r*   r5   q   s    "zTestToeplitz.test_basicc                 C   sj   dt dƒ d }t|ƒ}t|ƒ}t||ƒ |d d …df }t||ƒ t|ddd …f |dd …  ¡ ƒ d S )Nç      ð?ç      @y      ð?      ð?r   r.   )r   r   r   r	   Zconj)r4   r(   ÚxÚtZcol0r)   r)   r*   Útest_complex_01w   s    

zTestToeplitz.test_complex_01c                 C   s2   t dƒ}t|dggƒ t ddƒ}t|dggƒ dS )z*Scalar arguments still produce a 2D array.é
   é   NrQ   )r4   rW   r)   r)   r*   Útest_scalar_00‚   s    
zTestToeplitz.test_scalar_00c                 C   s2   t dddgƒ}t|dƒ}t|dgdgdggƒ d S ©Nr.   r<   r:   ©r   r   r	   ©r4   ÚcrW   r)   r)   r*   Útest_scalar_01‰   s    
zTestToeplitz.test_scalar_01c                 C   s6   t dddgƒ}t|t dƒƒ}t|dgdgdggƒ d S r\   r]   r^   r)   r)   r*   Útest_scalar_02Ž   s    zTestToeplitz.test_scalar_02c                 C   s8   t dddgƒ}t|t dgƒƒ}t|dgdgdggƒ d S r\   r]   r^   r)   r)   r*   Útest_scalar_03“   s    zTestToeplitz.test_scalar_03c                 C   s.   t dddgƒ}td|ƒ}t|dddggƒ d S )NrY   r<   r:   r.   r]   )r4   ÚrrW   r)   r)   r*   Útest_scalar_04˜   s    
zTestToeplitz.test_scalar_04N)
r?   r@   rA   r5   rX   r[   r`   ra   rb   rd   r)   r)   r)   r*   rO   o   s   rO   c                   @   s   e Zd Zdd„ ZdS )Ú
TestHankelc                 C   sl   t dddgƒ}t|dddgdddgdddggƒ t dddgdddgƒ}t|dddgdddgdddggƒ d S )Nr.   r<   r:   r   r-   rE   )r   r	   rR   r)   r)   r*   r5   Ÿ   s    "zTestHankel.test_basicN©r?   r@   rA   r5   r)   r)   r)   r*   re   ž   s   re   c                   @   s   e Zd Zdd„ ZdS )ÚTestCirculantc                 C   s4   t dddgƒ}t|dddgdddgdddggƒ d S r\   )r   r	   rR   r)   r)   r*   r5   §   s    zTestCirculant.test_basicNrf   r)   r)   r)   r*   rg   ¦   s   rg   c                   @   s   e Zd Zdd„ ZdS )ÚTestHadamardc              	   C   sŽ   t dƒ}t|dggƒ t dtd�}t|ddgddggƒ t dƒ}t|ddddgddddgddddgddddggƒ ttt dƒ ttt d	ƒ d S )
Nr.   r<   r0   rT   ç      ð¿r-   r8   r   rE   )r   r	   ÚfloatÚassert_raisesÚ
ValueErrorrR   r)   r)   r*   r5   ®   s    


ýzTestHadamard.test_basicNrf   r)   r)   r)   r*   rh   ¬   s   rh   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
TestLesliec                 C   sj   t ttddgddggdddgƒ t ttdddgddgddggƒ t ttddgddgƒ t ttdgg ƒ d S rP   )rk   rl   r   r3   r)   r)   r*   Útest_bad_shapesÂ   s      zTestLeslie.test_bad_shapesc                 C   sB   t dddgddgƒ}tdddgdd	d	gd	dd	ggƒ}t||ƒ d S )
Nr.   r<   r:   ç      Ð?ç      à?rT   ç       @rU   ç        )r   r   r	   )r4   rJ   Úexpectedr)   r)   r*   r5   È   s    
þzTestLeslie.test_basicN©r?   r@   rA   rn   r5   r)   r)   r)   r*   rm   À   s   rm   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestCompanionc                 C   sH   t ttddgddggƒ t ttdddgƒ t ttdgƒ t ttg ƒ d S )Nr.   r<   r   r-   rE   )rk   rl   r   r3   r)   r)   r*   rn   Ò   s    zTestCompanion.test_bad_shapesc                 C   s\   t dddgƒ}tddgddggƒ}t||ƒ t dd	d
gƒ}tdd	gddggƒ}t||ƒ d S )Nr.   r<   r:   ç       Àg      ÀrT   rr   rq   ç      @g      $Àç      À)r   r   r	   )r4   r_   rs   r)   r)   r*   r5   Ø   s    þ
þzTestCompanion.test_basicNrt   r)   r)   r)   r*   ru   Ð   s   ru   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestBlockDiagc                 C   s˜   t tdƒddgddgddggdddggƒ}t|dddddddgdddddddgdddddddgdddddddgdddddddgdddddddggƒ d S )Nr<   r.   r:   r-   rE   é   r   )r   r   r	   ©r4   rV   r)   r)   r*   r5   ç   s    *ûzTestBlockDiag.test_basicc                 C   s4   t dggƒ}t|jtƒ t dggƒ}t|jtƒ d S )Ng      ø?T)r   r   r1   rj   Úboolr{   r)   r)   r*   Ú
test_dtypeð   s    zTestBlockDiag.test_dtypec                 C   s6   t dggdggƒ}t ddgddgg¡}t||ƒ d S )Nr.   ù              ð?r   )r   Únpr   r	   )r4   ÚactualZdesiredr)   r)   r*   Útest_mixed_dtypes÷   s    zTestBlockDiag.test_mixed_dtypesc                 C   sN   t dƒ}t|jdƒ t|dggƒ t ddgdƒ}t|dddgdddggƒ d S )Nr.   ©r.   r.   r<   r:   r-   r   )r   r   Úshaper	   ©r4   rJ   r)   r)   r*   Útest_scalar_and_1d_argsü   s
    z%TestBlockDiag.test_scalar_and_1d_argsc                 C   s   t ttdgggƒ d S )Nr.   )rk   rl   r   r3   r)   r)   r*   Útest_bad_arg  s    zTestBlockDiag.test_bad_argc                 C   s"   t ƒ }t|jdƒ t|jdƒ d S )Nr<   r   )r   r   ÚndimÚnbytesr„   r)   r)   r*   Útest_no_args  s    zTestBlockDiag.test_no_argsc                 C   st   t ddgddggg ddgddgddggƒ}t|ddddgddddgddddgddddgddddgddddggƒ d S )	Nr.   r   r<   r:   r-   rE   rz   é   )r   r	   r„   r)   r)   r*   Útest_empty_matrix_arg  s    þ




ûz#TestBlockDiag.test_empty_matrix_argc                 C   sž   t ddgddggg gddgddgddggtjddgd	d
�ƒ}t|ddddddgddddddgddddddgddddddgddddddgddddddggƒ d S )Nr.   r   r<   r:   r-   rE   rz   rŠ   Zint32r0   )r   r   Zzerosr	   r„   r)   r)   r*   Útest_zerosized_matrix_arg  s    ýûz'TestBlockDiag.test_zerosized_matrix_argN)r?   r@   rA   r5   r}   r�   r…   r†   r‰   r‹   rŒ   r)   r)   r)   r*   ry   æ   s   	ry   c                   @   s   e Zd Zdd„ ZdS )ÚTestKronc              
   C   s¬   t tddgddggƒtdddggƒƒ}t|tddddddgddddddggƒƒ tddgddggƒ}tdgdggƒ}t ||ƒ}tddgddgd	d
gddggƒ}t||ƒ d S )Nr.   r<   r:   r-   rY   é   rZ   é   é   é(   é!   é,   )r   r   r	   )r4   rJ   Úm1Úm2rs   r)   r)   r*   r5   ,  s    &ÿ
ýzTestKron.test_basicNrf   r)   r)   r)   r*   r�   *  s   r�   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestHelmertc                 C   sV   t ddƒD ]F}t|dd�}t |¡}t| |j¡|dd� t|j |¡|dd� q
d S )Nr.   rŠ   T©Úfullçê-�™—q=©Úatol)rH   r   r   r   r   ÚdotÚT)r4   r'   ÚHZIdr)   r)   r*   Útest_orthogonality>  s
    
zTestHelmert.test_orthogonalityc                 C   sš   t ddƒD ]Š}t|dd�}t|ƒ}|dd …d d …f j|jfD ]T}t |¡t ||fd| ¡ }t| |j¡|ƒ t|j |¡t |d ¡dd� q>q
d S )Nr<   rŠ   Tr—   r.   r™   rš   )rH   r   r�   r   r   r˜   r   rœ   )r4   r'   ZH_fullZ	H_partialÚUÚCr)   r)   r*   Útest_subspaceE  s     zTestHelmert.test_subspaceN)r?   r@   rA   rŸ   r¢   r)   r)   r)   r*   r–   <  s   r–   c                   @   s   e Zd Zdd„ ZdS )ÚTestHilbertc                 C   sX   t dddgdddgdddggƒ}ttdƒ|ƒ ttdƒdggƒ tdƒ}t|jd	ƒ d S )
NrT   rp   gUUUUUUÕ?ro   gš™™™™™É?r:   r.   r   )r   r   )r   r
   r   r	   r   rƒ   )r4   Zh3Zh0r)   r)   r*   r5   Q  s    
þzTestHilbert.test_basicNrf   r)   r)   r)   r*   r£   O  s   r£   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestInvHilbertc              "   C   sî  t dggƒ}ttddd�|ƒ ttdƒ|ƒ t ddgddggƒ}ttddd�|ƒ ttdƒ|ƒ t dd	d
gd	ddgd
ddggƒ}ttddd�|ƒ ttdƒ|ƒ t ddddgddddgddddgddddggƒ}ttddd�|ƒ ttdƒ|ƒ t dddddgdddd d!gddd"d#d$gdd d#d%d&gdd!d$d&d'ggƒ}ttd(dd�|ƒ ttd(ƒ|ƒ t d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9gd*d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIgd+d;dJdKdLdMdNdOdPdQdRdSdTdUdVdWdXgd,d<dKdYdZd[d\d]d^d_d`dadbdcdddedfgd-d=dLdZdgdhdidjdkdldmdndodpdqdrdsgd.d>dMd[dhdtdudvdwdxdydzd{d|d}d~dgd/d?dNd\didud€d�d‚dƒd„d…d†d‡dˆd‰dŠgd0d@dOd]djdvd�d‹dŒd�dŽd�d�d‘d’d“d”gd1dAdPd^dkdwd‚dŒd•d–d—d˜d™dšd›dœd�gd2dBdQd_dldxdƒd�d–dždŸd d¡d¢d£d¤d¥gd3dCdRd`dmdyd„dŽd—dŸd¦d§d¨d©dªd«d¬gd4dDdSdadndzd…d�d˜d d§d­d®d¯d°d±d²gd5dEdTdbdod{d†d�d™d¡d¨d®d³d´dµd¶d·gd6dFdUdcdpd|d‡d‘dšd¢d©d¯d´d¸d¹dºd»gd7dGdVdddqd}dˆd’d›d£dªd°dµd¹d¼d½d¾gd8dHdWdedrd~d‰d“dœd¤d«d±d¶dºd½d¿dÀgd9dIdXdfdsddŠd”d�d¥d¬d²d·d»d¾dÀdÁggƒ}ttdÂdd�|ƒ ttdÂƒ| t¡dÃdÄ� d S )ÅNr.   T©Úexactr-   iúÿÿÿé   r<   é	   iÜÿÿÿr�   éÀ   iLÿÿÿé´   r:   é   iˆÿÿÿéð   itÿÿÿi°  itõÿÿi�  iP  i˜ïÿÿið
  é   iÔþÿÿi  iˆúÿÿiv  iÀ  i,¶ÿÿi i  iÈÎÿÿi6 i 4þÿi|Ý  i ¼ ix§þÿiD¬  rE   i!  ip]ÿÿi¸) i�2@ýilç†%lýÿÿÿPAy l   èg’
 lýÿÿÿP=… l   š/w$ lýÿÿÿÐ:R
Âl   xDÅulýÿÿÿ°‡m7l   ôOá@£lýÿÿÿ�>/,	l   èt:lýÿÿÿ`jü!˜ l   ˜< i ìy iÀÌŒæl    Ør	 lýÿÿÿ@uñ\Œ l    Dâbùlýÿÿÿ`H„h˜l    Pz6 lüÿÿÿ ©}% l    l&òW lüÿÿÿÀµc¯( l    h‹xÅ lüÿÿÿÀ×4Îz l    d©~ÏI
 lüÿÿÿ°8wl8Z l    @u8! lýÿÿÿ`6—a l   @iLU lýÿÿÿ äRKl    8H,’!lüÿÿÿ`gÚ`36 l   ÀgË0Î lüÿÿÿ *—?*^B l   °;±tô$Õ lüÿÿÿÀ}|úöl   @¢bísklüÿÿÿ Cý{'"il   `>Ü9ž&%lüÿÿÿ°m´q>Âl   À3þCM@;lüÿÿÿ 86ë`T l   Pm;ã,
 l    pM6=lüÿÿÿ 0	å l    ÌnC lüÿÿÿ YJV’r§l     �<_lüÿÿÿ L»^ÖVÂl    ³±R8lüÿÿÿ u÷œx×bl    ¥eH  lüÿÿÿðEIBQêxl    H‘våYÎPlüÿÿÿ ‚x€(6$l     7œÂ	lüÿÿÿ >Ñu1l   �Dcf¾$l lüÿÿÿ@QM †l   à8It¯lüÿÿÿ€Hv0"Qsl   øN
¶:v lûÿÿÿ@ ÷s/V| l    è#& lûÿÿÿp-ìN$vè  l   ð5÷ Æ lûÿÿÿ@,@VK-
 l   à8_D�dYI lûÿÿÿ B _, l   ˆqŠ…kl    ¶O9x—&lûÿÿÿÀY‚)ºlŸx l    pîÎd lûÿÿÿ gsx m�U l    D0—FàZD lûÿÿÿ°K|y#l_y l    xbrÀŸ lûÿÿÿÀ§&Vþ%— l    lny’?Cce lûÿÿÿ@©Mà=p- l    @ì@|%É6 lûÿÿÿàýh\b½C l   @/.úßL lûÿÿÿ BAyks�'9 l   �|Þº¢¼ lûÿÿÿ°
�LjYÄl   Ài´Yn\ª"%lûÿÿÿ #Û5Eyl    Xç½(ïlûÿÿÿ@Tˆ'3?§l   @­,›3lûÿÿÿ ÝHx+†/S l   pO3^áÐ#
 l    @+aF¿}lûÿÿÿ�cJ{
Ô;_l    P8Xy8Qo&lûÿÿÿ B¢IhNû�l    `@
o†c#lûÿÿÿ€dÈLq,ŠOl    p÷F�Y¦Ralûÿÿÿ Iiš9M›l     R/Û$L†lûÿÿÿ @È<8zG 0 l   $9@tØ)lûÿÿÿ ì„4œl   07$$çTv0lûÿÿÿ lÅÜ7ç>ì?l   È"`ó-ø:M=lûÿÿÿ (^¾@èbŒ)l   �6´a;:BMÛlûÿÿÿ€b-Kx?|#l   Z$M~lòl¢ l    lß>cTØAlûÿÿÿ@8HV-Ü:vl    h{d*U lúÿÿÿÀz�aC�<C l    dYwûéMflûÿÿÿ RyäUC#h.l    @)³]¹¬lûÿÿÿào†z+%’l   @eè4¹j¿ÏT lúÿÿÿ ëéGU
 l   `iå
t,@¦ lúÿÿÿ Yˆ,côhÙ8 l   ÀE@3I3Tlûÿÿÿ X=—&@El   Ð~àS˜iÛl    p´™}�v lúÿÿÿ`Xfz~Aç`si l    86Jpsbv lûÿÿÿ $JüY'ipl     ™tk(0Êlûÿÿÿ u1˜@<fÓl   �w2¥T½.g] lúÿÿÿÀ ç%\Žn l    PYH¼uÿllûÿÿÿ ZíR@
ÃRål   ¸‡L°w�J¸l    L#(‡S.,# lûÿÿÿÀ2F=Eàg¡Jl    @¨Ï}llûÿÿÿ`L«\òk�l   @Ši7Qt0"lûÿÿÿ 8B²3ä\f	l   p1¢&½Sù,l     ¸@§YŽ?–lûÿÿÿ }xúl—]R l   ¤/"Ÿ}²+
 é   r™   )Úrtol)r   r	   r   r
   r   rG   rj   )r4   Zinvh1Zinvh2Zinvh3Zinvh4Zinvh5Zinvh17r)   r)   r*   r5   _  sT   ÿ
þ


ýü        ý
        ü
        ü        û         û       ú       ù       ù       ù       ù        ù       ù       ù        ù        ù       ù       úŽzzTestInvHilbert.test_basicc                 C   sN   t ddƒD ]>}t|ƒ}t|ƒ}t|ƒ}t| |¡t|ƒd| d| d� q
d S )Nr.   rY   gVçž¯Ò<)r›   r¯   )rH   r   r   r$   r   rœ   r   )r4   r'   rJ   rK   r_   r)   r)   r*   Útest_inverseû  s
    zTestInvHilbert.test_inverseN)r?   r@   rA   r5   r°   r)   r)   r)   r*   r¤   ]  s    r¤   c                   @   s  e Zd ZdedggƒedggƒfdeddgddggƒeddgddggƒfdedddgdddgdddggƒedddgdddgdddggƒfdeddddgddddgddddgddddggƒeddddgddddgddddgddddggƒfgZd	d
„ Zdd„ Zdd„ Zdd„ ZdS )Ú
TestPascalr.   r<   r   r:   rz   r-   rY   rZ   c                 C   st   t t|ƒ|ƒ t t|dd�|ƒ t t|dd�|jƒ tt|dd�|ƒ tt|ddd�|ƒ tt|ddd�|jƒ d S )NÚlower)ÚkindÚupperFr¥   )r¦   r³   )r	   r   r�   r
   ©r4   r'   ÚsymÚlowr)   r)   r*   Ú
check_case  s    zTestPascal.check_casec                 C   s$   | j D ]\}}}|  |||¡ qd S r%   )Úcasesr¸   rµ   r)   r)   r*   Ú
test_cases%  s    zTestPascal.test_casesc                 C   s&   t dƒ}|d tdddd�ks"t‚d S )Né2   )r8   r8   éb   é1   Tr¥   )r   r   ÚAssertionError©r4   Úpr)   r)   r*   Útest_big)  s    zTestPascal.test_bigc                 C   s\   t dƒ}td| dd¡ | dd¡dd� t dƒ}td| dd¡ d	| dd¡ d
d� d S )Né"   r<   r8   r=   zn = 34©Úerr_msgé#   rq   rT   zn = 35)r   r   Úitemr¿   r)   r)   r*   Útest_threshold-  s    "zTestPascal.test_thresholdN)	r?   r@   rA   r   r¹   r¸   rº   rÁ   rÇ   r)   r)   r)   r*   r±     sB   
ÿÿþþ
þý


ý


ýüôr±   c                  C   sx   dd„ } dddg}dddd	g}|D ]$}|D ]}d
D ]}| |||ƒ q2q*q"ddddg}|D ]}|D ]}| ||dƒ q`qXd S )Nc                 S   sR   t | ||d�}t| ||d�}| t¡ | t¡¡}t|t| ƒd| ||f d� d S )N)r³   r¦   zn=%d  kind=%r exact=%rrÃ   )r   r   rG   Úobjectrœ   r	   r   )r'   r³   r¦   ÚiprÀ   Úer)   r)   r*   Úcheck_invpascal:  s    ÿz'test_invpascal.<locals>.check_invpascalZ	symmetricr²   r´   r.   r<   rE   é   )TFé   rÂ   rÅ   r»   Tr)   )rË   ÚkindsÚnsr'   r³   r¦   r)   r)   r*   Útest_invpascal8  s    
rÐ   c               	   C   sž   t dƒ} tddgddggƒ}t| |ƒ t ddd�} t| |d ƒ t ddd�} t| |tdƒ ƒ tdd	dd
dddd	gƒ}t dƒ} |  |¡}t|ƒ}t||ƒ d S )Nr<   rT   ri   r'   )Úscalerq   Zsqrtnr   r.   r:   r-   rE   é   )r   r   r
   r   rœ   r   )Úmrs   rV   ZmxZfxr)   r)   r*   Útest_dftU  s    

rÔ   c                  C   s®   t g ƒ} t| jdƒ t dgƒ} t| t dgg¡ƒ t t dd¡ƒ} t dddddd	gddddddgddddddgddddddgddddddgd	dddddgg¡}t| |ƒ d S )
Nr   g     À^@rr   r.   rŠ   r<   r:   r-   rE   )r    r   Úsizer	   r   r   r   )r/   Zdesr)   r)   r*   Útest_fiedlere  s    
ûrÖ   c               	   C   sÀ   t g ƒ} t| jdƒ t dgƒ} t| jdƒ t ddgƒ} t| t dgg¡ƒ t dddgƒ} t| tdddgƒƒ tt	ƒ� t dddgƒ W 5 Q R X t dd	d
ddgƒ} tt
| ƒt ddddg¡ƒ d S )Nr   rT   rq   rv   r™   rU   r.   r<   g      0Àg     €U@g      fÀg     @Z@g      @rw   )r!   r   rÕ   r	   r   r   r
   r   rk   rl   r"   )Úfcr)   r)   r*   Útest_fiedler_companiont  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e	j
 dddg¡e	j
 ddddg¡e	j
 ddddg¡e	j
 dddddg¡dd„ ƒƒƒƒZdS )ÚTestConvolutionMatrixzL
    Test convolution_matrix vs. numpy.convolve for various parameters.
    c                 C   s,   t  dd|¡}|r(|dt  dd|¡  }|S )z/Make a complex or real test vector of length n.rx   gš™™™™™@r~   g      ø¿gÍÌÌÌÌÌ@)r   Zlinspace)r4   r'   ÚcpxrV   r)   r)   r*   Úcreate_vector‰  s    z#TestConvolutionMatrix.create_vectorc              	   C   s.   t jtdd�� tdddgdƒ W 5 Q R X d S )Nzn must be a positive integer©Úmatchr.   r<   r:   r   ©Úpytestr   rl   r#   r3   r)   r)   r*   Ú
test_bad_n�  s    z TestConvolutionMatrix.test_bad_nc              	   C   s(   t jtdd�� tddƒ W 5 Q R X d S )Nzone-dimensionalrÜ   r.   r-   rÞ   r3   r)   r)   r*   Útest_bad_first_arg•  s    z(TestConvolutionMatrix.test_bad_first_argc              	   C   s(   t jtdd�� tg dƒ W 5 Q R X d S )Nzlen\(a\)rÜ   r-   rÞ   r3   r)   r)   r*   Útest_empty_first_argš  s    z*TestConvolutionMatrix.test_empty_first_argc              	   C   s,   t jtdd�� tdddd� W 5 Q R X d S )Nzmode.*must be one ofrÜ   r‚   r-   zinvalid argument)ÚmoderÞ   r3   r)   r)   r*   Útest_bad_modeŸ  s    z#TestConvolutionMatrix.test_bad_moderÚ   FTÚnar.   r<   r¨   Únvrã   Nr˜   ZvalidZsamec           
      C   sh   |   ||¡}|   ||¡}|d kr8t ||¡}t||ƒ}nt |||¡}t|||ƒ}|| }	t||	ƒ d S r%   )rÛ   r   Zconvolver#   r
   )
r4   rÚ   rå   ræ   rã   rJ   ÚvÚy1ÚAÚy2r)   r)   r*   Útest_against_numpy_convolve¤  s    z1TestConvolutionMatrix.test_against_numpy_convolve)r?   r@   rA   Ú__doc__rÛ   rà   rá   râ   rä   rß   ÚmarkZparametrizerë   r)   r)   r)   r*   rÙ   „  s   rÙ   )Arß   Únumpyr   r   r   r   r   r   r   Znumpy.testingr   r	   r
   r   r   rk   Z	scipy.fftr   Zscipy.specialr   Zscipy.linalgr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   Znumpy.linalgr$   r+   r,   rB   rN   rO   re   rg   rh   rm   ru   ry   r�   r–   r£   r¤   r±   rÐ   rÔ   rÖ   rØ   rÙ   r)   r)   r)   r*   Ú<module>   s<    \(/D )3