a :jg] @sddlZddlZddlmZddlmZmZmZm Z ddl Z ddl Z ddZ GdddZ Gdd d Zejd ejejejejgejd d d gejdejjejjejjejjejjejjgddZejd d dgejdgdddZejje ddGdddZddZddZ ejdejjejjejj!ejj"gejde#gdej$d ej%d!ej$d"ej&d!gd#d$Z'dS)%N)random)assert_array_equal assert_raisesassert_allcloseIS_WASMcCsNt|}dtjt||}t|dd|}tj|t|ddS)Nyaxis)lennppiarangereshapesumexp)xLZphaserH/usr/local/lib/python3.9/site-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__rrrrrrsrc @seZdZddZejdejej ej gddZ ejdejej ej gddZ dd Z ejd d ejdeefejd d ddZejd ddgddZddZejddddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Z d4d5Z!ejd6ej"j#ej"j$ej"j%ej"j&gd7d8Z'ejd6ej"j#ej"j$ej"j(ej"j)gd9d:Z*ejd6ej"j#ej"j$ej"j%ej"j&gd;d<Z+ejd6ej"j(ej"j)gd=d>Z,ejd6ej"j#ej"j$ej"j%ej"j&ej"j(ej"j)gd?d@Z-dAdBZ.ejdCgdDejdeefejd d dEdFZ/ejdGej"j#ej"j$ej"j%gdHdIZ0ejdJdKdLgdMdNZ1dOS)P TestFFT1Dc Csd}t|dt|}t|}td|D]b}ttjtj|d||d|ddttjtj|d|||d|ddq*dS)Ni?rrg-q=atol)rrangerr rifftirfftrfft)rmaxlenrxrirrr test_identitys& zTestFFT1D.test_identitydtypec Csd}dttjd|d}t||dt||}t|t|g}t||}t|t|g}td|dD]}tjj tjj||d|d} | j j |ksJt | |d ||d d tjj tjj||d|d} | j |ksJt | |d ||d d qdS N?r-r"rrnrr$rtol)r spacingarrayrastype concatenate zeros_liker%rr&realr-rr'r() rr-r)r$rxxr*Zxxrr+Zcheck_cZcheck_rrrrtest_identity_long_short$s z"TestFFT1D.test_identity_long_shortc CsBd}dttjd|d}t||dt||}t|t|g}td|dD]}tjjtjj ||d|d}|j |j ksJt ||d ||d d | }|dd} d |j d <|dd krd |j | dd<t|t|g} tjjtjj||d|d} | j |j ks$Jt | | d | |d d q^dSr.)r r7r8rr9r:r;r%rr&r-rcopyimagr(r') rr-r)r$rr=r+Z check_via_cyr4yyZ check_via_rrrr!test_identity_long_short_reversed6s"    z+TestFFT1D.test_identity_long_short_reversedcCstddtd}tt|tj|ddtt|tjj|ddddtt|tdtjj|ddddtt|dtjj|d ddddS) Nr"ư>r#backwardnormortho>@forward)rrrr rsqrtrrrrrtest_fftNs zTestFFT1D.test_fftr rr transpose)TFcsfdd}|tur.zeros_like) r"r )outr )complexrr rr&r(r'r)rr-rPr r;rArr&expectedrXresult expected2out2result2rrUrtest_fft_out_argumentWs       zTestFFT1D.test_fft_out_argumentrrcCstddtd}|}tjj||d}tjj|||d}||usJJt|||}|dkrp|ddn|ddddf}tjj|d|d}tjj|d||d} | |usJt| ||dkrt|dd|ddn*t|ddddf|ddddf|} |dkr,| d dn| ddd df} |dkrV| d d n| ddd d f} tjj| d|d} tjj| d|| d}|| usJt|| |dkrt| dd |dd t| d d|d dnTt| dddd f|dddd ft| ddd df|ddd df|}|dkrZ|ddn|ddddf}|dkr|dd n|dddd f}tjj|d |d}tjj|d ||d}||usJt|||dkrt|d d|d dn*t|ddd df|ddd df|}|j}tjj|||d}||usTJt|||}|dkr~|ddd n|ddddd f}tjj|||d}||usJt||dS) N)rWrWr"r )r rXrrV)r4r )r4r rXr0r)rr?r rrrS)rr rAy1Z expected1Zresult1y2r]r\r^Zy3Zy3_selZout3Z expected3Zresult3Zy4Zy4_selZout4Z expected4Zresult4Zy5Zout5Zresult5Zy6Zout6Zresult6rrrtest_fft_inplace_outus^  (  ***  ****  * .zTestFFT1D.test_fft_inplace_outcCstd}tjtdd tjj|ddWdn1s>0Ytjtdd.tjj|t|dddWdn1s0Ytjtd d*tjj|tj|t d dWdn1s0YdS) NrJzmust be of ArrayTypematch)rXhas wrong shaper0rz Cannot castr2) r rpytestraises TypeErrorrrr;rfloatrMrrrtest_fft_bad_outs .<zTestFFT1D.test_fft_bad_outrHNrFrIrKcCs|tddtd}t|tjjtjj||d|dddtjtdd tjjg|dWdn1sn0YdS)NrDr"rGrEr#z!Invalid number of FFT data pointsrd)rrr rr&rhrir)rrHrrrr test_ifftszTestFFT1D.test_ifftcCstddtd}ttjjtjj|ddddtj|ddttj|tjj|dd ddttj|td tjj|d d ddttj|d tjj|d d dddSNrDrWr"rr rrEr#rFrGXrI@rK)rrr rfft2rLrMrrr test_fft2s  zTestFFT1D.test_fft2cCstddtd}ttjjtjj|ddddtj|ddttj|tjj|dd ddttj|td tjj|d d ddttj|d tjj|d d dddSro)rrr rr&ifft2rLrMrrr test_ifft2s  zTestFFT1D.test_ifft2cCstddtd}ttjjtjjtjj|ddddddtj|ddttj|tjj|d d ddttj|td tjj|d d ddttj|d tjj|dd dddSNrDrWrVr"rr rrrEr#rFrGprIp@rK)rrr rfftnrLrMrrr test_fftns&  zTestFFT1D.test_fftncCstddtd}ttjjtjjtjj|ddddddtj|ddttj|tjj|d d ddttj|td tjj|d d ddttj|d tjj|dd dddSrw)rrr rr&ifftnrLrMrrr test_ifftns&  zTestFFT1D.test_ifftnc Cstd}|jd|jfD]}dD]>}ttjj|||dd|ddtjj|||dddq ttjj||dtjj||d dddttjj||dt|tjj||d dddttjj||d|tjj||d dddqdS) NrDrrmr4rHrrEr#r3rFrIrK)rsizerr rr(rL)rrr4rHrrr test_rffts& zTestFFT1D.test_rfftcCsNtd}d}tj||}t|tj|d|d|dddddS)Nrr+=r6)r rrr(r)rrr4rArrrtest_rfft_evens zTestFFT1D.test_rfft_evencCs<tgd}tj|}t|tj|dddddS)N)rrrrrrr)r r8rr(r)rrrArrr test_rfft_odd s zTestFFT1D.test_rfft_oddcCstd}t|tjtj|ddt|tjjtjj|ddddddt|tjjtjj|ddddddt|tjjtjj|dddddddS)NrDrEr#rFrGrIrK)rrr rr'r(rMrrr test_irffts"zTestFFT1D.test_irfftcCstd}ttj|ddddftj|ddttj|tjj|ddddttj|tdtjj|ddddttj|d tjj|d ddddS) Nrp rEr#rFrGrqrIrrrK)rrr rrsrfft2rLrMrrr test_rfft2s. zTestFFT1D.test_rfft2cCstd}t|tjtj|ddt|tjjtjj|ddddddt|tjjtjj|ddddddt|tjjtjj|dddddddS)NrprEr#rFrGrIrK)rrr rZirfft2rrMrrr test_irfft2#s"zTestFFT1D.test_irfft2cCstd}ttj|ddddddftj|ddttj|tjj|ddddttj|tdtjj|ddddttj|d tjj|d ddddS) NrxrEr#rFrGryrIrzrK)rrr rr{rfftnrLrMrrr test_rfftn-s4 zTestFFT1D.test_rfftncCstd}t|tjtj|ddt|tjjtjj|ddddddt|tjjtjj|ddddddt|tjjtjj|dddddddS)NrxrEr#rFrGrIrK)rrr rirfftnrrMrrr test_irfftn7s"zTestFFT1D.test_irfftncCstddtd}ttd|tdf}t||dddf}ttj|tj|ddttj|tjj|ddddttj|td tjj|d dddttj|d tjj|d ddddS) Nr"rrrEr#rFrGrDrIrJrK)rr r:conjrrhfftrLrrZx_hermrrr test_hfftAs zTestFFT1D.test_hfftcCstddtd}ttd|tdf}t||dddf}t|tjtj|ddt|tjjtjj|ddddddt|tjjtjj|d dd dddt|tjjtjj|d dd ddddS) Nrr"rrrEr#rFrGrIrK)rr r:rrrihfftrrrrr test_ihfftMs2zTestFFT1D.test_ihfftopcCsPtd}gd}|D]6}|t||}t|||d|}t||ddqdS)Nrx)rrr)rrr)rrr)rrr)rrr)rrraxesrEr#)rr rPr)rrrraZop_trZtr_oprrr test_axesYs zTestFFT1D.test_axescCs.tddd}||dddjdks*JdS)NdrVrr0rOsr)rVr0)r rrshaperrrrrrtest_s_negative_1cszTestFFT1D.test_s_negative_1cCsNtddd}tjdd||ddWdn1s@0YdS)NrrV"`axes` should not be `None` if `s`rdr)rr rrrhwarnsrrrrtest_s_axes_nonejszTestFFT1D.test_s_axes_nonecCsPtddd}tjdd||dddWdn1sB0YdS)NrrVrrdrrrrrrrtest_s_axes_none_2DqszTestFFT1D.test_s_axes_none_2DcCsFtd}tjdd||dddWdn1s80YdS)Nrxz%array containing `None` values to `s`rd)rVNrVrr)rrhrrrrrtest_s_contains_nonewszTestFFT1D.test_s_contains_nonec Cstd}tj|}|jd}tjjtjjftjjtjjftjj tjj fg}|D]Z\}}|jd|jfD]@}dD]6}||||d}||||d}t |tj|ddqpqhqPdS)NrDrrmrrEr#) rr ZlinalgrHrrr&r(r'rrr) rrZx_normr4Z func_pairsZforwbackrHtmprrrtest_all_1d_norm_preservings    z%TestFFT1D.test_all_1d_norm_preservingr)rOrrNcsfdd}|tur.zeros_likerVr0rr"r)rXr) rYrr rr{r}rrr)rr-rPrr;rrr&rZrXr[r\r]r^rrUrtest_fftn_out_arguments       z TestFFT1D.test_fftn_out_argumentrcCs|tjjurtd}ntddtd}tjtdd&||t|dddWdn1sd0Yd}|||dd }t|}|||d|d }||usJt||dS) Nrr"rgrdrrrr)rXrr)rVr0r0rrrrX) r rrrrhrirr;r)rrrrrZrXr[rrrtest_fftn_out_and_s_interactions  4  z)TestFFT1D.test_fftn_out_and_s_interactionr) r0r0rcCs^tddtd}tjj||dd}t|}tjj||d|d}||usPJt||dS)N)rr0rrr"rrr)rr rrr;r)rrrrZrXr[rrr!test_irfftn_out_and_s_interactions   z+TestFFT1D.test_irfftn_out_and_s_interactionN)2rrr r,rhmark parametrizer singledoubleZ longdoubler>rCrNrYrkr_rcrlrnrtrvr|r~rrrrrrrrrrrr{r}rrrrsrurrrrrrrrrrrrr!sr      ;                         r!r-orderFznon-contiguousrc Cs0tjd}|dddj|dd}dtt|jt|j j }|dkr\t |}n"|ddd }t |ddd }|j d rtd D],}|||d }|||d } t|| ||d qnj|j dr&gd} |j dr| gd| D],} ||| d}||| d} t|| ||d qntdS)N*r F)r?g @rrrrr r5)rsr{)rO)rrrr{))r)r)rNr)r r RandomStaterandr9rLlog2rZfinfor-epsZasfortranarrayZascontiguousarrayrendswithr%rextendr) r-rrrngXZ_tolYr ZX_resZY_resraxrrrtest_fft_with_orders* $        rCr4)Nr cCsdtjd}|d}tj|tj|d}tjj||d}|jj|jjksLJ|jj |jj ks`JdS)NrrV)r-rr3) r rrrZasarray complex64rflags c_contiguous f_contiguous)rr4rrresrrrtest_fft_output_orders   rzCannot start thread)reasonc@s<eZdZdZdZddZddZddZd d Zd d Z d S)TestFFTThreadSafer/)i cs|fddt}fddt|jD}dd|Ddd|Dt|jD]}tjdd|d q^dS) Ncs||dSrQ)put)argsq)funcrrworkersz.TestFFTThreadSafe._test_mtsame..workercsg|]}tjfdqS))targetr) threadingThread).0r+)rrrrr sz2TestFFTThreadSafe._test_mtsame..cSsg|] }|qSr)startrrrrrr cSsg|] }|qSr)joinrrrrrrr0)timeoutz6Function returned wrong value in multithreaded context)queueQueuer%threadsrget)rrrrZtr+r)rrrrr _test_mtsames zTestFFTThreadSafe._test_mtsamecCs(t|jdd}|tjj|dSNry)r ones input_shaperrrrrrrrNszTestFFTThreadSafe.test_fftcCs(t|jdd}|tjj|dSr)r rrrrr&rrrrrnszTestFFTThreadSafe.test_ifftcCs t|j}|tjj|dSrQ)r rrrrr(rrrrrs zTestFFTThreadSafe.test_rfftcCs(t|jdd}|tjj|dSr)r rrrrr'rrrrr!szTestFFTThreadSafe.test_irfftN) rrr rrrrNrnrrrrrrrsrcCsHtd}tjj|ddtjj|ddtjjtdgtdddS)NrVrr3r)r rrr'rr8rYrTrrrtest_irfft_with_n_1_regression&s rcCs:tdd}tjj|dd}tgd}t||dS)Nr0y??rVr3) g4@gk"#@g'g$ pn]k@grg@gG& gdƍĿgt=M?g@L>M4)r rrrr8r)rr[rZrrr"test_irfft_with_n_large_regression.srdata)FTFrVr2r0cCs0||}|t|d}||}t||dS)Nr1)r9r Z result_typer)rrr[Z float_datarZrrr#test_fft_with_integer_or_bool_input8s r)(numpyr rhZ numpy.randomrZ numpy.testingrrrrrrrrr!rrZfloat32Zfloat64rZ complex128rrsr{r&rur}rrZskipifrrrr(r'r8rZuint8Zint16rrrrrsN 8 '