L iBddlZddlZddlZddlmcmZddlm Z m Z m Z ddl m Z mZmZddlmZmZej&j(Zej&j*ZdZdZGddZy) N)is_cupyxp_assert_closexp_default_dtype)symiirorder1_icsymiirorder2_ic_fwdsymiirorder2_ic_bwd) symiirorder1 symiirorder2cJjtfd|DS)Nc3NK|]}tj|dyw))ndimxpN)xpx atleast_nd).0xrs e/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/signal/tests/test_splines.py znpr..s!J3>>!!;;Js"%)concattuple)rargss` rnprrs 99UJTJJ KKc||z}tj|}tj||dz }|d|zzd|z z dd|ztjd|zzz ||zzz }d|z d|zz tj|z }||ztj||z|tj ||zzzzS)N@?r )npabspowercostansin)kcsrsqomegacssqrsupkc0gammas r_compute_symiirorder2_bwd_hsr-s 7D q A HHS!c' "E #) c * q3wE ** *S3Y 6 8B 3Y39 %u 5E : *URVVEAI5F-FF GGrc eZdZeddej j dgdej j dgddZeddd Zedd gd e d d eddej j dgdej j dgddZ e d d edd gd ej j dddgdZ eddej j dddgej j dgddZ eddej j dddgej j dgddZ edd eddej j dddgej j dgddZedd gd ej j dddgdZedd gd e d ddZedd gd e d dd Zy!)" TestSymIIRTz(_ic functions are private and numpy-only)np_onlyreasondtype)float32float64 complex64 complex128 precision)ggffffff??g?gQ~?ct||}|}|dks|dkDr||j|jhvrd}nd}d}tt j t j |t j |z }|jd||zz d|z z gg|}d||zz}|j|dz|}tt||||dd |j||} tjdd | z|zz dd | zz z gg|}d| |zz}d |j|dz| z}tt||||dd y) Nrư>dy=333333?r r2>gH׊>atolrtolr8r) getattrr3r5intmathceillogasarrayonesrrrarange) selfr2r7r c_precisionbn_expexpectedrb_ds rtest_symiir1_iczTestSymIIR.test_symiir1_ic!sl E"  y3R\\22" #  DIIdhh{3dhhqkABC::Q%ZAE :;eMsX~% "))EAIU)33 31i8(! .rcd}|jd|j}dd|z z }tjtt |||tjtt |ddtjtt |ddy)Nr=dr>r rr)rIr4pytestraises ValueErrorr)rKrrMrr7s rtest_symiir1_ic_failsz TestSymIIR.test_symiir1_ic_failsTsl  GGCrzzG *QK  j/1aC  j/1c2> j/1c2>rcupyzinternals are numpy-only)cpu_only exceptionsr1zsum did not converge)r1z jax.numpyzitem assignment in testsctt||}|}|dks|dkDr||j|jhvrd}nd}d}d}d}|j||}t t j t j|t j|z } |jd || zz d |z z |} d || zz} |j|j||} | || zz} |j||} | d |z z || dd zz| d d|j||}d d |z z |d d| | z|z}| |dz z |d z}|j||}||d <td |D]}|||d z |z z|||d z zz||<!|j|}t||||}t||d d y)Nr:rr;r<g333333?r=r>r rTr>v !>r@)rCr3r5rIrDrErFrGrHastyperJzerosrangeflipr r)rKr2r7rrLr+z1nsignalrNinitialposcomp1comp2comp3 expected_fwdsym_condexp_outiouts r test_symiir1zTestSymIIR.test_symiir1csE"  y3R\\22" #   %(DIIdhh{3dhhrlBCD**a"+o!b&9*Gb7l"ii ! e,"c'!%(C1r6NRSb\1ab %(RLab u}u, 3"s(#l2&66((1E(* q! LAl1q51955WQU^8KKGAJ L'''"62r95W4d;rr3r4c|tjjd}|jdj |}t ||}|j |}t|dd}|j gd|j}|jd|jd i|}t||| |j d |j||j}||z}t|dd}||jk(r|j|jk(sJ|jsJt|||z| y) Nsizer8皙?)gzj?g|ꚁ?g7F?g$d"?gv)u?gx ?gF4˯0?g/yR?gdOm6wP?g^ۂ?gnI:5?g(?giԴIM?g| ?gI q?g?r>gV瞯rA??)rrandom RandomStateuniformr`rCrHr r2r4r3r result_typer5r6) rKr2rrngsresexp_resrAI1s rtest_symiir1_valueszTestSymIIR.test_symiir1_valuess# ii##D) KKRK ' ' .E" JJqM1c3'** #yy *  E2::t4U;W40 ZZ "..BLL9  F1c3',1RZZ,?syyBLL(RRR]]RRR'\5rz1_initial_fwd functions are private and numpy-onlyct||}|}|dks|dkDr||j|jhvrd}nd}|jd|}|jtj dz |}dd |z|j |zz |d zz}|j|j||j|z tj|z }|jtj |z d z } t|| } |d |z|j |zz|d zz || d zz|j|| d zzz|j|z z || d zz|j|| d zzz|j|z z} |j|j||j|z tj|z }|j|j |z d z } t|| } ||d z|z|j |zz|d z|jd |zz|d z|jd |zzz || d zz|j|| d zzzz || d zz|j|| d zzzz|j|z z} t|| | dddf} |j| |} d }t j||}t||||}t!|| d dy)Nr:rr;r<r8r>@r rrSr^r_r@)rCr3r5rHrpir"rFrGr$rEminrr`rIrr)rKr2r7rrLrr(r&ublbrN fwd_initial_1 fwd_initial_2rOrerfrps rtest_symiir2_initial_fwdz#TestSymIIR.test_symiir2_initial_fwds E"  y3R\\22" #  JJs%J ( 2553;e 4 Q& &A -WWRVVK"&&-78488K;PP Q WWTWWu_ % )B   EBFF5M ! " qD   NRVVEUQY$78 8266%= H I  NRVVEUQY$78 8266%= H  I WWRVVK"&&-78488K;PP Q WWRUUU] #a 'B  a!bffUm+ + TBFF1u9% % TBFF1u9% %& ^bffUeai%89 9:^bffUeai%89 9:>@VVE] K K r=-8qA99Xu- %(!&!UI>XDtrr rrSrrTr^r_r@)rCr3r5rHrr"rIrrarbrJr-rcumsumnonzerocumulative_sumrr)rKr2r7rrLrr(r&a2a3rerficrproic2idxdiff ic2_0_allrh ic2_1_allout_ics rtest_symiir2_initial_bwdz#TestSymIIR.test_symiir2_initial_bwds E"  y3R\\22" # JJs%J ( 2553;e 4 Q& &Q . URVVE] "R!V %(!E9 =hhq1uEh*Q%BQq!a% LA&Q-'"s1q5z/9BQUOKCF Lhhqh&iil,S"a!eUC,S1Wb!a%GHIIdS!BZ/0 jj[01!43q6"A,S1Wb!a%G,S1Wb!a%GH%%dS!BZ&78 jj[01!43q6"A$S!UI>qA$T:r)rZr1c|t||}d}tjdz }dd|ztj|zz ||zz}d|ztj|z}| |z}d} |j | |} t j | } t| |||} |j | } |j| dz|} | dddf| ddtd| dzD](}|| |dz z|| |dz zz|| |dz zz| |<*tt j | |||d}|j |}|j| |}|j||ddt| d z d d D]%}|| |z|||dzzz|||dzzz||<'t| |||}t||d d y)Nr8rr rrSr>rrrTr^r_r@)rCrErr"rIrrHrrarbremptyrcr r)rKr2r7rrr(r&rrrerf signal_nprout1rorexprps r test_symiir2zTestSymIIR.test_symiir2Fs E" #  Q%( (1q5 0 UTXXe_ $R!V %(JJv& Aui @ ZZ^xxAUx+ad8Raq!a% OA6!a%=(2QU +;;b4A;>NNDG O""**T"2AuiHKjjohhqh&773<BCq1ub"% FA$q'\BQUO3b3q1u:oECF F61eY7St$7rz C internalsdtypc6tjjd}|jdj |}|j |}t |r |jn t||}t|ddd}|j gd|}t||d |j d |j||j}||z}tjtt f5t|d d}dddy#1swYyxYw) Nrsrtrurwg|=)r7)g윏?g_VQQ/?g|n4T?gAٌ?gJ8]r?rxryr8)rrzr{r|r`rHrr4rCr rr}r5rUrV TypeErrorrW) rKrrr~rr2rrrs rtest_symiir2_valueszTestSymIIR.test_symiir2_valuesqsii##D) KKRK ' ' - JJqM&bk wr4/@1c3%8** !&   W40 ZZbnnQ &EZ F F ]]Iz2 3 ,q#s+C , , ,s 8DDz#cupy does not accept integer arraysc<|j|j|jddz|j|j d|j d}t |j|t |dd}t |dd}t||y)NrSrrTr r8)wherer`rJboolrHr rrrKrrrOrps rtest_symiir1_integer_inputz%TestSymIIR.test_symiir1_integer_inputs HH IIbiinq("'' 2 JJrN JJqM    !-=b-A BCM1c3'X&rcp|j|j|jddz|j|j d|j d}t |j|t |d|jdz }t |d|jdz }t||y)NrSrrTr r8r) rr`rJrrHr rrrrs rtest_symiir2_integer_inputz%TestSymIIR.test_symiir2_integer_inputs HH IIbiinq("'' 2 JJrN JJqM    !-=b-A BCQTU1c2553;/X&rN)__name__ __module__ __qualname__skip_xp_backendsrUmark parametrizerQrXxfail_xp_backendsrqrrrrrrrrrr/r/sd+UV [[BD [[[*HI-.JDW-.^d+UV ?W ?6(3Mv&<=k*DE [[BD [[[*HIB<JDF>B> 60dPR [[)Y') [[[*HI>=J)R >=@dPR [[)Y') [[[*HI.;J)R .;`t,FGk*DE [[)Y') [[[*HI$8J)FH $8LtO [[Vi%;< ,=P ,DtOv&KL'MP'tOv&KL'MP'rr/)rEnumpyrrUscipy._lib.array_api_extra_libarray_api_extrarscipy._lib._array_apirrrscipy.signal._splinerrr scipy.signalr r rrrrr-r/rrrrs_  ((LL??3;;//KK11LHL'L'r