3
Kd%              
   @   s   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	Z	d dl
Z
dd ZG dd dZG dd	 d	Zejjd
ejejejejgejjdddgejjdejjejjejjejjejjejjgdd ZG dd dZdS )    N)random)assert_array_equalassert_raisesassert_allclosec             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   R/var/www/html/virt/lib64/python3.6/site-packages/numpy/fft/tests/test_pocketfft.pyfft1   s    r   c               @   s   e Zd Zdd ZdS )TestFFTShiftc             C   s   t ttjjdddgd d S )Nr         r   )r   
ValueErrorr
   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               @   s   e Zd Zdd Zdd Zejjdd*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jejjejjejjgd#d$ Zd%d& Zejjd'ejejejej gd(d) Z!dS )+	TestFFT1Dc             C   s   d}t |dt |  }t |}xptd|D ]b}ttjjtjj|d| |d| dd ttjjtjj|d| ||d| dd q,W d S )Ni   y              ?r   r   g-q=)atol)r   ranger   r
   r   ifftirfftrfft)r   maxlenr   Zxrir   r   r   test_identity   s    &zTestFFT1D.test_identityc             C   sZ   t ddt d  }tt|tjj|dd tt|tjd tjj|dddd d S )N   y              ?gư>)r    ortho)norm)r   r   r   r
   r   sqrt)r   r   r   r   r   test_fft$   s    zTestFFT1D.test_fftr*   Nr)   c             C   sh   t ddt d  }t|tjjtjj||d|ddd tjtdd tjjg |d W d Q R X d S )Nr(   y              ?)r*   gư>)r    z!Invalid number of FFT data points)match)r   r   r
   r   r"   pytestZraisesr   )r   r*   r   r   r   r   	test_ifft*   s    
zTestFFT1D.test_ifftc             C   sr   t ddt d  }ttjjtjj|ddddtjj|dd ttjj|tjd tjj|d	d
dd d S )Nr(      y              ?r   )r   r   gư>)r    r)   )r*   )r(   r0   )r(   r0   iX  )r   r   r
   r   fft2r+   )r   r   r   r   r   	test_fft25   s
    zTestFFT1D.test_fft2c             C   sr   t ddt d  }ttjjtjj|ddddtjj|dd ttjj|tjd tjj|d	d
dd d S )Nr(   r0   y              ?r   )r   r   gư>)r    r)   )r*   )r(   r0   )r(   r0   iX  )r   r   r
   r   r"   ifft2r+   )r   r   r   r   r   
test_ifft2<   s
    zTestFFT1D.test_ifft2c             C   s~   t ddt d  }ttjjtjjtjj|ddddddtjj|d	d
 ttjj|tjd tjj|ddd	d
 d S )Nr(   r0   
   y              ?r   )r   r   r   gư>)r    r)   )r*   )r(   r0   r5   )r(   r0   r5   iX  ip  )r   r   r
   r   fftnr+   )r   r   r   r   r   	test_fftnC   s    &zTestFFT1D.test_fftnc             C   s~   t ddt d  }ttjjtjjtjj|ddddddtjj|d	d
 ttjj|tjd tjj|ddd	d
 d S )Nr(   r0   r5   y              ?r   )r   r   r   gư>)r    r)   )r*   )r(   r0   r5   )r(   r0   r5   iX  ip  )r   r   r
   r   r"   ifftnr+   )r   r   r   r   r   
test_ifftnK   s    &zTestFFT1D.test_ifftnc          	   C   s   t d}x|jd|j gD ]~}xFd	D ]>}ttjj|||dd |d d  tjj|||ddd q$W ttjj||dtj| tjj||dddd qW d S )
Nr(   r   r)   )nr*   r   gư>)r    )r:   )Nr)   )r   sizer   r
   r   r$   r+   )r   r   r:   r*   r   r   r   	test_rfftS   s    
 zTestFFT1D.test_rfftc             C   sP   t d}t|tjjtjj|dd t|tjjtjj|dddddd d S )Nr(   gư>)r    r)   )r*   )r   r   r
   r   r#   r$   )r   r   r   r   r   
test_irfft^   s    zTestFFT1D.test_irfftc             C   sf   t d}ttjj|d d d df tjj|dd ttjj|tjd	 tjj|dddd d S )
Nr(   r0      gư>)r    r)   )r*   )r(   r0   iX  )r   r   r
   r   r1   rfft2r+   )r   r   r   r   r   
test_rfft2d   s    .zTestFFT1D.test_rfft2c             C   sP   t d}t|tjjtjj|dd t|tjjtjj|dddddd d S )Nr(   r0   gư>)r    r)   )r*   )r(   r0   )r   r   r
   r   Zirfft2r?   )r   r   r   r   r   test_irfft2j   s    zTestFFT1D.test_irfft2c             C   sl   t d	}ttjj|d d d d d df tjj|dd ttjj|tjd tjj|dddd d S )Nr(   r0   r5      gư>)r    r)   )r*   )r(   r0   r5   iX  ip  )r   r   r
   r   r6   rfftnr+   )r   r   r   r   r   
test_rfftnp   s    4zTestFFT1D.test_rfftnc             C   sP   t d}t|tjjtjj|dd t|tjjtjj|dddddd d S )	Nr(   r0   r5   gư>)r    r)   )r*   )r(   r0   r5   )r   r   r
   r   irfftnrC   )r   r   r   r   r   test_irfftnv   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j|tjj|dd ttjj|tjd tjj|dddd d S )
N   y              ?r   gư>)r    r(   r)   )r*   r   )r   r
   concatenateconjr   r   hfftr+   )r   r   x_hermr   r   r   	test_hfft|   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jtjj|dd t|tjjtjj|dddddd d S )	NrG   y              ?r   gư>)r    r)   )r*   r   )r   r
   rH   rI   r   r   ihfftrJ   )r   r   rK   r   r   r   
test_ihttf   s    zTestFFT1D.test_ihttfopc             C   s\   t d
}ddddddg}x>|D ]6}|tj||}tj|||d|}t||dd	 qW d S )Nr(   r0   r5   r   r   r   )axesgư>)r    )r(   r0   r5   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r
   Z	transposer   )r   rO   r   rP   aZop_trZtr_opr   r   r   	test_axes   s    
zTestFFT1D.test_axesc       	      C   s   t d}tjj|}|jd }tjjtjjftjjtjjftjj	tjj
fg}xj|D ]b\}}xX|jd|j gD ]D}x>dD ]6}||||d}||||d}t|tjj|dd qvW qlW qRW d S )Nr(   r   r)   )r:   r*   gư>)r    )Nr)   )r   r
   Zlinalgr*   r;   r   r"   r$   r#   rM   rJ   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   sN   t dj|}ttjjtjj||dd ttjjtjj||dd d S )Nr(   gư>)r    )r   astyper   r
   r   r"   r#   r$   )r   rV   r   r   r   r   test_dtypes   s    zTestFFT1D.test_dtypes)Nr)   )"r   r   r   r'   r,   r.   markparametrizer/   r2   r4   r7   r9   r<   r=   r@   rA   rD   rF   rL   rN   r
   r   r6   r8   rC   rE   rR   rU   ZhalfZsingledoubleZ
longdoublerX   r   r   r   r   r      s(   
		r   rV   orderFznon-contiguousr   c             C   sB  t jjd}|jdddj| dd}dt jt j|j t j|j	j
 }|dkr\t j|}n"|d d d }t j|d d d }|jjd
rxtdD ],}|||d}|||d}	t||	||d qW nx|jjdr8dddg}
|jjd r|
jdddd g x>|
D ].}|||d}|||d}	t||	||d qW nt d S )N*            F)copyg       @r]   r   r   r   )r   )r    Zrtolr1   r6   r   r   )rP   r   r   )r1   r6   )r   r   )r   r   )r   r   )r   )r   )r   )r
   r   ZRandomStateZrandrW   r+   log2r;   ZfinforV   ZepsZasfortranarrayZascontiguousarrayr   endswithr!   r   extendr   )rV   r\   r   rngXZ_tolYr   ZX_resZY_resrP   Zaxr   r   r   test_fft_with_order   s*    $

ri   c               @   s<   e Zd ZdZdZdd Zdd Zdd	 Zd
d Zdd Z	dS )TestFFTThreadSafe         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 ))targetro   )	threadingThread).0r&   )ro   rp   rr   r   r   
<listcomp>   s   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>c             S   s   g | ]}|j  qS r   )start)rv   r   r   r   r   rw      s    c             S   s   g | ]}|j  qS r   )join)rv   r   r   r   r   rw      s       )timeoutz6Function returned wrong value in multithreaded context)queueQueuer!   threadsr   get)r   rq   ro   expectedtr&   r   )ro   rq   rp   rr   r   _test_mtsame   s    zTestFFTThreadSafe._test_mtsamec             C   s(   t j| jd d }| jt jj| d S )Nr   y                )r
   onesinput_shaper   r   )r   rQ   r   r   r   r,      s    zTestFFTThreadSafe.test_fftc             C   s(   t j| jd d }| jt jj| d S )Nr   y                )r
   r   r   r   r   r"   )r   rQ   r   r   r   r/      s    zTestFFTThreadSafe.test_ifftc             C   s    t j| j}| jt jj| d S )N)r
   r   r   r   r   r$   )r   rQ   r   r   r   r<      s    zTestFFTThreadSafe.test_rfftc             C   s(   t j| jd d }| jt jj| d S )Nr   y                )r
   r   r   r   r   r#   )r   rQ   r   r   r   r=      s    zTestFFTThreadSafe.test_irfftN)rl   rm   )
r   r   r   r~   r   r   r,   r/   r<   r=   r   r   r   r   rj      s   rj   )Znumpyr
   r.   Znumpy.randomr   Znumpy.testingr   r   r   rt   r|   r   r   r   rY   rZ   Zfloat32Zfloat64Z	complex64Z
complex128r   r1   r6   r"   r3   r8   ri   rj   r   r   r   r   <module>   s$    $ 