L iO ddlZddlZddlZddlZddlZddlmZddlm Z m Z ddlm Z ddl mZddlmZmZmZmZej(j*ZdZdZGdd Zed ej(j3d ej4ej6ej8ej:ej<ej>gej(j3d ddgej(j3dejej@ejBejDejFejHgdZ%ed GddZ&ed ej(j3dejejDejNejPgdZ)GddZ*ej(j3dejejDejNejPejBejHejVejXejZej\g dZ/ej(j3d ddgej(j3dejejDejPejBejHejXejZgdZ0y)N)random)assert_array_almost_equalassert_allclose)raises)is_numpyxp_sizexp_assert_closexp_assert_equalc |tjtjtjtjtjtj tj tjtjtjtjtjf vr|j}|S|tjtjtjtj tj"tj$fvr|j&}|St)d|)NzUnknown FFT function: )fftfftnfft2ifftifftnifft2hffthfftnhfft2irfftirfftnirfft2 complex128rfftrfftnrfft2ihfftihfftnihfft2float64 ValueError)funcxpdtypes `/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/fft/tests/test_basic.pyget_expected_input_dtyper%s 388#))SYY#))SYY 3::szz33  L #((CIIsyy))SZZ5 5  L1$899c,t|}dtjztj|t |z z}tj|j dd|z}tj |tj|zdS)Nyaxis)lennppiarangefloatreshapesumexp)xLphases r$fft1r7#sj AA Iryy|E!H, -E IIaL Q '% /E 66!BFF5M/ **r&cheZdZdZedddZdZedddZd Zd Z d Z d Z d Z dZ dZdZdZdZdZdZdZdZdZdZdZdZej6j9dej<ej>ej@ejBgdZ"ej6j9dejFejHgdZ%ej6j9dej<ej>ej@ejBgdZ&ej6j9dejNejPejRejTejVejXejFejHgdZ-d Z.ed!ej6j9d"e/j`e/jbgd#Z2ej6j9d"d$d%gd&Z3ej6j9d"d'd(gd)Z4edd*ej6j9dej:ejjejNejPej<ej>ejlejnejRejTej@ejBejpejrejVejXejFejHgd+Z:y,)-TestFFTc ~d}|jt|dt|zz}|jt|}dD]s}ttjtj|d||d|ttj tj |d|||d|uy)N?) r)r;5iir)asarrayrr r rrrselfr"maxlenr4xris r$ test_identityzTestFFT.test_identity+s JJvf~6&>(99 : ZZv '8 FA CHHSWWQqV_5q1v > CIIchhr!Aw&7;R!W E Fr&Tz&significant overhead for some backends)np_onlyreasonc d}|jt|dt|zz}|jt|}td|D]s}tt j t j|d||d|tt j t j|d|||d|uy)Nr;r<r)r)rBrranger r rrrrCs r$test_identity_extensivezTestFFT.test_identity_extensive4s JJvf~6&>(99 : ZZv 'q&! FA CHHSWWQqV_5q1v > CIIchhr!Aw&7;R!W E Fr&c tddtdzz}|jt|}|j|}tt j||tt j|d|tt j|d||j |jd|j z tt j|d|dz y)Nr<backwardnormorthor#forward)rrBr7r r sqrtrrDr"r4expects r$test_fftzTestFFT.test_fft=s 2JF2J &DG$ JJqM F+ 3V<0Bbjj)I!JJ M 2FRK@r&zsome backends allow `n=0`c|jgd|j}tttj|dy)Nr)r=rTr)rBr assert_raisesr r )rDr"r4s r$ test_fft_nzTestFFT.test_fft_nGs* JJy J 6j#''1a0r&c 4|jtddtdzz}ttjtj||dD]8}ttjtj||||:y)NrOr<rPrSrUrQ)rBrr r rrDr"r4rRs r$ test_ifftzTestFFT.test_ifftLsm JJvbzBvbzM1 2,a04 KD CHHSWWQT%:F J Kr&c |jtddtdzz}tjtj|dd}ttj||ttj|d|ttj|d||j |jd |j z ttj|d |d z y NrOr<r)r*rrPrQrSXrTrU)rBrr r rrVrrWs r$ test_fft2zTestFFT.test_fft2Rs JJvh'"VH-=*== >+!4 V,4f=1G2::)N!OO Q3Vw5GHr&c |jtddtdzz}tjtj|dd}t tj ||t tj |d|t tj |d||j |jd |j zt tj |d |d zyrd)rBrr rr rrVrrWs r$ test_ifft2zTestFFT.test_ifft2[s JJvh'"VH-=*== >#((11-A6 ! f- !*5v> !'2G2::)N!OO Q !)4f6HIr&c <|jtddtdzz}tjtjtj|ddd}ttj||ttj|d|ttj|d ||j |jd |j z ttj|d |d z y) NrOrf r<r=r*r)rrPrQrSprTrU)rBrr r r rVrrWs r$ test_fftnzTestFFT.test_fftnds JJvl+b 1E.EE F!3!<1E V,4f=1L )S!TT V3V|5LMr&c n|jtddtdzz}tjtjtj|ddd}t tj ||dt tj |d |dt tj |d tj ||j |jd |j zt tj |d |d zdy)Nrlr<r=r*r)rgHz>)rtolrPrQrSrnrTrU)rBrr rr rrVrrWs r$ test_ifftnzTestFFT.test_ifftnms JJvl+b 1E.EE F#((388AA#6Q?aH ! f48 !*5vDI IIag & IIaL2772::l"**:#MN N   !)4,/! #r&c |jtd|j}t|dt|zfD]}dD]^}t t j |||t j |j||j||d|dzdz`t t j ||dt j |||j|j||jz y) NrTr=)NrPrSrUnrRr)rS)rv) rBrrrr r rrrV)rDr"r4rvrRs r$ test_rfftzTestFFT.test_rfftzs JJvbzJ 4!*a l+ A> Fad ; # 1BMM (J*+$!88C!Q$(!EF F ag.a 2772::arzz:+J#KK   r&c |jtd}ttjtj ||dD]8}ttjtj ||||:y)NrOr`rQ)rBrr r rrras r$ test_irfftzTestFFT.test_irffts` JJvbz " #((1+.24 MD CIIchhqt&<4H! L Mr&c &|jtd|j}tj|j||j ddddf}t tj||t tj|d|t tj|d||j|jd|jz t tj|d|dz y NrerT rPrQrSrgrU) rBrrr rrr rrVrWs r$ test_rfft2zTestFFT.test_rfft2s JJvh'rzzJ :"**Qbmm*<=a"fE ! f- !*5v> !'2G2::)N!OO Q !)4f6HIr&c |jtd}ttjtj ||dD]8}ttjtj ||||:yNrer`rQ)rBrr r rrras r$ test_irfft2zTestFFT.test_irfft2sa JJvh' ( 399Q<0!44 OD CJJsyy'>TJA N Or&c ,|jtd|j}tj|j||j ddddddf}t tj||t tj|d|t tj|d||j|jd|jz t tj|d|dz y NrlrTrPrQrSrnrU) rBrrr r rr rrVrWs r$ test_rfftnzTestFFT.test_rfftns JJvl+2::J >"**Qbmm*<=aBQBhG ! f- !*5v> !'2L )S!TT V !)4f 6MNr&c |jtd}ttjtj ||dD]8}ttjtj ||||:yNrlr`rQ)rBrr r rrras r$ test_irfftnzTestFFT.test_irfftnsa JJvl+ , 399Q<0!44 OD CJJsyy'>TJA N Or&c tddtdzz}tjtd|tdf}tj||dddjf}|j |}|j |}|j t j |}tt j||tt j|d|tt j|d||j|j d|j z tt j|d |dz y) Nr<r)r(rPrQrSrOrTrU) rr- concatenateconjrBrealr r rrVr)rDr"r4x_hermrXs r$ test_hfftzTestFFT.test_hffts 2JF2J &Avay 9: NNFAddGLLN3 4 JJqMF#$(&1j96Bg6Bbjj)I!JJ Li8&2+Fr&c tddtdzz}tjtd|tdf}tj||dddjf}|j |}|j |}t t jt j||dD]8}t t jt j||||:y)Nrr<r)r(r`rQ) rr-rrrBr r rr)rDr"r4rrRs r$ test_ihfftzTestFFT.test_ihffts 2JF2J &Avay 9: NNFAddGLLN3 4 JJqMF# #((6"23V<4 WD CIIchhvD&AMv V Wr&c |jtd}ttjtj ||dD]8}ttjtj ||||:yr)rBrr r rrras r$ test_hfft2zTestFFT.test_hfft2sa JJvh' ( #**Q-0!44 OD CIIcjj&>TJA N Or&c &|jtd|j}tj|j||j ddddf}t tj||t tj|d|t tj|d||j|jd|jzt tj|d|dzyr{) rBrrr rrr rrVrWs r$ test_ihfft2zTestFFT.test_ihfft2s JJvh'rzzJ :2::ar}}:=>q#2#vF 1 v. 1:6? JJqw ' RWWRZZrzzZBC C   195v7IJr&c |jtd}ttjtj ||dD]8}ttjtj ||||:yr)rBrr r rrras r$ test_hfftnzTestFFT.test_hfftnsa JJvl+ , #**Q-0!44 OD CIIcjj&>TJA N Or&c ,|jtd|j}tj|j||j ddddddf}t |tj|t |tj|dt tj|d||j|jd|jzt tj|d|dzyr) rBrrr rrr rrVrWs r$ test_ihfftnzTestFFT.test_ihfftns JJvl+2::J >2::ar}}:=>q!RaRxH 1 . 1: >? JJqw ' RWWRZZ BJJZGH H   195v7NOr&ct||}|jtd|}gd}|D]B}||j||}|j||||}t ||Dy)NrlrT)rr)r=rr=r))r)rr=r)r=r)r=rr))r=r)raxes)r%rBr permute_dimsr ) rDopr"r#r4raop_trtr_ops r$ _check_axeszTestFFT._check_axessr(R0 JJvl+5J 9Q *Arqq12EOOBqqMO:E E5 ) *r&rc(|j||yNrrDrr"s r$test_axes_standardzTestFFT.test_axes_standard R r&c(|j||yrrrs r$test_axes_non_standardzTestFFT.test_axes_non_standardrr&c t||}|jtd|}gd}|D]}tt |j Dcgc]*}||ddvrd|j |zn|j |,c}}||j|||ddd} |j|||dd|dd|} t| | ycc}wN)r>rT)rrrr=rrr))sr r%rBrtuplerLndimshaperr rDrr"r#r4rraxrrrs r$$test_axes_subset_with_shape_standardz,TestFFT.test_axes_subset_with_shape_standards)R0 JJvj)J 70 *A%*166]4!-/!BQ%K1QWWR[=QWWR[H45Erqq1r1EOOBqE"1IAbqE$B./$1E E5 ) *4/C c t||}|jtd|}gd}|D]}tt |j Dcgc]*}||ddvrd|j |zn|j |,c}}||j|||ddd} |j|||dd|dd|} t| | ycc}wrrrs r$(test_axes_subset_with_shape_non_standardz0TestFFT.test_axes_subset_with_shape_non_standards )R0 JJvj)J 70 *A%*166]4!-/!BQ%K1QWWR[=QWWR[H45Erqq1U2AYVLEOOBqE"1IAbqE$BOKE E5 ) *4rc|jtd|j}|jj |}t |dz}t jt jft jt jft j t jfg}|D]\}}|t j k(r8|j||j}|jj |}t |dt |zfD]D}dD]=}||||} || ||} t|jj | |?Fy)NrOrTr=r`ru)rBrrlinalg vector_normrr rrrrrrr ) rDr"r4x_normrv func_pairsforwbackrRtmps r$test_all_1d_norm_preservingz#TestFFT.test_all_1d_norm_preservings* JJvbzJ 4&&q) AJNxx+yy#((+ww)  % HJD$swwJJq J6..q1aj!GAJ,/ H<HDqAD1Csad3C#BII$9$9#$>GH H  Hr&rIr#cZtdj|}tjtjtj tj i}|j||}tjtj|}tjtj|}tjtj||jd}t||t||t|||j|jk(sJ|jtj tj"|jk(sJ|jtj tj"|jk(sJy)NrOr)rastyper-float16 complex64 longdouble clongdoubler rrrrrrrr# result_typefloat32) rDr#r"r4 out_dtypes x_complexres_fftres_rfftres_hffts r$test_dtypes_nonstandardzTestFFT.test_dtypes_nonstandard0s 2J  e $jj",, r~~N HHZ./ ((3771:&99SXXa[)88CIIaL!''!*5!'95!(A.!(A.}} ///~~ AGG!DDDD~~ AGG!DDDDr&rrc<|jtdt||}tjtj |}tj tj||jd}t||t||y)NrOrTr) rBrgetattrr rrrrrr )rDr#r"r4rrs r$test_dtypes_realzTestFFT.test_dtypes_realBsi JJvbzU);J <99SXXa[)88CIIaL!''!*5!$!$r&rrctjjd}|j|jdt ||}t j t j |}t||y)NirOrT)r-r default_rngrBrr rr )rDr#r"rngr4rs r$test_dtypes_complexzTestFFT.test_dtypes_complexLsWii##D) JJszz"~WR-?J @((3771:&#r&z,array-likes only supported for NumPy backendcddgddggddgddggddgddggg}t||||j|y)Ng?)r rB)rDr"rr4s r$test_array_likezTestFFT.test_array_likeUsXCj3* %Cj3* %Cj3* % ' 1r"**Q-01r&N);__name__ __module__ __qualname__rHskip_xp_backendsrMrYr^rbrhrjrorrrwryr}rrrrrrrrrrpytestmark parametrizer r rrrrrrrrrrrrrrrrr-rrrrrrrrrrrr&r$r9r9)sFd+STFUFAd+FG1H1K IJN # M JO OO GWO KO P* [[TCHHciiCJJ#OP!Q! [[TCIIszz#:;!<! [[TCHHcii$'IIszz$;<*<*  [[TCHHcii$'IIszz$'IIszz$'IIszz$;< * < *H.d# [[Wrzz2==&ABEC$E  [[Wy)&<=%>% [[W{L&AB$C$dKM [[TCGGSXX$'HHcii$'HHcii$'HHcii$'IIszz$'IIszz$'HHcii$'IIszz$'IIszz$<=2=M2r&r9Trr#orderFznon-contiguousr ctjjd}|jdddj |d}|dk(rtj |}n#|ddd}tj |ddd}|jjd r1td D]"}||| }||| } t|| $y|jjd rZgd } |jjdr| jgd| D]"} ||| }||| } t|| $yt)N*r F)copyrr(r r\r*)rr )r)r)r=)rr=r ))r)r))r=Nr) r-r RandomStaterandrasfortranarrayascontiguousarrayrendswithrLrextendr ) r#rr r"rXYr+X_resY_resrrs r$test_fft_with_orderrgs/ ))   #C Ar!!%e!4A |   a  ddG  4R4 ) ||U#!H 4D%E%E %eU 3 4   / 0' <<  ( KK0 1 4BOEOE %eU 3 4 r&)cpu_onlycDeZdZdZdZdddZdZdZdZd Z d Z d Z y) TestFFTThreadSafer>)i Nr"cfd}tj}|}t|jDcgc]}t j |||f}}|D cgc]} | j c} |D cgc]} | jc} t|jD] }t|jd|d"ycc}wcc} wcc} w)Nc.|j|yr)put)argsqr!s r$workerz.TestFFTThreadSafe._test_mtsame..workers EE$+ r&)targetr)timeoutz6Function returned wrong value in multithreaded context)err_msg) queueQueuerLthreads threadingThreadstartjoinr get) rDr!r"rrrexpectedrGtr4s ` r$ _test_mtsamezTestFFTThreadSafe._test_mtsames  KKM;DLL) +  V4) < + +qat||$ A a (P   +s CC;Cc|j|j|j}|jtj||yNrTr)ones input_shaperrr rDr"rs r$rYzTestFFTThreadSafe.test_ffts7 GGD$$BMMG : #''1,r&c|j|jd}|jtj||yNy?r)fullrrr rrs r$rbzTestFFTThreadSafe.test_iffts1 GGD$$d + #((A"-r&c~|j|j}|jtj||yNr)rrrr rrs r$rwzTestFFTThreadSafe.test_rffts/ GGD$$ % #((A"-r&c|j|jd}|jtj||yr)rrrr rrs r$ryzTestFFTThreadSafe.test_irffts1 GGD$$d + #))Q2.r&c|j|j|j}|jtj ||yr)rrrrr rrs r$rzTestFFTThreadSafe.test_hffts7 GGD$$BLLG 9 #((A"-r&c~|j|j}|jtj||yr)rrrr rrs r$rzTestFFTThreadSafe.test_ihffts/ GGD$$ % #))Q2.r&) rrrr rrrYrbrwryrrrr&r$rrs2GK+/*-.././r&rr!c 6tjd5}|j|tdDcgc]}t j dc}}ddd|t j d}D]}t ||ycc}w#1swY=xYw)Nr=rd)multiprocessingPoolmaprLr-rr)r!r"p_resrXr4s r$test_multiprocessr's   a r r<)r)r-rrBr r)rDr"arairrs r$test_not_last_axis_successz%TestIRFFTN.test_not_last_axis_successsI!!.1B BJ JJqM 14 r&N)rrrr/rr&r$r)r)s!r&r)c$|tjtjtjfvr |j}n |j }|j gd|}||t|r ||dytt||dy)Nr[rTr=)workers) r rrrrrrBrr]r )r!r"r#r4s r$test_non_standard_paramsr2si #))SYY//   9E *AG| Qj$15r&rrcR|jgdt||}||y)Nr[rT)rBr)r!r#r"r4s r$test_real_inputr4s$ 9GB$6 7AGr&)1rr r!numpyr-r numpy.randomr numpy.testingrrrr] scipy.fftr scipy._lib._array_apirrr r rrr%r7r9rrrrrrrrr rrrrrrrr'r)rrrrr2r4rr&r$r:sk  D*;;// + {2{2| $ RZZ r}}bnn 673(8"9: #((CHH 399cii )* *; 7 :4 ////!//d$#''388SXXsyy!IJ#K # ! !#''388SXXsyy"%((CII"%))SZZ399"NO 6O 6&9i"89#''388SYY"%((CII"%**chh"9: :: r&