o
    i5                     @   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(   _/home/kim/smarthome/.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ddfZ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   Z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 )NrZ   r   r   r   r<   r=   r>   r[   !   A   r^   r   r_   r   )ra   r   rb   r   r   r   r   rc   r(   r(   r)   test_random_odd   s   zTestDiff.test_random_oddc                 C   rY   )	NrZ   rh   )r;   rj   r9   r]   r^   r   r_   r   rP   r   r`   rc   r(   r(   r)   test_zero_nyquist   rg   zTestDiff.test_zero_nyquistN)__name__
__module____qualname__rB   rE   rH   rT   rU   rX   rf   rl   rm   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 )Nrt   r;   r9   r]   r   r_   r   )r   r   r   r   r/   r0   )rA   r.   r&   rQ   re   r(   r(   r)   rf      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 )NrZ   rt   ri   r   r_   r   )ra   r   rb   r   r   r   r	   r   )rA   rd   r.   r&   rQ   re   r(   r(   r)   rl      s   zTestTilbert.test_random_oddN)rn   ro   rp   rB   rf   rl   r(   r(   r(   r)   rq      s    	rq   c                   @      e Zd Zdd ZdS )TestITilbertc                 C   rr   rs   )r   r   r	   r   r0   r   rx   r(   r(   r)   rB      r{   zTestITilbert.test_definitionNrn   ro   rp   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 Nrw   r   )r   r   r
   r   r1   r   rA   r&   r"   ry   rz   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 Nrw   r   rv   )r.   )r   r   r   r   r
   r1   r   r   rA   r&   r"   rQ   ry   rz   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 )NrZ   ri   r   r_   r   )ra   r   rb   r   r   r   r   r
   rA   rd   r&   rQ   re   r(   r(   r)   rl   	  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 )NrZ   r|   r   r_   r   rP   r   )ra   r   rb   r   r   r   r   r1   r3   r
   r   r   r(   r(   r)   rf     s   zTestHilbert.test_random_evenN)rn   ro   rp   rB   r   rl   rf   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)rn   ro   rp   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   )ru   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)copyrn   reprr   )rA   r"   routineargskwargsZ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 )NrZ   r+   )ra   r   ZRandomStateZ
issubdtypeZcomplexfloatingZrandnZastyper   )rA   r   dtypeshaper   r   rd   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)rn   ro   rp   __doc__ra   Zfloat32Zfloat64Zreal_dtypesZ	complex64Z
complex128r   r   r   r   r   r   r   r   r   r   r   r   r(   r(   r(   r)   r   G  s    
r   )r   Nr2   ),Z	__usage__Znumpy.testingr   r   r   Zscipy.fftpackr   r   r   r   r	   r
   r   r   r   r   r   r   r   numpyra   r   r   r   r   r   r   r   r   Znumpy.randomr   r*   r/   r0   r1   r3   r5   r6   rq   r~   r   r   r   r   r(   r(   r(   r)   <module>   s&   	<(




	p#,