o 6a2 @sddlZddlZddlmZddlmZmZmZddl Z ddl Z ddZ GdddZ Gdd d Z ejd ejejejejgejd d d gejdejjejjejjejjejjejjgddZGdddZdS)N)random)assert_array_equal assert_raisesassert_allclosecCsRt|}dtjt|t|}t|dd|}tj|t|ddS)Nyaxis)lennppiarangefloatreshapesumexp)xLphaser@/usr/lib/python3/dist-packages/numpy/fft/tests/test_pocketfft.pyfft1 src@seZdZddZdS) TestFFTShiftcCstttjjgdddS)N)rr)r ValueErrorr fft)selfrrr test_fft_nszTestFFTShift.test_fft_nN)__name__ __module__ __qualname__rrrrrrs rc@seZdZddZddZejddddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZdd Zejd!ejjejjejjejjgd"d#Zd$d%Zejd&ejejejej gd'd(Z!d)S)* TestFFT1Dc Csd}t|dt|}t|}td|D]1}ttjtj|d||d|ddttjtj|d|||d|ddqdS)Ni?rrg-q=atol)rrangerr rifftirfftrfft)rmaxlenrxrirrr test_identitys& zTestFFT1D.test_identitycCstddtd}tt|tj|ddtt|tjj|ddddtt|tdtjj|ddddtt|dtjj|d ddddS) Nr#ư>r$backwardnormortho>@forward)rrrr rsqrtrrrrrtest_fft$s  zTestFFT1D.test_fftr2Nr0r3r5cCs~tddtd}t|tjjtjj||d|dddtjtddtjjg|dWddS1s8wYdS)Nr.r#r1r/r$z!Invalid number of FFT data points)match)rrr rr'pytestraisesr)rr2rrrr test_ifft-s"zTestFFT1D.test_ifftcCstddtd}ttjjtjj|ddddtj|ddttj|tjj|dd ddttj|td tjj|d d ddttj|d tjj|d d dddSNr.r#rrrr/r$r0r1Xr3@r5)rrr rfft2r6r7rrr test_fft28   zTestFFT1D.test_fft2cCstddtd}ttjjtjj|ddddtj|ddttj|tjj|dd ddttj|td tjj|d d ddttj|d tjj|d d dddSr>)rrr rr'ifft2r6r7rrr test_ifft2CrEzTestFFT1D.test_ifft2cCstddtd}ttjjtjjtjj|ddddddtj|ddttj|tjj|d d ddttj|td tjj|d d ddttj|d tjj|dd dddSNr.r@ r#rrrrr/r$r0r1pr3p@r5)rrr rfftnr6r7rrr test_fftnN&   zTestFFT1D.test_fftncCstddtd}ttjjtjjtjj|ddddddtj|ddttj|tjj|d d ddttj|td tjj|d d ddttj|d tjj|dd dddSrH)rrr rr'ifftnr6r7rrr test_ifftnZrOzTestFFT1D.test_ifftnc Cstd}|jd|jfD]g}dD]}ttjj|||dd|ddtjj|||dddqttjj||dtjj||d dddttjj||dt|tjj||d dddttjj||d|tjj||d dddq dS) Nr.rr9nr2rr/r$)rSr0r3r5)rsizerr rr)r6)rrrSr2rrr test_rfftfs( zTestFFT1D.test_rfftcCtd}t|tjtj|ddt|tjjtjj|ddddddt|tjjtjj|ddddddt|tjjtjj|dddddddS)Nr.r/r$r0r1r3r5)rrr rr(r)r7rrr test_irfftw" zTestFFT1D.test_irfftcCstd}ttj|ddddftj|ddttj|tjj|ddddttj|tdtjj|ddddttj|d tjj|d ddddS) Nr? r/r$r0r1rAr3rBr5)rrr rrCrfft2r6r7rrr test_rfft2s.  zTestFFT1D.test_rfft2cCrV)Nr?r/r$r0r1r3r5)rrr rirfft2rZr7rrr test_irfft2rXzTestFFT1D.test_irfft2cCstd}ttj|ddddddftj|ddttj|tjj|ddddttj|tdtjj|ddddttj|d tjj|d ddddS) NrIr/r$r0r1rKr3rLr5)rrr rrMrfftnr6r7rrr test_rfftns4  zTestFFT1D.test_rfftncCrV)NrIr/r$r0r1r3r5)rrr rirfftnr_r7rrr test_irfftnrXzTestFFT1D.test_irfftncCstddtd}ttd|tdf}t||dddf}ttj|tj|ddttj|tjj|ddddttj|td tjj|d dddttj|d tjj|d ddddS) Nr#rrr/r$r0r1r.r3r4r5)rr concatenateconjrrhfftr6rrx_hermrrr test_hffts  zTestFFT1D.test_hfftcCstddtd}ttd|tdf}t||dddf}t|tjtj|ddt|tjjtjj|ddddddt|tjjtjj|d dd dddt|tjjtjj|d dd ddddS) Nrcr#rrr/r$r0r1r3r5)rr rdrerrihfftrfrgrrr test_ihffts2 zTestFFT1D.test_ihfftopcCsPtd}gd}|D]}|t||}t|||d|}t||ddq dS)NrI))rrr)rrr)rrr)rrr)rrr)rrraxesr/r$)rr transposer)rrlrrnaop_trtr_oprrr test_axesszTestFFT1D.test_axesc Cstd}tj|}|jd}tjjtjjftjjtjjftjj tjj fg}|D]-\}}|jd|jfD] }dD]}||||d}||||d}t |tj|ddq8q4q(dS)Nr.rr9rRr/r$) rr linalgr2rTrr'r)r(rjrfr) rrx_normrS func_pairsforwbackr2tmprrrtest_all_1d_norm_preservings$    z%TestFFT1D.test_all_1d_norm_preservingdtypecCsNtd|}ttjtj||ddttjtj||dddS)Nr.r/r$)rastyperr rr'r(r))rr{rrrr test_dtypess"zTestFFT1D.test_dtypesN)"rr r!r-r8r;mark parametrizer=rDrGrNrQrUrWr[r]r`rbrirkr rrMrPr_rarsrzhalfsingledouble longdoubler}rrrrr"s4              r"r{orderFznon-contiguousrc Cs.tjd}|dddj|dd}dtt|jt|j j }|dkr.t |}n|ddd }t |ddd }|j d rbtd D]}|||d }|||d } t|| ||d qIdS|j drgd} |j dry| gd| D]} ||| d}||| d} t|| ||d q{dSt)N* F)copyg @rrrrr)r%rtol)rCrM))rr)rr)rrrM))r)r)rNrm)r r RandomStaterandr|r6log2rTfinfor{epsasfortranarrayascontiguousarrayrendswithr&rextendr) r{rrrngX_tolYr X_resY_resrnaxrrrtest_fft_with_orders. $         rc@s<eZdZdZdZddZddZddZd d Zd d Z d S)TestFFTThreadSafe)i cs|fddt}fddt|jD}dd|Ddd|Dt|jD] }tjdd|d q/dS) Ncs||dSN)put)argsq)funcrrworkersz.TestFFTThreadSafe._test_mtsame..workercsg|] }tjfdqS))targetr) threadingThread).0r,)rrrrr sz2TestFFTThreadSafe._test_mtsame..cSg|]}|qSr)startrrrrrrcSrr)joinrrrrrr)timeoutz6Function returned wrong value in multithreaded context)queueQueuer&threadsrget)rrrexpectedtr,r)rrrrr _test_mtsames zTestFFTThreadSafe._test_mtsamecCs(t|jdd}|tjj|dSNry)r ones input_shaperrrrprrrr8%zTestFFTThreadSafe.test_fftcC(t|jdd}|tjj|dSr)r rrrrr'rrrrr=)rzTestFFTThreadSafe.test_ifftcCs t|j}|tjj|dSr)r rrrrr)rrrrrU-s zTestFFTThreadSafe.test_rfftcCrr)r rrrrr(rrrrrW1rzTestFFTThreadSafe.test_irfftN) rr r!rrrr8r=rUrWrrrrrs r)numpyr r; numpy.randomr numpy.testingrrrrrrrr"r~rfloat32float64 complex64 complex128rrCrMr'rFrPrrrrrrs. Q