L iBLdZddlmZmZmZddlmZddlmZ ddlZddl Z ddl Z ddl mZmZddlmZej$j&ZgdZed d Zd Zed Gd dZed GddZed GddZGddZGddZGddZy)zIncludes test functions for fftpack.helper module Copied from fftpack.helper by Pearu Peterson, October 2005 Modified for Array API, 2023 ) next_fast_len prev_fast_len_init_nd_shape_and_axes) assert_equal)raisesN)xp_assert_close xp_device)fft)  iiT)np_onlycDtD]}tt||y)N)_5_smooth_numbersrr)xpns a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/fft/tests/test_helper.pytest_next_fast_lenrs *]1%q)*c|}|dkrJ t|d\}}|dk7rn|}td|dzdD]} t||\}}|dk7r|}|dk(sJd|d|d|y)Nr rr zx=z is not z-smooth, remainder=)divmodrange)xrx_origqrds r_assert_n_smoothr%s F1uu a|1 6    1ac1 !Q.nums; Q~ % %( ( &   FTr)nprandomseedrr%selfrr/rms rrz"TestNextFastLen.test_next_fast_len8i t ) #Aa A Q # a// //a&A Q "  #rc ,tjtjtjtjtj tj g}|D]3}|d}t|}t|tt|5y)N90) r3int16int32int64uint16uint32uint64rrintr7rITYPESitypr testNs rtest_np_integersz TestNextFastLen.test_np_integersGsa((BHHbhh 299biiP 7DU A!!$E  c!f 5 6 7rcddddddddddd d d d d d}|jD]\}}tt|d|y)Nrr r r rrri@ rr r r rrrrIrJrLrMTitemsrrr7rhamsr ys rtestnext_fast_len_smallz'TestNextFastLen.testnext_fast_len_smallNsUQ1qQ1$dh JJL 4DAq q$/ 3 4r$Hamming Numbers too large for 32-bitTreasonrstrictc iddddddddddddd d d d d d dddddddddddddddddddddddddddd }|jD]\}}tt|d!|y)"Nhhi=u+2,2iB3  ls'>9>9l fnfnl>Ukoq. q. lxQ+t0 !!ldopL?hRhR2 f;`71Y!l("  X l ) rp2 f;rqrr`71Y!rs  X rt! X TrSrUs rtestnext_fast_len_bigz%TestNextFastLen.testnext_fast_len_bigVs' y "/ y  y #0  ,  )9,  =  +<]  _     _    .  !"2  0  "#4 1#40#40#4 2$6$6 2$69 <JJL 4DAq q$/ 3 4rcLtdddk(sJtdddk(sJy)Nr2Treal rOFtargetr~)rr7rs rtest_keyword_argsz!TestNextFastLen.test_keyword_args{,Rd+r111AE2a777rN)__name__ __module__ __qualname__rrGrXpytestmarkxfailsysmaxsize ValueErrorr{rr.rrr'r'5sR #74 [[s{{U*D(7 47 4D8rr'ceZdZdZdZdZejje jdkde ddZ d Z y ) TestPrevFastLenctjjdd}|D]B}t|}t |d|t|dk(sJt|d}t |dDy)Nr)c3@KtddEd{dy7 wr+r-r.rrr/z0TestPrevFastLen.test_prev_fast_len..numsr0r1r2FTr)r3r4r5rr%r6s rtest_prev_fast_lenz"TestPrevFastLen.test_prev_fast_lenr9rc tjtjtjtjtj tj g}|D]`}|d}t|}t|tt|t|d}t|tt|dby)Nr;Tr}) r3r<r=r>r?r@rArrrBrCs rrGz TestPrevFastLen.test_np_integerss((BHHbhh 299II BDU A!!$E  c!f 5 6!!$/E  c!f4 @ A  Brcfdddddddddd d d d d d d}|jD]\}}tt|d|iddddddddddddddddddddddddddddd d d d dd dddddddddd d d }|jD]\}}tt|d|y) Nrr r r rrrrrIrJr,rLrMrNTrOrrr2 rPrQrKxyi) rKrrrrrzrRrLrMFrTrrrUs rtestprev_fast_len_smallz'TestPrevFastLen.testprev_fast_len_smallsPQ1qQ1$dh JJL 4DAq q$/ 3 4 q Q 1  $%q *+Q 011 67 <=q BDb    $& ,. 46 <> HJ3Sdh   JJL 5DAq q%0! 4 5rrYrZTr[c Jiddddddddddddddd dd d d d d d ddddddddddddiddddddddddddddd d d!d d"d#d$d$d%d$d&d'd(d(d)d(d*d+d,d,d,d-d.d.d/d0d0d.d1}|jD]\}}tt|d2|y)3Nr_r`ihi`rai=ui=urbrci*2i@2rdrel l W:rfrgl>9l8rhrilenlnrjrklq. l, rlrml!lrnlhRrol@ !Rrpl2 f;rul arqlrvl+Krrlh\arsl>9rt)rwl_71Y!rsrxlrtrzryTrrUs rtestprev_fast_len_bigz%TestPrevFastLen.testprev_fast_len_bigs9 y9  99  9 9 y 9  99  99  y9  99  99  ,9  l9 l!9 $ =%9 & }'9 ( })9 , _-9 . /9 0 19 4 _59 6 79 8 99 < .=9 > !"2?9 @ !"2A9 D 0E9 F "#4G9 H "#4I9 L 0M9 N "#4O9 P "#4Q9 T 0U9 V "#4W9 X "#4Y9 \ 0]9 ^$5#4 2$6$6 2$6$6q9 tJJL 4DAq q$/ 3 4rcLtdddk(sJtdddk(sJy)Nr2Tr}rrOFr)rrs rrz!TestPrevFastLen.test_keyword_argsrrN)rrrrrGrrrrrrrrrr.rrrrsS # B5" [[s{{U*D(7<47<4|8rr)cpu_onlycTeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zy )Test_init_nd_shape_and_axescr|jd}d}d}d}g}t|||\}}||k(sJ||k(sJy)Nr r.asarrayr r7rr shapeaxesshape_expected axes_expected shape_resaxes_ress rtest_py_0d_defaultsz/Test_init_nd_shape_and_axes.test_py_0d_defaultssR JJqM 5aE 8N***=(((rcr|jd}d}d}d}g}t|||\}}||k(sJ||k(sJy)Ng@r.rrs rtest_xp_0d_defaultsz/Test_init_nd_shape_and_axes.test_xp_0d_defaultssR JJrN 5aE 8N***=(((rcx|jgd}d}d}d}dg}t|||\}}||k(sJ||k(sJy)Nrr r )r rrrs rtest_py_1d_defaultsz/Test_init_nd_shape_and_axes.test_py_1d_defaultssU JJy ! 5aE 8N***=(((rcx|jddd}d}d}d}dg}t|||\}}||k(sJ||k(sJy)Nrr皙?)r)arangerrs rtest_xp_1d_defaultsz/Test_init_nd_shape_and_axes.test_xp_1d_defaultssY IIaB  5aE 8N***=(((rc|jgdgdg}d}d}d}ddg}t|||\}}||k(sJ||k(sJy)N)rr r r )rrrOr)r r rrrrs rtest_py_2d_defaultsz/Test_init_nd_shape_and_axes.test_py_2d_defaults*sa JJ $& 'A 5aE 8N***=(((rc|jddd}|j|d}d}d}d}ddg}t|||\}}||k(sJ||k(sJy)Nrrr)rr )rreshaperrs rtest_xp_2d_defaultsz/Test_init_nd_shape_and_axes.test_xp_2d_defaults8sk IIaB  JJq& !A 5aE 8N***=(((rcz|jgd}d}d}d}gd}t|||\}}||k(sJ||k(sJy)Nrr rr r rrr r r zerosrrs rtest_xp_5d_defaultsz/Test_init_nd_shape_and_axes.test_xp_5d_defaultsFsS HH_ %(' 5aE 8N***=(((rc~|jgd}gd}d}d}gd}t|||\}}||k(sJ||k(sJy)Nr)rrrr )rr rrr rrrs rtest_xp_5d_set_shapez0Test_init_nd_shape_and_axes.test_xp_5d_set_shapeSsS HH_ %")' 5aE 8N***=(((rc~|jgd}d}gd}d}gd}t|||\}}||k(sJ||k(sJy)Nr)r rr )r r rrrs rtest_xp_5d_set_axesz/Test_init_nd_shape_and_axes.test_xp_5d_set_axes`sS HH_ %"! 5aE 8N***=(((rc|jgd}gd}gd}d}gd}t|||\}}||k(sJ||k(sJy)Nr)rrr )rrr )rrr rrs rtest_xp_5d_set_shape_axesz5Test_init_nd_shape_and_axes.test_xp_5d_set_shape_axesmsS HH_ %#! 5aE 8N***=(((rch|jd}t|dd\}}|dk(sJ|gdk(sJy)N)r r r r)rrrrrrr)r7rr rrs rtest_shape_axes_subsetz2Test_init_nd_shape_and_axes.test_shape_axes_subsetzs> HH\ "-aytL t !!!y   rc|jd}ttd5t|dddgddggdddttd5t|dgddddttd 5t|ddgdddttd 5t|dd gdddttd 5t|dd d gdddttd 5t|ddgddggddddttd 5t|gdddddttd5t|jgdgddgdddttd5t|d gddddttd5t|d ddddy#1swYxYw#1swYyxYw#1swY]xYw#1swYAxYw#1swY$xYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)Nrz-axes must be a scalar or iterable of integers)matchr r r r)g?g@g@g@z$axes exceeds dimensionality of inputzall axes must be uniquerz.shape must be a scalar or iterable of integerszBwhen given, axes and shape arguments have to be of the same length)rrrrrz1invalid number of data points \(\[0\]\) specifiedz2invalid number of data points \(\[-2\]\) specified)r assert_raisesrr)r7rr s r test_errorsz'Test_init_nd_shape_and_axes.test_errorssQ HHQK :.23 J #AT!Q!Q8H I J:.23 J #AT8H I J:!GI = #AT < =:!GI > #AT = >:!:< @ #ATA ? @:.23 J #Aq!fq!f-=D I J:.23 J #A-=D I J:"<= ? $BHH\$:*31# ? ? :"34 = $AaSt < = :"45 < $ARd ; <  > @ @ J J J J ? ?  = =  <  GG#&G03G=H  HH#&H/2H;>IN)rrrrrrrrrrrrrrrr.rrrrs> ) ) ) ) ) ) ) ) ) )!, ?rcupyzcupy/cupy#8393)r\cD|jgdgdgdg}|jgdgdgdg}ttj|d|ttj|d tj|d ttj|d|ttj|d tj|d ttj||ttj||y) N)rrr )r r r)rrr)grr)r rr)rr r rrrrrr)r7rfreqsshifteds rtest_axes_keywordzTestFFTShift.test_axes_keywords J LAB**mY CD U8'B U3S\\%d5ST gF;UC gA6 gD9 ; U+W5 g.6rc|jddgddgddgg|j}|jddgddgddgg|j}ttj|d|ttj |d|ttj|d |ttj |dg||jddgddgddgg|j}ttj|d|ttj |d||jddgddgddgg|j}ttj|d |ttj |d |ttj|ddg|ttj |ddg|ttj|d |ttj |d |ttj||ttj ||y ) z1 Test 2D input, which has uneven dimension sizes rrr r r rdtyperrrN)rfloat64rr rr)r7rr shift_dim0 shift_dim1shift_dim_boths rtest_uneven_dimszTestFFTShift.test_uneven_dimss F F F  ZZ F F F!     U3Z@ jq95A U6 C js;UCZZ F F F!     U3Z@ jq95A F F F%  $  U8.I n6BEJ U!Q8.I nAq6BEJ  U6G n4@%H U+^< n5u=rN)rrrrrskip_xp_backendsrrr.rrrrsD-? f%56 77 7f%56+>7+>rrceZdZdZdZy) TestFFTFreqc"|jgd|j}|jgd|j}dtjd|z}t ||ddd|j ztjd|j |z}t ||d d tjd |z}t ||d d |j ztjd |j |z}t ||d y) N) rrr r r rrrrr) rrr r r rrrrrrrFT check_dtypecheck_namespacerr)rrr fftfreqrpir7rr x2rWs rrzTestFFTFreq.test_definitions JJ6bjjJ I ZZ;2::Z N  A"% %1%F I Aruu4 41%0 RB' '251 JR26 6251rc|D]F}tjd||}|jd|}t|t|k(rFJyNr)rdevicer)r)r remptyr r7rdevicesr$rWr s r test_devicezTestFFTFreq.test_devicesK 0A A"Q/A1%AQ<9Q</ // 0rNrrrrrr.rrrrs 2$0rrceZdZdZdZy) TestRFFTFreqc"|jgd|j}|jgd|j}dtjd|z}t ||ddd|j ztjd|j |z}t ||d d tjd |z}t ||d d |j ztjd |j |z}t ||d y) Nrr)rrr r r rrrFTrrr)rrr rfftfreqrrrs rrzTestRFFTFreq.test_definitions JJbjjJ 9 ZZ*"**Z =  Q2& &1%F I Q"5 51%0 bR( (251 Jb"%%B7 7251rc|D]F}tjd||}|jd|}t|t|k(rFJyr)r r rr rs rrzTestRFFTFreq.test_device*sK 0A Q2a0A1%AQ<9Q</ // 0rNrr.rrrrs 2$0rr)__doc__scipy.fft._helperrrr numpy.testingrrrrnumpyr3rscipy._lib._array_apirr scipyr rrrrr%r'rrrrrr.rrrs TS&*  <;;//$* * :,$G8G8 G8R$p8p8 p8f4 y<y<!yI>X00400r