o
    hM4                     @   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 u rdt }t|d t | | }|dk r+d||  }d|d< n|| }|dkr;d|d|d < t|| jS )N                  @r   r           i     )r   lenr   r   r   real)xkperiodfxnw r(   `/var/www/html/scripts/venv/lib/python3.10/site-packages/scipy/fftpack/tests/test_pseudo_diffs.pydirect_diff   s   
r*   c                 C   sd   t | }t|}|d u 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 u 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   
r3   c                 C   sT   t | }|d u 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
   r5   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   sF  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 ](}tttd| |ttd| | tttd| |ttd| | qq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)r8   r9   r   r   )r$   r<   )r   floatr   r   r   r   r   rA   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;   r9   M   r   r=   r   r   r   r   r   r   rD   r(   r(   r)   test_sinq   s   "(zTestDiff.test_sinc                 C   sR  g d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 )
N)
r9   rF   d         i   i         i    r>   r   r=   r<   r?   	   )r   r   r   r   r   r   r   )rA   r&   r"   fdfddfd1r(   r(   r)   	test_expr{   s   $L."
zTestDiff.test_exprc                 C   sB  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 )	N)rL   rM   r   r=   r<   rN   r?   rO   rP   )r   r   r   r   r   r   r   )rA   r&   r"   rQ   rR   rS   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 )Nr9   r   rP   rG   rD   r(   r(   r)   test_int   s   (zTestDiff.test_intc                 C      dD ]A}dD ]<}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;   r9   8   7   r   axisr   rP   r   r   r   r   r   r   rA   r#   r&   rQ   afr(   r(   r)   test_random_even      
zTestDiff.test_random_evenc                 C   s|   dD ]9}dD ]4}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>   r[   !   A   r^   r   r_   r   )r   r   r   r   r   rb   r(   r(   r)   test_random_odd   s   
zTestDiff.test_random_oddc                 C   rZ   )Nrf   )r;   rh   r9   r]   r^   r   r_   r   rP   r   ra   rb   r(   r(   r)   test_zero_nyquist   re   zTestDiff.test_zero_nyquistN)__name__
__module____qualname__rB   rE   rH   rU   rV   rY   rd   rj   rk   r(   r(   r(   r)   r6   R   s    

r6   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestTilbertc                 C      dD ]F}dD ]A}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      @
   r7   r8   r9   r:   r   )r   r   r   r   r/   r   rA   r.   r&   r"   yy1r(   r(   r)   rB         
zTestTilbert.test_definitionc                 C   sb   dD ],}dD ]'}t |f}t|dd| }|| }tt|ddd ttt|||| qqd S )Nrr   r;   r9   r]   r   r_   r   )r   r   r   r   r/   r0   rA   r.   r&   rQ   rc   r(   r(   r)   rd      s   
zTestTilbert.test_random_evenc                 C   sx   dD ]7}dD ]2}t |f}t|dd| }|| }tt|ddd ttt|||| ttt|||| qqd S )Nrr   rg   r   r_   r   )r   r   r   r   r	   r   r{   r(   r(   r)   rj      s   
zTestTilbert.test_random_oddN)rl   rm   rn   rB   rd   rj   r(   r(   r(   r)   ro      s    	ro   c                   @      e Zd Zdd ZdS )TestITilbertc                 C   rp   rq   )r   r   r	   r   r0   r   rv   r(   r(   r)   rB      ry   zTestITilbert.test_definitionNrl   rm   rn   rB   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	S )
TestHilbertc                 C   f   dD ].}t |d t | }tt|}tt|}t|| tttd| ttd|  qd S Nru   r   )r   r   r
   r   r1   r   rA   r&   r"   rw   rx   r(   r(   r)   rB         
zTestHilbert.test_definitionc                 C   n   dD ]2}t |d t | }t|td| t|  }t|}t|}t|| t|dd}t|| qd S Nru   r   rt   )r.   )r   r   r   r   r
   r1   r   r   rA   r&   r"   rQ   rw   rx   y2r(   r(   r)   test_tilbert_relation      
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 )Nrg   r   r_   r   )r   r   r   r   r   r
   rA   r&   rQ   rc   r(   r(   r)   rj     s   
zTestHilbert.test_random_oddc                 C   sv   dD ]6}t |f}t|dd| }|| }tt|dd}tt|ddd ttt|| ttt|| qd S )Nrz   r   r_   r   rP   r   )	r   r   r   r   r   r1   r3   r
   r   r   r(   r(   r)   rd     s   
zTestHilbert.test_random_evenN)rl   rm   rn   rB   r   rj   rd   r(   r(   r(   r)   r      s
    	
	r   c                   @   s   e Zd Zdd Zdd ZdS )TestIHilbertc                 C   r   r   )r   r   r   r   r3   r   r   r(   r(   r)   rB     r   zTestIHilbert.test_definitionc                 C   r   r   )r   r   r   r   r   r3   r   r	   r   r(   r(   r)   test_itilbert_relation%  r   z#TestIHilbert.test_itilbert_relationN)rl   rm   rn   rB   r   r(   r(   r(   r)   r     s    	r   c                   @   r|   )	TestShiftc                 C   s0  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)   r8   r9   r:   r;   rL   rK   r   )rs   r<   )r   r   r   r   r   r5   r   r   )rA   r&   r"   r4   r(   r(   r)   rB   2  s   &zTestShift.test_definitionNr~   r(   r(   r(   r)   r   0  r   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   sZ   |  }||g|R i | |j}|r|t|7 }|r"|t|7 }t||d| d d S )Nzspurious overwrite in %s)err_msg)copyrl   reprr   )rA   r"   routineargskwargsx2sigr(   r(   r)   _checkG  s   zTestOverwrite._checkc                 O   sl   t jd t |t jrt jj| dt jj|   }nt jj| }||}| j||g|R i | d S )Ni  r+   )npr   seed
issubdtypecomplexfloatingrandnastyper   )rA   r   dtypeshaper   r   datar(   r(   r)   	_check_1dQ  s   
zTestOverwrite._check_1dc                 C      | j D ]	}| t|d qd S Nr7   )dtypesr   r   rA   r   r(   r(   r)   	test_diffZ     
zTestOverwrite.test_diffc                 C       | j D ]
}| t|dd qd S Nr   g?)r   r   r   r   r(   r(   r)   test_tilbert^     
zTestOverwrite.test_tilbertc                 C   r   r   )r   r   r	   r   r(   r(   r)   test_itilbertb  r   zTestOverwrite.test_itilbertc                 C   r   r   )r   r   r
   r   r(   r(   r)   test_hilbertf  r   zTestOverwrite.test_hilbertc                 C   "   | j D ]}| t|ddd qd S Nr         ?g      @)r   r   r   r   r(   r(   r)   test_cs_diffj     
zTestOverwrite.test_cs_diffc                 C   r   r   )r   r   r   r   r(   r(   r)   test_sc_diffn  r   zTestOverwrite.test_sc_diffc                 C   r   r   )r   r   r   r   r(   r(   r)   test_ss_diffr  r   zTestOverwrite.test_ss_diffc                 C   r   r   )r   r   r   r   r(   r(   r)   test_cc_diffv  r   zTestOverwrite.test_cc_diffc                 C   r   )Nr   r   )r   r   r   r   r(   r(   r)   
test_shiftz  r   zTestOverwrite.test_shiftN)rl   rm   rn   __doc__r   float32float64real_dtypes	complex64
complex128r   r   r   r   r   r   r   r   r   r   r   r   r(   r(   r(   r)   r   A  s    
	r   )r   Nr2   ),	__usage__numpy.testingr   r   r   scipy.fftpackr   r   r   r   r	   r
   r   r   r   r   r   r   r   numpyr   r   r   r   r   r   r   r   r   numpy.randomr   r*   r/   r0   r1   r3   r5   r6   ro   r}   r   r   r   r   r(   r(   r(   r)   <module>   s&   	<(




	m"*