U
    HvfM4  ã                   @   s.  d Z ddlmZmZ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 ddlZddlmZmZmZmZmZmZmZmZ ddlmZ d"dd	„Zd#d
d„Z d$dd„Z!dd„ Z"dd„ Z#d%dd„Z$G dd„ dƒZ%G dd„ dƒZ&G dd„ dƒZ'G dd„ dƒZ(G dd„ dƒZ)G dd„ dƒZ*G d d!„ d!ƒZ+dS )&zÝ
Build fftpack:
  python setup_fftpack.py build
Run tests if scipy is installed:
  python -c 'import scipy;scipy.fftpack.test(<level>)'
Run tests if fftpack is not installed:
  python tests/test_pseudo_diffs.py [<level>]
é    )Úassert_equalÚassert_almost_equalÚassert_array_almost_equal)ÚdiffÚfftÚifftÚtilbertÚitilbertÚhilbertÚihilbertÚshiftÚfftfreqÚcs_diffÚsc_diffÚss_diffÚcc_diffN)ÚarangeÚsinÚcosÚpiÚexpÚtanhÚsumÚsign)Úrandomé   c                 C   s„   t | ƒ}t|ƒ}|d kr dt }t|ƒd t | | }|dk rVd||  }d|d< n|| }|dkrvd|d|d …< t|| ƒjS )Né   ù               @r   r   ç        iÐ  éú   )r   Úlenr   r   r   Úreal)ÚxÚkÚperiodÚfxÚnÚw© r(   úI/tmp/pip-unpacked-wheel-96ln3f52/scipy/fftpack/tests/test_pseudo_diffs.pyÚdirect_diff   s    
r*   c                 C   sd   t | ƒ}t|ƒ}|d kr dt }t|ƒ| d t | | }d|d< dt|ƒ }d|d< t|| ƒS )Nr   r   r   ù              ð?y                ©r   r    r   r   r   r   ©r"   Úhr$   r%   r&   r'   r(   r(   r)   Údirect_tilbert'   s    r/   c                 C   sT   t | ƒ}t|ƒ}|d kr dt }t|ƒ| d t | | }dt|ƒ }t|| ƒS )Nr   y       €      ð¿r,   r-   r(   r(   r)   Údirect_itilbert3   s    r0   c                 C   s4   t | ƒ}t|ƒ}t|ƒ| }dt|ƒ }t|| ƒS )Nr+   )r   r    r   r   r   )r"   r%   r&   r'   r(   r(   r)   Údirect_hilbert=   s
    r1   c                 C   s
   t | ƒ S )N)r1   )r"   r(   r(   r)   Údirect_ihilbertE   s    r2   c                 C   sT   t | ƒ}|d kr"t|ƒd | }nt|ƒd t | | }tt| ƒt|| ƒ ƒjS )Nr+   r   )r    r   r   r   r   r   r!   )r"   Úar$   r&   r#   r(   r(   r)   Údirect_shiftI   s
    r4   c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestDiffc                 C   sH  dD ]<}t |ƒd t | }ttt|ƒƒtt|ƒƒƒ ttt|ƒdƒtt|ƒdƒƒ ttt|ƒdƒtt|ƒdƒƒ ttt|ƒdƒtt|ƒdƒƒ ttt|ƒdƒtt|ƒdƒƒ tttd| ƒdƒttd| ƒdƒƒ tttd| ƒdƒttd| ƒdƒƒ ttt|ƒƒtt|ƒƒƒ ttt|ƒdƒtt|ƒdƒƒ ttt|ƒdƒtt|ƒdƒƒ ttt|ƒdƒtt|ƒdƒƒ tttd| ƒƒttd| ƒƒƒ ttt|| d ƒƒtt|| d ƒƒƒ ttt|| d ƒƒtt|| d ƒƒƒ tdƒD ]R}tttd| ƒ|ƒttd| ƒ|ƒƒ tttd| ƒ|ƒttd| ƒ|ƒƒ qîqd S )N)é   é   é@   é   é    r   é   é   é   é   )r   r   r   r   r   r*   r   Úrange)Úselfr&   r"   r#   r(   r(   r)   Útest_definitionT   s&    
&&"**&zTestDiff.test_definitionc                 C   sŠ   dD ]€}t |ƒt|ƒ }tttdt | ƒdddt tdt | ƒ ƒ tttdt | ƒddddt d  tdt | ƒ ƒ qd S )N)r7   r8   r   r   )r$   r;   )r   Úfloatr   r   r   r   r   ©r@   r&   r"   r(   r(   r)   Útest_periodi   s    ÿÿzTestDiff.test_periodc                 C   sÊ   dD ]À}t |ƒd t | }ttt|ƒƒt|ƒƒ ttt|ƒƒt|ƒ ƒ ttt|ƒdƒt|ƒ ƒ ttt|ƒdƒt|ƒƒ tttd| ƒƒdtd| ƒ ƒ tttt|ƒƒƒt|ƒtt|ƒƒ ƒ qd S )N)r:   r8   éM   r   r<   ©r   r   r   r   r   r   rC   r(   r(   r)   Útest_sinq   s    "zTestDiff.test_sinc              
   C   sd  ddddddddd	d
g
d d… D ]<}t |ƒd t | }t|ƒtd| ƒ ttd| ƒƒ }t|ƒtd| ƒ dt|ƒ td| ƒ  dtd| ƒ ttd| ƒƒ  }dt|ƒ td| ƒ dt|ƒ td| ƒ  dtd| ƒ ttd| ƒƒ  dtd| ƒd  ttd| ƒƒ  }t|ƒ}t||ƒ tt|ƒ|ƒ tt|dƒ|ƒ tt|dƒ|ƒ q d S )Nr8   rE   éd   é€   é   i   i   é   é   i    r=   r   r<   r;   éïÿÿÿr>   é	   éÿÿÿÿ)r   r   r   r   r   r   r   )r@   r&   r"   ÚfÚdfÚddfÚd1r(   r(   r)   Ú	test_expr{   s    &$L.ÿ"ÿ
zTestDiff.test_exprc                 C   sD  dD ]8}t |ƒd t | }t|ƒtd| ƒ ttd| ƒƒ }t|ƒtd| ƒ dt|ƒ td| ƒ  dtd| ƒ ttd| ƒƒ  }dt|ƒ td| ƒ dt|ƒ td| ƒ  dtd| ƒ ttd| ƒƒ  dtd| ƒd  ttd| ƒƒ  }tt|ƒ|ƒ tt|ƒ|ƒ tt|dƒ|ƒ tt|dƒ|ƒ qd S )	N)rK   rL   r   r<   r;   rM   r>   rN   rO   )r   r   r   r   r   r   r   )r@   r&   r"   rP   rQ   rR   r(   r(   r)   Útest_expr_largeˆ   s    
$L.ÿ"ÿzTestDiff.test_expr_largec                 C   sŒ   d}t |ƒd t | }ttt|ƒdƒt|ƒ ƒ ttt|ƒdƒt|ƒ ƒ ttt|ƒdƒt|ƒƒ ttdtd| ƒ dƒtd| ƒƒ d S )Nr8   r   rO   éþÿÿÿéüÿÿÿrF   rC   r(   r(   r)   Útest_int”   s    zTestDiff.test_intc                 C   sŒ   dD ]‚}dD ]x}t |fƒ}t|dd| }|| }tt|dƒdƒ}tt|dddƒ ttt||ƒ| ƒ|ƒ ttt|| ƒ|ƒ|ƒ qqd S )N)r   r   r<   é   )é<   r:   r8   é8   é7   r   ©Zaxisr   rO   r   ©r   r   r   r   r   ©r@   r#   r&   rP   Úafr(   r(   r)   Útest_random_evenœ   s    
zTestDiff.test_random_evenc                 C   s|   dD ]r}dD ]h}t |fƒ}t|dd| }|| }tt|dddƒ ttt||ƒ| ƒ|ƒ ttt|| ƒ|ƒ|ƒ qqd S )N©r   r   r   r;   r<   r=   rY   ©é!   éA   r\   r   r]   r   )r   r   r   r   r   r_   r(   r(   r)   Útest_random_odd¨   s    
zTestDiff.test_random_oddc                 C   sŒ   dD ]‚}dD ]x}t |fƒ}t|dd| }|| }tt|dƒdƒ}tt|dddƒ ttt||ƒ| ƒ|ƒ ttt|| ƒ|ƒ|ƒ qqd S )Nrb   )r:   rd   r8   r[   r\   r   r]   r   rO   r   r^   r_   r(   r(   r)   Útest_zero_nyquist²   s    
zTestDiff.test_zero_nyquistN)Ú__name__Ú
__module__Ú__qualname__rA   rD   rG   rT   rU   rX   ra   rf   rg   r(   r(   r(   r)   r5   R   s   

r5   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestTilbertc                 C   s–   dD ]Œ}dD ]‚}t |ƒd t | }tt|ƒ|ƒ}tt|ƒ|ƒ}t||ƒ ttt|ƒ|ƒtt|ƒ|ƒƒ tttd| ƒ|ƒttd| ƒ|ƒƒ qqd S ©N©çš™™™™™¹?g      à?r   g      @é
   ©r6   r7   r8   r9   r   )r   r   r   r   r/   r   ©r@   r.   r&   r"   ÚyÚy1r(   r(   r)   rA   Á   s    
ÿÿzTestTilbert.test_definitionc                 C   sb   dD ]X}dD ]N}t |fƒ}t|dd| }|| }tt|dddƒ ttt||ƒ|ƒ|ƒ qqd S )Nrm   ©r:   r8   r[   r   r]   r   )r   r   r   r   r/   r0   ©r@   r.   r&   rP   r`   r(   r(   r)   ra   Í   s    
zTestTilbert.test_random_evenc                 C   sx   dD ]n}dD ]d}t |fƒ}t|dd| }|| }tt|dddƒ ttt||ƒ|ƒ|ƒ ttt||ƒ|ƒ|ƒ qqd S )Nrm   rc   r   r]   r   )r   r   r   r   r	   r   ru   r(   r(   r)   rf   Ö   s    
zTestTilbert.test_random_oddN)rh   ri   rj   rA   ra   rf   r(   r(   r(   r)   rk   ¿   s   	rk   c                   @   s   e Zd Zdd„ ZdS )ÚTestITilbertc                 C   s–   dD ]Œ}dD ]‚}t |ƒd t | }tt|ƒ|ƒ}tt|ƒ|ƒ}t||ƒ ttt|ƒ|ƒtt|ƒ|ƒƒ tttd| ƒ|ƒttd| ƒ|ƒƒ qqd S rl   )r   r   r	   r   r0   r   rq   r(   r(   r)   rA   ã   s    
ÿÿzTestITilbert.test_definitionN©rh   ri   rj   rA   r(   r(   r(   r)   rv   á   s   rv   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestHilbertc                 C   sf   dD ]\}t |ƒd t | }tt|ƒƒ}tt|ƒƒ}t||ƒ tttd| ƒƒttd| ƒƒƒ qd S ©Nrp   r   )r   r   r
   r   r1   r   ©r@   r&   r"   rr   rs   r(   r(   r)   rA   ò   s    
ÿzTestHilbert.test_definitionc                 C   sn   dD ]d}t |ƒd t | }t|ƒtd| ƒt|ƒ  }t|ƒ}t|ƒ}t||ƒ t|dd}t||ƒ qd S ©Nrp   r   ro   )r.   )r   r   r   r   r
   r1   r   r   ©r@   r&   r"   rP   rr   rs   Úy2r(   r(   r)   Útest_tilbert_relationû   s    
z!TestHilbert.test_tilbert_relationc                 C   sf   dD ]\}t |fƒ}t|dd| }|| }tt|dddƒ ttt|ƒƒ|ƒ ttt|ƒƒ|ƒ qd S )Nrc   r   r]   r   )r   r   r   r   r   r
   ©r@   r&   rP   r`   r(   r(   r)   rf     s    
zTestHilbert.test_random_oddc                 C   sv   dD ]l}t |fƒ}t|dd| }|| }tt|dƒdƒ}tt|dddƒ ttt|ƒƒ|ƒ ttt|ƒƒ|ƒ qd S )Nrt   r   r]   r   rO   r   )	r   r   r   r   r   r1   r2   r
   r   r   r(   r(   r)   ra     s    
zTestHilbert.test_random_evenN)rh   ri   rj   rA   r~   rf   ra   r(   r(   r(   r)   rx   ð   s   	
	rx   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestIHilbertc                 C   sf   dD ]\}t |ƒd t | }tt|ƒƒ}tt|ƒƒ}t||ƒ tttd| ƒƒttd| ƒƒƒ qd S ry   )r   r   r   r   r2   r   rz   r(   r(   r)   rA     s    
ÿzTestIHilbert.test_definitionc                 C   sn   dD ]d}t |ƒd t | }t|ƒtd| ƒt|ƒ  }t|ƒ}t|ƒ}t||ƒ t|dd}t||ƒ qd S r{   )r   r   r   r   r   r2   r   r	   r|   r(   r(   r)   Útest_itilbert_relation%  s    
z#TestIHilbert.test_itilbert_relationN)rh   ri   rj   rA   r   r(   r(   r(   r)   r€     s   	r€   c                   @   s   e Zd Zdd„ ZdS )Ú	TestShiftc                 C   s2  dD ]&}t |ƒd t | }dD ]¶}ttt|ƒ|ƒtt|ƒ|ƒƒ ttt|ƒ|ƒt|| ƒƒ ttt|ƒ|ƒt|| ƒƒ tttd| ƒt|ƒ |ƒtd||  ƒt|| ƒ ƒ tttt|ƒƒ|ƒtt|| ƒƒƒ q"ttt|ƒdt ƒt|ƒƒ ttt|ƒtƒt|ƒ ƒ ttt|ƒtd ƒt|ƒƒ qd S )N)é   r7   r8   r9   r:   rK   rJ   r   )rn   r;   )r   r   r   r   r   r4   r   r   )r@   r&   r"   r3   r(   r(   r)   rA   2  s    
ÿ&zTestShift.test_definitionNrw   r(   r(   r(   r)   r‚   0  s   r‚   c                   @   s„   e Zd ZdZejejfZeejej	f 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 )ÚTestOverwritezCheck input overwrite behavior c                 O   sT   |  ¡ }||f|ž|Ž |j}|r.|t|ƒ7 }|r>|t|ƒ7 }t||d| d d S )Nzspurious overwrite in %s)Úerr_msg)Úcopyrh   Úreprr   )r@   r"   ÚroutineÚargsÚkwargsZx2Úsigr(   r(   r)   Ú_checkG  s    zTestOverwrite._checkc                 O   sf   t j d¡ t  |t j¡r8t jj|Ž dt jj|Ž   }nt jj|Ž }| |¡}| j||f|ž|Ž d S )NiÒ  r+   )Únpr   ÚseedZ
issubdtypeZcomplexfloatingZrandnZastyperŒ   )r@   rˆ   ÚdtypeÚshaper‰   rŠ   Údatar(   r(   r)   Ú	_check_1dQ  s    
zTestOverwrite._check_1dc                 C   s   | j D ]}|  t|d¡ qd S ©N©r6   )Údtypesr’   r   ©r@   r   r(   r(   r)   Ú	test_diffZ  s    
zTestOverwrite.test_diffc                 C   s    | j D ]}|  t|dd¡ qd S ©Nr”   gš™™™™™ù?)r•   r’   r   r–   r(   r(   r)   Útest_tilbert^  s    
zTestOverwrite.test_tilbertc                 C   s    | j D ]}|  t|dd¡ qd S r˜   )r•   r’   r	   r–   r(   r(   r)   Útest_itilbertb  s    
zTestOverwrite.test_itilbertc                 C   s   | j D ]}|  t|d¡ qd S r“   )r•   r’   r
   r–   r(   r(   r)   Útest_hilbertf  s    
zTestOverwrite.test_hilbertc                 C   s"   | j D ]}|  t|ddd¡ qd S ©Nr”   ç      ð?g      @)r•   r’   r   r–   r(   r(   r)   Útest_cs_diffj  s    
zTestOverwrite.test_cs_diffc                 C   s"   | j D ]}|  t|ddd¡ qd S rœ   )r•   r’   r   r–   r(   r(   r)   Útest_sc_diffn  s    
zTestOverwrite.test_sc_diffc                 C   s"   | j D ]}|  t|ddd¡ qd S rœ   )r•   r’   r   r–   r(   r(   r)   Útest_ss_diffr  s    
zTestOverwrite.test_ss_diffc                 C   s"   | j D ]}|  t|ddd¡ qd S rœ   )r•   r’   r   r–   r(   r(   r)   Útest_cc_diffv  s    
zTestOverwrite.test_cc_diffc                 C   s    | j D ]}|  t|dd¡ qd S )Nr”   r   )r•   r’   r   r–   r(   r(   r)   Ú
test_shiftz  s    
zTestOverwrite.test_shiftN)rh   ri   rj   Ú__doc__r   Zfloat32Zfloat64Zreal_dtypesZ	complex64Z
complex128r•   rŒ   r’   r—   r™   rš   r›   rž   rŸ   r    r¡   r¢   r(   r(   r(   r)   r„   A  s   
	r„   )r   N)r   N)r   N)N),Z	__usage__Znumpy.testingr   r   r   Zscipy.fftpackr   r   r   r   r	   r
   r   r   r   r   r   r   r   Znumpyr   r   r   r   r   r   r   r   r   Znumpy.randomr   r*   r/   r0   r1   r2   r4   r5   rk   rv   rx   r€   r‚   r„   r(   r(   r(   r)   Ú<module>   s$   	<(




	m"*