3
OdN/              
   @   s6  d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZ d dlmZ d dljZdd ZG dd deZG d	d
 d
eZejjdejejejejejejgejjdddgejjdejejejejejej gdd Z!G dd deZ"ejjdejejej#ej$gdd Z%G dd deZ&dS )    N)random)assert_array_almost_equalassert_array_equalassert_allclose)raisesc             C   sR   t | }dtj tj|t|  }tj|jdd| }tj| tj| ddS )Ny               @   )axisy              )lennppiZarangefloatZreshapesumexp)xLphase r   N/var/www/html/virt/lib64/python3.6/site-packages/scipy/fft/tests/test_numpy.pyfft1   s    r   c               @   s   e Zd Zdd ZdS )TestFFTShiftc             C   s   t ttjdddgd d S )Nr         r   )assert_raises
ValueErrorfft)selfr   r   r   
test_fft_n   s    zTestFFTShift.test_fft_nN)__name__
__module____qualname__r   r   r   r   r   r      s   r   c               @   sF  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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ejjd'ejejejejejejgd(d) Z ejjd'ej!ej"ej#ej$ej%ej&ejejejejejejgd*d+ Z'd,d- Z(ejjd.e)j*e)j+e)j,e)j-gd/d0 Z.d1S )2	TestFFT1Dc             C   s   d}t |dt |  }t |}xhtd|D ]Z}ttjtj|d| |d| dd ttjtj|d| ||d| dd q,W d S )Ni   y              ?r   r      )decimal)r   ranger   r   ifftirfftrfft)r   maxlenr   Zxrir   r   r   test_identity   s    "zTestFFT1D.test_identityc             C   sN   t ddt d  }tt|tj| tt|tjd tj|dd d S )N   y              ?ortho)norm)r   r   r   r   r   sqrt)r   r   r   r   r   test_fft&   s    zTestFFT1D.test_fftc             C   sL   t ddt d  }t|tjtj| t|tjtj|dddd d S )Nr+   y              ?r,   )r-   )r   r   r   r%   )r   r   r   r   r   	test_ifft,   s    zTestFFT1D.test_ifftc             C   s`   t d	dt d
  }ttjtj|ddddtj| ttj|tjd tj|dd d S )Nr+      y              ?r   )r   r   r,   )r-   )r+   r1   )r+   r1   iX  )r   r   r   fft2r   r.   )r   r   r   r   r   	test_fft22   s
    zTestFFT1D.test_fft2c             C   s`   t d	dt d
  }ttjtj|ddddtj| ttj|tjd tj|dd d S )Nr+   r1   y              ?r   )r   r   r,   )r-   )r+   r1   )r+   r1   iX  )r   r   r   r%   ifft2r   r.   )r   r   r   r   r   
test_ifft29   s
    zTestFFT1D.test_ifft2c             C   sj   t ddt d  }ttjtjtj|ddddddtj| ttj|tjd tj|d	d
 d S )Nr+   r1   
   y              ?r   )r   r   r   r,   )r-   )r+   r1   r6   )r+   r1   r6   iX  ip  )r   r   r   fftnr   r.   )r   r   r   r   r   	test_fftn@   s     zTestFFT1D.test_fftnc             C   sj   t ddt d  }ttjtjtj|ddddddtj| ttj|tjd tj|d	d
 d S )Nr+   r1   r6   y              ?r   )r   r   r   r,   )r-   )r+   r1   r6   )r+   r1   r6   iX  ip  )r   r   r   r%   ifftnr   r.   )r   r   r   r   r   
test_ifftnH   s     zTestFFT1D.test_ifftnc          	   C   s   t d}x|jd|j gD ]n}x>dD ]6}ttj|||dd |d d  tj|||d q$W ttj||dtj| tj||dd qW d S )Nr+   r   r,   )nr-   r   )r;   )Nr,   )r   sizer   r   r'   r   r.   )r   r   r;   r-   r   r   r   	test_rfftP   s    
zTestFFT1D.test_rfftc             C   s@   t d}t|tjtj| t|tjtj|dddd d S )Nr+   r,   )r-   )r   r   r   r&   r'   )r   r   r   r   r   
test_irfftZ   s    zTestFFT1D.test_irfftc             C   sV   t d}ttj|d d d df tj| ttj|tjd tj|dd d S )Nr+   r1      r,   )r-   )r+   r1   iX  )r   r   r   r2   rfft2r   r.   )r   r   r   r   r   
test_rfft2`   s    &zTestFFT1D.test_rfft2c             C   s@   t d}t|tjtj| t|tjtj|dddd d S )Nr+   r1   r,   )r-   )r+   r1   )r   r   r   irfft2r@   )r   r   r   r   r   test_irfft2f   s    zTestFFT1D.test_irfft2c             C   s\   t d}ttj|d d d d d df tj| ttj|tjd	 tj|dd d S )
Nr+   r1   r6      r,   )r-   )r+   r1   r6   iX  ip  )r   r   r   r7   rfftnr   r.   )r   r   r   r   r   
test_rfftnl   s    ,zTestFFT1D.test_rfftnc             C   s@   t d}t|tjtj| t|tjtj|dddd d S )Nr+   r1   r6   r,   )r-   )r+   r1   r6   )r   r   r   irfftnrE   )r   r   r   r   r   test_irfftnr   s    zTestFFT1D.test_irfftnc             C   s   t ddt d  }tjt d|t df}tj||d d d j f}ttj|tj| ttj|tjd tj|dd d S )N   y              ?r   r+   r,   )r-   r	   )r   r   concatenateconjr   r   hfftr.   )r   r   x_hermr   r   r   	test_hfftx   s    zTestFFT1D.test_hfftc             C   s   t ddt d  }tjt d|t df}tj||d d d j f}t|tjtj| t|tjtj|dddd d S )NrI   y              ?r   r,   )r-   r	   )r   r   rJ   rK   r   r   ihfftrL   )r   r   rM   r   r   r   
test_ihfft   s    zTestFFT1D.test_ihfftc             C   s@   t d}t|tjtj| t|tjtj|dddd d S )Nr+   r1   r,   )r-   )r+   r1   )r   r   r   hfft2ihfft2)r   r   r   r   r   
test_hfft2   s    zTestFFT1D.test_hfft2c             C   sV   t d}ttj|d d d df tj| ttj|tjd tj|dd d S )Nr+   r1   r?   r,   )r-   )r+   r1   iX  )r   r   r   r4   rR   r   r.   )r   r   r   r   r   test_ihfft2   s    &zTestFFT1D.test_ihfft2c             C   s@   t d}t|tjtj| t|tjtj|dddd d S )Nr+   r1   r6   r,   )r-   )r+   r1   r6   )r   r   r   hfftnihfftn)r   r   r   r   r   
test_hfftn   s    zTestFFT1D.test_hfftnc             C   s\   t d}ttj|d d d d d df tj| ttj|tjd	 tj|dd d S )
Nr+   r1   r6   rD   r,   )r-   )r+   r1   r6   iX  ip  )r   r   r   r9   rV   r   r.   )r   r   r   r   r   test_ihfftn   s    ,zTestFFT1D.test_ihfftnopc             C   sX   t d}d	d
ddddg}x:|D ]2}|tj||}tj|||d|}t|| qW d S )Nr+   r1   r6   r   r   r   )axes)r+   r1   r6   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   	transposer   )r   rY   r   rZ   aop_trtr_opr   r   r   	test_axes   s    
zTestFFT1D.test_axesc                s   t d
dddg}xx|D ]p t fddtjD }|tj |d d dd	}tj||d d  d d d	 }t|| qW d S )N         r   r   r   c                s4   g | ],}| d d kr&dj |  nj | qS )Nr   )shape).0ax)r\   r   r   r   
<listcomp>   s   z9TestFFT1D.test_axes_subset_with_shape.<locals>.<listcomp>)srZ   )r`   ra   rb   )r   r   r   )r   r   r   )r   r   r   )r   r   )r   tupler$   ndimr   r[   r   )r   rY   rZ   rc   r]   r^   r   )r\   r   r   test_axes_subset_with_shape   s    

&z%TestFFT1D.test_axes_subset_with_shapec       	      C   s   t d}tjj|}|jd }tjtjftjtjftj	tj
fg}xf|D ]^\}}xT|jd|j gD ]@}x:dD ]2}||||d}||||d}t|tjj| qjW q`W qFW d S )Nr+   r   r,   )r;   r-   )Nr,   )r   r   Zlinalgr-   r<   r   r%   r'   r&   rO   rL   r   )	r   r   Zx_normr;   Z
func_pairsZforwbackr-   tmpr   r   r   test_all_1d_norm_preserving   s    



z%TestFFT1D.test_all_1d_norm_preservingdtypec             C   sZ   t dj|}ttjtj|| ttjtj|| ttjtj|t	|| d S )Nr+   )
r   astyper   r   r%   r&   r'   rL   rO   r
   )r   rn   r   r   r   r   test_dtypes   s    zTestFFT1D.test_dtypesN)/r   r   r    r*   r/   r0   r3   r5   r8   r:   r=   r>   rA   rC   rF   rH   rN   rP   rS   rT   rW   rX   pytestmarkparametrizer   r7   r9   rE   rG   rU   rV   r_   r2   r4   r@   rB   rQ   rR   rj   rm   r   ZhalfZsingledoubleZ
longdoublerp   r   r   r   r   r!      s>   

		r!   rn   orderFznon-contiguousr   c             C   s  t jjd}|jdddj| dd}|dkr8t j|}n"|d d d }t j|d d d }|jjd	rxt	d
D ]&}|||d}|||d}t
|| qpW nl|jjdrdddg}	|jjdr|	jdddd g x4|	D ]&}
|||
d}|||
d}t
|| qW ntd S )N*   ra         F)copyrv   r   r   r   )r   r2   r7   r   r   )rZ   r	   r	   )r2   r7   )r   r   )r   r   )r   r   )r   )r   )r   )r   r   ZRandomStateZrandro   ZasfortranarrayZascontiguousarrayr   endswithr$   r   extendr   )rn   ru   r   rngXYr   ZX_resZY_resrZ   re   r   r   r   test_fft_with_order   s(    

r   c               @   sL   e Zd Zd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S )TestFFTThreadSafer`         c                s   fddt j   } fddt| jD }dd |D  dd |D  x&t| jD ]}tjdd|d	 q`W d S )
Nc                s   |j  |   d S )N)put)argsq)funcr   r   worker  s    z.TestFFTThreadSafe._test_mtsame.<locals>.workerc                s   g | ]}t j fd qS ))targetr   )	threadingThread)rd   r)   )r   r   r   r   r   rf     s   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>c             S   s   g | ]}|j  qS r   )start)rd   r   r   r   r   rf     s    c             S   s   g | ]}|j  qS r   )join)rd   r   r   r   r   rf     s       )timeoutz6Function returned wrong value in multithreaded context)queueQueuer$   threadsr   get)r   r   r   expectedtr)   r   )r   r   r   r   r   _test_mtsame  s    zTestFFTThreadSafe._test_mtsamec             C   s$   t j| jt jd}| jtj| d S )N)rn   )r   onesinput_shape
complex128r   r   )r   r\   r   r   r   r/     s    zTestFFTThreadSafe.test_fftc             C   s    t j| jd}| jtj| d S )Nr   y                y      ?        )r   fullr   r   r   r%   )r   r\   r   r   r   r0     s    zTestFFTThreadSafe.test_ifftc             C   s   t j| j}| jtj| d S )N)r   r   r   r   r   r'   )r   r\   r   r   r   r=     s    zTestFFTThreadSafe.test_rfftc             C   s    t j| jd}| jtj| d S )Nr   y                y      ?        )r   r   r   r   r   r&   )r   r\   r   r   r   r>   #  s    zTestFFTThreadSafe.test_irfftc             C   s"   t j| jt j}| jtj| d S )N)r   r   r   	complex64r   r   rL   )r   r\   r   r   r   rN   '  s    zTestFFTThreadSafe.test_hfftc             C   s   t j| j}| jtj| d S )N)r   r   r   r   r   rO   )r   r\   r   r   r   rP   +  s    zTestFFTThreadSafe.test_ihfftN)r   r   )r   r   r    r   r   r   r/   r0   r=   r>   rN   rP   r   r   r   r   r     s   r   r   c             C   sZ   t jd }|j| dd tdD }W d Q R X | tjd}x|D ]}t|| qDW d S )Nr   c             S   s   g | ]}t jd qS )d   )r   r   )rd   _r   r   r   rf   5  s    z%test_multiprocess.<locals>.<listcomp>rb   r   )multiprocessingPoolmapr$   r   r   r   )r   presexpectr   r   r   r   test_multiprocess0  s
    $
r   c               @   s   e Zd Zdd ZdS )
TestIRFFTNc             C   s2   t jjd\}}|d|  }d	}tj||d d S )
Nr   r`   ra       y              ?)rZ   )r   r`   ra   r   )r   )r   r   r   rG   )r   arZair\   rZ   r   r   r   test_not_last_axis_success>  s    z%TestIRFFTN.test_not_last_axis_successN)r   r   r    r   r   r   r   r   r   <  s   r   )'r   r   r   Znumpyr   rq   Znumpy.randomr   Znumpy.testingr   r   r   r   r   Z	scipy.fftr   r   objectr   r!   rr   rs   Zfloat32Zfloat64Z	longfloatr   r   Zlongcomplexr2   r7   r%   r4   r9   r   r   r'   r&   r   r   r   r   r   r   <module>   s0   
 B/&