L i`rddlZddlZddlmZmZddlmZddlmZddlm Z ddl Z ddl m Z ddl mZmZddlZddlmZdd lmZdd lmZdd lmZmZdd lmZdd lmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;mZ>ddl?m@Z@mAZAmBZBddlCmDZDddlEmFZFddlGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSe jjZUe jjZVeUddgGddZWeUddgGddZXeUddgGddZYdZZdZ[dZ\dZ]eUd d!"eVd#d$"Gd%d&Z^eUdd'(Gd)d*Z_eUddgGd+d,Z`eUddgGd-d.Zagd/ZbebeDz ZbeUd#d0"Gd1d2ZceUd3Gd4d5ZdeUddgGd6d7ZeeUddgGd8d9ZfGd:d;efZgGd<d=efZhe jjd>eUd3Gd?d@efZjGdAdBefZkGdCdDefZle jjd>eUd3GdEdFefZme jjd>eUddG(GdHdIefZne jjd>eUddG(GdJdKefZoe jjd>eUd3dLZpeUd3dMZqGdNdOZre jjdPgdQeUddgeUd d!"GdRdSerZte jjd>eUddG(e jjdPegGdTdUerZuGdVdWZveUddX(e jjdYgdZe jjd[dd\ge jjd]d^d_d`dae jdbe jjgce jdde jjgcgdeZyeUd3dfZzeUddge jjdgdhdigGdjdkZ{eUddgGdldmZ|eUdneUddo"GdpdqZ}eUddgGdrdsZ~eUd#dt"eUddgGdudve~ZdwZddxZe jjd>eUd3e jjdydzZe jjeUd3d{ZeUd3e jjd>d|ZeUd3e jjdyd}ZeUd3Gd~dZeUd d"GddZeUd d"GddZGddZeUd3GddZGddZe jjd>eUd3e jjde4e)fdZeUdne jjdPgdGddZeUddeUd d"GddZeUddgGddZeUd3GddZdZy)N)ThreadPoolExecutor as_completed)Decimalproduct)gcd)raises)assert_allclosesuppress_warnings)ComplexWarning)fft) correlate1d)fminlinear_sum_assignment)signal) correlate correlate2dcorrelation_lagsconvolve convolve2d fftconvolve oaconvolvechoose_conv_methodenvelopehilberthilbert2lfilter lfilter_zifiltfiltbutterzpk2tfzpk2sosinvresinvreszvectorstrengthlfiltictf2sossosfilt sosfiltfilt sosfilt_zitf2zpkBadCoefficientsdetrend unique_rootsresidueresiduez)hann)_filtfilt_gust_compute_factors _group_poles)_upfirdn_modes) _testutils) xp_assert_closexp_assert_equalis_numpyis_torchis_jaxis_cupyassert_array_almost_equalassert_almost_equalxp_copyxp_sizexp_default_dtypearray_namespaceTcupycpu_only exceptionscReZdZedddZedddZedddZdZeddd Z ed d d Z dZ edddZ ededdZ ededdZdZedddZedddZedddZed d d!dZedddZed dZej.j0ed dZy )" TestConvolve jax.numpy2jax returns floats; scipy returns ints; cf gh-6076reasonc|jgd}|jgd}t||}t||jgdy)N)rPrOrN)rN  rX asarrayrr8selfxpabcs i/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/signal/tests/test_signaltools.py test_basiczTestConvolve.test_basic.s@ JJ) * JJy ! QN2::&EFGc|jgd}|jgd}t||d}t||jgdy)NrNrOrPrSrTrNrOsamemode)rUrV"r[r]s rc test_samezTestConvolve.test_same6sA JJy ! JJ| $ Q '2::l34rec|jgd}|jgd}t||d}t||jgdy)NrgrRrirj)rUrVrVr[r]s rc test_same_eqzTestConvolve.test_same_eq>sA JJy ! JJy ! Q '2::l34rec|jgd}|jddg}t||}t||jgdy)N)??@?@?rqrr)@y@@y@ @y@@r[)r^r_xyzs rc test_complexzTestConvolve.test_complexFsC JJ/ 0 JJ' ( QN2::&BCDrezwrong output dtypec~|jd}|jd}t||}t|||zyNi ir[r]s rctest_zero_rankzTestConvolve.test_zero_rankLs7 JJt  JJt  QN1q5!reTz pure pythonnp_onlyrLc8d}d}t||}|||zk(sJyrz)rr]s rctest_zero_rank_python_scalarsz*TestConvolve.test_zero_rank_python_scalarsSs'   QNAEzzrec2|j|jdd}|jd}tdD]W}dgdz}d||<t||j||d}t||j||d}t ||d Yy) NrNrNrNrNrSdirectmethodr +=atol)reshapearangerangerr7)r^r_r`raib_shaperurvs rctest_broadcastablezTestConvolve.test_broadcastableZs JJryy}i 0 IIaLq .Ac!eGGAJBJJq'28DABJJq'25AA Aqu -  .rec|jdg}|jdg}t||}t|||zyNgPr[r]s rctest_single_elementz TestConvolve.test_single_elementes; JJv  JJv  QN1q5!rerCc|jgdgdg}|jgdgdg}t||}|jgdgdgdg}t||yNrRrgrTrNrOrOrPrQ)rTrZ)rU>:&)rZr1rr[r^r_r`rarbds rctest_2d_arrayszTestConvolve.test_2d_arraysls] JJ 9- . JJ 9- . QN JJ*'') * 1retorchc |j|jdd}d|j|jd|jdz}||j|jd|jddddz }|jgdgd gd gd ggd gd gdgdggdgdgdgdggdgdgdgdgg}t t ||d|t t ||d|t t ||d|ddddddft t ||d|ddddddft t ||d|ddddddft t ||d|ddddddfy)NrTrTrT?rdtyper)y:@y9@?y8@@)yJ@yb@@y b@&@y@W@&@)yG@@y`@7@y_@=@y@T@7@)yD@(@yX@@@y@W@B@yK@8@)yZ@yn@*@ym@7@y`@5@)yq@>@y@X@y@_@yt@U@)yn@P@y @f@y@@j@yq@`@)ya@P@y0s@ d@yr@`f@y c@Z@)yQ@B@yc@Y@y`b@@\@y@T@R@)ye@@a@yw@u@yv@w@y@g@l@)y@a@e@yr@{@yp@|@y@a@`q@)yQ@@a@y b@0t@y_@Pu@yO@h@)y@@R@yQ@d@yM@e@y>@Y@)yQ@h@y`a@{@y@]@p|@yL@o@)yC@k@y@R@0@yI@H@y5@0r@)y(@b@y4@s@y@t@yf@fullrirSrNrvalid)rr complex128r\r8r)r^r_smallbig out_arrays rctest_input_swappingz TestConvolve.test_input_swappingws 299Q<32::bii"--i@)LL rzz"))Bbmm)><> :<:8: ;< * V4i@eV4i@V4$QqS!A#qs]3 5eV4$QqS!A#qs]3 5W5$QqS!A#qs]3 5eW5$QqS!A#qs]3 5recH|jgd}|jgd}ttt||dttt||ddttt||dd ttt||d d ttt||d d y NrgrRspamrjeggsr rkrhamrrbaconri)r\ assert_raises ValueErrorrr^r_r`ras rctest_invalid_paramsz TestConvolve.test_invalid_paramssv JJy ! JJy !j(Aqv>j(AqveLj(AquXNj(AqvgNj(AqvgNredtypes do not matchc|jgd}|jgd}|jgd}t||d}t||t||d}t|||jgd}|jddg}|jddg}t||d}t||t||d}t||y) NrSrTrNrQrPrN rTrNrOrPrNrOrTrTrS)FNIAr)y?@@y@@?y @$r[r^r_r`raexpectedouts rctest_valid_mode2zTestConvolve.test_valid_mode2s JJ) * JJ2 3::./q!W%X&q!W%X& JJ/ 0 JJ' (::vw/0q!W%X&q!W%X&rec|jgd}|jgd}t||d}|jgd}t||y)N)rSrTrNrNrSrT) rSrOrNrOrPrQrrOrNrTrSrSrNri)9=?r-$r[rs rctest_same_modezTestConvolve.test_same_modesG JJ) * JJ> ? Q6 " JJ/ 01rezdifferent exceptionc|j|jddd}|j|jddd}tttg||fidditttg||fiddiy NrSrrTrNrrNrTrkr)rrrrrrs rctest_invalid_shapesz TestConvolve.test_invalid_shapesss JJryyA / JJryyQ' 0j(IaVI7HIj(IaVI7HIrezTODO: convert this testc Zhd}|Dcgc]}|D]}dD]}|||f }}}}tjjd}|jddg||j |d} | dx| d <| d <| d d | d zz| d <|D]\}}}| tj |j j|} | tj |j j|} dD cic]} | t| | | |} } | dj | dj k(sJd|vrd|vrt| | dk(sJt||fDcgc]}|dvc}rddd}nd||fvrddd}nddd}t| d| dfi| ycc}}}wcc} wcc}w)N>boolint8int16int32int64uint8uint16uint32uint64float16float32float64 complex64r)rrri*rrSsize)rfrraur?rb)r r)rrkr rr>rr-C6?ư>rtolrrMbP?h㈵>:0yE>) nprandom RandomStatechoicerandnrkindastyperranyr7)r^r_ntypest1t2rkargsrng array_typesx1x2keyresultstkwargss rctest_convolve_methodz!TestConvolve.test_convolve_methods4*/FF2F2+DF#'RFFFF ii##B'JJ1vAJ6IIaL* .9#.>> C;s+&s+d;s3C.CC C  ILBDRXXb\../66r:BRXXb\../66r:B#45HRCdCC5G55>''78+<+B+BB BB|" )"b1X===B8DaA11DE"($7r2h&"&5#'5 GENGH,= H H1 IF5EsF=F# F( cdD]}|jd|zg|j}t||d}t||d}|dksF|jdd|zzg}t||t||d t||d y) N) rU23456<rrTrr rrrF check_dtype)r\rrr8)r^r_rrwr rvals rc test_convolve_method_large_inputz-TestConvolve.test_convolve_method_large_inputs6 @A AqD6 2A1a.Ca84F 2vjj!ac(,V,Se<? @rer}c,tttdgddtttddgdtttdgddtttddgdtttdgdggtttdgdyNrSrTrrr rN)rrrr^r_s rctest_mismatched_dimsz!TestConvolve.test_mismatched_dimssp j(QC8Dj(As8Dj(QC5Aj(As5Aj(QC1#7j(QC3rectjgdt}tjgdt}tjd5t ||dddy#1swYyxYwNrrrdtype=object is not supportedmatch)rr\objectpytestdeprecated_callrrs rctest_dtype_deprecationz#TestConvolve.test_dtype_deprecationsS JJ) 8 JJ2& A  # #*I J  QN     A''A0N)d)__name__ __module__ __qualname__skip_xp_backendsrdrmrorxxfail_xp_backendsr{rrrrrrrrrr rrr#mark thread_unsafer%rercrHrH+skCEHEH kCE5E5 kCE5E5 E {+?@"A" d=9: .{+?@"A" k#f$gf#5#5JOk*?@'A',k*?@Af%:; J< Jd+DE*IF*IXk*?@@A@"d#4$4 [[d#$rerHc eZdZedddZedddZedddZeddd Zd Zd Z edd d Z edd dZ edd e jjdeege jjddgdgfdgdgfgdZedd dZedd dZdZedddZedddZedddZdZe jj2e jj5ded d!"d#Zy$)%TestConvolve2drIrrKc|jgdgdg}|jgdgdg}|jgdgdgdg}t||}t||yrr\rr8)r^r_r`rares rcrzTestConvolve2d.test_2d_arrays)s\ JJ 9- . JJ 9- . JJ*'') * q! 1rec|jgdgdg}|jgdgdg}|jgdg}t||d}t||t||d}t||y)NrTrNrOrPrQrrrOrPrQrr rUrRrgrPbtrr3r^r_r4rhgs rctest_valid_modezTestConvolve2d.test_valid_mode3sn JJ-/EF G JJ 9- . JJ./ 0 q!W %1 q!W %1rerc |jgdgdg}|jgdgdg|jdz}|jgdg}t||d}t||t||d}t ||y) Nr6r7rRrgrr)yO@8@yT@>@yX@B@y]@E@y`@H@r)r\rrr7r8r>s rctest_valid_mode_complxz%TestConvolve2d.test_valid_mode_complx@s{ JJ-/EF G JJ 9-R]]J Cb H JJLM N q!W %1 q!W %1rezjax only allows fillvalue=0c|jgdgdg}|jgdgdg}d}t||dd|}|jgdgd gd g}t||y) NrRrgrrrSrfill)rrlrX)rW(r@r)rX.Cr0r3)r^r_r`rafillvalrbrs rctest_fillvaluezTestConvolve2d.test_fillvalueMsg JJ 9- . JJ 9- . q!VVW 5 JJ,'') * 1recd}tjj5}|jtdt t |5tdggddggdddddddd}t t |5tdggddggddgdddy#1swYCxYw#1swYGxYw#1swYyxYw) Nz2could not cast `fillvalue` directly to the output zCasting complex valuesr rSrTr fillvaluez,`fillvalue` must be scalar or an array with )rtestingr filterr rrr)r^r_msgsups rctest_fillvalue_errorsz$TestConvolve2d.test_fillvalue_errorsXsB ZZ ) ) + :s JJ~'? @z5 :QC5Aq6(b9 : : = :S 1 : u1vh1a& 9 : :  : : : :  : :s/(B+ BB+B7B( $B++B47Cc>tttdggddgggy)NrSrTrPrrrrs rctest_fillvalue_emptyz#TestConvolve2d.test_fillvalue_emptycsj*seq!fX " $rez!jax only supports boundary='fill'c|jgdgdg}|jgdgdg}t||dd}|jgdgdgdg}t||y) NrRrgrrrwrap)r:r:Jr:r:)Dr]rr]r]r3rs rctest_wrap_boundaryz!TestConvolve2d.test_wrap_boundaryhs` JJ 9- . JJ 9- . q!VV , JJ,'') * 1rec|jgdgdg}|jgdgdg}t||dd}|jgdgdgd g}t||y) NrRrgrrrsymm)rlr,rB)rrLrr:T)Rr\nrr3rs rctest_sym_boundaryz TestConvolve2d.test_sym_boundaryrs` JJ 9- . JJ 9- . q!VV , JJ,')+ , 1refunczboundary, expectedr`)gB@E@F@gF@r[)E@rkrjC@c|jgdg}|jd}|||d|}t||j|y)N)@@@)rSrirkboundary)r\onesr8)r^rirurr_imagekernelresults rctest_same_with_boundaryz&TestConvolve2d.test_same_with_boundary|sI 123!eV&8D  8 45rec $ddlm}|j|jdd|jd}|j|jdd|jd}t ||dd }t ||j||d d y) NrrSrr)rUrNe)rUrUrir[rt)rr)rkorigin) scipy.ndimagendimagerrrrr8r)r^r_ndir`rarbs rctest_boundary_extension_samez+TestConvolve2d.test_boundary_extension_samesx $ JJryyF"**y=w G JJryyG2::y> I q!&6 :3<<16(<KLrec ddlm}|j|jdd|jd}|j|jdd|jd}t ||dd }t jddtjd d }t j|d d }|j|}t||j|j||d ddddfy)NrrSrUrrNrN%)rQrQrr[rtrN)rrrjr) r~rrrrrrfloatpadr\r8r) r^r_rr`rarba_npapad_npapads rctest_boundary_extension_fullz+TestConvolve2d.test_boundary_extension_fulls $ JJryyEy&&/8zz'"2::cll4l&H"crc&RSTrec|j|jddd}|j|jddd}tttg||fidditttg||fiddiyr)rrrrrrs rcrz"TestConvolve2d.test_invalid_shapesss JJryyA / JJryyQ' 0j*K1vK&'9JKj*K1vK&'9JKrerJc|jgdgdg}|jgdgdg}t||d}|jgdgdg}t||y)NrRrgr6r7ri)rVrWrl)r:r;r<r3)r^r_r4rr@r?s rcrzTestConvolve2d.test_same_modes\ JJ 9- . JJ-/EF G q!V $ JJ  " #1rec|jgdgdg}|jgdgdg}|jgdg}t||d}t||t||d}t|||jddgd d gg}|jgd gd g}|jd dgg}t||d}t||t||d}t||y)NrRrgr6r7r9rrqrrs@)r@@r)ry@?y@y;@yG@@r3)r^r_r4rrrs rcrzTestConvolve2d.test_valid_mode2s JJ 9- . JJ-/EF G::567Aw'X&Aw'X& JJ(66*:; < JJ02JK L::234Aw'X&Aw'X&rez9only integer tensors of a single element can be convertedc tjd}tjgd}|j|}|j|}dD]}t|jtj|||t j|||t|j t j|dddf|dddf|dt j|||y)NrPg @gffffff?rNrrrirjraxis)rrr\r7rrsqueezer)r^r_rb_npr`rarks rctest_consistency_convolve_funcsz.TestConvolve2d.test_consistency_convolve_funcss yy|zz-( JJt  JJt - D  2;;tT=>140   %%aaj!D!G*4H140   rectttddtttdgdgtttdgggdgggy)NrNrOrXrs rctest_invalid_dimsz TestConvolve2d.test_invalid_dimss<j*a3j*qcA37j*ug!w?rez!Can't create large array for testT stride_tricksr|cdd|jjzz}tjd|zdzt jjzdz |j d|z|j}d|ddd<tj jj||dfd }tj|ddgg}t j|dkD}|d jd k(sJy) NlrTg.ArrS)iHr)shapestridesr) ritemsizer6check_free_memoryrzeroslibr as_stridedrrwherer)r^r_rr`countfailss rctest_large_arrayzTestConvolve2d.test_large_arrays dRXXZ000 1$$QUT\BHHJ4G4G%G#%MN HHTAXRXXH .#A# FF + +AaY + R!!!q!fX.#Qx}}!!!reN)r(r)r*r+rrArCrNrVrYr^rhr#r- parametrizerrrzrrrrrrrslowxfail_on_32bitrr/rercr1r1&sk*?@Ak*?@ A g&;< = k*GHI :$ k*MNOk*MNOk*MN [[Vj+%>? [[1%(@'AB%(@'ABDE 6E@O 6k*MNMOMk*MN UO U LkCEEkCE'E'.gJ(@  [[ [[ CDd?; "<E "rer1cF eZdZeddej j dddddgddggd Zeddej j dd d gddggd Zej j dddddgddggd Z ej j dd d gddggd Z ej j ddddd gd dgddgddgdd gd dgddgddgg dZ ej j dd dgdd gd dgdd gddgddgddgddggdZ ej j ddddd gd dgddgddgdd gd dgddgddgg dZ ej j dd dgdd gd dgdd gddgddgddgddggdZeddej j dddddgddggdZeddej j dd dd gdggdZeddej j dddddgddggdZeddej j dd d ggdZej j dddddgddggdZej j dd d gddggdZeddedddZeddeddej j dggfd d!ggfgd"gfgd#Zedd$d%Zd&Zej j dddddgddggd'Zej j dd d gddggd(Zed)d*+ej j dd d,gd,d gd dgdd gd-d,gd,d-gd-dgdd-ggd.Zej j:ej j d/eed d0eed1d2ze jBjEd3jGd4d5d jIzd6Z%ej jLed)7d8Z'y)9TestFFTConvolverrrKaxesNrrc|jgd}|jgd}|dk(r t||}n)t|tr t |}t|||}t ||dy)NrRrSrOrUrZ"@rrTqs*>rr\r isinstancelisttupler7r^rr_r`rrs rc test_realzTestFFTConvolve.test_realsa JJy !::01 2:a#C$%T{a.CXF3rerScZ|jgd}|jgd}|jtj|ddg}|jtj|ddg}t|tr t |}t |||}t||dy)NrRrrTrSrrrr\rtilerrrrr7rs rctest_real_axeszTestFFTConvolve.test_real_axess JJy !::01 JJrwwq1a&) *::bgghA78 dD !;D!QT*XF3rec|jgd}|jgd}|dk(r t||}n)t|tr t |}t|||}t ||dy)Nrq@@y@@rty @y4@y8@y2@rrrrrrs rcrxzTestFFTConvolve.test_complex&s` JJ/ 0::IJ 2:a#C$%T{a.CXF3recZ|jgd}|jgd}|jtj|ddg}|jtj|ddg}t|tr t |}t |||}t||dy)NrrrTrSrrrrrs rctest_complex_axesz!TestFFTConvolve.test_complex_axes3s JJ/ 0::IJ JJrwwq1a&) *::bgghA78 dD !;D!QT*XF3rec|jgdgdg}|jgdgdgdg}|dk(r t||}n)t|tr t |}t|||}t ||y)N)?rTrNr)rrOrUrZr8rrG8rrrrHrrrrrrrs rctest_2d_real_samez!TestFFTConvolve.test_2d_real_sameAsx JJ !# $::22356 2:a#C$%T{a.CX&rerTcr|jgdgdg}|jgdgdgdg}|jtj|gd}|jtj|gd}t|tr t |}t |||}t||dd y) NrRr)rSrOrUrZr8rrrTrSrSrrFrrrrs rctest_2d_real_same_axesz&TestFFTConvolve.test_2d_real_same_axesZs JJ  ::0-.01 JJrwwq), -::bggh :; dD !;D!QT*XFFrec|jgdgdg}|jgdgdgdg}|dk(r t||}n)t|tr t |}t|||}t ||d y) N?@@@y@@rry@@y@@y@y$4@y5L@y2S@y&N@y$@yF@y]@yc@y^@ry$@4@y5@L@y2@S@y&@N@rrrrrrs rctest_2d_complex_samez$TestFFTConvolve.test_2d_complex_samers{ JJ0+- .:: A ( < 2:a#C$%T{a.CXF3recp|jgdgdg}|jgdgdgdg}|jtj|gd}|jtj|gd}t|tr t |}t |||}t||d y) Nrrrrrrrrrrrs rctest_2d_complex_same_axesz)TestFFTConvolve.test_2d_complex_same_axess JJ0+- .:: A ( < JJrwwq), -::bggh :; dD !;D!QT*XF3rec|jgd}|jgd}|jgd}|jgd}|dk(rt||d}n*t|tr t |}t||d|}t |||dk(rt||d}n*t|tr t |}t||d|}t ||d y) NrR rNrNrPrQrrr8rrSA@D@G@ r4@9@rrrrmg<@rorrirrrrr^rr_r`ra expected_1 expected_2rs rctest_real_same_modez#TestFFTConvolve.test_real_same_modes JJy ! JJ2 3ZZ0 ZZ KL 2:aF+C$%T{aF6CZ( 2:aF+C$%T{aF6CZf5rec~|jgd}|jgd}|jgd}|jgd}|jtj|ddg}|jtj|ddg}|jtj|ddg}|jtj|ddg}t|tr t |}t ||d|}t||d t ||d|}t||d y) NrRrrrrTrSrirrrrrs rctest_real_same_mode_axesz(TestFFTConvolve.test_real_same_mode_axess JJy ! JJ2 3ZZ0 ZZ KL JJrwwq1a&) * JJrwwq1a&) *ZZ QF ;< ZZ QF ;< dD !;D!QT2Zf5!QT2Zf5rec|jgd}|jgd}|jgd}|dk(rt||d}n*t|tr t |}t||d|}t ||d|dk(rt||d}n*t|tr t |}t||d|}t ||dy) NrNrTrSr8@g?@rrlgH@r(@rrrrrrr^rr_r`rarrs rctest_valid_mode_realz$TestFFTConvolve.test_valid_mode_reals JJy ! JJ2 3::AB 2:aG,C$%T{aG$7CXF3 2:aG,C$%T{aG$7CXF3rec|jgd}|jgd}|jgd}|jtj|ddg}|jtj|ddg}|jtj|ddg}t|tr t |}t ||d|}t||d y NrrrrTrSrrrrrrs rctest_valid_mode_real_axesz)TestFFTConvolve.test_valid_mode_real_axess JJy ! JJ2 3::AB JJrwwq1a&) * JJrwwq1a&) *::bgghA78 dD !;D!Qd3XF3rec|jgd}|jgd}|jgd}|dk(rt||d}n*t|tr t |}t||d|}t ||d|dk(rt||d}n*t|tr t |}t||d|}t ||dy) N@y@@rry@y@y@y @yF@(@y>@7@yH@@@rrrrrrrs rctest_valid_mode_complexz'TestFFTConvolve.test_valid_mode_complexs JJ/ 0 JJ? @::AB 2:aG,C$%T{aG$7CXF3 2:aG,C$%T{aG$7CXF3rec |jgd}|jgd}|jgd}|jtj|ddg}|jtj|ddg}|jtj|ddg}t|tr t |}t ||d|}t||d t ||d|}t||d y) NrrrrTrSrrrrrrs rctest_valid_mode_complex_axesz,TestFFTConvolve.test_valid_mode_complex_axess JJ/ 0 JJ? @::AB JJrwwq1a&) * JJrwwq1a&) *::bgghA78 dD !;D!Qd3XF3!Qd3XF3rerIz mapped axes must have same shapec|jgd}|jgd}|jgd}|jtj|ddg}|jtj|ddg}|jtj|ddg}t||dd}t ||d yr)r\rrrr7rs rctest_valid_mode_ignore_nonaxesz.TestFFTConvolve.test_valid_mode_ignore_nonaxes)s JJy ! JJ2 3::AB JJrwwq1a&) * JJrwwq1a&) *::bgghA78!Qa0XF3rerCzassorted error messagesa,brPrQrctt|j||j||jgyN)r8rr\r^r`rar_s rc test_emptyzTestFFTConvolve.test_empty8s1   1 rzz!} 5 JJrN rezjnp.pad: pad_width with nd=0c~|jd}|jd}t||}t|||zyr)r\rr8r^r_r`rars rcr{zTestFFTConvolve.test_zero_rankBs8 JJt  JJt !QQU#rec|jdg}|jdg}t||}t||j||z|jy)Nrrr)r\rr8rrs rcrz#TestFFTConvolve.test_single_elementIsP JJv  JJv !Q 1q5 : >$+?&??yy~~d#b299>>$+?&??::bkk$f=> JJt  JJt  2:aF+C$%T{aF6CXE2rectjjdtjjddtjjdzz}tjjddtjjdzz}tj||d}tj |ddg}tj |ddg}|j tj |ddg}|j |}|j |}t|tr t|}t||d|}t||d y) Nrrrr rrTrSrr r ) rrr r rrr\rrrrr7rs rctest_random_data_axesz%TestFFTConvolve.test_random_data_axesas tyy~~d#b299>>$+?&??yy~~d#b299>>$+?&??;;tT62wwtaV$wwtaV$::bgghA78 JJt  JJt  dD !;D!QT2XE2reTzTODO: swapaxesr|rOcd\}}tjjd|jtjj|dtjj|zz}|jtjj|dtjj|zz}t ||d}|dddddddf}|dddddddf}|dddddddf}|j |jdddd}|j |jdddd}|j |jdddd}|jtj|gd }|jtj|gd }|jtj|gd }t||d| }t||d d y)N)){rV) rrrrrTrSrO)rTrSrNrSrS)rTrSrSrOrS)rTrSrNrOrSrr r) rrr r\r rmoveaxisswapaxesrrr7) r^rr_a_shaperr`rarrs rctest_random_data_multidim_axesz.TestFFTConvolve.test_random_data_multidim_axests0 t JJryy~~w/"ryy~~w7O2OO P JJryy~~w/"ryy~~w7O2OO PaF+ aD$$ % aD$$ %Aq$d23 KK 1a(!Q / KK 1a(!Q /;;x00A61= JJrwwq/2 3 JJrwwq/2 3::bggh@A!QT2XE>rerr'rirr'ctjj|dtjj|zz}tjj|dtjj|zz}|jtj||d}|j|}|j|}t ||d}t ||dt ||ddg}t ||dy)Nrrr rrr)rrr r\rrr7) r^rr_rrrr`rars rctest_many_sizeszTestFFTConvolve.test_many_sizessyy~~a 2 q(9#99yy~~a 2 q(9#99::bkk$f=> JJt  JJt !Q'XE2!QaS1XE2rercd}tjjd}|j|j |}tj tj fD]k}||d<|jtjdd}d}tjt|5tj||dd dddmy#1swYxxYw) Nrl[?. [[ [[  U1c] U4   d#++D%;BBD EF 3 F 3 [[d# L$ Lrerctd)NzFell back to fftconvolve) RuntimeError)rr s rcfftconvolve_errr/s 1 22rectt|dDcgc]\}}t||z dkDr||fc}}Scc}}w)NrTrepeatrN)rabssizesr`ras rc gen_oa_shapesr6s?&uQ7 tq!1q5zA~F  s4c8t|}t|}t||Dcgc] \}}||z }}}gd}t||Dcgc]<\}}|dk7s,|d|dkDr |d|dkDs|d|dkr|d|dkr||fz>c}}Scc}}wcc}}w)NrrrrSrTrN)r6zipr) r5shapes0shapes1ishapes0ishapes1shapesmodesishapesimodes rcgen_oa_shapes_2drAsE"GE"G'7#%$6Hhhx%F% &E3:653I C% QZ'!* $gaj)@ QZ'!* $gaj)@ UH  CC % Cs B ABc\t|dDcgc]\}}||k\r||fc}}Scc}}w)NrTr1rr4s rcgen_oa_shapes_eqrCs7&uQ7 tq!AvF  s(rIzfails all aroundrK dask.arrayz wrong answerceZdZejj ejj deee dddee dddzdZ ejj de gdejj dd d gejj d gd d Z ejj dddgejj de gdejj dddgejj dddgejj dd d gejj d gd dZ ejj degdejj dd d gdZejj dddgddgddggejj degdejj dddgejj dddgejj dd d gdZeddejj dggfddggfgdgfgd Zd!Zd"Zy#)$TestOAConvolvezshape_a_0, shape_b_0rSr'rrYc tjj|}tjj|}|j|}|j|}t ||}t ||}t ||yr)rrr r\rrr=)r^ shape_a_0 shape_b_0r_r`rarrs rctest_real_manylensz!TestOAConvolve.test_real_manylenssd IINN9 % IINN9 % JJqM JJqMq!$A!#x0re)r/rQrOrS is_complexTFrkrctjj|}tjj|}|rJ|dtjj|zz}|dtjj|zz}|j|}|j|}t |||} |j t jdtt|||} t| | yNrrjr rrr r\rsetattrr _signaltoolsr/rr=) r^rHrIrLrk monkeypatchr_r`rarrs rctest_1d_noaxeszTestOAConvolve.test_1d_noaxess IINN9 % IINN9 % Bryy~~i000ABryy~~i000A JJqM JJqMq!$/F//+ -AD)!#x0rerr)rrKrQrO shape_a_extrarN shape_b_extrac |gdz} |gdz} || |<|| |<tjj| } tjj| } |rD| dtjj| zz} | dtjj| zz} | j| } | j| } t | | ||}|j t jdtt| | ||}t||y)NrTrrkrrrO)r^rrHrIrTrUrLrkrRr_ax_aax_br`rarrs rc test_1d_axeszTestOAConvolve.test_1d_axessq q T T IINND ! IINND ! Bryy~~t,,,ABryy~~t,,,A JJqM JJqMq!$T:F//+ -ADt4!#x0rez0shape_a_0, shape_b_0, shape_a_1, shape_b_1, modec tjj||} tjj||} |rL| dtjj||zz} | dtjj||zz} |j| } |j| } t | | |} |j t jdtt| | |} t| | yrNrO) r^rHrI shape_a_1 shape_b_1rkrLrRr_r`rarrs rctest_2d_noaxeszTestOAConvolve.test_2d_noaxess IINN9i 0 IINN9i 0 Bryy~~i;;;ABryy~~i;;;A JJqM JJqMq!$/F//+ -AD)!#x0rerTc P|gdz} |gdz} || |d<|| |d<|| |d<|| |d<tjj| }tjj| }| rD|dtjj| zz}|dtjj| zz}| j|}| j|}t |}t ||||}| j tjdtt||||}t||y)NrNrrSrrWr) rrr r\rrrPrrQr/rr=)r^rrHrIr\r]rkrTrUrLrRr_rXrYr`rarrs rc test_2d_axeszTestOAConvolve.test_2d_axes4sq q !T!W !T!W !T!W !T!W IINND ! IINND ! Bryy~~t,,,ABryy~~t,,,A JJqM JJqMT{q!$T:F//+ -ADt4!#x0rerz*ValueError: Target length must be positiverKrrPrQrctt|j||j||jgdy)NFr)r8rr\rs rcrzTestOAConvolve.test_emptyXs3  rzz!}bjjm 4 JJrN rec~|jd}|jd}t||}t|||zyrr\rr8rs rcr{zTestOAConvolve.test_zero_rankas8 JJt  JJt AQU#rec|jdg}|jdg}t||}t|||zyrrcrs rcrz"TestOAConvolve.test_single_elementgs< JJv  JJv AQU#reN)r(r)r*r#r-rrrCrrrJr6rSrZrAr^r`r,rr{rr/rercrFrFs [[ [[3-d5C3C.D.25dB3G.H/IJ 1  1 [[3*+<=? [[\D%=9 [[V%>?1@:?1& [[VaV, [[3*>:< [[_q!f5 [[_q!f5 [[\D%=9 [[V%>?1@:66<-12 [[:-n=? [[\D%=91:?1( [[Vq!fq!fq!f%=> [[:-n=? [[_q!f5 [[_q!f5 [[\D%=91:66??1:w'ST [[Ub"XA|b1#Y$GH IU $ $rerFz!assertions may differ on backendsr|c2eZdZejj deegdZejj deegdZ ejj ddgdfddgfdgdggfgejj deegdZ ejj deegd Z ejjd ejj d e je jgd Zy )TestAllFreqConvolves convapproachctjddjd}tjddjd}ttd5|||d dddy#1swYyxYw) NrSrrrrrzOFor 'valid' mode, one must be at least as large as the other in every dimensionr rrj)rrrrrr^rgr_r`ras rcrz(TestAllFreqConvolves.test_invalid_shapesqsm IIaO # #F + IIb!  $ $V , :"FG - AG , - - -s  A11A:ctjgd}tjgd}ttd5|||ddgdddy#1swYyxYw)N)rPrQrTrS)rPrQrNrSzVincompatible shapes for in1 and in2: \(5L?, 6L?, 2L?, 1L?\) and \(5L?, 6L?, 3L?, 1L?\)r rrSr)rrrrris rctest_invalid_shapes_axesz-TestAllFreqConvolves.test_invalid_shapes_axes{sV HH\ " HH\ " :"67 , AQF +  , , ,s AA rrSrTrNcbttd5|||dddy#1swYyxYw)Nz/in1 and in2 should have the same dimensionalityr rr)r^r`rargr_s rcrz)TestAllFreqConvolves.test_mismatched_dimss4:"-.  A    s %.cttd5|dgdgddddttd5|dgdggdddttd 5|dgdgddgd d ggdddttd 5|dgdggd dddttd 5|dgdgdgdddttd 5|dgdgdgdddttd5|dgdgddgdddy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYpxYw#1swYyxYw)Nz4acceptable mode flags are 'valid', 'same', or 'full'r rSrTchipsrjz#when provided, axes cannot be emptyrz-axes must be a scalar or iterable of integersrNrO)rrorqrrz$axes exceeds dimensionality of inputrzall axes must be uniquerrm)r^rgr_s rctest_invalid_flagsz'TestAllFreqConvolves.test_invalid_flagss:"01 1 !qc 0 1 :!FH , !qc + ,:.23 : !qc!Q!Q(8 9 ::.23 : !qc(8 9 ::!GI - !qc , -:!GI . !qc - .:!:< 0 !qcA / 0 03 1 1  , , : : : : - - . . 0 0sRDD, D8 E6EEE(D),D58EE EE%(E1ignore::DeprecationWarningrcntjjdj|}tjjdj|}tj|r |dz }|dz}t ||}t |t ||d|j|k(sJy)N)rrrOrOy?rr)rrr iscomplexobjrr7rr)r^rr_rurvress rctest_longdtype_inputz)TestAllFreqConvolves.test_longdtype_inputs II  X & - -e 4 II  V $ + +E 2 ??57 # HA HA!QXa8<=yyE!!!reN)r(r)r*r#r-rrrrrkrrpfilterwarningsr longdouble clongdoublervr/rercrfrfns@ [[^):68-8- [[^):68,8, [[U !sAh 1#h !saSEl,- [[^):688 -   [[^):68080< [[ <= [[Wr}}bnn&EF "G> "rerfc TeZdZgdgdgdgdgdgdgdgdgd gd g Zgd gd gd gdgdgdgdgdgdgdg ZddgZdZejjdgddZ e ddejjde je je je j e j"ddgd Ze dd!d"Ze dd#d$Ze d%d&'ejjdgd(d)Zy*)+ TestMedFilt) rrrrrrerrrJ) rrrrrrHMr]rb) rrrrrrJrKrIr~) rrrrrr_#) rrrrrrJrlr8rsrb) rarWr]rr~rrGr) rIrrarr]rXrr]rFrc) rN!rrKrSrr\7rZS) rrrJrrrKrF+rrG) rXrXr'rOrerIrr) rrrrrrrr|rr) rrrrrrrrsrr) rrrrrrKrlrlrJr) rrrrrrrrKrIr) rrrrrrrJrrIr) rrrrrrKrJrrrG) rXrrrrrKrJrrrG) rrJrrrKrJrJrrrs) rrXrrrXrXrrrr) rrrrrOrOrrrFrrrNch|j|j}|j|j}|j|j}t j ||}t j |j||j|}t||t||dy)NrFr) r\INOUT KERNEL_SIZErmedfilt medfilt2drr8)r^r_in_out_ kernel_sizerr4s rcrdzTestMedFilt.test_basicsjj!zz$((#jj!1!12 NN3 ,   RZZ2::Z> L4 1%0rer rrrrrrrrrrc.t|r|dvrtjdt||}|j |j |}t j|j|k(sJt j|j|k(sJy)Nrrrz%torch does not support unisigned intsr) r:r#skipgetattrr\rrrrrr^rr_in_typeds rc test_typeszTestMedFilt.test_typess~ Bz#strides are only writeable in NumPyc|jd|j}|dd}tjjj |d}t tj|d|jdgy) NrUrrPrQ)r)rrS@) rrrrrrr7rrr\)r^r_dummyr`s rctest_odd_strideszTestMedFilt.test_odd_strides sd  "BJJ / !AJ FF + +Au + =q!,rzz2$/?@rerIz6chunk assignment does not work on jax immutable arraysrK)rrrct||}|jj||jj|}j|jk(sJ|jddz|jddzj ddzdzj ddzdzfd}|j |}td5}hd}|Dchc]}|j||} }t| D]} | j\} } } | || | f< dddt||ycc}w#1swYxYw) NrrrTrSc|\}}|dk(r)td z}td }td }n't z d}td}t d}|dk(r)td z}td }td }n't z d}td}t d} ||f} tj| j} | ||f||fSNr)slicerrr)chunkMNMinMselMoutNinNselNout chunk_datamedM1N1roffMoffNr^s rcapplyz2TestMedFilt.test_medfilt2d_parallel..apply*sDAqAvArDy)QQ|BIt,T4(RAvArDy)QQ|BIt,T4(R"#s(+J"":t/?/?@CtTz?D$. .rerO) max_workers>rSrrrrrSrSrS) rr\rrrr zeros_likersubmitrryr8)r^rr_rroutputpoolchunksrfuturesfuturedataMsliceNslicerrrrrs` @@@@@rctest_medfilt2d_parallelz#TestMedFilt.test_medfilt2d_parallelsU E"::dggU:3::dhhe:4~~/// ^^A ! # ^^A ! #"a'!+"a'!+ / /8x( A . .$5F>DEUt{{5%0EGE'w/ .'-}}$ff)-vv~& .  . )F . .s E&E?-EEEN)r(r)r*rrrrdr#r-rrr+rbool_rrryrrrrrr/rercr{r{s_ 3 1 2 2 1 2 2 0 1 0 2B 2 1 3 3 3 3 3 2 1 - /CQ%K 1 [[W'=>9>9d+BC [[Wrxxr}}')~~rzz'0*'>? '?D 'd?;!<! d+PQARAG [[W&EF6*G  6*rer{c,eZdZedddZy) TestWienerrCzXXX: can_cast in cupy <= 13.2rKc|jgdgdgdgdg|j}|jgdgdgdgd g}ttj||d ttj|d |d y)N)rPrQrOrN)rNrPrQrT)rTrNrPrQ)rSrQr8rr)gSXO@gXq @gq@g?)g]`UUU@gFUUUU@gq@gcq@)gyq@gXq@gXq@gUJ4@)gUUUU?g2k6k@gҷWH@g@_)@rQdecimalrN)mysize)r\rr=rwiener)r^r_r@r?s rcrdzTestWiener.test_basicVs JJ $$$&.0ZZ  9 JJNQQRT U "&--"2AqA!&--!"v !>r)rArrrlinspacecosrrrr7realstacksinr) r^rrrr_dt_rdt_crurvdesired y_complex resampledrs rc test_rfftzTestResample.test_rffts0 ##rzz1r||r}} KK2q5K 1 FFAqD59 //"))At"4c&I3v>( * HHbffadU3Y'Ac ):; <IIa& OOIs6J rzz)tt OOAs6 : GGI  reXXX: immutable arraysc|j|jd|j}tj|}d}t t j||dt j||ddy)Nrfreqrtimerr)rrrsp_fftr r7rr)r^r_tsigfsigrs rctest_input_domainzTestResample.test_input_domains^yy37zz$ OOD#f 5 OOD#f 5 renx)rSrTrNrPrnyr)rrct||}|jdg|z|}tj||}t ||jdg|z|j y)NrSr)rr\rrr7r)r^rrrr_rurvs rctest_dczTestResample.test_dcsY E" JJsRxuJ - OOAr "2::qcBhagg:>?rerc|jd}|jtjj dj d}|j|d}t j|dd||t||y) NrNrrTTcopyrPrSrr) rr\rrrrrrr8)r^rr_impulser window_origs rctest_mutable_windowz TestResample.test_mutable_windowsk((1+BII11!4::1=>jjdj3 Wa67K ,rec|jd|j}|jgd|j}tj|dd||}|j |jk(sJy)NrUrrSrSrSrSrTr)rrr\rrr)r^rr_rur?rvs rctest_output_float32z TestResample.test_output_float32s^ IIb I + JJy J 3  AqG Dww"**$$$rerrct||}|jd|}tj|dd|}|j|jk(sJy)NrUrrSrTr)rrrrr)r^rrr_rurvs rctest_output_match_dtypez$TestResample.test_output_match_dtypesNE" IIbI &  Aq' :ww!''!!!rezmethod, ext, padtype)r FN polyphaseFc "d}gd}|j||jt|z }|jddd|jf}|j d|j z|z|zt||z} |D]} |j| |jt| z } |j d|j z|z| zt| |z} |dk(rtj| | d } nu|rU| |k7rPt| |}| |z}||z}t||}d |z }d |z}tjd|zd z|d }||d}nd|i}tj| | |fddi|} t| jdD]}| |ddf}| |ddf}t||df}|d| zk\r3|j!|}|dvrt#||dQt#||d`|j|jk(sJt%j&||d}|dkDrJ||| ft$j(j+d}t|t%j,|j/|z} |j| } |D]} |j| |jt| z } t%j0| || }|dk(rtj| | }ntj| | ||}|j|jk(sJ|jt%j&|t%j|d}|dkDrJ||dk(r|jddg}tj|d}|jgd}t#||d|jgd }tj|d} |jd d!g}!t#| |!dyy)"Nr') rrrcr'r|rr)r$@gD@rTr_r rrrrUrS)rrrrrrr?)rr333333?rrrgGz?rrrrO)r?rr,-q=)rr*r*r.)rrrr\newaxisrpir1rrrmaxr%rrrrr7rcorrcoefrrcumsumrinterp)"r^rextrr_raterates_tor freqsrurate_tot_toy_tos y_resampsr@updownmax_ratef_chalf_lenrpolyargsry_toy_resampr corrrry1_testy1_truery2_testy2_trues" rctest_resample_methodsz"TestResample.test_resample_methodss< IId"**I -d ; >*1bjj=9 FF1ruu9u$q( )D",= =% >G99WBJJ97%.HDFF1ruu9u,t34tG7KKE"OOAwR@ 7d?GT*A AB19D"2t}Hx-C!H}H#]]1x* >QT{$QT?U1a4[)3=(==.D"88'$TB'$TB::777;;tX6t/% >Pii##A& J399T?3 3 JJqM %G99WBJJ97%.HD99T1a(D!??1g6!//7D8?A::/ //::bkk$ 80DEdKLD$; $ $; % U?VV,-Boob!,Gjj!CDG GW5 9./Boob!,Gjj"b*G GW5 9 ren_in)rr8n_out)rNrOctj|}d}tj||}tj|||}t d|z|dy)zTest callable window function. c2dtj|zS)zScale input by 1/2r*)r ones_like)r8s rcrz0TestResample.test_resample_win_func..winCse,, ,rerrTr-rN)rrvrrr7)r^rKrLx_inry0y1s rctest_resample_win_funcz#TestResample.test_resample_win_func=sJwwt} -__T5 ) __T5 5"bu-re)rQrZc,d\}}tj|}tj||}tj|||||zg\}}dtjt ||z|z|z z} t ||t|| dy)zcVerify behavior for parameter `t`. Note that only `t[0]` and `t[1]` are utilized. )rUrT)r rUr-rN)rrvrrrlenr8r7) r^rKrLt0dtrPrQrRrt_refs rctest__resample_param_tz#TestResample.test__resample_param_tLsBwwt} __T5 )uRU <BRYYs2w'",t3e;;BE.ren1)rTrNrrn0ct||dzd||fD}fd|D\}}tj||}tj|dz|}t||dt|j|dy)zDTest behavior at Nyquist frequency to ensure issue #14569 is fixed. rTc3LK|]}tj||z ywr)rr).0n_s rc z5TestResample.test_resample_nyquist..bs 4Rbiimb 4s"$c3vK|]0}tjdtjzz|z2yw)rTN)rrr0)r^t_f_nys rcr`z5TestResample.test_resample_nyquist..cs,=B"&&RUUT)B./=s69rr-rN)minrrr7r) r^r[rZttrry1_ry1_crcs @rctest_resample_nyquistz"TestResample.test_resample_nyquist]sq2r{a 4B8 4="=Br2&rBw+bu- 2E2rerCzfiltfilt is CPU-only)rErFrL down_factor)rTrOctjjd}ttjtj t tf}d}|D]}|j|j|}|tj tjfvr|d|j|zz }|j|}d|d<d|d<tjdd|z d }|j|}t|d|d dd|} t||j!|} tj"|d || } t%| | d d y)NrrrrrrrrrrrrSgHz>rr)rrrintrrrcomplexrrrr\rr%rrfliprr7) r^rir_ random_state try_typesrrrur?yfhcrvs rctest_poly_vs_filtfiltz"TestResample.test_poly_vs_filtfiltks&yy,,R0 "**bllE7C  9E""4(//6Ar}}55R,,,T222 1 AAaDAbE b"{"29EA 1 A!S!Z8;GB !RWWQZ(B$$Q;rBA B4 8) 9rezcorrelate1d is CPU-onlyc dD]}tdd|D]}dD]}tjj|f}tjj|f}t|j||f\}}t |j }t|||d}tj|d||} t|dd|| y)N)rTrOrSrH)rXrrrj)r=r>r) rrrmapr\rBrorrrr7) r^r_r>rnweightsruweightsroy_gy_ss rctest_correlate1dzTestResample.test_correlate1ds 6DAr4( 6 (6H (("/A ii..{;G!$RZZ!W!>JAw*1-22D%agZHC ..ad7rr)rr\rrr count_nonzero)r^rr_ractuals rc test_gh_15620zTestResample.test_gh_15620sY E"zz/uz=%%d)*+,.68'!+++reN)r(r)r*r+rdr#r-rr rrpadtype_optionsrr r"rrrJrSrYrhrtr{rr/rercrrhsk*<=A#>#B [[X'89 [[S(+ [[U$67k*<=>8,:.k*ABCk*AB [[T?3 [[T?3 [[W&?@@A44C@ t,OP [[Y8-9Q-A [[Y8%9%A [[Y8 [[Wy)&<=">9 "k*ABA [[    t}o   L:CL:\ [[VV, [[Wf- ..- . [[VW- [[Wf- /.. / [[T<0 [[T<0 311 3k*AB6(3I [[]K899C 986(3L 6 6A [[Ww &:;,<,rerrceZdZdZdZy)TestCSpline1DEvalcVtjgd}tjt|}|d|dz }t j |}tjt|dzdz }t j ||||d}t|ddd|dy) N) rSrTrNrOrNrTrSrTrqrSrr()dxrrUrPr)rrrrUr cspline1dcspline1d_evalr=)r^r_rvrurcjry2s rcrdzTestCSpline1DEval.test_basics HH2 3 IIc!f  qTAaD[   a  YYs1v} % ,  " "2rbQqT : ""TrT(Aq9rectjd}tj|jtj}d}d|z }tj dtj z|z|z}tj|}tjdg}tj||}|j|jk(sJy)NrTrr(rrtr*) rrrrrexpr0rrrrr) r^r_rurvTrcyxnewynews rcrxzTestCSpline1DEval.test_complexs IIaL HHQWWBLL 1  !G FF4"%% ?G &Ererc eZdZdZdZdZdZdZeddd Z eddd Z d Z d Z eddd Z edddZedddZedddZedddZedddZedddZedddZedddZdZedddZdZeddej4j7dd d ggd!d"d"ggd#fe$d%Zd&Zed'd(edd)d*Zeddd+Z eddd,Z!d-Z"d.Z#ed/ej4j7dd0d0ge$jJd0gej4j7d1d0d0ge$jJd0gd2Z&ed/ej4jNd3Z(y4)5_TestLinearFilterc(|jtk(r^tjj|_tjj |_tjj|_yt|_t|_t|_yr) rr"rrRr assert_close assert_equalr=r7r8)r^s rc setup_methodz_TestLinearFilter.setup_method,s\ ::  " : :D  " 7 7D -/ZZ-Q-QD * /D  /D -FD *rect|tr|ntj|}|j d|dz |}t|ts|j ||}|j ||S)NrrS)rrmmathprodrr convert_dtype)r^rr_ prodshaperus rcgeneratez_TestLinearFilter.generate6s^'s3E59I KK9q=) 4%% 1e$A!!!R((rec|jtjdk(rtj|}tj|j|j}tj ||gddgdgdgg}|D]\}}|j |d|d<|St|jtrt||jn |j}|j||S) NOrefs_ok zerosize_okreadonly writeonlyr/.r) rrr\emptyrnditertyperstrr)r^arrr_riterrurvrs rcrz_TestLinearFilter.convert_dtype=s ::# &**S/C((399djj1C99c3Z)M)B${m46D *11R5)# *J#4::s3R,** ::c:/ /rec|jd|}|jddg|}|jddg|}|jgd|}|jt||||y)NrQrSrr*࿩rrTrOrQrr(rrr=rr^r_rurar`y_rs rctest_rank_1_IIRz!_TestLinearFilter.test_rank_1_IIRLsj MM$ #   2w +   T{B /  !5r: &&wq!Q'7=rec|jd|}|jddg|}|jdg|}|jgd|}|jt||||y)NrrSrrSrNrPrrrrs rctest_rank_1_FIRz!_TestLinearFilter.test_rank_1_FIRSsh MM$ #   1vr *   sB '  !4b9 &&wq!Q'7=rerCz*XXX https://github.com/cupy/cupy/pull/8677rKc\|jd|}|jgd|}|jddg|}|jddg|}|jgd|}|jdd g|}t|||| \}} |j|||j| |y) NrrSrrr*rrSrT)rSrPr8rrrsrzirrrr= r^r_rurar`rrzf_rrvzfs rctest_rank_1_IIR_init_condz+_TestLinearFilter.test_rank_1_IIR_init_condZs MM$ #   z2 .   T{B /   A +  !6;!!2s)R01aB'2 &&q#. &&r40recZ|jd|}|jgd|}|jdg|}|jddg|}|jgd|}|jddg|}t||||\}} |j|||j| |y)NrrrS)rSrTrNrQr8rr8rPrrrs rctest_rank_1_FIR_init_condz+_TestLinearFilter.test_rank_1_FIR_init_condfs MM$ #   y" -   sB '   A +  !5r:!!1a&"-1aB'2 &&q#. &&r40rec|jd|}|jddg|}|jddg|}|jgdgdgdgdg|}t|||d}|j||y) NrOrNrSrr*rrTrOrQrOrTrrr)r^r_rurar`y_r2_a0rvs rctest_rank_2_IIR_axis_0z(_TestLinearFilter.test_rank_2_IIR_axis_0rs MM&" %   2w +   Sz2 .$$iI&/&1246 Aq!! $ &&w2rec|jd|}|jddg|}|jddg|}|jgdgdgdgdg|}t|||d }|j||y) NrrSrr*rrTrrQrrQrZrrZr|ir|rr)r^r_rurar`y_r2_a1rvs rctest_rank_2_IIR_axis_1z(_TestLinearFilter.test_rank_2_IIR_axis_1{s MM&" %   2w +   Sz2 .$$i])&+,.0 Aq!! $ &&w2rec|jd|}|jddg|}|jddg|}|jtjd|}|jgdgdgdgd g|}|jgd |ddtjf}t |||d| \}} |j |||j | |y) NrrSrr*)rOrSr)rr)rr)rr)rriirr)rrrrvr/rr=) r^r_rurar`r y_r2_a0_1rrvrs rc test_rank_2_IIR_axis_0_init_condz2_TestLinearFilter.test_rank_2_IIR_axis_0_init_conds MM&" %   2w +   Sz2 .    3&& :}+(-.02 !!"5r:1bjj=I1aaB/2 &&y!4 &&r40rec|jd|}|jddg|}|jddg|}|jtjd|}|jgdgdgdgdg|}|jgdg|}t |||d | \}} |j |||j | |y) NrrSrr*rSrN)rSrNrP)rPrNrS)rrrr)rrrrvrr=) r^r_rurar`r y_r2_a0_0rrvrs rc test_rank_2_IIR_axis_1_init_condz2_TestLinearFilter.test_rank_2_IIR_axis_1_init_conds MM&" %   2w +   Sz2 .    4&& 9(19(>?AC !!?"3R81aaB/2 &&y!4 &&r40reTznp.apply_along_axis is np onlyr|c |jd|}|jddg|}|jddg|}tj|tj|tj|c }t |j D]L}t ||||}tj fd||}|j||j|Ny)NrOrNrTrSrr*ct|Srrwrrs rcz3_TestLinearFilter.test_rank_3_IIR..dA0Fre rrrr\rndimrapply_along_axisr= r^r_rurar`x_nprrvrrrs @@rctest_rank_3_IIRz!_TestLinearFilter.test_rank_3_IIRs MM)R (   2w +   Sz2 .::a="**Q-AdD!&&M ?D1a&A%%&FdSC  * *1bjjo > ?rec |jd|}|jddg| |jddg| t|jD]}t |j }d||<|j|j ||}|jdg|t |||\}} fd} fd} tj||tj|} tj| |tj|} |j||j| |j||j|  y)NrrSrr*cNtjt|dSNrrrr\rrr`razi1s rclf0z8_TestLinearFilter.test_rank_3_IIR_init_cond..lf0"zz'!Qc":1"=>>recNtjt|dSNrrSrrs rclf1z8_TestLinearFilter.test_rank_3_IIR_init_cond..lf1r re) rrrrrrrvrrrr\r=)r^r_rurzi_shaperrvrrr rrr`rars @@@rctest_rank_3_IIR_init_condz+_TestLinearFilter.test_rank_3_IIR_init_conds& MM)R (   2w +   Sz2 .!&&M ADAGG}HHTN##BGGH$5r:B$$aS"-CAq!T2.EAr ? ?%%c4A?C&&sD"**Q-@D  * *1bjjo >  * *2rzz$/? @ Arec |jd|}|jgd|}|jdg|}tj|tj|tj|c }t |j D]L}t ||||}tj fd||}|j||j|Ny)NrrrSct|Srrrs rcrz3_TestLinearFilter.test_rank_3_FIR..rrerrs @@rctest_rank_3_FIRz!_TestLinearFilter.test_rank_3_FIRs MM)R (   z2 .   sB '::a="**Q-AdD!&&M ?D1a&A%%&FdSC  * *1bjjo > ?rec |jd|}|jgd||jdg| tj|}t |j D]}t |j}d||<|j|j||}|jddg|t |||\}} fd} fd} tj| ||} tj| ||} |j||j| |j||j| y)NrrrSrTcNtjt|dSrrrs rcrz8_TestLinearFilter.test_rank_3_FIR_init_cond..lf0r recNtjt|dSr rrs rcr z8_TestLinearFilter.test_rank_3_FIR_init_cond..lf1r re) rrrr\rrrrrvrrr=)r^r_rurrr rrvrrr rrr`rars @@@rctest_rank_3_FIR_init_condz+_TestLinearFilter.test_rank_3_FIR_init_conds MM)R (   z2 .   sB 'zz!}!&&M ADAGG}HHTN##BGGH$5r:B$$aVR0CAq!T2.EAr ? ?%%c46C&&sD$7D  * *1bjjo >  * *2rzz$/? @ Arec :|jd|}tjddd\}}|j||}|j||}|jddz }|j|j dd |f|}|j|j dd|f|}t |||| \}} t |||| \} } |j| ||j| | ttt |||d |j |y) N)rOrPr rr barrrSrOrPrr) rrr rrrvrr=rr) r^r_rurar`zi_sizezi_fullzi_singy_fullzf_fully_singzf_sings rctest_zi_pseudobroadcastz)_TestLinearFilter.test_zi_pseudobroadcasts MM*b )}}QD11   q" %   q" %''!*q.$$RWWaG_%=rB$$RWWaG_%=rB!!Qg6!!Qg6 &&vv6 &&w8 j'1aB8HIrec|jd|}|jgd|}|jdg|}|jgd|}t||d|}|j||y)NrQrrS)rrSrTrTrTrTrr)r^r_rurar`rrvs rc test_scalar_az_TestLinearFilter.test_scalar_aso MM!R    z2 .   sB '  !3R8 AqtQ  &&q#.rec|j|jd|j|}|j|jd|j|}|j|j gd|}t jdt j}|dddddfxxdzcc<|dddddfxxdzcc<|j |}|j||}|j|jd |j|}t jdt j}dggdggdggg|dddddd f<|j |}|j||}t |||d |\}} |j|||j| |t ||d |d |\} } |j| ||j| |y) N)rNrTrPrrP)rSrr)rNrSrOrSrTrN)rNrTrOrOrr)rrrrvr\rrr=) r^r_rurar`r zf_expected y_expectedy_iirzf_iiry_firzf_firs rctest_zi_some_singleton_dimsz-_TestLinearFilter.test_zi_some_singleton_dimss   rxx xBB G   rwwqw92 >   rzz)4b 9 WWYbhh / 1a7 q  1a7 q ZZ^   B '(()288)LbQ XXirxx8 "#use4 1a!8ZZ + '' B7  1aR0 v &&uj9 &&v{; 1Q4B3 v &&uj9 &&v{;rec |j||}|j||}|j||}|j||}ttt|||||yr)rrrr)r^rar`rurrr_s rcbase_bad_size_ziz"_TestLinearFilter.base_bad_size_zi"s^   q" %   q" %   q" %   B 'j'1aD"=rezcupy does not raisec |jd}|jdgdg|ddg||jddgdg|dddg||jddgdg|ddgg||jddgdg|dgd||jgddg|ddgg||jgddg|dgd||jdgddg|dddg||jdgddg|ddgg||jdgddg|dgd||jgdddg|ddg||jgdddg|ddgdgg||jgdddg|dgd||jgdddg|dgd||jddggd|ddg||jddggd|ddgdgg||jddggd|dgd||jddggd|dgd|tjdjd }|j |}|jdgdg|ddg||jddgdg|dgd||jddgdg|dgdgg||jddgdg|ddgdgd gg||jddgdg|dddgg||jddgdg|dgdg||jgddg|dgd ||jgddg|dgdgd gg||jgddg|dddgd d gddgg||jgddg|dddgd d gg||jgddg|dgdgdg||jdgddg|dgd||jdgddg|dgdgg||jdgddg|ddgdgd gg||jdgddg|dddgg||jdgddg|dgdg||jdggd|dgd ||jdggd|dgdgd gg||jdggd|dddgd d gddgg||jdggd|dddgd d gg||jdggd|dgdgdg||jgdddg|dgd ||jgdddg|dgdgd gg||jgdddg|dddgd d gddgg||jgdddg|dddgd d gg||jgdddg|dgdgdg||jdgdg|ddg||jddgdg|dgd||jddgdg|ddgdgd gd ggg||jddgdg|dgdg||jddgdg|ddgdgd gg||jddgdg|ddgdgd gd gdgg||jgddg|dgd||jgddg|dddgd d gddgddggg||jgddg|dgdgdg||jgddg|dddgd d gddgg||jgddg|dddgd d gddgddgddgg||jdgddg|dgd||jdgddg|ddgdgd gd ggg||jdgddg|dgdg||jdgddg|ddgdgd gg||jdgddg|ddgdgd gd gdgg||jdggd|dgd||jdggd|dddgd d gddgddggg||jdggd|dgdgdg||jdggd|dddgd d gddgg||jdggd|dddgd d gddgddgddgg||jgdddg|dgd||jgdddg|dddgd d gddgddggg||jgdddg|dgdgdg||jgdddg|dddgd d gddgg||jgdddg|dddgd d gddgddgddgg|y)NrQrSrrrrSrTrrrSrTrNrZrrT)rrSrTrNrOrPrgrNrOrP)rOrPrQr)rrSrTrNrOrPrQrrrr8)rr,rrr\)r^r_rrs rctest_bad_size_ziz"_TestLinearFilter.test_bad_size_zi)sQ YYq\ qcA3BR8 q!fqc2rAq62> q!fqc2rQC5"= q!fqc2r9bA i!b"seR@ i!b"iD qcAq62rAq62> qcAq62rQC5"= qcAq62r9bA i!QR!bA i!QR1#sRH i!QRBG i!QRrJ q!fiR!bA q!fiR1#sRH q!fiRBG q!fiRrJYYr] " "5 ) ZZ^ qcA3AsB7 q!fqc2q)R@ q!fqc2qI;-D q!fqc2qA3aS/2F q!fqc2qAq6(B? q!fqc2q<."E i!b!5GL i!b!y)6L5MrR i!b!q!fq!fq!f5MrR i!b!q!fq!f5ErJ i!b!lL5QSUV qcAq62q)R@ qcAq62qI;-D qcAq62qA3aS/2F qcAq62qAq6(B? qcAq62q<."E qc9b!5GL qc9b!y)6L5MrR qc9b!q!fq!fq!f5MrR qc9b!q!fq!f5ErJ qc9b!lL5QSUV i!QQ8JBO i!QQ)Y9O8PRTU i!QQ!Q!Q!Q8PRTU i!QQ!Q!Q8H"M i!QQ+\:B @ qcA3AsB7 q!fqc2q,C q!fqc2qQC!qcA33G2H"M q!fqc2q<."E q!fqc2qA3aS/2F q!fqc2qA3aS1#s2KRP i!b!5MrR i!b!!"AAAA?@" F i!b!lL5QSUV i!b!q!fq!fq!f5MrR i!b! !1v1v1v1v1vF L qcAq62q,C qcAq62qQC!qcA33G2H"M qcAq62q<."E qcAq62qA3aS/2F qcAq62qA3aS1#s2KRP qc9b!5MrR qc9b!!"AAAA?@" F qc9b!lL5QSUV qc9b!q!fq!fq!f5MrR qc9b!q!f !fq!fq!fq!f6>?A C i!QQ8PRTU i!QQ!"AAAA?@" F i!QQ+\:B @ i!QQ!Q!Q!Q8PRTU i!QQ !1v1v1v1v1vF Lrec|jd|}|jdg|}|jdg|}|jg|}t||||\}}|j|||jt |jt rt||jn |jk(sJt|dk(sJy)N)rPrSrr) rrrr=rrrrr@)r^r_rur`rarrvrs rc test_empty_ziz_TestLinearFilter.test_empty_zis MM$ #   sB '   sB '   B '1aB'2 &&q!,xx)$**c:$B 3!%- --r{arerIz jax does not support inplace opsr`rS)rSr*?rT)rTrSrN)idsc t|r,t|ttzrt j d|j d|}|jgd|}|j||}t|dz }t|dz }t|r||zn t||}t||||j ||\}} t|||j||j|} |j| | y)Nz0cupy does not supoprt scalar filter coefficientsrQ)r*rr rSr)r<rrmrr#rrrr@r1rr&ror=) r^r`r_rurarrKrRzi_1zi_2s rc test_lfilticz_TestLinearFilter.test_lfiltics 2;:au5 KKJ K MM!R    |R 0   q" % AJN AJNR[AEc!Qi1at}}Q';<Dq!RWWR["''!*5 &&tT2rec tttddggddgddgtttddgddgddgddgtttddgdgdggddgddgtttdgdggdgddgddgy)NrSrTr)rrr&r)s rctest_lfiltic_bad_coeffsz)_TestLinearFilter.test_lfiltic_bad_coeffssj'Aq621v1vFj'Aq6Aq6Aq6Aq6Jj'Aq6QC!:1v1vNj'QC!:sQFQFKrearray_api_strictz-int64 and float64 cannot be promoted togetherzjax dtype defaults differc|jdg|}|jdg|}t|||jddg}t|||jddg}t|||jddg}|j|||jt k(rinddi}|j||fi|y)NrSrrTFr)rr&r\rrr")r^r_r`rarr7r8check_dtype_args rctest_lfiltic_bad_ziz%_TestLinearFilter.test_lfiltic_bad_zis   sB '   sB ' Q2::r1g. /q!RZZa12q!RZZu 67 "d# $ f 4"=%:P"d6o6recZ|jdg|}|jgd|}|jddg|}|jdg|}|jdg|}|jddg|}t||||\}} |j|||j| |y) NrSrrTrr}r\rrrr= r^r_r`rarruyezfervrs rctest_short_x_FIRz"_TestLinearFilter.test_short_x_FIRs   sB '   z2 .   A +   tR (   b )  !S2.1aB'2 &&q"- &&r3/rec\|jddg|}|jgd|}|jddg|}|jdg|}|jdg|}|jddg|}t|||| \}} |j|||j| |y) NrSrrTrr}r\irArrBrCs rctest_short_x_IIRz"_TestLinearFilter.test_short_x_IIRs   1vr *   z2 .   A +   tR (   b )  #sR01aB'2 &&q"- &&r3/recZ|jd|}|jddg|}t||}|jddg|}t||}|jgd|}t|||}|j |||j |||j ||y)NrrSrr)r*rrrrr?rr=r r^r_rurab0r`a0ry_fs rctest_do_not_modify_a_b_IIRz,_TestLinearFilter.test_do_not_modify_a_b_IIRs MM$ #   2w + Q2    T{B / Q2   !5r:aA &&sC0 !R  !R recX|jd|}|jgd|}t||}|jdg|}t||}|jgd|}t|||}|j |||j |||j ||y)Nrrr)rT)rr*rSrTrNrrrJrKs rctest_do_not_modify_a_b_FIRz,_TestLinearFilter.test_do_not_modify_a_b_FIRs MM$ #   y" - Q2    sB ' Q2   !6;aA &&sC0 !R  !R rerrractjjd}|j|}|j t |jdg|jdg|t |||y)NrUr)rrrr\rr)r^r`rar_rs rctest_scalar_inputz#_TestLinearFilter.test_scalar_input s`yyr"zz$  BJJu%rzz3%'8$ ? Aq$  rectjgdt}tjgdt}tjd5t ||gddddy#1swYyxYw)Nrrrrr rh)rr\r"r#r$rrs rcr%z(_TestLinearFilter.test_dtype_deprecation sV JJ) 8 JJ2& A  # #*I J ( Aq, ' ( ( (s A**A3N))r(r)r*rrrrrr+rrrrrrrrrrr r"r*r,r0r2r#r-rrr9r;r?rFrHrOrQrrrSr.r%r/rercrr)sG) 0>>f%QR 1S 1f%QR 1S 133f%QR 1S 1f%QR 1S 1d+KL ?M ?d+KLAMA(d+KL ?M ?d+KLAMA*f%QRJSJ*f%QR/S/f%QR<S<:>f%:;gL<gLR  k*LM [[S1qc<QC"K!$&3&N3$L#Rk*EF 7G 7f%QR 0S 0f%QR 0S 0 ! !d# [[S3xrxx}"=> [[S3xrxx}"=> ??$ d# [[($(rerceZdZdZy)TestLinearFilterFloat32rNr(r)r*rr/rercrVrV  ErerVceZdZdZy)TestLinearFilterFloat64rNrWr/rercrZrZ rXrerZrqc0eZdZejdZy)TestLinearFilterFloatExtendedr@Nr(r)r*rrr/rercr\r\  BHHSMErer\ceZdZdZy)TestLinearFilterComplex64rNrWr/rercr`r`$ s Erer`ceZdZdZy)TestLinearFilterComplex128rNrWr/rercrbrb( s Ererbc0eZdZejdZy)TestLinearFilterComplexExtendedGNr]r/rercrdrd, r^rerdrc6eZdZejdZdZy)TestLinearFilterDecimalrc*tt|Sr)rr)r^rus rcrzTestLinearFilterDecimal.type7 ss1vreN)r(r)r*rrrr/rercrgrg2 s BHHSMErergc4eZdZejdZeZy)TestLinearFilterObjectrN)r(r)r*rrrrr/rercrjrj; s BHHSME Drerjcttdr'dtjvrtjdt t tdgdggdt t tdgdggdt t tdgdggdy)Nabiflagsrz'test is flaky when run with python3-dbgr)rNrorrorq)hasattrsysrlr#rrrrr)s rctest_lfilter_bad_objectrpB sc sJC3<<$7 =>)WsecU4DE)WsedV_E)Wtfse_Erec>tttddgddggdy)NrTrNrOrP)rSrTrNrOrP)rNotImplementedErrorrr)s rc!test_lfilter_notimplemented_inputrsN s%w1!ukJreceZdZdZdZdZdZedddZd Z d Z d Z d Z eddd Z edddZedddZy)_TestCorrelateRealcT|tk(rtjjStS)z/Use np.testing while object arrays are a thing.)rrrRr=)r^rWs rc_get_assertionz!_TestCorrelateReal._get_assertionV s =::77 7, ,rec|jddd|}|jddd|}|jgd|}|||fS)NrrNrOrrSrT)rrTrPrrN)rr\r^rWr_r`rars rc _setup_rank1z_TestCorrelateReal._setup_rank1] sL KK1arK * KK1arK *jjj3!Syrecd} tj|}t|dr+tdtj|j z}|S#t $rY|SwxYw)NrQ resolutionr)rrrnrmlog10r| Exception)r^res_dtrdt_infos rcequal_tolerancez"_TestCorrelateReal.equal_toleranced sb hhv&Gw -d288G,>,>#??@   sA A AAc|tjk(r|jtjS|j|Sr)rrxrr)r^rs rcequal_tolerance_fftz&_TestCorrelateReal.equal_tolerance_ffto s6 R]] "'' 3 3''/ /reTz order='F'r|c|tk(r(ttdgtdg}|dk(sJyt||}|j||\}}}t ||d}t ||d}t |||j |jt |||j|j|j|k(sJ|j|k(sJy)NrOrNrr rr) rrr _setup_rank3rr=rrr) r^rWr_rr`rary_ffty_directs rc test_methodz_TestCorrelateReal.test_methodw s =' wqzlCFX% %%RB))"b1IAq#a51E Ah7H %c&+.2.F.Fu{{.S V &c&..2.B.B8>>.R U;;"$ $$>>R' ''rect|r|dvrtjdt|tr t ||n|}|j |}|j||\}}}t||d}|||dd|j|k(sJt||d}|jtk7r|||j|ddn|||ddddd|j|k(sJy)Nr$torch does not support unsigned intsrrSrOr) r:r#rrrrrwrzrrr"ro)r^rWr__assert_almost_equalr`rarrvs rctest_rank1_validz#_TestCorrelateReal.test_rank1_valid s B *2s 3WR_#2226%%b"- 1c aG $QAa)ww"}} aG $ II  BGGC!H$5 6 C!HTrTN 3ww"}}rec*t|r|dvrtjdt|tr t ||n|}|j ||\}}}t||d}|j|}|||dd|j|k(sJy)Nrrrir r:r#rrrrrzrrwrr^rWr_r`rarrvrs rctest_rank1_samez"_TestCorrelateReal.test_rank1_same s B *2s 3WR_%%b"- 1c aF ##2226QCR)ww"}}rec$t|r|dvrtjdt|tr t ||n|}|j ||\}}}t||d}|j|}||||j|k(sJy)Nrrrrrs rctest_rank1_fullz"_TestCorrelateReal.test_rank1_full s B *2s 3WR_%%b"- 1c aF ##2226Q$ww"}}rec tjdddjddj|}tjdddjd dj|}tjgd gd gd gd gdgdggdgdgdgdgdgdggdgdgdgdgdgdggtj j|}|||fS)NrrrH)rTrOrPF)orderrYrFr)r.gg@g@g@@@g@g}@gd@)gG@g{@g@g@g@@g@gp@)`@g@g@g@@g@g@@gs@)g@p@g@g0@g@gp@g(@g`@gt@)g@i@g@(@g@g@gؘ@g@@gb@)g\@gu@g@g@g@g@gr@gC@)rgy@g,@@g@g$@g@@gPr@)rg@g@g@g@gԩ@g@g}@)gPt@g @gR@g@g(@gK@g @g@)g؁@g@gf@g@g(@g}@g(@g@)g {@rg4@rg@gܧ@g@l@)g n@g@g@g@g@g@g@rm)rgj@g@g@gД@gp@gz@g`@)gU@g@~@g(@rgP@g@g @gi@)gg@g@rgX@g@g@gЏ@g@k@)g@s@gp@gx@gh@g@g@gؐ@r)rg@rg @g@gȖ@g@gS@)g_@g v@g@g@g@gp@g@m@r.r)rrrrrrrys rcrz_TestCorrelateReal._setup_rank3 s KK2r " * *9C * @ G G   KK2r " * *9C * @ G G  hhHIKKJF HJKLLLI KGIKLIE GH(**)&('-fRj) ,!Syrec t|tr t||n|}|j||\}}}t ||d}|j |}|||ddddddf|j |k(sJt ||d}|j |}|||ddddddfdddddddddf|j |k(sJy)NrrSrTrOrNrPrrrrrrrwrrs rctest_rank3_validz#_TestCorrelateReal.test_rank3_valid s *2s 3WR_%%b"- 1c aG $#2226QAaC1acM 23ww"}} aG $#2226QAaC1acM 24R42tt3C DEww"}}rect|tr t||n|}|j||\}}}t ||d}|j |}|||ddddddf|j |k(sJy)NrirrrSrrrs rctest_rank3_samez"_TestCorrelateReal.test_rank3_same s *2s 3WR_%%b"- 1c aF ##2226QAbD!B$"$4 56ww"}}rect|tr t||n|}|j||\}}}t ||}|j |}||||j |k(sJyrrrs rctest_rank3_allz!_TestCorrelateReal.test_rank3_all sf *2s 3WR_%%b"- 1c aO#2226Q$ww"}}reN)r(r)r*rwrzrrr+rrrrrrrrr/rercruruT s- 0d;7(8((&  <d;7 8 d;78d;78rerurWrc eZdZy)TestCorrelateRealNr(r)r*r/rercrr s rerc eZdZy)TestCorrelateRealDecimalNrr/rercrr s rerceZdZeddZeddZeddZeddgedd d Zejjedd Z y ) TestCorrelateTrctjddjd}tjddjd}ttt g||fiddittt g||fiddiyr)rrrrrrrs rcrz!TestCorrelate.test_invalid_shapes ss IIaO # #F + IIb!  $ $V ,j)Jq!fJ8IJj)Jq!fJ8IJrec gd}gd}ttt||dttt||ddttt||dd ttt||d d ttt||d d yrrrrrs rcrz!TestCorrelate.test_invalid_params sd  j)Q?j)QuMj)QhOj)QwOj)QwOrec,tttdgddtttddgdtttdgddtttddgdtttdgdggtttdgdyrrrs rcrz"TestCorrelate.test_mismatched_dims# sp j)aS!HEj)QHEj)aS!EBj)QEBj)aSA3%8j)aS!4rerCrDrIz dtype differsrKc|jgd}|jddg}tt||d|jgd|jgd}|jgd}tt||d|jgdtt||d |jgd tt||d |jd gy) NrRrOrPrirj)rPrrYr)rrXrYr)rQrrXrYrZrrX)r\r7rrs rctest_numpy_fastpathz!TestCorrelate.test_numpy_fastpath- s JJy ! JJ1v  !QV4bjj6MN JJy ! JJy ! !QV4bjj6NO !QV4bjjAT6UV !QW5rzz2$7GHrectjgdt}tjgdt}tjd5t ||dddy#1swYyxYwr)rr\r"r#r$rrs rcr%z$TestCorrelate.test_dtype_deprecation: sS JJ) 8 JJ2& A  # #*I J  aO   r&N) r(r)r*r+rrrrr#r-r.r%r/rercrr sd# K$ Kd#P$Pd#5$5t9k/: I;: I [[d#$rerz accepts ints, return numpy arrayrkrrirbehindF input_sizer'r|rrr)marksi'ctjjd}|j|}t |dz }|r*tj |j||g}| }n||d}|}t |||} t|j|j|} tj| } t| | || j| jk(sJy)NrrUrj) rrrr"rm concatenaterrrargmaxr8r) rkrrr_rin1offsetin2r correlationlags lag_indexs rctest_correlation_lagsrD s ))   "C  j )C B F nnc11&93?@7&'lC40K CHHchhT :D +&IDOX. ::** ** *rectjtd5tddddddy#1swYyxYw)NzMode asdfgh is invalidr r'asdfghrj)r#r rrr)s rc"test_correlation_lags_invalid_moderd s2 z)A B2c1222s4=dt_namerrcteZdZdZdZdZdZdZdZdZ e dd d Z e d dZ y)TestCorrelateComplexct|r#|tjk(rtj}ddd|j |j }t d|zdz S)NrrQ)rIrXrTrN)r9rrycdoublerbitsrm)r^rWr_precs rcrzTestCorrelateComplex.decimalt sN B @ww"}}rec|j|d|\}}}t||}t||d}t|||j |||j |k(sJy)Nrirrzrrr=rrrs rcrz$TestCorrelateComplex.test_rank1_same s]%%gvr: 1c R ! aF #!!S$,,r22FGww"}}rec|j|d|\}}}t||}t||d}t|||j |||j |k(sJy)Nrrrrs rcrz$TestCorrelateComplex.test_rank1_full s]%%gvr: 1c R ! aF #!!S$,,r22FGww"}}rect||}|jgd|}|jgd|}t||}t||jgdddy)Nrrqrry?@y@@y@@y@@)r$@<@6@y0@y @rFr)rr\rr7)r^rr_rWrkrvs rctest_swap_fullz#TestCorrelateComplex.test_swap_full s[ R ! JJ/rJ : JJ7rJ B aO rzzNO5 rec|jgd}|jgd}t||d}t||jgdy)Nrrrirj)rrr)r\rr7)r^rr_rrrvs rctest_swap_samez#TestCorrelateComplex.test_swap_same sB JJ/ 0 JJ7 8 a (2::&ABCrerCnotimplementederrorrKctjjdddj|}|dtjjdddj|zz }tjjdddj|}|dtjjdddj|zz }t |j |j t |j |j zj|}|dt |j |j  t |j |j zzz }|j||j||j|}}}t||}t ||d}t|||j||dz |j|k(sJy) NrUrrQrrOrrSr) rrrrrrrr\rr=rrrs rc test_rank3zTestCorrelateComplex.test_rank3 sq IIOOB1 % , ,W 5 R"))//"a+227; ;; IIOOAq! $ + +G 4 R"))//!Q*11': ::(166166*+,2F7O  ri//)AFFAFF2KKLLJJqM2::a="**S/c1 R ! aF #!!S$,,r22F2JKww"}}reTrc tjtjjj |}|dtjtjjj |zz }tjtjjj |}|dtjtjjj |zz }t ||}t |j|jt |j|jzj |}|dtjt |j|j t |j|jzzz }|j||j|}}t ||d}t|||j||dz |j|k(sJtt dgdgtjt dddtt dgdgtjt dddtt dgd gtjt dd dy) NrrrSrrtF) check_shape@rO)rrrrrrrrrr\r=rrr8)r^rr_r`rarWrrvs rc test_rank0zTestCorrelateComplex.test_rank0 s HHRYY__& ' . .w 7 R"((299??,-44W= == HHRYY__& ' . .w 7 R"((299??,-44W= == R !(166166*+,2F2J  rBHHi77&qvvqvv6788 8zz!}bjjm1 aF #!!S$,,r22F2JKww"}} 1#t,bjj1b9I.J$) + 2$-rzz)B:K/L$) + 2$,bjj2q9I.J$) +reN) r(r)r*rrzrrrrrr+rrr/rercrrj s[!   D f%:;<"d#+$+rercTeZdZdZeddZeddZdZy)TestCorrelate2dctjd}tjgd}dD]}|j||j|}}tj|||}t t j||||j||dk(sttj|||}t t j||||j|yNrPrrrjr)rrrr\rr>r)r^r_r`rarka_xpb_xpnp_corr_results rc test_consistency_correlate_funcsz0TestCorrelate2d.test_consistency_correlate_funcs s IIaL HH] #- @DA 1 $D\\!QT:N  0 0t$ G " > : <w!#a!>#F$4$4T4d$K$&JJ~$>@ @reTrc tjd}tjgd}dD]}ttjt j |g|g|t j||||dk(sVttjt j |g|g|t j|||yr)rrrr>rrrr)r^r_r`rarks rc"test_consistency_correlate_funcs_2z2TestCorrelate2d.test_consistency_correlate_funcs_2 s IIaL HH] #- GD  6+=+=qcA3CG,I!J & 0 0AD A C w#BJJv/A/A1#sGK0M%N$*$4$4Q$EG Grec0tjddjd}tjddjd}ttt j g||fiddittt j g||fiddiyr)rrrrrrrrs rcrz#TestCorrelate2d.test_invalid_shapes s IIaO # #F + IIb!  $ $V ,j&"4"4S1vS&'ARSj&"4"4S1vS&'ARSrecttj|jdgg|jdgg|jdgddttj|jdgg|jdgg|jdgddttj|jdgg|jdgg|jd gddy) NrSrtF)rrry@rOy(@)r8rrr\rs rctest_complex_inputz"TestCorrelate2d.test_complex_input s**2::se+PQ C5)u% Q**2::tf+=rzzB4&?QR D6*5 R**2::tf+=rzzA3%?PQ C5)u% QreN)r(r)r*rr+rrrr/rercrr sD@ d# G$ G d# T$ TQrer)rEzlfilter_zi is incompatibleceZdZedddZdZdZejjddd gd Z y ) TestLFilterZITzlist inputs are numpy specificr|cb|jddg}tgdgd}t||y)Nrrprr.rorrpr*r\rr=)r^r_ zi_expectedrs rctest_array_likezTestLFilterZI.test_array_like" s+jj#t- )9 :!"k2rec|jgd}|jgd}|jddg}t||}t||y)Nrrrrpr)r^r_r`rarrs rcrdzTestLFilterZI.test_basic( sG JJ' ( JJ 'jj#t- 1 !"k2rec|jgd}|jgd}t||}td|zd|z}t||dy)N)rorrP)rrSrrTr-r )r\rr7)r^r_rar`rzi2s rctest_scale_invariancez#TestLFilterZI.test_scale_invariance/ sL JJ{ # JJ{ #A1ac"Su-rerrrct||}|jd|}|jdg|}tj||j |k(sJy)NrrrS)rrr\rrr)r^rr_rar`s rcrzTestLFilterZI.test_types8 sUE" HHaH & JJs%J (  A&,,555reN) r(r)r*r+rrdrr#r-rrr/rercrr sSd+KL3M3 3. [[Wy)&<=6>6rerceZdZdZ ddZedddZedddZeddd Zed d d Z ed d dZ ed d dZ y) TestFiltFilttfNc |jdk(r?t|\} } |j| |j| } } t| | ||||||S|jdk(r(t |} |j| } t | ||||Sy)Nrsos) filtfilt_kindr!r\rr"r)) r^zpkrurrpadlenrirlenr_rar`rs rcrzTestFiltFilt.filtfiltD s    %3g6‹{=rr) r;rr#rr+rrr<r7r)r^r_rrrs rcrdzTestFiltFilt.test_basicO su ":$,,5 KK7 8Y *mmC22m6bkdxRYYrY<4Hrec*t|r%|jdk(rtjdd}|j dd|dz}|j dt jz|z}|j d t jz|z}||z}td d d }t j|dj}d} tt jt j| t j|z } |j||| |} t j| |z j} | dksJ|jt j |||zg} |j|| | d|}|j"| j"k(sJt j||z j} | dksJ|j|| j$| d|}t'||j$y)Nrr rKrrrSrUir?rrr)rr_rrrr_)r;rr#rrrrr0r r3r1rmceillogrr\vstackrrr8)r^r_r6r xlowxhighrurrepsrrverrx2dy2dy2dts rc test_sinezTestFiltFilt.test_sineY s ":$,,5 KK7 8 KK3q )vvebeema'(w*+ 5LQe, FF3q6N    s bffQi/0 1 MM#qrM 2ffQX""$TzzjjD$,#789mmCQQ2m>yyCII%%%ffS4Z $$&Tzz}}S#%%b}ATVV$rec t|r%|jdk(rtjdt j dj ddd}|j|}tdd d }|j||d d | }|j||jt j|d dd d| }t||jt j|d d|j||jt j|d dd d| }t||jt j|d dy)Nrr rKg@rUrrZrNr rrrr rSrT) r;rr#rrrrr\r rrr8)r^r_rurrQrRrs rc test_axiszTestFiltFilt.test_axis s" ":$,,5 KK7 8 II( ) 1 1"b" = JJqMQe, ]]3!!] ; ]] BKK1a01!!  BJJr{{2q!'<=> ]] BKK1a01!!  BJJr{{2q!'<=>reTz-python scalars in array_namespace are np-onlyr|c|jdk7rytj|jddgd|j d|j }t ||j d|j ddy)Nrr*rSrUrrr)rrrr\rrr7)r^r_rs rc test_acoeffzTestFiltFilt.test_acoeff si    % oo JJBx !RYYrY%D  RYYrY<5uUrez_filtfilt_gust is np-onlyc |jdk7rtjd|jddg}|jdg}|jddg}t |||\}}}t |dd|dzd |d zzt |dd |dzd|d zzt ||j|dd |dzzd |dzzd |d zzd |dz|dzd |dzzd |d zzgy) Nr$gust only implemented for TF systemsrror*rrr+r rS?r )rr#rr\r2r7)r^r_rurar`rvz1z2s rctest_gust_simplezTestFiltFilt.test_gust_simple s%    % KK> ? JJSz " JJu  JJT{ #"1a+ 2r1s1Q4x#ad(231s1Q4x#ad(23 BqEDAJ$6ad$BU1Q4Z$O$(AJA$6qt$Cd1Q4i$O$QR rec|jdk7rtjd|jd}d}d}t |||d}||z dz|z}t ||y) NrrrZrqrogustrrT)rr#rrrr7)r^r_rurar`rvrs rctest_gust_scalarszTestFiltFilt.test_gust_scalars sc    % KK> ? IIbM   Q1V ,aC!8a<8$re)roddNrNN) r(r)r*rrr+rdrrrr#r&r/rercrr@ sM>B.2 >g&89I:Ig&89#%:#%Jg&89?:?$dLNVNVd+FG H dLN %N %rerzLsosfiltfilt directly sets shape attributes on arrays which dask doesn't likecJeZdZdZeddedddZy) TestSOSFiltFiltrrIr rKrrctjjdjd}|j |}t ddD]u}t j|dd}t|\}}t|}t|j|||f\}}}t|||}t||} t|| dd | wy ) z1Test equivalence between sosfiltfilt and filtfiltrrrSrQffffff?rrr-zorder=)rerr_msgN)rrrrr\rrr r!r"rvrr)r7) r^r_rurrrar`rrvy_soss rctest_equivalencez TestSOSFiltFilt.test_equivalence s II ! !! $ * *4 0 JJqM1a[ LE--tE:C3.filtfilt_gust_opt_func s AA ! #"1g!"gaA#&q)q!S2Y3/24R48aAddG,Q/"5q!SS)!,t a'( rerSNr r-rTF)rxtolftolmaxfunmaxiter full_outputdisprz3minimization failed in filtfilt_gust_opt: warnflag=rr) r1rUrrrrrr.r)rar`rur:r3rr2ryoptfoptniterfuncallswarnflagr4r5r7rvs rcfiltfilt_gust_optrF s  CFCFaA Aq B ..!BQ%**,r/1aRS6;;=+;< =C (#Q1I5"0F,2(Cuh!|A( L   bq'C ab'C !Q$B$C ( +DbD 1C1cc"1%A c3;recntjjdtjj|}t ||||d|}t |||||\}}} tj ||d} | jdd} tj| } tt|t|dz } tj| | fz}tj| | fz}t| Dcgc] }t|c}D]}t||| |\| |<||<||<!tj | d|} tj |d|}tj |d|}t|| dd t|| dd t||dd t| |dd ycc}w) Nrr%)rrr)rrrrSrrr)rrr rrr2rr empty_liker1rUrrrrFr7)rar`rrrrurvygzg1zg2xx out_shaperr3zo1zo2rindxs rccheck_filtfilt_gustrQ sIINN3 A AqtF%@A"!QEBLBS Qb !B" I r B CFCFaA ((9t# $C ((9t# $CI6q%(67K):1aD)J&4#d)SYK RT "B ++c2t $C ++c2t $CAr40BD1C4d3C4d37s8F2rUcdD]R}dD]}d\}}}tjj|f|z}tjj|f|z}t|||}||k(sJt|||d\} } | dvsJt | t sJd| j vrd | j vrJd }d D]M} tt| stj|| }|j}t|||d k(rMJtjd gtj }|j}t|||d k(rSJy)Nr)rSrT)rrQrrjT)rkmeasure>r rr rrU complex256 complex192rl@) rrrrrdictkeysrnrvrrr) r_rkrrr true_methodrur?r method_trytimesnot_fft_conv_supps rctest_choose_conv_methodr]& sb*? FD . Aq+ 1$+/A 1$+/A'148F[( (( 21adD Q J!22 22eT* **EJJL(X-E EE F != G r,-GGA%67FFH)!QT:hFFF  G HHeWBHH - FFH!!QT2h>>>/?rectjgdt}tjgdt}tjd5t ||dddy#1swYyxYwr)rr\r"r#r$r)r_r`ras rc"test_choose_conv_dtype_deprecationr_D sT %V4A .f=A   &E F!1a !!!r&c8dD]}tdtdg}tdtdg}t|||dk(sJd}d D]M}tt|stj|| }|j }t|||dk(rMJy) NrrNrTrSrOrjrrUrTr)rrrnrrvr)r_rkrur?rr\s rctest_choose_conv_method_2raN s* G QZ $ QZ $!!QT2h>>> != G r,-GGA%67FFH)!QT:hFFF  G Grec <tjddddd\}}}d}tjtj|}t tj tj|tj|z }tjjdt|||\}}d|fD]?} d |z} t||| fd | tdD]} gd } | | | <t||| | | Ad |zd z } t||| fd |y)NrN{Gz?xgffffff?rrr rrPrrrTr) relliprr1r3rmrrrr r!rQr)r_rwprrrapprox_impulse_lenrar`r signal_lenrrlengths rctest_filtfilt_gustrj^ sll1dC>GAq! C rvvayARWWRVVC[266!9%<=>IINN3 !Q?DAq*+ :++  Aq:-E:!H :DE$E$K 1eT5 9 : :! !B &F1vi,>?rec`eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZy) TestDecimatectjd}tttj |ddtttj |ddy)NrZr*rS)qrrT)rrrrrdecimater^r_rus rc test_bad_argszTestDecimate.test_bad_args s7 IIbMi!sa@i!qC@rectjd}tj|ddddj }t ||dddj ty)NrZrTrSiirFrftype zero_phaserrrroroundr8rrr^r_rurvs rctest_basic_IIRzTestDecimate.test_basic_IIR I IIbM OOAqAUu E K K M1SqS6==/0rectjd}tj|ddddj }t ||dddj ty)NrZrTrSfirFrtrwrys rctest_basic_FIRzTestDecimate.test_basic_FIR r{rectjd}tj|ddd}|jdk(sJtj|ddd}|jdk(sJy) N)rrrTrF)rrv)rrrS)rr)rrrror)r^r_rwd0d1s rc test_shapezTestDecimate.test_shape s\ HHX  __Qe <xx8### __Qe <xx8###rect5}|jtd|jdddddy#1swYyxYw)NBadly conditioned filterr}Frrvr rSr,_test_phaseshiftr^r_rUs rctest_phaseshift_FIRz TestDecimate.test_phaseshift_FIR sE   BC JJ(B C  ! !5 ! A B B B *>Act5}|jtd|jdddddy#1swYyxYw)Nrr}Trrrs rctest_zero_phase_FIRz TestDecimate.test_zero_phase_FIR sE   AC JJ(B C  ! !4 ! @ A A Arc*|jddy)NrsFrrrs rctest_phaseshift_IIRz TestDecimate.test_phaseshift_IIR s Uu=rec*|jddy)NrsTrrrs rctest_zero_phase_IIRz TestDecimate.test_zero_phase_IIR s Ut~~##AFFC01 # 2GA99WU]1_-g>DVVFRUUNU1bjj=-AADHI~~++DIIs; 7266'?*,,u-1F3=?Iuzz|i7bAI  * *IS[(FXXgllnY67?F FBMM&$9!%D 2E# 2recd}d}tj||z }tjd|z tjdtjz|dz z|zz}t tj j|ddtj|d d }tj j|d ksJy) NgY@rrorTg>@rrr rr})rurc) rrsqrtrr0r7linalgnormrro)r^r_sfreqrr rux_outs rc test_auto_nzTestDecimate.test_auto_n s  IIaL5  GGBFObffQY%#+%>%BC C q)2D92U3yy~~e$t+++rectjtjdtjd}t tj |rJy)NrrrU)rrorrvrrisnanrps rctest_long_float32zTestDecimate.test_long_float32 s< OOBGGF"**=r Brxx{####rectjtjdtjd}|j j tjk(sJy)Nr'rrU)rrorrvrrrrrps rctest_float16_upcastz TestDecimate.test_float16_upcast s; OOBGGCrzz:B ?ww||rzz)))recd}d}d}tjddtjz|zdz d|\}}}|j t tj dtjz|z|z z}|j t tj dtjz|z|z z}tj|||}tjd|z } tj dtjz|z| zd tj d tjz|z| zzz} tj| d|d } tjgtj|||| ddd} t| | tj| d|d } tjgtj|||| ddd}t| |ddy)NrrP@@rTr)rfsrtrr*rFrTr vIh%<=r)rr rr0rrnrrrrorr!r8rr7)r^r_fcentrefwidthrrwrfrrr rynzpynzprefyzpyzprefs rctest_complex_iir_dltiz"TestDecimate.test_complex_iir_dlti s --1RUU76>!#3EbI1a HHW rBEEzG';B'> ? ? HHW rBEEzG';B'> ? ?Q1% IIcNR VVBJ(1, -RVVC"%%K'1A5667q!6eD..$&--1a"8$!"$$'aC) g&ooa&TB$&--1a"8$!"$$'aC) V%er'Tr) rr%rrootsrr0polyrrroupfirdnr8r)r^r_rrrnumtapsbbasezbasezrotbzrr rrrrrs rctest_complex_fir_dltiz"TestDecimate.test_complex_fir_dlti sS  gvaxB7rvvb255j722566 1X %R# IIcNR VVBJ(1, -RVVC"%%K'1A5667q!6eD..Q115ds;g&ooa&TB%%aAb9V$reN)r(r)r*rqrzr~rrrrrrrrrrrr/rercrlrl sMA 1 1 $B A >=/2b ,$ * =@"%rerlz)jax arrays do not support item assignmentcfeZdZdZdZdZejjdddgdZ y) TestHilbertc|jdg}ttt||j d}ttt|dy)Nrrrr)r\rrrrrps rcrqzTestHilbert.test_bad_args9 s9 JJ | $j'1- IIcNj'12rec Jd}|j}|jdd|z|dz |j}|j|}|j |}|jd|z}|j d|z}|j ||||g} t | } |j| } |j|j| |j| } |j| } t| | |t| |j| j|t| dddf|j| dz |dz |dz |j|t| dddf|jd||dz |j|t| dddf|j| dz |dz |dz |j|t| dddf|jd||dz |j|t|j| dddf||y) NrrrTrrrSrrN)r0rrrrrrr3atan2rrr>rvr)r^r_rr0r rMa1a2a3r`r?h_absh_angleh_reals rctest_hilbert_theoreticalz$TestHilbert.test_hilbert_theoretical? s UU IIaRcI < VVAY VVAY VVAE] VVAE] HHb"b"% & AJq ((2771:rwwqz2 FAw/E277177#3W= GAttG,IIrcAgrAvrCxrzzIR# %  AttG bii2rCxrzziJG U GAttG,IIrcAgrAvrCxrzzIR# %  AttG bii2rCxrzziJG U BGGAadG,b':rec|j|jd|jd}t|d}t t|j d|j t t|dddf|dddfdt|dd }|jd k(sJt|j dd jd k(sJtjgd }|j|}t |dddf|dd y)Nr|r)rNrQrrrrr )rr)rNr )r rN)yBm}ąy?ay?0fy@Wa94y@"nWy@hIX@yrrrr\)r^r_r`aaaana0hilbs rctest_hilbert_axisNzTestHilbert.test_hilbert_axisNi s JJryy2::y6 ? QR !,bdd3GAadG,bAh;a2B'yyG###qssbq)//7:::FG(F#C1Ivr>Jrerrrct||}|jd|}|jt|j|k(sJy)Nrr)rrrrrrs rctest_hilbert_typeszTestHilbert.test_hilbert_types sBE"88AU8+wwwx()//5888reN) r(r)r*rqrrr#r-rrr/rercrr5 s>3 (;T$KL [[Wy)&<=9>9rerczeZdZedddZdZejjdddgd Z y ) TestHilbert2Tlist inputs are numpy-specificr|c&tgdgdgy)NrRr)rrs rcrzTestHilbert2.test_array_like s)Y'(rec|jdgg}ttt||j |j dd}ttt||j |j dd}ttt|dttt|dttt|d y) NrrFrrrsrr)rTr)rT)r\rrrrrrps rcrqzTestHilbert2.test_bad_args s JJ ~ &j(A. JJryy}i 0j(A. JJryy}f -j(A3j(A8j(A6rerrrct||}|jd|}|jtj|j |k(sJy)N)rTrXr)rrrrrrrs rctest_hilbert2_typesz TestHilbert2.test_hilbert2_types sFE"88G581wwvx01775@@@reN) r(r)r*r+rrqr#r-rrr/rercrr sPd+KL)M) 7 [[Wy)&<=A>ArerceZdZdZedZdZedddZedde jjdgd d gd gd fgd dgd gdfgddgdgdfgddgdgdfgddgd gdfgddgdgdfgddgdgdfgdZ edde jjdgddgdgdfgd d!gdgd"fgd#d!gd$gd%fgd&Z eddd'Zeddd(Zedde jjd)gd*gd+gd,Zd-Zy.)/ TestEnvelopez4Unit tests for function `._signaltools.envelope()`. clt||jk(rdddnddd} t||fi|d|iy)Nr-rlrr,)rArr7)rrrTr_a_r_tols rcrzTestEnvelope.assert_close sF'r*bjj8"51!%t4  H@7@C@rectjtd5tt j dddddtjtd5t|j dd dddd D]e}d j tt|}tjtd |d 5t|j d|dddgtjtd5t|j ddddddD]B}tjtd5t|j d|dddDtjtd5t|j dddddy#1swY|xYw#1swYIxYw#1swYTxYw#1swYxYw#1swYxYw#1swYyxYw)z[For `envelope()` Raise all exceptions that are used to verify function parameters. z'Invalid parameter axis=2 for z.shape=.*r rNrTrNz&z.shape\[axis\] not > 0 for z.shape=.*)rNrrS)r.)rro)Nroz, zbp_in=\(z\) isn't a 2-tuple of.*rO)bp_inz)n_out=10.0 is not a positive integer or.*r()rL))rrNr)rrUz&`-n//2 <= bp_in\[0\] < bp_in\[1\] <=.*zresidual='undefined' not in .* undefinedresidual) r#r rrrrvjoinrvr)r^r_rtss rc test_envelope_invalid_parametersz-TestEnvelope.test_envelope_invalid_parameters s]]:!KM ) RWWQZa ( )]]:!JL . RWWV_1 - .6 2E3sE?+Bz(04K%LN 251 2 2 2 ]]:!LN , RWWQZs + ,0 2Ez%NP 251 2 2 2]]:-M N 7 RWWQZ+ 6 7 7) ) ) . .  2 2 , ,  2 2 7 7sG!F7 GG GG*G67GGG G'*G3 6G?rIr rKc dt|}||jk(r |jn |j}|j gd|}|j gd|}t j |}|jd}|jt|ddd\}} |jt j||j gd |d | |jt j| |j gd |d | |jt|ddd\} } |j| dz|d| |j| | d| |jt|dddd|z\} } |j| ddd|d| |j| ddd| d| |jt|ddd\}}|j||d| |jt j||j gd|d| t|ddd}|j||d| |j |d}|ddxxxdzccct j||}|j|j||d| |jt|ddd\}}|j||j||d | |jt j||j ||d!| y)"zEEnsure that the various parametrizations produce compatible results. )rrrTrTrNrr)rrrrrQrrrrrrallTrsquaredrOrTrrrEnvelope calculation errorrTr_)rOrrrNrResidual calculation errorFrTz3Unsquared versus Squared envelope calculation errorz3Unsquared versus Squared residual calculation errorrN)rrrLNz(3x up-sampled envelope calculation errorz(3x up-sampled residual calculation errorlowpassz/`residual='lowpass'` envelope calculation error)rOrrrrz/`residual='lowpass'` residual calculation errorz*`residual=None` envelope calculation errorrrS)rzReference analytic signal errorz"Complex envelope calculation errorz"Complex residual calculation error)rArrrr\rirfftrunstackrrrfftifftrrr )r^r_rrZZr_arwrze2_0zr_0ze_1zr_1ze2_2zr_2ze2_3zr_3ze2_4Z_az_aze2_azr_as rctest_envelope_verify_parametersz,TestEnvelope.test_envelope_verify_parameters s6 ##rzz1r||r}} JJ(J 5zz4DzA LLO GGAJjj!VeT!RS t &++e,**_D*A:r  C &++d+**_D*A:r  CZZFUE RS d $'5S  ! $S  !jj QAaC H t %!*eHR  Q $ss)THR  Qjj!ViQU!VW t %OTV  X &++d+**_D*AOTV  XFT4@ %Jr  Sjjj& AB1 kk## "''#,?B  Hjj#vt!TU t %5$!7Br  K &**T*BJJt4J,HBr  Krez@ Z, bp_in, Ze2_desired, Zr_desired)rSrrTrTr)rSNrrSrrrr)rOrrTrr)rNr)rOrrrTrNN)rrrTrTrr)rTrrrr)rrrrTr)rOrrTrTr)rN)rOrrNrOr)NrS)rrrNrOrrc|j||j}|j||j}|j||j}tj|}|j t ||dd\}}|j t ||dd\} } d||| | fD\} } } }|j||j }|j||j }|j| |d||j| |d ||d d ||d d |j| |d ||j||d|y )aTest envelope calculation with real-valued test signals. The comparisons are performed in the Fourier space, since it makes evaluating the bandpass filter behavior straightforward. Note that also the squared envelope can be easily calculated by hand, if one recalls that coefficients of a complex-valued Fourier series representing the signal can be directly determined by an FFT and that the absolute square of a Fourier series is again a Fourier series. rrTrrc3FK|]}tj|ywrrrr^z_s rcr`z:TestEnvelope.test_envelope_real_signals..2s!Ub&++b/!U!z+Envelope calculation error (residual='all')rz+Residual calculation error (residual='all')rSNrz/Envelope calculation error (residual='lowpass')z/Residual calculation error (residual='lowpass'))r\rrrrrrr)r^rr Ze2_desired Zr_desiredr_rwze2zrze2_lpzr_lpZe2ZrZe2_lpZr_lps rctest_envelope_real_signalsz'TestEnvelope.test_envelope_real_signalssj( JJq J +jjBJJj? ZZ "**Z= LLO**XaMNR 8AuyRV#WX !US"fe.Us!Gr6??6::b>2Gs24rrrN) r\rrrr ifftshiftrrr) r^rrrrr_rwrrrrs rctest_envelope_complex_signalsz*TestEnvelope.test_envelope_complex_signalsBs JJq J +jjBMMjB ZZ "--Z@ KK((+ ,**XaMNRGc2YGR #{:r  C "j:r  Crect|}||jk(r |jn |j}t j |j gdgdg|}|j gdgdg|}|j gdgdg|}|jt|dd \}}|jt|jdd \} } d || j|| jfD\} } } }|j| |d ||j| |d||j| |d||j||d|y)z.Test for multi-channel envelope calculations. )rrrTrTr)rrrOrOrrr)rrrrrr )rrrrrTrS)rrrc3FK|]}tj|ywrrrs rcr`zCTestEnvelope.test_envelope_verify_axis_parameter..isOFKKOOr2d envelope calculation errorr2d residual calculation error"Transposed 2d envelope calc. error"Transposed 2d residual calc. errorN) rArrrrrr\rrrr)r^r_rrrwrrrrye2TyrTrYe2rYrs rc#test_envelope_verify_axis_parameterz0TestEnvelope.test_envelope_verify_axis_parameter\sK ##rzz1r||r}} LL%6$HPTU Vjj/3C!D'+!- ZZ/ B$ZO **XaA>?RJJxTBC cOsDFFB6NOS"b #{0OTVW "j/NSUV  "F2     D  rect|}||jk(r |jn |j}|j gdgdg|}t j t j|d}|j gdgdg|}|j gdgdg|}td d d }|jt|fd di|\} } |jt|jfd di|\} } d| | j| | jfD\} }}}|j| |d||j||d||j||d||j||d|y)zBTest for multi-channel envelope calculations with complex values. )rrPrrPrT)rSrUrrUrTrrSrr)r rrHrr r rrT)rrrrrc3pK|].}tjtj|d0yw)rSrNr#rs rcr`zKTestEnvelope.test_envelope_verify_axis_parameter_complex..s0@ "#OOFJJrNCC@s46r)rr*r+r,N) rArrrr\rrr%rWrrrr)r^r_rrinprwZe2_desZr_deskwrrr-r.rr/rr0s rc+test_envelope_verify_axis_parameter_complexz8TestEnvelope.test_envelope_verify_axis_parameter_complextsv ##rzz1r||r}}jj+->?tjL KK((15 6**.0BDD*Q_o>dK % >**Xa6a6267RJJx:!:r:; c@'*DFFB&>@S"b #w,KPRS "f*IbQ  C   "f+OTVWreX)rOrrrSrT)rOrrrTrSrTc|j||j}tj|}|j t |}t |dd}|j||d|y)z0Compare output of `envelope()` and `hilbert()`. rr Nrz!Hilbert-Envelope comparison errorr)r\rrrr3rrr)r^r9r_rue_hile_envs rctest_compare_envelope_hilbertz*TestEnvelope.test_compare_envelope_hilberts` JJq J + LLOwqz"L48 %,OTVWrectjgd}tj|d}t |dd\}}t |dzdd\}}t |t jddt ||dt |t jd|j dt ||j|jdy ) alTest behavior when input is a cosine at the Nyquist frequency. Resampling even length signals, requires accounting for unpaired bins at the Nyquist frequency (consults the source code of `resample`). Since `envelope` excludes the Nyquist frequency from the envelope calculation, only the residues need to be investigated. )rrrrQ)rr)rLrrr-rrN) rrrrrr7rrrr)r^x4x6y6y6_resz6z6_ress rc test_nyquistzTestEnvelope.test_nyquists\\) $ __RQ 'bE: Fb2gQ? FBHHQKe4/BHHQbhh7eD "(( 3%@reN)r(r)r*__doc__ staticmethodrrr+r r#r-rrr&r1r8r=rEr/rercrr s>AA76k*AB8KC8Ktk*AB [[J i/ J i/ J </ J / J / J i/ J i/ J  LMXMCXBk*AB [[Q <,< Q ,< Q )<>P Q  C  CC&k*AB C .k*ABXCX,k*AB [[S?4F"GHXICXArercxeZdZeddZdZdZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZy)TestPartialFractionExpansionc<tj|}tj|}tjt|dddf|z t|dddf|z }t |\}}t |||||t |||||y)Nr)rr\hypotr3rr>)rrfr_truep_truerdistancerowscolss rcassert_rp_almost_equalz3TestPartialFractionExpansion.assert_rp_almost_equalsF#F#88C!T' V 34!T' V 346+84 dAdGVD\7CAdGVD\7Crectgdgd\}}t|dk(sJt|dtjgdt|dtjgdt|dtjgd t|tjgd tgdgdd \}}t|d k(sJt|dtjgdt|dtjgdt|dtjgdt|dtjgdt|dtjgdt|dtjgd t|tjgd y)NrRrrNr)rTrTrNrS)rSrSrSrNrT)rSrSrSrTrT)rSrSrSrTrTrNT)include_powersrQ)rSrSrTrTrN)rSrTrTrN)rSrSrSrTrNrOrP)r3rUr>rr)r^r_factorsrs rctest_compute_factorsz1TestPartialFractionExpansion.test_compute_factorssB(I> 7|q   GAJ (:;GAJ (=>GAJ(@AD"''*<"=>(I8<> 7|q   GAJ(@AGAJ (=>GAJ (:;GAJ(@AGAJ (=>GAJ(@AD"''*<"=>rec`tgddd\}}t|gdt|gdy)N)rgjt?g?5^I ?rog/$@rqrrdrmr)r4r7r^r_unique multiplicitys rctest_group_polesz-TestPartialFractionExpansion.test_group_poless,+ 0#u > 0 i0recdtgdgd\}}}t|gddt|gddt|dgdtdd ggd \}}}t|d d gt|d dg|jd k(sJtddggd\}}}t|ddgt|ddg|jd k(sJtddggd\}}}|j||gdgd|jd k(sJtddggd\}}}|j||gdgd|jd k(sJtgdgd\}}}t|gdt|gdt|ddgtdggd\}}}t|ddgt|dd g|jd k(sJtgd!gd"\}}}|j||gd#gd$|jd k(sJtgd%gd&\}}}|j||gd'gd(|jd k(sJtddggd)\}}}t|d d*gt|ddg|jd k(sJtgd+gd)\}}}t|dd,gt|ddgt|dgtgd-gd)\}}}t|d.d/gt|ddgt|d0d1gtgd+gd2\}}}|j||gd3gd4|jd k(sJy)5NrPrNrrrrrrN)gZd;O?g9#Jg&䃞ͪrOr)g-1ڿgeagvq -?grrrSrQrirrrS)rSrrrNrrT)rTg333333 gGz?gClٿ)y 2@*y 2@*@g B@)y?ɿy??gffffff?)rSrPrrO)rrSrN)rrr)rNgg)\(?g^I +g rh?)rSgffffffgQg~jt?)r rOrS)r g333333ӿr)rSrTr r пr )rSrr)rSrrrr)rSy?yr)rrrS)rNrrQrSrNrNrSrRrrr)rSr rTrP)rTrNrr)rrTrNrrErrY)rSr rOr)rOy @y )rS?rq)r/r>rrQr^r_rrfrs rctest_residue_generalz1TestPartialFractionExpansion.test_residue_generals-71aA91EA91EAy!42q'9-1aA3x(ABx(vv{{1a&+.1aA1v&AAw'vv{{1a&"9:1a ## q? ) +vv{{1a&,/1a ##Aq*lCvv{{8131aAz*A/0A1v&1#z*1aAe}-A2w'vv{{*&671a ##Aq$8:J Lvv{{)\21a ##Aq)\Bvv{{1b':.1aAAw'A1v&vv{{*j11aABx(A1v&As#-41aARy)A1v&A2w'*n51a ##Aq*C$7 9vv{{rec|tgdgd\}}}tgdgd\}}}tgdgd\}} } tgdgd\} } } t||t||t|| t||t|| t|| t||t|| t|| y)Nr\r])rrPrNrr)rrrrrN)rrrPrNrr)rrrrrrrN)r/r>r^r_r0p0k0r1p1k1r2p2k2r3p3k3s rctest_residue_leading_zerosz7TestPartialFractionExpansion.test_residue_leading_zeross]M: B-}= B],<= B02HI BB#B#B#B#B#B#B#B#B#rectddggd\}}}t|ddgt|ddg|jdk(sJtdd\}}}|jdk(sJ|jdk(sJ|jdk(sJtjt d5tdddddy#1swYyxYw)Nrr^rrrSDenominator `a` is zero.r )r/r>rr#r rres rctest_resiude_degeneratez4TestPartialFractionExpansion.test_resiude_degenerate$s1a&),1aA1v&ABx(vv{{!Q-1avv{{vv{{vv{{ ]]:-G H  AqM   s B66B?crtgdgd\}}}|j||gdgdt|dgtgdgd\}}}|j||dd gd d gd t|dgd tddggd\}}}t|ddgt|ddg|jdk(sJtgdgd\}}}|j||gdgd|jdk(sJtgdgd\}}}t|ddgt|ddgt|ddgtdggd\}}}|j||gd gd!|jdk(sJtddgt j dd"gdd#g\}}}t|d$d%gt|d&dg|jdk(sJtgd'ddg\}}}t|dgt|dgt|ddgtddd(g\}}}t|dgt|d)g|jdk(sJtdgd*\}}}t|ddgt|ddg|jdk(sJtdgd+\}}}t|ddgt|d#dg|jdk(sJtgd,gd'\}}}t|d-d.gt|ddgt|dgtd/dggd'\}}}t|d0d1gt|ddg|jdk(sJtgdgd'\}}}t|d2d3gt|ddgt|d4dgtgd5gd6\}}}|j||gd7gd8d |jdk(sJy)9N)rSrQrQrT)rSyrr`)y@y@@y()rrSrSrt)rSrTrS)rSrg'†W?y c -y c -@y?*D?y?*DԿrOrgŏ1w@rSr)rSrrQrTrNrrra)rOrrNrb)rSrrrO)rTrrr*gr3r|)r|rNrr)g ףp= ?gQ?皙?)r*UUUUUUտr{rr g gUUUUUU@r_rSrrSr`r)rSrr )rSgr )rSrQrTrr8rQrrirrUr)rSrrrrr)yoT?c=yX?yoT?c=yXȿrzyjM?%uyjM?%u?)ySsA?ySsAry-?8gDio?y-?8gDio)r0rQr>rrpolymulres rctest_residuez_generalz2TestPartialFractionExpansion.test_residuez_general3s<)FG1a ##Aq*G$. 0At$9o61a ##Aq%68I$J%2M$B,- $ / Ax3Ar7J/1aAAw'A1v&vv{{9l31a ##Aq*lCvv{{?K81aAT{+AAw'ARy)B411a ##Aq$57H Jvv{{Aq62::q$i!S#BC1aAt}-As|,vv{{:2w/1aAs#As#A2w'1q#h'1aAs#At$vv{{1m,1aA1v&ASz*vv{{1./1aAAw'Ac{+vv{{9j11aAQx(A1v&As#Aq6:.1aAAw'A1v&vv{{<41aARy)A1v&AAw'9&9:1a ##Aq%N%N,- $ / vv{{rec|tgdgd\}}}tgdgd\}}}tgdgd\}} } tgdgd\} } } t||t||t|| t||t|| t|| t||t|| t|| y)Nr\r])rPrNrrr)rrrrNr)rPrNrrrr)rrrrNrrr)r0r>rhs rctest_residuez_trailing_zerosz9TestPartialFractionExpansion.test_residuez_trailing_zerossm]; B. > Bm-=> B13IJ BB#B#B#B#B#B#B#B#B#rectddggd\}}}t|ddgt|ddg|jdk(sJtdd\}}}|jdk(sJ|jdk(sJ|jdk(sJtjt d5tdddddtjt d5tdgd dddy#1swYrr#r rres rctest_residuez_degeneratez5TestPartialFractionExpansion.test_residuez_degeneratesAq69-1aA1v&ABx(vv{{1a.1avv{{vv{{vv{{ ]]:-G H  QN ]]:"01 & Q % & &   & &s C(C4(C14C=cgd}gd}g}gd}gd}dD]Z}t||||\}} t||t| |dt||||\}} t||t| |d\y) N)r+UUUUUUſg)rrr)r.rSrN)rSrrUravgrrdrr1rrtypeFrr#r7r$) r^r_rrfr b_expected a_expectedrrar`s rc*test_inverse_unique_roots_different_rtypeszGTestPartialFractionExpansion.test_inverse_unique_roots_different_rtypess %   " I >E!Q/DAq Az * Azu =1a%0DAq Az * Azu = >recgd}gd}g}gd}gd}gd}dD]^}t||||\} } t| |d t| |d t||||\} } t| |d t| |d `y) Ng333333?g98ȿrgll?rrrr)r.rrSrN)rgUUUUUUgUUUUUU?rN)rSr8rFr rrrrrFrr) r^r_rrfrr b_expected_zrrrar`s rc,test_inverse_repeated_roots_different_rtypeszITestPartialFractionExpansion.test_inverse_repeated_roots_different_rtypess -  # , & H >E!Q/DAq Az 6 Azu =1a%0DAq A|% 8 Azu = >recgd}gd}g}tjtd5t|||ddddtjtd5t |||ddddy#1swY=xYw#1swYyxYw)Nrrz`rtype` must be one ofr rr)r#r rr#r$res rctest_inverse_bad_rtypez3TestPartialFractionExpansion.test_inverse_bad_rtypesz -   ]]:-E F , 1a( + , ]]:-E F - Aq!8 , - - , , - -sA2A>2A;>Bcldg}dg}dg}t|||\}}t|dgt|ddgy)NrSrTrrg)r$r7)r^r_rrfrrar`s rc test_invresz_one_coefficient_bugz=TestPartialFractionExpansion.test_invresz_one_coefficient_bugsC C C Cq!Q1A3C;'rectdgdgg\}}t|dgt|ddgtgdgdg\}}t|gdt|gdtddgdd ggd \}}t|gd t|gd tgd gdg\}}t|gdt|gdtddgddgddg\}}t|gdt|gdy)NrSrrdrT?rSrrqy @y!?y @ @rSyy?@y?r*rdrrR)rS?rrUrSrOrrTrrrOrrrrrNrNrN)y@y<0@yD@OyY@8@y@r`k@yh@prSy(@yJ@4yXQ@y;@Ry[@Ky@T[@rrT)rSrrrsr|)r#r>r^r_rar`s rc test_invresz(TestPartialFractionExpansion.test_invressqcA3#1As#A2w'+->C1ADEACDsAh 0)<1AABA/03R91A 9 :A 7 8r2hAA/1A12Az*rectdgdgg\}}t|dgt|ddgtgdgdg\}}t|gdt|gdtddgdd ggd \}}t|gd t|gd tgd gdg\}}t|gdt|gdtddgddgddg\}}t|gdt|gdy)NrSrrrrrr*rdrrR)g@rryrZrrr)rQyI&@yY@RyT@M@y vl@y@m@rrrrT)rrSr rTr|)r$r>rs rc test_invreszz)TestPartialFractionExpansion.test_invreszssQC$1As#A2w',.?D1ADEACDQx&&!19=1ABCA/14b:1A 9 :A 7 8Bx!Q!Q01A~.Az*rectddd\}}t|ddgt|ddgtddd\}}t|ddgt|ddgy)NrSrrrT)r#r>r$rs rctest_inverse_scalar_argumentsz:TestPartialFractionExpansion.test_inverse_scalar_argumentss]aA1A1v&A2w'q!Q1A2w'A2w'reN)r)r(r)r*rGrQrUrZrfrurxr~rrrrrrrrrr/rercrIrIse D D?&1 BH$ Ob$"&&>&>"-(+0+0(rerIceZdZdZedddZdZdZdZd Z d Z eddd Z d Z d Z dZdZdZdZy)TestVectorstrengthc&|jdg}d}d}d}t||\}}|jdk(sJ|jdk(sJtj||dsJtj|dtj z|zdsJy) Nr*rrrrv !>abs_tolrTr\r%rriscloser0r^r_eventsperiod targ_strength targ_phasestrengthphases rctest_single_1dperiodz'TestVectorstrength.test_single_1dperiodsRD!  (8%}}!!!zzQ||HmVDDD||E1tww;#;VLLLrerzphase modulo 2*pirKcP|jdg}|jgd}|jdgdz}|jgd}t||\}}|jdk(sJ|jdk(sJt||t |d|j z|zy)Nr*)rSrTrrrN)r*r rrSrT)r\r%rr=r>r0rs rctest_single_2dperiodz'TestVectorstrength.test_single_2dperiod(sRD!J' B4!8, ZZ . (8%}}!!!zzQ!(M:E1ruu9z#9:rec(|jgd}d}d}d}t||\}}|jdk(sJ|jdk(sJtj||dsJtj|dtj z|zdsJy)Nr r r r r r rTrr rrrrrs rctest_equal_1dperiodz&TestVectorstrength.test_equal_1dperiod6s:;  (8%}}!!!zzQ||HmVDDD||E1tww;#;VLLLrecR|jgd}|jddg}|jdgdz}|jddg}t||\}}|jdk(sJ|jdk(sJt||t|d|jz|zy)NrrSrTrr r r\r%rr>r0rs rctest_equal_2dperiodz&TestVectorstrength.test_equal_2dperiodDs:;QH% B4!8, ZZd , (8%}}!!!zzQHm4E1ruu9z#9:rec(|jgd}d}d}d}t||\}}|jdk(sJ|jdk(sJtj||dsJtj|dtj z|zd sJy) Nrg?g@gffffff@g333333$@rSrrrrrrTrrrs rctest_spaced_1dperiodz'TestVectorstrength.test_spaced_1dperiodQs56  (8%}}!!!zzQ||HmVDDD||E1tww;#;VLLLrec|jgd}|jddg}|jdgdz}|jddg}t||\}}|jdk(sJ|jdk(sJt||t ||j k(rdd ini}t |d|jz|zfi|y) NrrSr*rrTrr rg>)r\r%rr>rArr7r0) r^r_rrrrrrrtol_kws rctest_spaced_2dperiodz'TestVectorstrength.test_spaced_2dperiod_s56QG$ B4!8, ZZR) (8%}}!!!zzQHm4$4R$8BJJ$F64.Bq255y:5AArec |jgd}d}d}d}t||\}}|jdk(sJ|jdk(sJtj||sJtj|dtj z|zsJy)Nr r*?rSUUUUUU?r*rrTrrs rctest_partial_1dperiodz(TestVectorstrength.test_partial_1dperiodmsN+  (8%}}!!!zzQ||Hm444||E1tww;#;<<rs rctest_opposite_2dperiodz)TestVectorstrength.test_opposite_2dperiodsu-.RD2I& B4"9- (8%}}!!!zzQHm4rec\|jddgg}d}ttt||y)NrSrTrr\rrr%r^r_rrs rctest_2d_events_ValueErrorz,TestVectorstrength.test_2d_events_ValueErrors)aVH%j.&&ArecZd}|jdgg}ttt||y)NrrSrrs rctest_2d_period_ValueErrorz,TestVectorstrength.test_2d_period_ValueErrors'aSE"j.&&Arec8d}d}ttt||y)Nrrrrr%rs rctest_zero_period_ValueErrorz.TestVectorstrength.test_zero_period_ValueErrorsj.&&Arec8d}d}ttt||y)Nrrrrs rctest_negative_period_ValueErrorz2TestVectorstrength.test_negative_period_ValueErrorsj.&&AreN)r(r)r*rr,rrrrrrrrrrrrrr/rercrrs Mw':; ;< ; M ; M B =w':; ;< ; E 5B B B Brerric@tdtdtdg}tdtdtdg}tdtdtdg}tj|}|jjdk(sJt tj|t tj|t |jt }|turt||zg|}n t |||}td|DsJt|jt |jt |t urddg}n tddg}tjtd5||d didddy#1swYyxYw) NrSrTrNrc3<K|]}t|tywr)rr)r^rus rcr`z)test_nonnumeric_dtypes..s6!z!W%6srzmust be at least 1-Dr ru)rrrrrrrrr(rr r'r#r r)rir_rurar`rrrs rctest_nonnumeric_dtypesrsA WQZ,A WQZ,A WQZ,A  A 77<<3  bhhq%("((1e* JJq%  JJ2wbJ ) JJSzJ ,**iIyI!#%**i])+246RZZ!Q(BRnjjo C #!'1-Rnjjo C #!'1-rec 8t||}d}tj|}|jd|dz |}|j ||}|j ddg|}|j ddg|}t tj ||f\}} t|| } |j | } t| |} t|jdD]B} t|jdD]%} t| | | dft|||| | df'Dy)NrrrSrrr*.)rrrrrr\rvrr'r(rrr=r)r^rWr_rrrurar`rrrrvrjs rcrzTestSOSFilt.test_rank3s R_IIe$ KK9q=) 4 JJq%  JJ2wbJ ) JJSzJ ,RZZ!Q(BRnjjo COqwwqz" UA1771:& U)!Aq#I,1a1c l8ST U Urec,tjddd\}}tjddd\}}tjddd\}}tjtj|||}tjtj|||} tjtj ||ftj ||ftj ||ff} t |j| || f\} }} | || fS)NrTr lowr)rr rrrr_rvr\) r^r_b1rb2rb3rrar`rs rc _get_ab_soszTestSOSFilt._get_ab_sos+sq$.Bq$.Bq$.B KK B+R 0 KK B+R 0hhb"f ruuRV}beeBFmDE Q3K0 1c!Syreitem assignmentc |j|\}}}tjjdj |}|j |}t ||}t|||dd|jd\}}|j|t|||dd|df}t|t|||t||dd|jd\} }|j| t||dd|df} t|| t|}|jd|}t|||\} } t| |jdd t| |d y) Nrr rQrrrrrFr)rrrr rr\rrrrr7r(r*rv) r^rWr_r`rarruy_truerr-rvrs rctest_initial_conditionsz#TestSOSFilt.test_initial_conditions6sN$$R( 1c IINN2  % %b ) JJqM R_Q1Sb6bhhqk: FGAq!BC&R$@$CDE1a 01C3BBHHV,<= r 5'#qv""=a"@AB&_ GGARG Q2&22771:59BE2rer<zfancy indexing not supportedc t||}|jd|}|j|\}}}t|}|j |d|j z}t jt5t|||dddt||}|j ||j ddd|j df}t jt5t|||ddddddgd fdddt|||\}} t|d |jdd t| ddddddf|d y#1swYxYw#1swY`xYw) Nrrrrr)rrSr)rrSrSrFr) rrvrr*rrr#r rr(r?r7) r^rWr_rurrrzi_ndrvrs rctest_initial_conditions_2z%TestSOSFilt.test_initial_conditions_2Ps>R_ GGARG $$R( 1c _ JJq&177* + ]]: & # Cr " #r" 5288A;1bhhrl"CD ]]: & : CuQ1i%78 9 :Q5)2$?1aA:> # #  : :s8E%E"E"E+c@tjjdjddd}|j |}|j |}t jddd }t|}|j |}|jd}d }t|j}d ||<t|g|z}|j|} t|||| \} } t||ddddddf|| \} } t||ddddddf|| \}}|j| |f| }t|| ddt|| ddt!|}|j#||d d d f}||dddd ddfz}t|||| d}t%|\}}|j ||j |}}t'||}|j#|d t)|d f}||dddd ddfz}t+||||| d}t||ddy)NrrP)rTrrNrrQr+rrrSrTrrr rr)rrrr+rr\rr r"rrrrr(rr7r*rr!rr@r)r^rWr_rurr nsectionsrshpz0rrrrRr!rr"rvrrar`y_tfs rc test_initial_conditions_3d_axis1z,TestSOSFilt.test_initial_conditions_3d_axis1hs! II ! !# & . .q!* . E HHRL JJqMmmAtE2smjjoIIaL 177mD YK#%& XXc]adr2Ba2A2qk<Ba12qk<B IIr2hTI *2E6BU7_ ZZY1a0 1 !AqsAI,  C" -a 0s|1zz!}bjjm1 1  ZZQ Q/ 0 !AqsAI, q!QTb1!44e%8rerzissues a RuntimeWarningct||}|jd|}|jd}|jd}tjt d5t |||ddddd |ddd f<tjt d 5t |||ddddy#1swYFxYw#1swYyxYw) N)rNrrNr)rOrQ)rOrNrNrTzshould be all onesr rS)rrrrNzInvalid zi shape)rrrr#r rr()r^rWr_rurrs rctest_bad_zi_shapezTestSOSFilt.test_bad_zi_shapesR_ HHZrH *hhv XXl # ]]:-A B + Cr * +AqD ]]:-? @ + Cr * + + + + + +sB2B>2B;>Cc t||}tjddd}|j|}t |}t ||j d||\}}t||dd |j|j|dddd fd |j|ddd dfd z }t|||j|zdy)NrQr rrrHrrrFrrrNrrr ) rrr r\r*r(rvr7rr1rO)r^rWr_rrrvrsss rctest_sosfilt_zizTestSOSFilt.test_sosfilt_zis R_mmAs51jjo _RWWRrW2r:2BU>WWRVVC2A2JRV0266#ae*263NN O2 Q/erectjgdtjdd}tjgdt}t j d5t ||dddy#1swYyxYw)N)rSrTrNrSrPrNrrSrQrrr )rr\r"rr#r$r()r^rWr_rrus rcr%z"TestSOSFilt.test_dtype_deprecations`jj+6:BB1aH JJ2& A  # #*I J  CO   s ! A77BN)r(r)r*r+rrrrrrrrrrr#r-r.r%r/rercrrsW k*EFCGC@k*EF.G.6k*EFUGU& k*;<3=32k*;<(1OP?Q=?,k*;<19=19fg&?@k*;< +=A +k*;< == =d#?$? [[d#$rerz!lfilter is CPU-only compiled coderrc>eZdZedddZdZdZdZy) TestDeconvolveTrr|cgd}ddg}|jgd}tj||\}}t||y)Nr.rSrrrSrSrrrTrS r.rTrSrrTrNrSrr)r\r deconvolver7r^r_originalimpulse_responserecorded recovered remainders rcrzTestDeconvolve.test_array_likesD.q6::;<%00;KL 9 8,rec|jgd|j}|jddg}|jgd}tj||\}}t ||y)Nr rrTrSr)r\rrrr7rs rcrdzTestDeconvolve.test_basics]::8 :K::q!f-::;<%00;KL 9 8,rec|jddgddgg}|jddg}tjtd5t j ||\}}dddy#1swYyxYw)Nrzsignal must be 1-D.r r\r#r rrrr^r_rrquotientrs rctest_n_dimensional_signalz(TestDeconvolve.test_n_dimensional_signalsp::1v1v./::q!f- ]]:-B C P"("3"3H>N"O Hi P P P A))A2c|jddg}|jddgddgg}tjtd5t j ||\}}dddy#1swYyxYw)Nrzdivisor must be 1-D.r rrs rctest_n_dimensional_divisorz)TestDeconvolve.test_n_dimensional_divisorsp::q!f%::1v1v&67 ]]:-C D P"("3"3H>N"O Hi P P PrN)r(r)r*r+rrdrrr/rercr r s0d+KL-M--P Prer c2eZdZdZedddZejjdddgejjd gd d Z d Z ejjd e jddgddggdZ y) TestDetrendczt|jgd}|jgd}t||y)NrRr)r-r\r=)r^r_ detrendeddetrended_exacts rcrdzTestDetrend.test_basics-BJJy12 **Y/!)_=rerIzoverwrite_data not implementedrKcv|jgd}t|d}t|d}t||y)N)rS333333?r3g?g333333@F)overwrite_dataT)r\r-r=)r^r_ru copy_arrayinplaces rc test_copyzTestDetrend.test_copys3 JJ. /Qu5 !D1!*g6rerlinearrrr.c|j|jdd}t|||}|j|jk(sJy)N)rPrQr)rr)rrr-r)r^rrr_rr"s rcrzTestDetrend.test_axissAzz"))E*I6Dt$7 $**,,,rec|gdgdz}|j|}t|dd}t||j|d|j|ddddf}t|ddd }t||j|dt t 5t|dddddy#1swYyxYw) Nr.)rPrrrr*rN)rbprrrS)rr.r)r\r-r7rrr)r^r_rr"s rctest_bpzTestDetrend.test_bps?*zz$DxA6  2==#;%Hzz$a .DxAA>  2==#;%H: & / DxA . / / /s B22B;r.rrTctjjd}|jd}|j |t |}t |tjr|j |}n t|stjdt||}|j gd}t ||jk(rdnd}t||| y) Ni90rUrzlist bp is numpy-only)r.) g3g3g_rgb 6ſgq]?g=~D?g@ zI?gբg?ԅg1 ȿrrr)rrrr r\rArndarrayr9r#rr-rr7)r^r.r_rruru res_scipy_191rs rctest_detrend_array_bpz!TestDetrend.test_detrend_array_bpsii##E* HHRL JJq 0 4J 5 b"** %BBB< 34aB $OP (+rzz9tu]6reN)r(r)r*rdr+r)r#r-rrr/rrr3r/rercr r s> k*JK7L7  [[Vh %;< [[VY/-0=- /  [[THBHHaV$4q!f#=>7?7rer c6eZdZdZdZdZdZdZdZdZ y) TestUniqueRootscgd}t|\}}t||dt|tjt |t y)N)rprr+r%r(rrrr.r>r8rrvrUrmr^r_rfrXrYs rctest_real_no_repeatz#TestUniqueRoots.test_real_no_repeat-s: (+A FAr2 bggc!fC&@Arec&gd}t|dd\}}t|gddt|gdt|dd \}}t|gd dt|gdt|dd \}}t|gd dt|gdy) N)rpffffff{Gz皙r*r?rrdtolr)rpr<r*rrrrTrTrSrTr1)r;r=r*r>r)g333333g ףp= r*gffffff?r.r>r8r8s rctest_real_repeatz TestUniqueRoots.test_real_repeat3s 6+A4uE F$;RH l3+A4uE F$r8)r^r_rf true_rootsrXrYs rc test_gh_4915zTestUniqueRoots.test_gh_4915]si HHR[[RWWQZ8 9K +A BGGFOZC l3rectgd\}}t|ddgdt|ddgtgdd \}}t|dd gdt|ddgy) N)rrrrrrrrTrS)rSg_p?& .>?r)r@rRrBrWs rctest_complex_roots_extraz(TestUniqueRoots.test_complex_roots_extragsa+,<= FS$K< q!f-+,D#N FS+$6C q!f-rectjjddtjjdzz}t|d\}}t |tj |gdt |dgy)Nr'rrTrr)rrr r.r>rdr8r8s rctest_single_unique_rootz'TestUniqueRoots.test_single_unique_rootps^ IINN3 "ryy~~c':": :+Aq1 FRVVAYK< se,reN) r(r)r*r9rCrFrLrPrSrUr/rercr5r5+s'B 4B 4*4.-rer5ctjtjdtjdd}|j tjk(sJy)Nr rrQrO)rrrrrr)rs rc test_gh_22684rWws;  ! !"))D "Eq! LF <<2<< '' 'rer)rorconcurrent.futuresrrrr itertoolsrrr#r r numpy.testingr r numpyrnumpy.exceptionsr scipyr rr~rscipy.optimizerrr scipy.signalrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0scipy.signal.windowsr1scipy.signal._signaltoolsr2r3r4scipy.signal._upfirdnr5 scipy._libr6scipy._lib._array_apir7r8r9r:r;r<r=r>r?r@rArBr-r+r,rHr1rr/r6rArCrFrfr{rrrrrrrVrZrwr\r`rbrdrgrjrprsrurrrrparamrrrrrrrr)rFrQ fail_slowr]r.r_rarjrlrrrrIrrrr r r5rWr/rercrgs  ? *+%6&440! ;;//KK114VH5ww6wt4VH5["["6["|4VH5nLnL6nLb 3 C +&89<7W$W$8:W$t$'JKN"N"LN"b4VH5O*O*6O*d4VH5 L L6 L C>!,'>?~,~,@~,B $%% %@4VH5ZEZE6ZEz4VH5i(i(6i(X//89$$5 : 1!289$&7 :89$7/8:89$7.8: 89$F :F$K K ``F !" 4VH5+&89 * :6 " 89$7y) 1 *8: 88v$'IJ!:;D%=1S$(4 U6;;CSCSBT(U(4 U6;;CSCSBT(U(W+ 2<K+2$2 2 4VH5[,$?@u+u+A6u+p4VH56Q6Q66Qr4 &!=>66?!6@4VH5z%z%6z%z " 4VH5LlL6 L(*Z4@89$r? :?6$! !$89 G:  G$r@ @>$r%r% r%j+ 57\9\97\9~+ 57AA7A8sAsAj$k(k( k(\ ZBZBz89$'7!345 ::4 PQttR!tn4(KL+&78PP9MP@4VH57777677t$H-H- H-V(re