U
    ¯9%eM4  ã                   @   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(   úd/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/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ÚddfZ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=   rX   ©é!   é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 )Nra   )r:   rc   r8   rZ   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   rS   rT   rW   r`   re   rf   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 )Nrl   ©r:   r8   rZ   r   r\   r   )r   r   r   r   r/   r0   ©r@   r.   r&   rP   r_   r(   r(   r)   r`   Í   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 )Nrl   rb   r   r\   r   )r   r   r   r   r	   r   rt   r(   r(   r)   re   Ö   s    
zTestTilbert.test_random_oddN)rg   rh   ri   rA   r`   re   r(   r(   r(   r)   rj   ¿   s   	rj   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 rk   )r   r   r	   r   r0   r   rp   r(   r(   r)   rA   ã   s    
ÿÿzTestITilbert.test_definitionN©rg   rh   ri   rA   r(   r(   r(   r)   ru   á   s   ru   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 ©Nro   r   )r   r   r
   r   r1   r   ©r@   r&   r"   rq   rr   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 ©Nro   r   rn   )r.   )r   r   r   r   r
   r1   r   r   ©r@   r&   r"   rP   rq   rr   Ú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 )Nrb   r   r\   r   )r   r   r   r   r   r
   ©r@   r&   rP   r_   r(   r(   r)   re     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 )Nrs   r   r\   r   rO   r   )	r   r   r   r   r   r1   r2   r
   r   r~   r(   r(   r)   r`     s    
zTestHilbert.test_random_evenN)rg   rh   ri   rA   r}   re   r`   r(   r(   r(   r)   rw   ð   s   	
	rw   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 rx   )r   r   r   r   r2   r   ry   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 rz   )r   r   r   r   r   r2   r   r	   r{   r(   r(   r)   Útest_itilbert_relation%  s    
z#TestIHilbert.test_itilbert_relationN)rg   rh   ri   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   )rm   r;   )r   r   r   r   r   r4   r   r   )r@   r&   r"   r3   r(   r(   r)   rA   2  s    
ÿ&zTestShift.test_definitionNrv   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)Úcopyrg   Ú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)rg   rh   ri   Ú__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   ÚnumpyrŒ   r   r   r   r   r   r   r   r   Znumpy.randomr   r*   r/   r0   r1   r2   r4   r5   rj   ru   rw   r   r   rƒ   r(   r(   r(   r)   Ú<module>   s$   	<(



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