o
    h5                     @   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(   Y/var/www/vscode/kcb/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      t jd}dD ]B}dD ]=}||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   npr   default_rngr   r   r   r   rA   rngr#   r&   rQ   afr(   r(   r)   test_random_even      zTestDiff.test_random_evenc                 C   s   t jd}dD ]:}dD ]5}||f}t|dd| }|| }tt|ddd ttt||| | ttt|| || qqd S )Nr[   r   r   r   r<   r=   r>   r\   !   A   r_   r   r`   r   )rc   r   rd   r   r   r   r   re   r(   r(   r)   test_random_odd   s   zTestDiff.test_random_oddc                 C   rZ   )	Nr[   rj   )r;   rl   r9   r^   r_   r   r`   r   rP   r   rb   re   r(   r(   r)   test_zero_nyquist   ri   zTestDiff.test_zero_nyquistN)__name__
__module____qualname__rB   rE   rH   rU   rV   rY   rh   rn   ro   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 )Nrv   r;   r9   r^   r   r`   r   )r   r   r   r   r/   r0   )rA   r.   r&   rQ   rg   r(   r(   r)   rh      s   
zTestTilbert.test_random_evenc                 C   s   t jd}dD ]8}dD ]3}||f}t|dd| }|| }tt|ddd ttt|||| ttt|||| qqd S )Nr[   rv   rk   r   r`   r   )rc   r   rd   r   r   r   r	   r   )rA   rf   r.   r&   rQ   rg   r(   r(   r)   rn      s   zTestTilbert.test_random_oddN)rp   rq   rr   rB   rh   rn   r(   r(   r(   r)   rs      s    	rs   c                   @      e Zd Zdd ZdS )TestITilbertc                 C   rt   ru   )r   r   r	   r   r0   r   rz   r(   r(   r)   rB      r}   zTestITilbert.test_definitionNrp   rq   rr   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 Nry   r   )r   r   r
   r   r1   r   rA   r&   r"   r{   r|   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 Nry   r   rx   )r.   )r   r   r   r   r
   r1   r   r   rA   r&   r"   rQ   r{   r|   y2r(   r(   r)   test_tilbert_relation      
z!TestHilbert.test_tilbert_relationc                 C   st   t jd}dD ]/}||f}t|dd| }|| }tt|ddd ttt|| ttt|| qd S )Nr[   rk   r   r`   r   )rc   r   rd   r   r   r   r   r
   rA   rf   r&   rQ   rg   r(   r(   r)   rn   	  s   zTestHilbert.test_random_oddc                 C   s   t jd}dD ]7}||f}t|dd| }|| }tt|dd}tt|ddd ttt|| tt	t
|| qd S )Nr[   r~   r   r`   r   rP   r   )rc   r   rd   r   r   r   r   r1   r3   r
   r   r   r(   r(   r)   rh     s   zTestHilbert.test_random_evenN)rp   rq   rr   rB   r   rn   rh   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)rp   rq   rr   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   )rw   r<   )r   r   r   r   r   r5   r   r   )rA   r&   r"   r4   r(   r(   r)   rB   8  s   &zTestShift.test_definitionNr   r(   r(   r(   r)   r   6  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   s\   |  }||g|R i | |j}|r|t|7 }|r"|t|7 }t||d| d d S )Nzspurious overwrite in )err_msg)copyrp   reprr   )rA   r"   routineargskwargsx2sigr(   r(   r)   _checkM  s   zTestOverwrite._checkc                 O   sf   t jd}t |t jr|j| d|j|   }n|j| }||}| j||g|R i | d S )Nr[   r+   )rc   r   RandomState
issubdtypecomplexfloatingrandnastyper   )rA   r   dtypeshaper   r   rf   datar(   r(   r)   	_check_1dW  s   

zTestOverwrite._check_1dc                 C      | j D ]	}| t|d qd S Nr7   )dtypesr   r   rA   r   r(   r(   r)   	test_diffb     
zTestOverwrite.test_diffc                 C       | j D ]
}| t|dd qd S Nr   g?)r   r   r   r   r(   r(   r)   test_tilbertf     
zTestOverwrite.test_tilbertc                 C   r   r   )r   r   r	   r   r(   r(   r)   test_itilbertj  r   zTestOverwrite.test_itilbertc                 C   r   r   )r   r   r
   r   r(   r(   r)   test_hilbertn  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_diffr     
zTestOverwrite.test_cs_diffc                 C   r   r   )r   r   r   r   r(   r(   r)   test_sc_diffv  r   zTestOverwrite.test_sc_diffc                 C   r   r   )r   r   r   r   r(   r(   r)   test_ss_diffz  r   zTestOverwrite.test_ss_diffc                 C   r   r   )r   r   r   r   r(   r(   r)   test_cc_diff~  r   zTestOverwrite.test_cc_diffc                 C   r   )Nr   r   )r   r   r   r   r(   r(   r)   
test_shift  r   zTestOverwrite.test_shiftN)rp   rq   rr   __doc__rc   float32float64real_dtypes	complex64
complex128r   r   r   r   r   r   r   r   r   r   r   r   r(   r(   r(   r)   r   G  s    
r   )r   Nr2   ),	__usage__numpy.testingr   r   r   scipy.fftpackr   r   r   r   r	   r
   r   r   r   r   r   r   r   numpyrc   r   r   r   r   r   r   r   r   numpy.randomr   r*   r/   r0   r1   r3   r5   r6   rs   r   r   r   r   r   r(   r(   r(   r)   <module>   s&   	<(




	p#,