+
    /i"                        ^ RI t ^ RIt^ RIt^ RIHtHt ^ RIHt ^ RIHt ^ RI	t	^ RI	H
t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ R	IHtHt ^ R
IHt ^ RIHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4H5t5H6t6H7t7H8t8 ^ RI9H:t: ^ RI;H<t<H=t=H>t> ^ RI?H@t@ ^ RIAHBtB ^ RICHDtDHEtEHFtFHGtGHHtHHItIHJtJHKtKHLtLHMtMHNtNHOtOHPtPHQtQHRtRHStS ]	P                  P                  tU]	P                  P                  tV].tW]P! ]4       ! R R4      4       tX]P! ]4       ! R R4      4       tY]P! ]4       ! R R4      4       tZR t[R t\R t]R t^]P! ] 4       ! R R4      4       t_]U! RRR7      ]	P                  P                  R ]Q! ]4      ]Q! ] 4      .4       ! R! R"4      4       4       ta]U! RRR7      ]	P                  P                  R#4      ]	P                  P                  R$]P                  ]P                  .4      ]P! ]]4      R% 4       4       4       4       te ! R& R'4      tf]P! ]P                  4       ! R( R)4      4       th. R|Oti]i]@,          ti ! R* R+4      tj]P! ]P                  4       ! R, R-4      4       tl]P! ]P                  4       ! R. R/4      4       tn]P! ]%4       ! R0 R14      4       to ! R2 R3]o4      tp ! R4 R5]o4      tq]U! RR67       ! R7 R8]o4      4       tr ! R9 R:]o4      ts ! R; R<]o4      tt]U! RR67       ! R= R>]o4      4       tu]P! ]%4      R? 4       tv]P! ]%4      R@ 4       tw]	P                  P                  RA. R}O4      ]V! RBRCRD7      ]P! ]4       ! RE RF4      4       4       4       tx]P! ]4       ! RG RH4      4       ty]P! ]4      ]	P                  P                  RI. R~O4      ]	P                  P                  RJRRK.4      ]	P                  P                  RL^d^eRMRN]	P                  ! RO]	P                  P                  .RP7      ]	P                  ! RQ]	P                  P                  .RP7      .4      RR 4       4       4       4       t|]P! ]4      RS 4       t}]P! ]4      ]	P                  P                  RTRURV.4       ! RW RX4      4       4       t~ ! RY RZ4      t]P! ]&4       ! R[ R\4      4       t]P! ]']14       ! R] R^4      4       t]P! ]1]'4       ! R_ R`]4      4       tRa tRRb lt]P! ]!4      ]	P                  EP                  ^
4      Rc 4       4       t]P! ]!4      Rd 4       t]U! RR67      ]	P                  EP                  ^
4      Re 4       4       t]P! ]EP                  4       ! Rf Rg4      4       t]P! ]#4       ! Rh Ri4      4       t]P! ]$4       ! Rj Rk4      4       t]P! ]"4       ! Rl Rm4      4       t ! Rn Ro4      t]P! ]-4       ! Rp Rq4      4       t]U! RRr7      ]P! ]04      ]	P                  P                  RA. RO4       ! Rs Rt4      4       4       4       t]P! ]EP"                  4       ! Ru Rv4      4       t]P! ]54       ! Rw Rx4      4       t]P! ]64       ! Ry Rz4      4       tR{ tR# )    N)ThreadPoolExecutoras_completedproduct)gcd)raises)ComplexWarning)fft)correlate1d)fminlinear_sum_assignment)signal)	correlatecorrelate2dcorrelation_lagsconvolve
convolve2dfftconvolve
oaconvolvechoose_conv_methodenvelopehilberthilbert2lfilter
lfilter_zifiltfiltbutterzpk2tfzpk2sosinvresinvreszvectorstrengthlfiltictf2sossosfiltsosfiltfilt
sosfilt_zitf2zpkBadCoefficientsdetrendunique_rootsresidueresiduez)hann)_filtfilt_gust_compute_factors_group_poles)_upfirdn_modes)
_testutils)xp_assert_closexp_assert_equalis_numpyis_torchis_jaxis_cupyassert_array_almost_equalassert_almost_equalxp_copyxp_sizexp_default_dtypearray_namespacemake_xp_test_casemake_xp_pytest_paramSCIPY_DEVICE_xp_copy_to_numpyc                   2  a  ] tR t^*t o ]! RRR7      R 4       t]! RRR7      R 4       t]! RRR7      R 4       tR t]	! RRR7      R	 4       t
]! R
RR7      R 4       t]	! RRR7      R 4       t]	! RRR7      R 4       t]! R4      ]! R4      R 4       4       t]! R4      ]! R4      R 4       4       tR t]! RRR7      R 4       t]! RRR7      R 4       t]! RRR7      R 4       t]! R
RR7      R"R l4       t]! RRR7      R 4       t]! R
R7      R 4       tR tV tR!# )#TestConvolve	jax.numpy2jax returns floats; scipy returns ints; cf gh-6076reasonc                    VP                  . RO4      pVP                  . RO4      p\        W#4      p\        WAP                  . RO4      4       R# )   N)rK            rM   rL         rK   )rK   
             rU         asarrayr   r5   selfxpabcs   &&   a/var/www/html/photoedit/myenv/lib/python3.14/site-packages/scipy/signal/tests/test_signaltools.py
test_basicTestConvolve.test_basic-   s<     JJ)*JJy!QN::&EFG    c                    VP                  . RO4      pVP                  . RO4      p\        W#RR7      p\        WAP                  . RO4      4       R# )rK   samemodeNrK   rL   rM   )rP   rQ   rK   rL   )rR   rS   "   rX   rZ   s   &&   r`   	test_sameTestConvolve.test_same5   s=     JJy!JJ|$Q'::l34rc   c                    VP                  . RO4      pVP                  . RO4      p\        W#RR7      p\        WAP                  . RO4      4       R# )rK   re   rf   Nrh   rO   )rR   rS   rS   rX   rZ   s   &&   r`   test_same_eqTestConvolve.test_same_eq=   s=     JJy!JJy!Q'::l34rc   c                    VP                  . RO4      pVP                  RR.4      p\        W#4      p\        WAP                  . RO4      4       R# )rP   N      ?      ?       @      ?)rp   rq         @      ?)               @y       @      @y      @       @y      @      @rX   )r[   r\   xyzs   &&   r`   test_complexTestConvolve.test_complexE   s?    JJ/0JJ'(QN::&BCDrc   zwrong output dtypec                    VP                  R 4      pVP                  R4      p\        W#4      p\        WBV,          4       R# i	  i  NrX   rZ   s   &&   r`   test_zero_rankTestConvolve.test_zero_rankK   s3    JJtJJtQNq5!rc   Tzpure pythonnp_onlyrI   c                B    R pRp\        W#4      pWBV,          8X  g   Q hR# rz   )r   rZ   s   &&   r`   test_zero_rank_python_scalars*TestConvolve.test_zero_rank_python_scalarsR   s#    QNEzzrc   zdisagreement between methodsc           
     \   VP                  VP                  ^4      R4      pVP                  ^4      p\        ^4       Fj  p^.^,          p^WT&   \        W!P                  V\	        V4      4      RR7      p\        W!P                  V\	        V4      4      RR7      p\        WgRR7       Kl  	  R# )   directmethodr
   +=atolNrK   rK   rK   )reshapearangeranger   tupler4   )r[   r\   r]   r^   ib_shapert   ru   s   &&      r`   test_broadcastableTestConvolve.test_broadcastableY   s    JJryy}i0IIaLqAc!eGGJJJq%.9(KAJJq%.9%HAAu- rc   c                    VP                  R .4      pVP                  R.4      p\        W#4      p\        WBV,          4       R# g  P  NrX   rZ   s   &&   r`   test_single_element TestConvolve.test_single_elemente   s7    JJvJJvQNq5!rc   cupyc                    VP                  . RO. RO.4      pVP                  . RO. RO.4      p\        W#4      pVP                  . RO. RO. RO.4      p\        WE4       R# 	rP   NrO   rh   rQ   rK   rL   rL   rM   rN   )rQ            rW   )rR      >   :   &   )rW      r   1   r   rX   r[   r\   r]   r^   r_   ds   &&    r`   test_2d_arraysTestConvolve.test_2d_arraysl   sY     JJ	9-.JJ	9-.QNJJ*'') * 	rc   torchc           
        VP                  VP                  ^4      R4      pRVP                  VP                  ^VP                  R7      R4      ,          pW1P                  VP                  ^VP                  R7      RRR	1,          R4      ,          pVP                  . R
O. RO. RO. RO.. RO. RO. RO. RO.. RO. RO. RO. RO.. RO. RO. RO. RO..4      p\	        \        W#R4      V4       \	        \        W2R4      V4       \	        \        W#R4      VR,          4       \	        \        W2R4      VR,          4       \	        \        W#R4      VR,          4       \	        \        W2R4      VR,          4       R# )                 ?dtypeNfullre   validrQ   rQ   rQ   r   )                y      :@        y      9@      ?y      8@       @)y      J@        y     b@      @y      b@      &@y     @W@      &@)y      G@      @y     `@      7@y     _@      =@y     @T@      7@)y      D@      (@y     X@      @@y     @W@     B@y      K@      8@)y      Z@        y     n@      *@y     m@      7@y     `@      5@)y     q@      >@y     @      X@y     @      _@y     t@     U@)y     n@     P@y      @     f@y     @@      j@y     q@     `@)y     a@     P@y     0s@      d@y     r@     `f@y      c@     Z@)y      Q@      B@y     c@     Y@y     `b@     @\@y     @T@     R@)y     e@     @a@y     w@     u@y      v@     w@y     @g@     l@)y     @a@     e@y     r@      {@y     p@     |@y     @a@     `q@)y     Q@     @a@y      b@     0t@y     _@     Pu@y     O@     h@)y      @@      R@y      Q@     d@y     M@     e@y      >@      Y@)y      Q@      h@y     `a@     {@y     @]@     p|@y     L@     o@)y      C@     k@y     @R@     0@y     I@     H@y      5@     0r@)y      (@      b@y      4@     s@y      @     t@y             f@)rP   rK   Nr   r   )r   rK   Nr   r   )r   r   
complex128rY   r5   r   )r[   r\   smallbig	out_arrays   &&   r`   test_input_swapping TestConvolve.test_input_swappingw   sT    

299Q<32::bii"--i@)LLzz"))Bbmm)<TrTBINNJJ16768
 :;==?
 ;>><>
 :<:8:;<	* 	V4i@V4i@V4$]3	5V4$]3	5W5$]3	5W5$]3	5rc   c           	     @   VP                  . RO4      pVP                  . RO4      p\        \        \        W#RR7       \        \        \        W#RRR7       \        \        \        W#RRR7       \        \        \        W#RR	R7       \        \        \        W#R
R	R7       R# rK   spamrf   eggsr
   rg   r   hamr   r   baconre   Nrh   rO   )rY   assert_raises
ValueErrorr   r[   r\   r]   r^   s   &&  r`   test_invalid_params TestConvolve.test_invalid_params   sl    JJy!JJy!j(Av>j(AveLj(AuXNj(AvgNj(AvgNrc   dtypes do not matchc                   VP                  . RO4      pVP                  . RO4      pVP                  . RO4      p\        W#R4      p\        WT4       \        W2R4      p\        WT4       VP                  . RO4      pVP                  RR.4      pVP                  RR	.4      p\        W#R4      p\        WT4       \        W2R4      p\        WT4       R# )
rP   r   N)rP   rQ   rK   rN   rM   rK   )	rQ   rK   rL   rM   rK   rL   rQ   rQ   rP   )F   N   I   A   )y      ?      @       @      y      @               @            ?        y       @      $rX   r[   r\   r]   r^   expectedouts   &&    r`   test_valid_mode2TestConvolve.test_valid_mode2   s     JJ)*JJ23::./qW%&qW%&JJ/0JJ'(::vw/0qW%&qW%&rc   c                    VP                  . RO4      pVP                  . RO4      p\        W#R4      pVP                  . RO4      p\        WE4       R# )rP   re   N)rP   rQ   rK   rK   rP   rQ   )rP   rL   rK   rL   rM   rN   r   rL   rK   rQ   rP   rP   rK   )9   =   ?   r   -   $   rX   r   s   &&    r`   test_same_modeTestConvolve.test_same_mode   sC    JJ)*JJ>?Q6"JJ/0rc   zdifferent exceptionc                    VP                  VP                  ^^4      R4      pVP                  VP                  R^ 4      R4      p\        \        \        .W#3O5/ RR/B  \        \        \        .W23O5/ RR/B  R# rP   rg   r   NrQ   rK   rK   rQ   )r   r   r   r   r   r   s   &&  r`   test_invalid_shapes TestConvolve.test_invalid_shapes   so     JJryyA/JJryyQ'0j(IaVI7HIj(IaVI7HIrc   zTODO: convert this testc                   0 RmpV UUUu. uF  qC F  pR F  pWEV3NK	  	  K  	  K  	  pppp\         P                  P                  ^*4      pRVP                  ^ ^.VR7      RVP	                  V4      /p	V	R,          ;V	R&   V	R&   V	R,          RV	R,          ,          ,           V	R	&   V EF8  w  rEpV	\         P
                  ! V4      P                  ,          P                  V4      p
V	\         P
                  ! V4      P                  ,          P                  V4      pR Uu/ uF  pV\        WWR7      bK  	  ppVR
,          P
                  VR,          P
                  8X  g   Q hRV9   d   RV9   d   \        W4      R8X  g   Q hK  \        WE3 Uu. uF  qR9   NK	  	  up4      '       d   RRRR/pMRWE39   d   RRRR/pMRRRR/p\        VR
,          VR,          3/ VB  EK;  	  R# u upppi u upi u upi )uint16float16boolr   sizefr^   u              ?r_   r
   r   )r   rg   rtol-C6?r   ư>MbP?h㈵>:0yE>N>   r   int8int16int32int64uint8r   uint32uint64r   float32float64	complex64r   )r   r   re   )r
   r   >   r   r   )nprandomRandomStatechoicerandnr   kindastyper   r   anyr4   )r[   r\   ntypest1t2rg   argsrngarray_typesx1x2keyresultstkwargss   &&&             r`   test_convolve_method!TestConvolve.test_convolve_method   s   4 */ F22+D4 +D  F
 ii##B'CJJ1vAJ6CIIaL*.9#.>>C;s+&s+d;s3C.CCC LBDRXXb\../66r:BRXXb\../66r:B #45"33 HRCCC"3  5 5>''78+<+B+BBBB|")"1X=== B8D8a118DEE &&$7rh& $5 !$5GENGH,=HH1 !F5 Es   G'G.G3
c                2   R F  pVP                  ^V,          .VP                  R7      p\        W3RR7      p\        W3RR7      pV^28  g   KK  VP                  ^^V,          ,          .4      p\        WE4       \        WFRR7       \        WVRR7       K  	  R# )	rR   r   r
   r   r   Fcheck_dtypeN)	rR      2   3   4   5   6   <   r   )rY   r   r   r5   )r[   r\   r  rv   r
   r   vals   &&     r`    test_convolve_method_large_input-TestConvolve.test_convolve_method_large_input   s     6A

AqD6
2A1.Ca84F
 2vjj!ac(,,e<? 6rc   r~   c                .   \        \        \        ^.^RR7       \        \        \        ^^.RR7       \        \        \        ^.^RR7       \        \        \        ^^.RR7       \        \        \        ^.^..4       \        \        \        ^.^4       R# rP   r   r   r
   N)r   r   r   r[   r\   s   &&r`   test_mismatched_dims!TestConvolve.test_mismatched_dims  sp     	j(QC8Dj(As8Dj(QC5Aj(As5Aj(QC1#7j(QC3rc    N)d   )__name__
__module____qualname____firstlineno__skip_xp_backendsra   rj   rm   rw   xfail_xp_backendsr{   r   r   r   r   r   r   r   r   r   r  r"  r(  __static_attributes____classdictcell____classdict__s   @r`   rE   rE   *   s     kCEHEH kCE5E5 kCE5E5E {+?@" A" d=9 : {+IJ	. K	. {+?@" A" k#f  $ gf#5  #5JO k*?@' A', k*?@ A f%:;
J <
J d+DE*I F*IX k*?@@ A@" d#4 $4rc   rE   c            	         a  ] tR tRt o ]! RRR7      R 4       t]! RRR7      R 4       t]! RRR7      R 4       t]! RR	R7      R
 4       tR t	R t
]! RRR7      R 4       t]! RRR7      R 4       t]! RRR7      ]P                  P                  R]].4      ]P                  P                  RR. R%O.3R. R&O.3.4      R 4       4       4       t]! RRR7      R 4       t]! RRR7      R 4       tR t]! RRR7      R 4       t]! RRR7      R 4       t]! RRR7      R 4       tR t]P                  P4                  ]P                  P7                  R4      ]! RR R!7      R" 4       4       4       tR#tV tR$# )'TestConvolve2di  rF   r   rH   c                    VP                  . RO. RO.4      pVP                  . RO. RO.4      pVP                  . RO. RO. RO.4      p\        W#4      p\        WT4       R# r   rY   r   r5   )r[   r\   r]   r^   r   es   &&    r`   r   TestConvolve2d.test_2d_arrays   sX    JJ	9-.JJ	9-.JJ*'') * qrc   c                    VP                  . RO. RO.4      pVP                  . RO. RO.4      pVP                  . RO.4      p\        W#R4      p\        WT4       \        W2R4      p\        WT4       R# )rQ   r   NrQ   rK   rL   rM   rN   r   r   rL   rM   rN   r   r   	   rR   rO   rh   r   P   b   t      r9  r[   r\   r:  r   hgs   &&    r`   test_valid_modeTestConvolve2d.test_valid_mode*  sf    JJ-/EFGJJ	9-.JJ./0qW% qW%rc   r   c                   VP                  . RO. RO.4      pVP                  . RO. RO.VP                  R7      R,           pVP                  . R	O.4      p\        W#R4      p\        WT4       \        W2R4      p\	        WT4       R# )
rQ   r   r   r   Nr=  r>  rO   rh   )y      O@      8@y      T@      >@y     X@      B@y      ]@      E@y     `@      H@)rY   r   r   r4   r5   rE  s   &&    r`   test_valid_mode_complx%TestConvolve2d.test_valid_mode_complx7  ss    JJ-/EFGJJ	9-R]]JCbHJJLMNqW% qW%rc   zjax only allows fillvalue=0c                    VP                  . RO. RO.4      pVP                  . RO. RO.4      p^p\        W#RRV4      pVP                  . RO. R	O. R
O.4      p\        WV4       R# )rP   r   fillNrO   rh   r   r   )      r   ri   rU   )rT   (   r   @   r  )rU   .   C   r   0   r9  )r[   r\   r]   r^   fillvalr_   r   s   &&     r`   test_fillvalueTestConvolve2d.test_fillvalueD  sc    JJ	9-.JJ	9-.qVVW5JJ,'') * 	rc   c           
        R p\         P                  ! 4       ;_uu_ 4        \         P                  ! RR\        4       \	        \
        VR7      ;_uu_ 4        \        ^..^^..RR7       RRR4       RRR4       Rp\	        \
        VR7      ;_uu_ 4        \        ^..^^..^^.R7       RRR4       R#   + '       g   i     LS; i  + '       g   i     L^; i  + '       g   i     R# ; i)z2could not cast `fillvalue` directly to the output ignorezCasting complex valuesmatchr   	fillvalueNz,`fillvalue` must be scalar or an array with )warningscatch_warningsfilterwarningsr	   r   r   r   )r[   r\   msgs   && r`   test_fillvalue_errors$TestConvolve2d.test_fillvalue_errorsO  s    B$$&&##H.FWz55QC5Aq6(b9 6 '
 =:S11u1vh1a&9 21	 65 '& 211s/   6CB5	*CC5C CC	C,	c                @    \        \        \        ^..^^... R7       R# )rP   r]  Nr   r   r   r'  s   &&r`   test_fillvalue_empty#TestConvolve2d.test_fillvalue_emptyZ  s    j*seq!fX "	$rc   z!jax only supports boundary='fill'c                    VP                  . RO. RO.4      pVP                  . RO. RO.4      p\        W#RR4      pVP                  . RO. R	O. RO.4      p\        WE4       R# )
rP   r   wrapNrO   rh   r   r   )rA  rA  J   rA  rA  )D   rl  r   rl  rl  r9  r   s   &&    r`   test_wrap_boundary!TestConvolve2d.test_wrap_boundary_  s\    JJ	9-.JJ	9-.qVV,JJ,'') * 	rc   c                    VP                  . RO. RO.4      pVP                  . RO. RO.4      p\        W#RR4      pVP                  . RO. R	O. R
O.4      p\        WE4       R# )rP   r   symmNrO   rh   r   r   )ri   r   ,   r   B   )r  rU  r   rA  T   )R   r   \   n   r   r9  r   s   &&    r`   test_sym_boundary TestConvolve2d.test_sym_boundaryi  s\    JJ	9-.JJ	9-.qVV,JJ,')+ , 	rc   funczboundary, expectedrp  rj  c                    VP                  . RO.4      pVP                  R4      pV! WVRVR7      p\        WtP                  V4      4       R# )       @re   rg   boundaryN)r|              @      @)rP      )rY   onesr5   )r[   rz  r~  r   r\   imagekernelresults   &&&&&   r`   test_same_with_boundary&TestConvolve2d.test_same_with_boundarys  sE     

123!e&8D 	

8 45rc   c           
         ^ RI Hp VP                  VP                  ^^VP                  R7      R4      pVP                  VP                  ^^eVP                  R7      R4      p\        W4RRR7      p\        WRP                  W4RR	R7      4       R# )
r   Nr   re   rj  r}  )rg   origin)rR   rK   )rR   rR   )r   r   )scipy.ndimagendimager   r   r   r   r5   r   )r[   r\   ndir]   r^   r_   s   &&    r`   test_boundary_extension_same+TestConvolve2d.test_boundary_extension_same  sr    
 	$JJryyF"**y=wGJJryyG2::y>Iq&6:<<6(<KLrc   c                   ^ RI Hp VP                  VP                  ^^
VP                  R7      R4      pVP                  VP                  ^^%VP                  R7      R4      p\        W4RRR7      p\        P                  ! ^^
\        R7      P                  ^^4      p\        P                  ! VR	R4      pVP                  V4      p\        WQP                  VP                  WRR7      RR
1RR
13,          4      4       R# )r   Nr   r   rj  r}  rf   rK   rK   )rN   rN   )r  r  r   )r  r  r   r   r   r   r   floatpadrY   r5   r   )	r[   r\   r  r]   r^   r_   a_npapad_npapads	   &&       r`   test_boundary_extension_full+TestConvolve2d.test_boundary_extension_full  s    
 	$JJryyEy<fEJJryyEy<fEq&6:yyF%088A>&&/8zz'"::cll4l&H"crc&RSTrc   c                    VP                  VP                  ^^4      R4      pVP                  VP                  R^ 4      R4      p\        \        \        .W#3O5/ RR/B  \        \        \        .W23O5/ RR/B  R# r   )r   r   r   r   r   r   s   &&  r`   r   "TestConvolve2d.test_invalid_shapes  so     JJryyA/JJryyQ'0j*KvK&'9JKj*KvK&'9JKrc   rG   c                    VP                  . RO. RO.4      pVP                  . RO. RO.4      p\        W#R4      pVP                  . RO. RO.4      p\        WE4       R# )	rP   re   NrO   rh   r=  r>  )rS   rT   ri   )rA  rB  rC  r9  )r[   r\   r:  r   rG  rF  s   &&    r`   r   TestConvolve2d.test_same_mode  sX     JJ	9-.JJ-/EFGqV$JJ " #rc   c                   VP                  . RO. RO.4      pVP                  . RO. RO.4      pVP                  . RO.4      p\        W#R4      p\        WT4       \        W2R4      p\        WT4       VP                  RR	.R
R..4      pVP                  . RO. RO.4      pVP                  RR..4      p\        W#R4      p\        WT4       \        W2R4      p\        WT4       R# )rP   r   NrO   rh   r=  r>  r@  rp   r   rr         @        )r         @       @r  )y      @       y      @      ?y      @      y      ;@      y      G@       @r9  )r[   r\   r:  r   r   r   s   &&    r`   r   TestConvolve2d.test_valid_mode2  s     JJ	9-.JJ-/EFG::567w'&w'&JJ(66*:;<JJ02JKL::234w'& w'&rc   z9only integer tensors of a single element can be convertedc                   VP                  ^4      pVP                  . RO4      p\        V4      p\        V4      pR F  p\        VP                  \        P
                  ! WEVR7      4      \        P
                  ! W#VR7      4       \        VP                  \        P                  ! VR,          VR,          VR7      ^ R7      \        P
                  ! W#VR7      4       K  	  R# )rM   rf   Naxisg	@gffffff?rK   r   r   re   )NNNN)	r   rY   rC   r4   r   r   r   squeezer   )r[   r\   r]   r^   r  b_nprg   s   &&     r`   test_consistency_convolve_funcs.TestConvolve2d.test_consistency_convolve_funcs  s    
 IIaLJJ}% # #-D

2;;t=>40 

%%aj!G*4H   40 .rc   c                    \        \        \        ^^4       \        \        \        ^.^.4       \        \        \        ^...^...4       R# )rK   Nrf  r'  s   &&r`   test_invalid_dims TestConvolve2d.test_invalid_dims  s<    j*a3j*qcA37j*ug!w?rc   z!Can't create large array for testTstride_tricksr}   c                :   RRVP                  4       P                  ,          ,          p\        P                  ! ^V,          R,          \        P                   ! 4       P                  ,          R,          4       VP                  RV,          VP                   R7      p^VR&   \        P                  P                  P                  W2R3R	R7      p\        P                  ! V^^..4      p\        P                  ! V^8  4      pV^ ,          P                  ^ 8X  g   Q hR# )
rQ       g    .Ar   NNrQ   )shapestridesNl        )iH  r   )r   itemsizer3   check_free_memoryr   zeroslibr  
as_stridedr   r   wherer   )r[   r\   r  r]   countfailss   &&    r`   test_large_arrayTestConvolve2d.test_large_array  s    
 dRXXZ0001$$QUT\BHHJ4G4G%G#%MN HHTAXRXXH.#FF  ++AY	+R!!!q!fX.#Qx}}!!!rc   r*  N)g     B@      E@      F@g     F@)     E@r  r       C@)r,  r-  r.  r/  r0  r   rH  rK  rW  rc  rg  rm  rx  pytestmarkparametrizer   r   r  r  r  r   r   r   r  r  slowxfail_on_32bitr  r2  r3  r4  s   @r`   r7  r7    s      k*?@ A k*?@
 A
 g&;<
 =
 k*GH I	:$
 k*MN O k*MN O k*MN[[Vj+%>?[[1%(@'AB%(@'ABDE6E @ O
6 k*MNM OM k*MNU OU
L kCEE kCE'E'. gJ(@
 [[[[ CDd?;" < E "rc   r7  c                   8	  a  ] tR tRt o ]! RRR7      ]P                  P                  RRR^ ^ .R0R0..4      R 4       4       t]! RRR7      ]P                  P                  R^^.R0R0..4      R	 4       4       t	]P                  P                  RRR^ ^ .R0R0..4      R
 4       t
]P                  P                  R^^.R0R0..4      R 4       t]P                  P                  RRR^ ^.^^ .^ R0.R0^ .R1^.^R1.R1R0.R0R1..
4      R 4       t]P                  P                  R^^.^^.^R0.R0^.R1^.^R1.R1R0.R0R1..4      R 4       t]P                  P                  RRR^ ^.^^ .^ R0.R0^ .R1^.^R1.R1R0.R0R1..
4      R 4       t]P                  P                  R^^.^^.^R0.R0^.R1^.^R1.R1R0.R0R1..4      R 4       t]! RRR7      ]P                  P                  RRR^ ^ .R0R0..4      R 4       4       t]! RRR7      ]P                  P                  R^R0^.R0..4      R 4       4       t]! RRR7      ]P                  P                  RRR^ ^ .R0R0..4      R 4       4       t]! RRR7      ]P                  P                  R^^..4      R 4       4       t]P                  P                  RRR^ ^ .R0R0..4      R 4       t]P                  P                  R^^.R0R0..4      R 4       t]! RRR7      ]! RRR7      R 4       4       t]! RRR7      ]! RRR7      ]P                  P                  R. . 3^^.. 3. ^.3.4      R 4       4       4       t]! RRR7      R 4       tR t]P                  P                  RRR^ ^ .R0R0..4      R  4       t]P                  P                  R^^.R0R0..4      R! 4       t]! R"R#R$7      ]P                  P                  R^^.^^.^R0.R0^.R2^.^R2.R2R0.R0R2..4      R% 4       4       t]P                  P<                  ]P                  P                  R&]! ] ! ^^d4      4      ]! ] ! R'R(4      4      ,           ]!PD                  PG                  R)4      PI                  R*R+^4      PK                  4       ,           4      R, 4       4       t&]! R"R-7      R. 4       t'R/t(V t)R# )3TestFFTConvolvei  r   r   rH   axes Nc                    VP                  . RO4      pVP                  . RO4      pVR8X  d   \        W34      pM.\        V\        4      '       d   \	        V4      p\        W3VR7      p\        WTRR7       R# )rP   r  r  Tqs*>r   NrO   rP   rL   rR   rW         "@rY   r   
isinstancelistr   r4   r[   r  r\   r]   r   r   s   &&&   r`   	test_realTestFFTConvolve.test_real  s^     JJy!::012:a#C$%%T{a.CF3rc   c                h   VP                  . RO4      pVP                  . RO4      pVP                  \        P                  ! V^^.4      4      pVP                  \        P                  ! V^^.4      4      p\        V\        4      '       d   \        V4      p\        W3VR7      p\        WTRR7       R# )rP   r  r  r   NrO   r  rY   r   tiler  r  r   r   r4   r  s   &&&   r`   test_real_axesTestFFTConvolve.test_real_axes  s     JJy!::01JJrwwq1a&)*::bgghA78dD!!;D!T*F3rc   c                    VP                  . RO4      pVP                  . RO4      pVR8X  d   \        W34      pM.\        V\        4      '       d   \	        V4      p\        W3VR7      p\        WTRR7       R# )rP   r  r  r  r   Nrp          @       @y      @      @rs   y               @y              4@y              8@y              2@r  r  s   &&&   r`   rw   TestFFTConvolve.test_complex  s]    JJ/0::IJ2:a#C$%%T{a.CF3rc   c                h   VP                  . RO4      pVP                  . RO4      pVP                  \        P                  ! V^^.4      4      pVP                  \        P                  ! V^^.4      4      p\        V\        4      '       d   \        V4      p\        W3VR7      p\        WTRR7       R# )rP   r  r  r   Nr  r  r  r  s   &&&   r`   test_complex_axes!TestFFTConvolve.test_complex_axes*  s    JJ/0::IJJJrwwq1a&)*::bgghA78dD!!;D!T*F3rc   c                    VP                  . RO. RO.4      pVP                  . RO. RO. RO.4      pVR8X  d   \        W34      pM.\        V\        4      '       d   \	        V4      p\        W3VR7      p\        WT4       R# )	      ?r  r  Nr  rQ   rK   r   )r  rL   rR   rW   r?  r   rP  8   r  r   r   rQ  r   r   r   r  r  s   &&&   r`   test_2d_real_same!TestFFTConvolve.test_2d_real_same8  su     JJ!# $::2235 6 2:a#C$%%T{a.C&rc   c                   VP                  . RO. RO.4      pVP                  . RO. R	O. R
O.4      pVP                  \        P                  ! V. RO4      4      pVP                  \        P                  ! V. RO4      4      p\        V\        4      '       d   \        V4      p\        W3VR7      p\        WTRRR7       R# )rP   r  r  Fr   r  NrO   r   )rP   rL   rR   rW   r?  r  r  rQ   rP   rP   r  r  s   &&&   r`   test_2d_real_same_axes&TestFFTConvolve.test_2d_real_same_axesQ  s     JJ	 ::0-.0 1 JJrwwq),-::bggh	:;dD!!;D!T*FFrc   c                   VP                  . RO. RO.4      pVP                  . RO. R	O. R
O.4      pVR8X  d   \        W34      pM.\        V\        4      '       d   \	        V4      p\        W3VR7      p\        WTRR7       R# )rP   r  r  r  r   N      ?       @      @      @y      @      @rq   y      @      @y      @      @y            @y      $      4@y      5      L@y      2      S@y      &      N@y              $@y              F@y             ]@y             c@y             ^@r  y      $@      4@y      5@      L@y      2@      S@y      &@      N@r  r  s   &&&   r`   test_2d_complex_same$TestFFTConvolve.test_2d_complex_samei  sx     JJ0+- .::A(<  2:a#C$%%T{a.CF3rc   c                ~   VP                  . RO. RO.4      pVP                  . RO. RO. R	O.4      pVP                  \        P                  ! V. R
O4      4      pVP                  \        P                  ! V. R
O4      4      p\        V\        4      '       d   \        V4      p\        W3VR7      p\        WTRR7       R# )rP   r  r  r   Nr  r  r  r  r  r  r  r  s   &&&   r`   test_2d_complex_same_axes)TestFFTConvolve.test_2d_complex_same_axes  s     JJ0+- .::A(<  JJrwwq),-::bggh	:;dD!!;D!T*F3rc   c                   VP                  . RO4      pVP                  . RO4      pVP                  . R	O4      pVP                  . R
O4      pVR8X  d   \        W4R4      pM/\        V\        4      '       d   \	        V4      p\        W4RVR7      p\        Wu4       VR8X  d   \        WCR4      pM/\        V\        4      '       d   \	        V4      p\        WCRVR7      p\        WvRR7       R# )rP   r  re   r  r  r   NrO   	rK   rK   rM   rN   r   r   r?  r   rP        A@     D@     G@	r        4@      9@r  r  r  r  g      <@r|  r  r[   r  r\   r]   r^   
expected_1
expected_2r   s   &&&     r`   test_real_same_mode#TestFFTConvolve.test_real_same_mode  s     JJy!JJ23ZZ0
ZZ KL
2:aF+C$%%T{aF6C(2:aF+C$%%T{aF6Cf5rc   c                   VP                  . RO4      pVP                  . RO4      pVP                  . RO4      pVP                  . R	O4      pVP                  \        P                  ! V^^.4      4      pVP                  \        P                  ! V^^.4      4      pVP                  \        P                  ! V^^.4      4      pVP                  \        P                  ! V^^.4      4      p\        V\        4      '       d   \        V4      p\        W4RVR7      p\        WuRR7       \        WCRVR7      p\        WvRR7       R# )
rP   re   r  r  r   NrO   r  r   r  r  r  s   &&&     r`   test_real_same_mode_axes(TestFFTConvolve.test_real_same_mode_axes  s     JJy!JJ23ZZ0
ZZ KL
JJrwwq1a&)*JJrwwq1a&)*ZZ
QF ;<
ZZ
QF ;<
dD!!;D!T2f5!T2f5rc   c                   VP                  . RO4      pVP                  . RO4      pVP                  . R	O4      pVR8X  d   \        W4R4      pM/\        V\        4      '       d   \	        V4      p\        W4RVR7      p\        WeRR7       VR8X  d   \        WCR4      pM/\        V\        4      '       d   \	        V4      p\        WCRVR7      p\        WeRR7       R# )
rK   r  r   r  r  r   NrK   rQ   rP   r        8@g      ?@r  r  g     H@r        (@r  r[   r  r\   r]   r^   r   r   s   &&&    r`   test_valid_mode_real$TestFFTConvolve.test_valid_mode_real  s     JJy!JJ23::AB2:aG,C$%%T{aG$7CF32:aG,C$%%T{aG$7CF3rc   c                   VP                  . RO4      pVP                  . RO4      pVP                  . RO4      pVP                  \        P                  ! V^^.4      4      pVP                  \        P                  ! V^^.4      4      pVP                  \        P                  ! V^^.4      4      p\        V\        4      '       d   \        V4      p\        W4RVR7      p\        WeRR7       R# 	rK   r   r  r  r   Nr  r  r  r  r  s   &&&    r`   test_valid_mode_real_axes)TestFFTConvolve.test_valid_mode_real_axes  s     JJy!JJ23::ABJJrwwq1a&)*JJrwwq1a&)*::bgghA78dD!!;D!d3F3rc   c                   VP                  . RO4      pVP                  . RO4      pVP                  . R	O4      pVR8X  d   \        W4R4      pM/\        V\        4      '       d   \	        V4      p\        W4RVR7      p\        WeRR7       VR8X  d   \        WCR4      pM/\        V\        4      '       d   \	        V4      p\        WCRVR7      p\        WeRR7       R# )
rK   r  r   r  r  r   N      @      y       @      @r   r  y      @      y      @        y      @      y       @        y     F@      (@y      >@      7@y      H@      @@r  r  s   &&&    r`   test_valid_mode_complex'TestFFTConvolve.test_valid_mode_complex  s    JJ/0JJ?@::AB2:aG,C$%%T{aG$7CF32:aG,C$%%T{aG$7CF3rc   c                   VP                  . RO4      pVP                  . RO4      pVP                  . RO4      pVP                  \        P                  ! V^^.4      4      pVP                  \        P                  ! V^^.4      4      pVP                  \        P                  ! V^^.4      4      p\        V\        4      '       d   \        V4      p\        W4RVR7      p\        WeRR7       \        WCRVR7      p\        WeRR7       R# )	rK   r   r  r  r   Nr  r  r  r  r  s   &&&    r`   test_valid_mode_complex_axes,TestFFTConvolve.test_valid_mode_complex_axes  s    JJ/0JJ?@::ABJJrwwq1a&)*JJrwwq1a&)*::bgghA78dD!!;D!d3F3!d3F3rc   rF   z mapped axes must have same shapec                   VP                  . RO4      pVP                  . RO4      pVP                  . RO4      pVP                  \        P                  ! V^^.4      4      pVP                  \        P                  ! V^^.4      4      pVP                  \        P                  ! V^^.4      4      p\        W#R^R7      p\	        WTRR7       R# r  )rY   r   r  r   r4   r   s   &&    r`   test_valid_mode_ignore_nonaxes.TestFFTConvolve.test_valid_mode_ignore_nonaxes   s     JJy!JJ23::ABJJrwwq1a&)*JJrwwq1a&)*::bgghA78!a0F3rc   r   zassorted error messagesa,bc                    \        \        VP                  V4      VP                  V4      4      VP                  . 4      4       R # N)r5   r   rY   r[   r]   r^   r\   s   &&&&r`   
test_emptyTestFFTConvolve.test_empty/  s1    
 	

1rzz!}5JJrN	
rc   zjnp.pad: pad_width with nd=0c                    VP                  R 4      pVP                  R4      p\        W#4      p\        WBV,          4       R# r   )rY   r   r5   r[   r\   r]   r^   r   s   &&   r`   r{   TestFFTConvolve.test_zero_rank9  s4    JJtJJt!U#rc   c                    VP                  R .4      pVP                  R.4      p\        W#4      p\        VVP                  W#,          VP                  R7      4       R# )r   r   r   N)rY   r   r5   r   r/  s   &&   r`   r   #TestFFTConvolve.test_single_element@  sL    JJvJJv!

15		
:	<rc   c                d   \         P                  P                  R 4      p\         P                  P                  R4      RVP                  R4      ,          ,           p\         P                  P                  R4      RVP                  R4      ,          ,           pVP	                  \         P
                  ! WER4      4      pVP	                  V4      pVP	                  V4      pVR8X  d   \        WxR4      p	M/\        V\        4      '       d   \        V4      p\        WxRVR7      p	\        WRR7       R	# )
    r   )  r   r  r  绽|=r   N)r   r  default_rngrandrY   r   r   r  r  r   r4   
r[   r  r\   r  r  r  r   r]   r^   r   s
   &&&       r`   test_random_data TestFFTConvolve.test_random_dataG  s    ii##D)yy~~d#b3::d+;&;;yy~~d#b3::d+;&;;::bkk$f=>JJtJJt2:aF+C$%%T{aF6CE2rc   c                   \         P                  P                  R 4      p\         P                  P                  R4      RVP                  R4      ,          ,           p\         P                  P                  R4      RVP                  R4      ,          ,           p\         P                  ! WER4      p\         P
                  ! V^^.4      p\         P
                  ! V^^.4      pVP                  \         P
                  ! V^^.4      4      pVP                  V4      pVP                  V4      p\        V\        4      '       d   \        V4      p\        WxRVR7      p	\        WRR7       R# )	r4  r5  r   r6  r   r  r7  r8  N)r   r  r9  r:  r   r  rY   r  r  r   r   r4   r;  s
   &&&       r`   test_random_data_axes%TestFFTConvolve.test_random_data_axesX  s    ii##D)yy~~d#b3::d+;&;;yy~~d#b3::d+;&;;;;t62wwtaV$wwtaV$::bgghA78JJtJJtdD!!;D!T2E2rc   TzTODO: swapaxesr}   c                   RR	rC\         P                  P                  R4      pVP                  \         P                  P                  ! V!  RVP                  V4      ,          ,           4      pVP                  \         P                  P                  ! V!  RVP                  V4      ,          ,           4      p\        WgR4      pVR
,          pVR
,          pVR
,          pVP                  VP                  ^ ^4      ^^4      pVP                  VP                  ^ ^4      ^^4      pVP                  VP                  ^ ^4      ^^4      pVP                  \         P                  ! V. RO4      4      pVP                  \         P                  ! V. RO4      4      pVP                  \         P                  ! V. RO4      4      p\        WgRVR7      p	\        WRRR7       R# ){   r4  r   r   Nr  r7  r   r   )rB  rS   )      )r  r  NNN)rQ   rP   rK   rP   rP   )rQ   rP   rP   rL   rP   )rQ   rP   rK   rL   rP   )r   r  r9  rY   r:  r   moveaxisswapaxesr  r   r4   )
r[   r  r\   a_shaper   r  r]   r^   r   r   s
   &&&       r`   test_random_data_multidim_axes.TestFFTConvolve.test_random_data_multidim_axesk  sh    %iii##D)JJryy~~w/"szz'7J2JJKJJryy~~w/"szz'7J2JJKaF+$%$%23KK

1a(!Q/KK

1a(!Q/;;x00A61= JJrwwq/23JJrwwq/23::bggh@A!T2E>rc   r  r  i  r4  r  '  c                &   \         P                  P                  V4      R \         P                  P                  V4      ,          ,           p\         P                  P                  V4      R \         P                  P                  V4      ,          ,           pVP                  \         P                  ! W4R4      4      pVP                  V4      pVP                  V4      p\        WgR4      p\        WRR7       \        WgRRR7      p\        WRR7       R# )r   r   r7  r   r  Nr   )r   r  r:  rY   r   r   r4   )	r[   r  r\   r  r  r   r]   r^   r   s	   &&&      r`   test_many_sizesTestFFTConvolve.test_many_sizes  s     yy~~a 2		q(9#99yy~~a 2		q(9#99::bkk$f=>JJtJJt!'E2!T2E2rc   r$  c           
        R p\         P                  P                  R4      pVP                  VP	                  V4      4      p\         P
                  \         P                  3 Fu  pWT^d&   VP                  \        P                  ! ^R4      4      pRp\        P                  ! \        VR7      ;_uu_ 4        \        P                  ! WFRRR7       RRR4       Kw  	  R#   + '       g   i     K  ; i)	r  l   [<zn( 皙?z4Use of fft convolution.*|invalid value encountered.*r[  re   r
   r   N)r   r  r9  rY   standard_normalnaninfr   firwinr  warnsRuntimeWarningr   )r[   r\   r  r  sig_nanr!  coeffsrb  s   &&      r`   test_fft_nanTestFFTConvolve.test_fft_nan  s    ii##K0**S0034FFBFF#CCLZZc3 78FHCnC88fUK 98 $
 988s   5CC.r*  r   )*r,  r-  r.  r/  r0  r  r  r  r  r  rw   r  r  r  r  r  r
  r  r  r  r   r#  r&  r1  r,  r{   r   r<  r?  rI  r  r  r   r   r  r  randinttolistrN  rZ  r2  r3  r4  s   @r`   r  r    s-     g&;<[[Vb$A3RD%AB4 C =4 g&;<[[Va!b2$%784 9 =4 [[Vb$A3RD%AB
4 C
4 [[Va!b2$%784 94 [[Vb&*'(!f'(!f'("g')1g')1g'("g')2h')2h	&0 	1'	1' [[Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1G1G  [[Vb&*'(!f'(!f'("g')1g')1g'("g')2h')2h	&0 	14	14$ [[Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1414$ g&;<[[Vb$A3RD%AB6 C =6, g&;<[[VaaS2$%786 9 =6( g&;<[[Vb$A3RD%AB4 C =4, g&;<[[Va!X.4 / =4  [[Vb$A3RD%AB4 C4* [[Va!b2$%784 94$ k*LMg&;<4 = N4 v&;<{+DE[[Ub"XA|b1#Y$GH
 I F =
 k*HI$ J$< [[Vb$A3RD%AB3 C3  [[Va!b2$%783 93$ t,<=[[Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1?1 >?. [[[[U1c]U4	 
		d#++D%;BBD	EF
3F 3 d#L $Lrc   r  c                      \        R 4      h)zFell back to fftconvolve)RuntimeError)r  r  s   *,r`   fftconvolve_errrb    s    
1
22rc   c                     \        V ^R7       UUu. uF   w  r\        W,
          4      ^8  g   K  W3NK"  	  upp# u uppi rQ   )repeat)r   abssizesr]   r^   s   &  r`   gen_oa_shapesri    sA    &uQ7 7tq15zA~ QF7   s   ;;c                    \        V 4      p\        V 4      p\        W4       UUu. uF  w  r4W4,           NK  	  ppp. ROp\        WV4       UUu. uFm  w  rxVR8w  gY   V^ ,          V^,          8  d   V^,          V^,          8  g/   V^ ,          V^,          8  g   KM  V^,          V^,          8  g   Kd  Wx3,           NKo  	  upp# u uppi u uppi )r   r   r  )ri  zipr   )	rh  shapes0shapes1ishapes0ishapes1shapesmodesishapesimodes	   &        r`   gen_oa_shapes_2drt    s    E"GE"G'#%# %7Hh#  % &E3:63I C3IQZ'!*$gaj)@QZ'!*$  *1gaj)@ GH3I C C	%Cs   CA
C
C
3C
c                 b    \        V ^R7       UUu. uF  w  rW8  g   K  W3NK  	  upp# u uppi rd  r   rg  s   &  r`   gen_oa_shapes_eqrv    s9    &uQ7 7tqv QF7   s   
++c                     a  ] tR tRt o ]P
                  P                  4       ]P
                  P                  R]! ]	! ]
! ^^d^4      4      ]	! ]
! ^dR^4      4      ,           4      4      R 4       4       t]P
                  P                  R]! . RO4      4      ]P
                  P                  RRR.4      ]P
                  P                  R. RO4      R	 4       4       4       t]P
                  P                  R
^ ^.4      ]P
                  P                  R]! . RO4      4      ]P
                  P                  R^^.4      ]P
                  P                  R^^.4      ]P
                  P                  RRR.4      ]P
                  P                  R. RO4      R 4       4       4       4       4       4       t]P
                  P                  R]! . RO4      4      ]P
                  P                  RRR.4      R 4       4       t]P
                  P                  R
^ ^.^ ^.^^..4      ]P
                  P                  R]! . RO4      4      ]P
                  P                  R^^.4      ]P
                  P                  R^^.4      ]P
                  P                  RRR.4      R 4       4       4       4       4       t]! RRR7      ]P
                  P                  R. . 3^^.. 3. ^.3.4      R 4       4       tR tR tRtV tR# )TestOAConvolvei  zshape_a_0, shape_b_0r  c                &   \         P                  P                  V4      p\         P                  P                  V4      pVP                  \	        WE4      4      pVP                  V4      pVP                  V4      p\        WE4      p\        Wv4       R # r*  )r   r  r:  rY   r   r   r:   )r[   	shape_a_0	shape_b_0r\   r]   r^   r   r   s   &&&&    r`   test_real_manylens!TestOAConvolve.test_real_manylens  sg     IINN9%IINN9%::k!/0JJqMJJqM!#0rc   
is_complexTFrg   c                <   \         P                  P                  V4      p\         P                  P                  V4      pV'       d[   VR \         P                  P                  V4      ,          ,           pVR \         P                  P                  V4      ,          ,           pVP                  \	        WxVR7      4      p	VP                  V4      pVP                  V4      pVP                  \        P                  R\        4       \        WxVR7      p
\        W4       R# r   rf   r   Nr   r  r:  rY   r   setattrr   _signaltoolsrb  r   r:   )r[   rz  r{  r~  rg   monkeypatchr\   r]   r^   r   r   s   &&&&&&&    r`   test_1d_noaxesTestOAConvolve.test_1d_noaxes  s     IINN9%IINN9%Bryy~~i000ABryy~~i000A::k!T:;JJqMJJqMF//+	-D)!#0rc   r  shape_a_extrashape_b_extrac
           	     l   V.^,          p
V.^,          pW*V&   W;V&   \         P                  P                  ! V
!  p\         P                  P                  ! V!  pV'       dY   VR\         P                  P                  ! V
!  ,          ,           pVR\         P                  P                  ! V!  ,          ,           pV	P                  \	        WWqR7      4      pV	P                  V4      pV	P                  V4      pVP                  \        P                  R\        4       \        WWqR7      p\        W4       R# )rQ   r   rg   r  r   Nr  )r[   r  rz  r{  r  r  r~  rg   r  r\   ax_aax_br]   r^   r   r   s   &&&&&&&&&&      r`   test_1d_axesTestOAConvolve.test_1d_axes  s     q q T
T
IINND!IINND!Bryy~~t,,,ABryy~~t,,,A::k!TEFJJqMJJqMF//+	-D4!#0rc   z0shape_a_0, shape_b_0, shape_a_1, shape_b_1, modec	                <   \         P                  P                  W4      p	\         P                  P                  W$4      p
V'       d[   V	R \         P                  P                  W4      ,          ,           p	V
R \         P                  P                  W$4      ,          ,           p
VP                  \	        WVR7      4      pVP                  V	4      p	VP                  V
4      p
VP                  \        P                  R\        4       \        WVR7      p\        W4       R# r  r  )r[   rz  r{  	shape_a_1	shape_b_1rg   r~  r  r\   r]   r^   r   r   s   &&&&&&&&&    r`   test_2d_noaxesTestOAConvolve.test_2d_noaxes  s     IINN90IINN90Bryy~~i;;;ABryy~~i;;;A::k!T:;JJqMJJqMF//+	-D)!#0rc   c           	        V.^,          pV.^,          pW,V^ ,          &   W=V^ ,          &   WLV^,          &   W]V^,          &   \         P                  P                  ! V!  p\         P                  P                  ! V!  pV	'       dY   VR\         P                  P                  ! V!  ,          ,           pVR\         P                  P                  ! V!  ,          ,           p\        V4      pVP	                  \        WWaR7      4      pVP	                  V4      pVP	                  V4      pV
P                  \        P                  R\        4       \        WWaR7      p\        VV4       R# )rK   r   r  r   N)r   r  r:  r   rY   r   r  r   r  rb  r   r:   )r[   r  rz  r{  r  r  rg   r  r  r~  r  r\   r  r  r]   r^   r   r   s   &&&&&&&&&&&&      r`   test_2d_axesTestOAConvolve.test_2d_axes%  s    q q !T!W!T!W!T!W!T!WIINND!IINND!Bryy~~t,,,ABryy~~t,,,AT{::k!TEFJJqMJJqMF//+	-D4!#x0rc   r   z*ValueError: Target length must be positiverH   r(  c                    \        \        VP                  V4      VP                  V4      4      VP                  . 4      R R7       R# )Fr  N)r5   r   rY   r+  s   &&&&r`   r,  TestOAConvolve.test_emptyH  s3     	rzz!}bjjm4JJrN	
rc   c                    VP                  R 4      pVP                  R4      p\        W#4      p\        WBV,          4       R# r   rY   r   r5   r/  s   &&   r`   r{   TestOAConvolve.test_zero_rankQ  s4    JJtJJtU#rc   c                    VP                  R .4      pVP                  R.4      p\        W#4      p\        WBV,          4       R# r   r  r/  s   &&   r`   r   "TestOAConvolve.test_single_elementW  s8    JJvJJvU#rc   r*  N)r  /   rN   rL   rP   r  )r  r  rN   rL   )r,  r-  r.  r/  r  r  r  r  rv  r  r   r|  ri  r  r  rt  r  r  r1  r,  r{   r   r2  r3  r4  s   @r`   rx  rx    s    [[[[3-d5C3C.D.25dB3G.H/I J	1	 
	1 [[3*+<=?[[\D%=9[[V%>?1 @ :?1" [[VaV,[[3*>:<[[_q!f5[[_q!f5[[\D%=9[[V%>?1 @ : 6 6< -10 [[ :-n=? [[\D%=91 :?1& [[Vq!fq!fq!f%=>[[ :-n=? [[_q!f5[[_q!f5[[\D%=91 : 6 6? ?18 w'ST[[Ub"XA|b1#Y$GH
 I U
$$ $rc   rx  Tz!assertions may differ on backendsr}   convapproachc                      a  ] tR tRt o R tR t]P                  P                  R^.^3^^.3^.^..3.4      R 4       t	R t
RtV tR# )	TestAllFreqConvolvesi^  c                   \         P                  ! ^^4      P                  R4      p\         P                  ! R^ 4      P                  R4      p\        \        RR7      ;_uu_ 4        V! W4RR7       RRR4       R#   + '       g   i     R# ; i)	rP   zOFor 'valid' mode, one must be at least as large as the other in every dimensionr[  r   rf   Nr   r   r   )r   r   r   r   r   r[   r  r\   r]   r^   s   &&&  r`   r   (TestAllFreqConvolves.test_invalid_shapesd  ss    IIaO##F+IIb!$$V,:"FG G G,G G G Gs   &A;;B	c                    \         P                  ! . RO4      p\         P                  ! . RO4      p\        \        RR7      ;_uu_ 4        V! W4^ ^.R7       RRR4       R#   + '       g   i     R# ; i)rM   zVincompatible shapes for in1 and in2: \(5L?, 6L?, 2L?, 1L?\) and \(5L?, 6L?, 3L?, 1L?\)r[  r  N)rM   rN   rQ   rP   )rM   rN   rK   rP   )r   r  r   r   r  s   &&&  r`   test_invalid_shapes_axes-TestAllFreqConvolves.test_invalid_shapes_axesl  sW    HH\"HH\":"67 7 QF+	7 7 7 7s   
A!!A2	r(  c                    \        \        R R7      ;_uu_ 4        V! W4       RRR4       R#   + '       g   i     R# ; i)z/in1 and in2 should have the same dimensionalityr[  Nr   r   )r[   r]   r^   r  r\   s   &&&&&r`   r(  )TestAllFreqConvolves.test_mismatched_dimsu  s7    
 :"-. . . . . .s   	->	c           	        \        \        R R7      ;_uu_ 4        V! ^.^.RR7       RRR4       \        \        RR7      ;_uu_ 4        V! ^.^.. R7       RRR4       \        \        RR7      ;_uu_ 4        V! ^.^.^^.^^..R7       RRR4       \        \        RR7      ;_uu_ 4        V! ^.^.. R
OR7       RRR4       \        \        RR7      ;_uu_ 4        V! ^.^.^.R7       RRR4       \        \        RR7      ;_uu_ 4        V! ^.^.R.R7       RRR4       \        \        R	R7      ;_uu_ 4        V! ^.^.^ ^ .R7       RRR4       R#   + '       g   i     EL9; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)z4acceptable mode flags are 'valid', 'same', or 'full'r[  chipsrf   Nz#when provided, axes cannot be emptyr  z-axes must be a scalar or iterable of integersz$axes exceeds dimensionality of inputzall axes must be unique)r  r|  r  r  r\  r  )r[   r  r\   s   &&&r`   test_invalid_flags'TestAllFreqConvolves.test_invalid_flags  s   :"01 1 !qc01
 :!FH H!qc+H : .2 3 3!qc!Q!Q(893 : .2 3 3!qc(893 :!GI I!qc,I :!GI I!qc-I :!:< <!qcA/< <31 1 1
H H H3 33 3I II I< < <sS   E	E,8F -FF&F9>GE)	,E=	 F	F#	&F6	9G		G	r*  N)r,  r-  r.  r/  r   r  r  r  r  r(  r  r2  r3  r4  s   @r`   r  r  ^  sb     -, [[U !sAh 1#h !saSEl,-	-0 0rc   r  zignore::DeprecationWarningr   c           	         \         P                  P                  R4      P                  V 4      p\         P                  P                  R4      P                  V 4      p\         P                  ! V ! 4       4      '       d   VR,          pVR,          p\	        W#4      p\        V\        W#RR7      4       VP                  V 8X  g   Q hR# )r   y        ?r   r   N)r   r   rL   rL   )r   r  r  iscomplexobjr   r4   r   r   )r   r\   rt   ru   ress   &&   r`   test_convolve_longdtype_inputr    s    
 			"))%0A
		 ''.A	uw	S	S
a
CC!x8999rc   c                     a  ] tR tRt o . RO. RO. RO. RO. RO. RO. RO. RO. RO. RO.
t. RO. R O. R!O. R"O. R#O. R$O. R%O. R&O. R'O. R(O.
t^^.t]! ]P                  ]P                  4      R 4       t]P                  P                  R. R)O4      ]! ]P                  ]P                  4      R 4       4       t]! RRR7      ]P                  P                  R]P$                  ]P&                  ]P(                  ]P*                  ]P,                  RR	.4      ]! ]P                  ]P                  4      R
 4       4       4       t]! RRR7      ]! ]P                  4      R 4       4       t]! RRR7      ]! ]P                  4      R 4       4       t]! RRR7      ]P                  P                  R. R*O4      ]! ]P                  4      R 4       4       4       tRtV tR# )+TestMedFilti  c                f   VP                  V P                  4      pVP                  V P                  4      pVP                  V P                  4      p\        P
                  ! W$4      p\        P                  ! VP                  W!P                  R 7      V4      p\        WS4       \        WVRR7       R# )r   Fr  N)	rY   INOUTKERNEL_SIZEr   medfilt	medfilt2dr   r5   )r[   r\   in_out_kernel_sizer   r:  s   &&     r`   ra   TestMedFilt.test_basic  s}     jj!zz$((#jj!1!12NN3,RZZ::Z>L %0rc   r   c                N   \        V4      '       d   VR9   d   \        P                  ! R4       \        W!4      pVP	                  V P
                  VR7      p\        P                  ! V4      P                  V8X  g   Q h\        P                  ! V4      P                  V8X  g   Q hR# )r   z%torch does not support unisigned intsr   Nr   r   r   )
r7   r  skipgetattrrY   r  r   r  r   r  r[   r   r\   in_typeds   &&& r`   
test_typesTestMedFilt.test_types  s~     B<<E%CCKK?@"::dggU:3~~h'--666)//5888rc   Tzassertions may differr}   float96float128c                J   VR9   dM   \         P                  ! \         P                  4      P                  V8w  d   \        P
                  ! RV 24       \         P                  ! V P                  VR7      p\        P                  ! \        RR7      ;_uu_ 4        \        P                  ! V4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     LU; i  + '       g   i     R# ; i)r  zPlatform does not support r   znot supportedr[  N)r  r  )r   finfo
longdoubler   r  r  arrayr  r   r   r   r  r  r  s   &&& r`   test_invalid_dtypesTestMedFilt.test_invalid_dtypes  s     ,,HHR]]+11U:KK4UG<=88DGG51]]:_==NN8$ > ]]:_==X& >= >= >==s   C>D>D	D"	zobject arraysc                    \        \        \        34      ;_uu_ 4        \        P                  ! R 4       R R R 4       R #   + '       g   i     R # ; ir*  )r   r   	TypeErrorr   r  r'  s   &&r`   	test_noneTestMedFilt.test_none  s/     J	233NN4  4333s	   ?A	z#strides are only writeable in NumPyc                
   VP                  ^
VP                  R7      pVR,          p\        P                  P                  P                  VRR7      p\        \        P                  ! V^4      VP                  R.4      4       R# )rR   r   :rM   rN   N)r        @N)r   )
r   r   r   r  r  r  r4   r   r  rY   )r[   r\   dummyr]   s   &&  r`   test_odd_stridesTestMedFilt.test_odd_strides  sb     		"BJJ	/#JFF  ++Au+=q!,rzz2$/?@rc   rF   z6chunk assignment does not work on jax immutable arraysrH   c           	       a aaaaa \        W!4      pVP                  S P                  VR 7      oVP                  S P                  VR 7      pSP                  VP                  8X  g   Q hVP                  ^ ,          ^,          oVP                  ^,          ^,          oS P
                  ^ ,          ^,          ^,           oS P
                  ^,          ^,          ^,           oVVVVVV 3R lpVP                  V4      p\        ^R7      ;_uu_ 4       p0 RmpV Uu0 uF  qP                  WH4      kK  	  p	p\        V	4       F  p
V
P                  4       w  rpWW3&   K  	  RRR4       \        WS4       R# u upi   + '       g   i     L"; i)r   c                   < V w  rV^ 8X  d.   \        ^ SS,           4      p\        ^ S) 4      p\        ^ S4      pM+\        SS,
          R4      p\        SR4      p\        SR4      pV^ 8X  d.   \        ^ SS,           4      p\        ^ S) 4      p\        ^ S4      pM+\        SS,
          R4      p\        SR4      p\        SR4      pSW63,          p	\        P                  ! V	SP                  4      p
WV3,          WX3# r   N)slicer   r  r  )chunkMNMinMselMoutNinNselNout
chunk_datamedM1N1r  offMoffNr[   s   &          r`   apply2TestMedFilt.test_medfilt2d_parallel.<locals>.apply  s     DAAvArDy)QQ|BIt,T4(RAvArDy)QQ|BIt,T4(R "#(+J"":t/?/?@CTz?D..rc   )max_workersN>   r   r   r   rP   rP   rP   rP   r   )r  rY   r  r  r  r  
zeros_liker   submitr   r  r5   )r[   r   r\   r   r  outputpoolchunksr  futuresfuturedataMsliceNslicer  r  r  r  r  s   f&&           @@@@@r`   test_medfilt2d_parallel#TestMedFilt.test_medfilt2d_parallel  s?    "::dggU:3::dhhe:4 ~~///
 ^^A!#^^A!#"a'!+"a'!+	/ 	/8 x(A..$5F>DEfU{{50fGE 'w/'-}}$f)-v~& 0 / 	) F /.s   	E7E21,E72E77F	r*  N)
r  r  r  r  r  ru     r   r   rS  )
r  r  r  r  r  r   H   M   rl  rr  )
r  r  r  r  r  rS  r     rR  r  )
r  r  r  r  r  *         _   #   )
r  r  r  r  r  rS  ri   r?  r  rr  )
r   a   rT   rl  r   r  r   r   G   r  )
rR  r  rq  r  rl  rU   r  rl  rO  rs  )
rK   !   r  rT  rP   r   rk  7   rW   S   )
r   rE  rS  r   r   r  rO  +   r   rP  )
rU   r   X   r   '   rL   ru  rR  r   r   )
r   r  r  r  r  r  r  r  r   r   )
r   r  r  r  r  r  r  r  r  r   )
r  r  r  r  r  r  ri   ri   rS  r  )
r  r  r  r  r  r  r  r  rR  r  )
r  r  r  r  r  r  rS  r  rR  r  )
r
  r  r  r  r  r  rS  r  r  rP  )
rU   r  r  r  r  r  rS  r   r  rP  )
r   rS  r  r  r  rS  rS  r  r   r  )
r   rU   r
  r  rU   rU   r  r  r  r   )
r   r   rE  r   rL   rL   r  r  rO  r   
r   r   r   r   r   r   r   r   r   r   )r   r   r   )r,  r-  r.  r/  r  r  r  r@   r   r  r  ra   r  r  r  r  r0  r   bool_r   r   clongdoubler   r  r  r  r  r2  r3  r4  s   @r`   r  r    s    
2
1
2
2
1
2
2
0
1
0	
2B 213333321-	/C Q%Kv~~v'7'78	1 9	1 [[W '= > v~~v'7'789 9>9 d+BC[[Wrxxr}}')~~rzz'0*'> ? v~~v'7'78' 9? D
' d?;v~~&! ' <!
 d+PQv~~&A ' RA G [[W&EFv''(6* ) G	6*rc   r  c                   @   a  ] tR tRt o ]! RRR7      R 4       tRtV tR# )
TestWieneriF  r   zXXX: can_cast in cupy <= 13.2rH   c                   VP                  . RO. RO. RO. RO.VP                  R7      pVP                  . R	O. R
O. RO. RO.4      p\        \        P                  ! V4      V^R7       \        \        P                  ! V^R7      V^R7       R# )rM   r   decimal)mysizeN)rM   rN   rL   rK   )rK   rM   rN   rQ   )rQ   rK   rM   rN   )rP   rN   r?  r   )gSXO@gXq	@gq@g?)g]`UUU@gFUUUU@gq@gcq@)gyq@gXq@gXq@gUJ4@)gUUUU?g2k6k@gҷWH@g@_)@)rY   r   r:   r   wiener)r[   r\   rG  rF  s   &&  r`   ra   TestWiener.test_basicI  s    JJ$$$& .0ZZ  9 JJNQQRT U 	"&--"2AqA!&--!"<aKrc   r*  N)r,  r-  r.  r/  r0  ra   r2  r3  r4  s   @r`   r  r  F  s$      f%DE
L F
Lrc   r  c                     a  ] tR tRt o ]! ]P                  ]P                  4      ]! RRR7      R 4       4       t	]
P                  P                  RR)4      ]
P                  P                  RR*4      ]
P                  P                  R	R+4      ]! ]P                  4      R
 4       4       4       4       t]! ]P                  4      R 4       t]
P                  P                  RR,4      ]
P                  P                  RR,4      ]
P                  P                  RR-4      ]! ]P                  4      R 4       4       4       4       t]! RRR7      ]
P                  P                  R]4      ]! ]P                  4      R 4       4       4       t]! RRR7      ]! ]P                  4      ]
P                  P                  R]4      R 4       4       4       t]
P                  P                  R]4      ]
P                  P                  RRR.4      ]! RRR7      ]! ]P                  4      R 4       4       4       4       t]! RRR7      ]
P                  P                  RR..]! ]! R.RR.]4      4      ,           4      ]! ]P                  ]P                  4      R 4       4       4       t]
P                  P                  RR/4      ]
P                  P                  RR04      ]! ]P                  4      R 4       4       4       t]
P                  P                  RR14      ]
P                  P                  RR04      ]! ]P                  4      R 4       4       4       t]
P                  P                  R R24      ]
P                  P                  R!R24      ]! ]P                  4      R" 4       4       4       t]
P                  P                  R#. R3O4      ]
P                  P                  R]]P:                  ]P<                  ]] .4      ]! ]P                  4      R$ 4       4       4       t!]! ]P                  4      R% 4       t"]! ]P                  4      ]
P                  P                  RR&R.4      ]! RRR7      R' 4       4       4       t#R(t$V t%R# )4TestResamplei[  r   z-does not raise with non-int upsampling factorrH   c           
     l   VP                  ^VP                  R7      pRp\        P                  ! R^VR7      p\	        \
        \        P                  W#VR7       \	        \
        \        P                  W#RR7       \	        \
        \        P                  VR^4       \	        \
        \        P                  V^^ 4       \	        \
        \        P                  VR^4       \	        \
        \        P                  V^R4       \	        \
        \        P                  V^^R	R
7       \	        \
        \        P                  V^^R^
R7       \	        \
        \        P                  V^^VP                  ^4      R7       VP                  VP                  ^VP                  R7      R4      p\        P                  ! WSRVR7       VP                  R8X  g   Q h\        P                  ! V^^4      p\        P                  ! V^^RR
7      p\        P                  ! V^^R^ R7      p\        W4       \        Wv4       R# )   r      r\   windowINVALIDdomainyog?r  padtypemean)r(  cvalr  r"  constantN)kaiser       @)rQ   rP   r   )   )r   r   r   
get_windowr   r   resampleresample_polyeyer  r  r5   )	r[   r\   signumwinsig2x_refx0r  s	   &&       r`   ra   TestResample.test_basic]  s    ii2::i.<j&//3CHj&//3IN 	j&"6"6T1Ej&"6"6QBj&"6"6S!Dj&"6"6QDj&"6"6Q2Nj&"6"6Q$2	/j&"6"6Q"&&QR)T wwryyBJJy7@37yyF""" $$S!Q/!!#q!Z@!!#q!ZaH""rc   r"  Nr  r5  c           	        \        V4      pWTP                  8X  d   VP                  MVP                  pVP	                  ^ ^
VRR7      pVP                  V^,          ) R,          4      p\        P                  ! VP                  W4      W#R7      p	\        \        P                  ! WVR7      VP                  V	4      4       VP                  VP                  V^,          ) R,          4      VP                  V^,          ) R,          4      .4      pVP                  W4      p
\        P                  ! W^VR7      pWTP                  8X  d   RMRp\        \        P                  ! W^VR7      VP                  V4      VR7       R	# )
r   F)endpoint      @r!  r+  &.>v!>r   N)r>   r   r   r   linspacecosr   r1  r  r4   realstacksinr   )r[   r  r5  r"  r\   dt_rdt_crt   ru   desired	y_complex	resampledr   s   &&&&&        r`   	test_rfftTestResample.test_rfft  s      ##zz1r||r}}KK2q5K1FFAqD59//"))A"4cIv>(	* HHbffadU3Y'Ac	):;<IIa&	OOI6J	zz)ttOOA6:GGI	rc   c           	         VP                  VP                  R 4      VP                  4      p\        P                  ! V4      pR p\        \        P                  ! W4RR7      \        P                  ! W$RR7      RR7       R# )r  freqr$  timer>  r   N)r  r   r   sp_fftr
   r4   r   r1  )r[   r\   tsigfsigr5  s   &&   r`   test_input_domainTestResample.test_input_domain  sZ     yy37zz$OODf5OODf5	rc   nxnyr   r   c                    \        WC4      pVP                  ^.V,          VR7      p\        P                  ! WR4      p\	        WdP                  ^.V,          VP
                  R7      4       R# )rP   r   N)r  rY   r   r1  r4   r   )r[   rT  rU  r   r\   rt   ru   s   &&&&&  r`   test_dcTestResample.test_dc  sS    
 "JJsRxuJ-OOA"::qcBhagg:>?rc   z padtype not supported by upfirdnr(  c                   VP                  ^4      pVP                  \        P                  P	                  ^ 4      P                  ^4      4      pVP                  VRR7      p\        P                  ! V^^WAR7       \        WE4       R# )rK   Tcopyr"  r(  N)	r  rY   r   r  r  r  r   r2  r5   )r[   r(  r\   impulser"  window_origs   &&&   r`   test_mutable_window TestResample.test_mutable_window  sg    
 ((1+BII11!4::1=>jjdj3Wa6K,rc   c                    VP                  ^
VP                  R7      pVP                  . ROVP                  R7      p\        P                  ! V^^WAR7      pVP
                  VP                  8X  g   Q hR# )rR   r   r\  NrP   rP   rP   )r   r   rY   r   r2  r   )r[   r(  r\   rt   rF  ru   s   &&&   r`   test_output_float32 TestResample.test_output_float32  s\    
 IIb

I+JJy

J3  AqDww"**$$$rc   r   c                    \        W24      pVP                  ^
VR7      p\        P                  ! V^^VR7      pVP                  VP                  8X  g   Q hR# )rR   r   r'  N)r  r   r   r2  r   )r[   r(  r   r\   rt   ru   s   &&&&  r`   test_output_match_dtype$TestResample.test_output_match_dtype  sL     "IIbI&  Aq':ww!''!!!rc   zmethod, ext, padtypeF	polyphaseTc                &	   ^dp. ROpVP                  WTP                  R7      \        V4      ,          pVP                  R4      RVP                  3,          pVP                  ^VP                  ,          V,          V,          4      \        WTR7      ,          p	V EF  p
VP                  WP                  R7      \        V
4      ,          pVP                  ^VP                  ,          V,          V,          4      \        WR7      ,          pVR8X  d   \        P                  ! WRR7      pMV'       d   W8w  dy   \        W4      pW,          pW^,          p\        VV4      pRV,          p^
V,          p\        P                  ! ^V,          ^,           VRR7      pVP                  V4      pRVR	V/pMR	V/p\        P                  ! WV3R
R/VB p\        VP                  ^ ,          4       F  pVVR3,          pVVR3,          p\        VV^ 3,          4      pVRV
,          8  d9   VP!                  V4      pVR9   d   \#        VVRR7       Kc  \#        VVRR7       Ks  VP                  VP                  8X  g   Q h\$        P&                  ! VV4      R,          pVR8  d   K  Q VWZ34       h	  EK  	  \$        P(                  P+                  ^ 4      p\        V4      \$        P,                  ! VP/                  V4      4      ,          p	VP                  V	4      p	V F  p
VP                  WP                  R7      \        V
4      ,          p\$        P0                  ! WV	4      pVR8X  d   \        P                  ! W4      pM\        P                  ! WVVR7      pVP                  VP                  8X  g   Q hVP                  \$        P&                  ! VV4      R,          4      pVR8  d   K  Q V4       h	  VR8X  d   VP                  RR.4      p\        P                  ! V^4      pVP                  . RO4      p\#        VVRR7       VP                  . RO4      p\        P                  ! V^4      p VP                  RR.4      p!\#        V V!RR7       R# R# )r+  r   r  r  r   r
   r  r!  r"  r(  r        ?333333?r   r   gGz?r'  r           -q=N)	r   r  r  c   r+  e            )r        $@g      D@r   )r-  r  )minimummaximumr  r   )r         ?        r   rv  )r  rj  rl  rj  )r   r   r  rY   newaxisrD  pir.   r   r1  r   maxrU  r2  r   r  r  r4   r   corrcoefr  r  cumsumr  interp)"r[   r   extr(  r\   raterates_tor  freqsrt   rate_tot_toy_tos	y_resampsrG  updownmax_ratef_chalf_lenr"  polyargsr   y_toy_resamprM  corrr  r  y1_testy1_truer  y2_testy2_trues"   &&&&&                             r`   test_resample_methods"TestResample.test_resample_methods  s    < IId**I-d;

>*1bjj=9FF1ruu9u$q()D,==G99WJJ97%.HDFF1ruu9u,t34tG7KKE"OOAR@	7?G*A B9D"2t}Hx-C!H}H#]]1x<!+;S2ACFZZ/F (&)WEH )73H"00T = =3;=	 5;;q>*QT{$QT?U1a4[)3=(==.D"88'$TB'$TB::777;;tX6t<D$;=t(==; +1  R ii##A&J399T?33JJqMG99WJJ97%.HD99Ta(D!??16!//D8?A::///::bkk$9$?@D$;$$;   U?VV,-Boob!,Gjj!CDGGW59./Boob!,Gjj"b*GGW59 rc   n_inn_outc                    \         P                  ! V4      pR p\        P                  ! W24      p\        P                  ! W2VR7      p\	        ^V,          VRR7       R# )zTest callable window function. c                <    R\         P                  ! V 4      ,          # )zScale input by 1/2rj  )r   	ones_like)r  s   &r`   r6  0TestResample.test_resample_win_func.<locals>.win1  s    e,,,rc   r!  rm  r   N)r   r  r   r1  r4   )r[   r  r  x_inr6  y0y1s   &&&    r`   test_resample_win_func#TestResample.test_resample_win_func*  sF    
 wwt}	- __T)__T5"bu-rc   c                N   ^
^rC\         P                  ! V4      p\        P                  ! WR4      p\        P                  ! WRW3V,           .R7      w  rx^
\         P                  ! \        V4      4      V,          V,          V,          ,           p	\        Wv4       \        WRR7       R# )zSVerify behavior for parameter `t`.

Note that only `t[0]` and `t[1]` are utilized.
)r  rm  r   N)r   r  r   r1  r   lenr5   r4   )
r[   r  r  t0dtr  r  r  r
  t_refs
   &&&       r`   test__resample_param_t#TestResample.test__resample_param_t:  sv     QBwwt}__T)U<RYYs2w'",t3e;;.rc   n1n0c                  a \        W4      ^,          oR W3 4       pV3R lV 4       w  rE\        P                  ! WB4      p\        P                  ! VR,           V4      p\        WeRR7       \        VP                  VRR7       R# )zDTest behavior at Nyquist frequency to ensure issue #14569 is fixed. c              3   \   "   T F"  p\         P                  ! V4      V,          x  K$  	  R # 5ir*  )r   r   ).0n_s   & r`   	<genexpr>5TestResample.test_resample_nyquist.<locals>.<genexpr>R  s      48Rbiimb  8s   *,c              3      <"   T F>  p\         P                  ! ^\         P                  ,          S,          V,          4      x  K@  	  R# 5i)rQ   N)r   rA  rx  )r  t_f_nys   & r`   r  r  S  s/     ="B"&&RUUT)B.//"s   AA	r   rm  r   N)minr   r1  r4   rB  )	r[   r  r  ttr9  r  y1_ry1_cr  s	   &&&     @r`   test_resample_nyquist"TestResample.test_resample_nyquistL  sg    
 2{a4B84="=r&rBw+u-		2E2rc   down_factorc                v   \         P                  P                  ^4      pRpVP                  V4      P	                  V4      pV\         P
                  \         P                  39   d    VRVP                  V4      ,          ,          p^ V^ &   ^ VR&   \        P                  ! ^RV,          RR7      p\        VRVRR7      RRV1,          p\        V\         P                  ! V4      4      p	\        VP                  WiVP                  4       34      w  rip\        P                  ! V^WR7      p
\!        WR	R
R7       R# )r   rK  r   r  hammingr!  r,  r'  Nr?  gv!>r   r   r   )r   r  r  r  r  r   r   r   rU  r   r   flipmaprY   r[  r2  r4   )r[   r  r   r\   random_stater   rt   rF  yfhcru   s   &&&&       r`   test_poly_vs_filtfilt"TestResample.test_poly_vs_filtfilt[  s   
 yy,,R0t$++E2R\\2==11l((...A !"MM"b;.yAaa4]{]C
 a$ 

QBGGI$67	r  A{>Dt4rc   c           
        R F  p\        ^^(V4       F  pR F  p\        P                  P                  V34      p\        P                  P                  V34      p\        V\        P                  ! V4      RR7      p\        VP                  WVV34      w  rVp\        P                  ! V^W&R7      p\        VRRV1,          V4       K  	  K  	  K  	  R# )rQ   r,  rf   )r  r  r"  N)rQ   rL   )rU   r
  )
r   r   r  r   r  r  rY   r   r2  r4   )	r[   r\   r  rT  nweightsrt   weightsy_gy_ss	   &&       r`   test_correlate1dTestResample.test_correlate1dz  s    DAr4( (H		(("/A ii..{;G%a)9
KC&)"**q36G&HOA ..ad<C#C$K5 !) ) rc   r   c                    \        W!4      pVP                  . ROVR7      p\        P                  ! V^^RR7      p\        P
                  ! V4      ^ 8  g   Q hR# )r   r   smooth)r  r  r(  N)r   rP   rQ   rK   rQ   rP   r   )r  rY   r   r2  r   count_nonzero)r[   r   r\   r  actuals   &&&  r`   test_gh_15620TestResample.test_gh_15620  sW     "zz/uz=%%d)*+,.68 '!+++rc   r*  )Nr  )r  r  )r+  ro  rR   rE  )rP   rQ   rK   rM   r   )r   r   )r
   FN)r   r?  )rK   rL   )rN   rW   )rQ   rK   r   r   )rQ   rE  O   )&r,  r-  r.  r/  r@   r   r1  r2  r1  ra   r  r  r  rJ  rR  rW  r0  padtype_optionsr_  rc  rf  r  r   r  r  r  r  intr   r   r   r  complexr  r  r  r2  r3  r4  s   @r`   r  r  [  sb    v(<(<=v&UV# W >#B [[X'89[[S(+[[U$67v' ( 8 , :. v' ( [[T?3[[T?3[[W&?@v'@ ( A 4 4@ f%GH[[Y8v++,- - 9 I- f%GHv++,[[Y8% 9 - I% [[Y8[[Wy)&<=f%GHv++," - I > 9" f%GH[[	
t}o
	
 v(<(<=M: > IM:^ [[VV,[[Wf-v'. ( . -. [[VW-[[Wf-v'/ ( . ./ [[T<0[[T<0v'
3 ( 1 1
3 [[]K8[[WsBJJeW&UVv++,5 - W 958 v++,
6 -
6 v++,[[Ww	&:;f%GH, I < -,rc   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )TestCSpline1DEvali  c                   \         P                  ! . RO4      p\         P                  ! VP                  ^ ,          4      pV^,          V^ ,          ,
          pVP                  \        P
                  ! V4      4      pVP                  \        V4      R,          4      R,          p\        P                  ! WVWC^ ,          R7      p\        VR,          VP                  V4      ^R7       R# )rP   rs  )dxr9  :NNrR   r  N)	rP   rQ   rK   rL   rK   rQ   rP   rQ   r  )	r   rY   r   r  r   	cspline1dr  cspline1d_evalr:   )r[   r\   ru   rt   r  cjr  y2s   &&      r`   ra   TestCSpline1DEval.test_basic  s    JJ45IIaggaj!qTAaD[ZZ((+,YYs1v}%,""2bqT: 	""T(BJJqM1Erc   c                   \         P                  ! R 4      p\         P                  ! VP                  \         P                  R7      pRpRV,          p\         P
                  ! R\         P                  ,          V,          V,          4      pVP                  \        P                  ! V4      4      pVP                  R.4      p\        P                  ! Wg4      pVP                  VP                  V4      P                  8X  g   Q hR# )r|  r   rs  r  rs   rj  N)r   r   r  r  r   exprx  rY   r   r  r  r   )	r[   r\   rt   ru   Tr   cyxnewynews	   &&       r`   rw   TestCSpline1DEval.test_complex  s    IIcNHHQWWBLL1!GFF4"%%<!#a'( ZZ((+, zz3% $$R.zzRZZ]00000rc   r*  N)r,  r-  r.  r/  ra   rw   r2  r3  r4  s   @r`   r  r    s     	F1 1rc   r  c                      a  ] tR tRt o R tR t]! RRR7      ]! RRR7      ]! ]P                  4      R	 4       4       4       t
R
 tRtV tR# )TestOrderFilti  c                    \         P                  ! VP                  . RO4      VP                  . RO4      ^4      pVP                  . RO4      p\        W#4       R# )rP   NrO   rP   r   rP   )rQ   rK   rQ   )r   order_filterrY   r5   )r[   r\   r  expects   &&  r`   ra   TestOrderFilt.test_basic  s?    $$RZZ	%:BJJy<QSTUI&'rc   c                H   VP                  VP                  ^\        V4      R7      R4      pVP                  ^\        V4      R7      pVP	                  . RO. RO. RO. RO. RO.\        V4      R7      p\        \        P                  ! W#^ 4      V4       VP	                  . RO. R	O. R
O. RO. RO.4      p\        \        P                  ! W#^4      V4       VP	                  . RO. RO. RO. RO. RO.\        V4      R7      p\        \        P                  ! W#^4      V4       R# )   r   NrM   rM   )rl  rl  rl  rl  rl  )rl  rl  r  r|  rl  )rl  r  r=        @rl  )rl  rs        &@r  rl  )r=  r  r.  r  r  )r  r  g      *@      ,@r  )g      0@g      1@g      2@      3@r  )      5@      6@      7@r  r  )r  r  r  r  r  r   rP   rQ   rK   r   )rM   rN   r   r   rK   )rR   rE  rW      r   )r  r   r   r  r  r   r  r   r   r  )r   r   r>   r3  rY   r4   r   r  r[   r\   rt   r%  r   s   &&   r`   test_doc_exampleTestOrderFilt.test_doc_example  s   JJryy+;B+?y@&I!1"!56 ::!!!$!	#
 #2&  
 	++Aq98D ::!%&&&	(
 	++Aq98D :: ! 	"
 #2&  
 	++Aq98Drc   z
dask.arrayzrepeat requires an axisrH   r   zarray-api-compat#292c                *   VP                  VP                  ^4      R4      pVP                  . RO. RO. RO. RO. RO.4      p\        \        P
                  ! V^4      V4       \        \        P                  ! W!P                  R4      ^4      V4       R# )	r  Nr  r  )rP   rN   r   r   rL   )rN   rE  rW   r  r?  )rE  r   r   r     )r   r   r   r  r   r  )r   r   rY   r4   r   r  r  r  )r[   r\   rt   r   s   &&  r`   test_medfilt_order_filter'TestOrderFilt.test_medfilt_order_filter  sz     JJryy}f- ::!	!
 	q!,h7776?A6	
rc   c                   VP                  VP                  ^4      R4      pVP                  . RO. RO. RO.4      pVP                  . RO. RO. RO. R	O. R
O.4      p\        \        P
                  ! W#^ 4      V4       VP                  . RO. RO. RO. RO. RO.4      p\        \        P
                  ! W#^4      V4       R# )r  Nr  )rP   rP   r   )r   rP   r   r   r   r   r   r   r   r   r   )r   r   rP   rQ   rK   )r   rM   rN   r   r   )r   rR   rE  rW   r  r  )r   rP   rQ   rK   rL   )rM   rN   r   r   r?  )rR   rE  rW   r  r  )r  r   r   r  r  )r   r   rY   r4   r   r  r  s   &&   r`   test_order_filter_asymmetric*TestOrderFilt.test_order_filter_asymmetric  s    JJryy}f-
 ::  	"
 	++Aq98D::!!	#
 	++Aq98Drc   r*  N)r,  r-  r.  r/  ra   r  r1  r@   r   r  r  r  r2  r3  r4  s   @r`   r  r    s[     (
$EL |,EFw'=>v~~&
 ' ? G
&E Erc   r  c                     a  ] tR tRt o R tR t]! RRR7      R 4       tR tR	 t	]! RR
R7      R 4       t
]! RR
R7      R 4       tR tR t]! RR
R7      R 4       t]! RR
R7      R 4       tR t]! RRR7      R 4       tR t]! RRR7      R 4       t]! RR
R7      R 4       t]! RR
R7      R 4       t]! RR
R7      R 4       tR t]! RRR7      R 4       tR t]! RRR7      ]P8                  P;                  R^^.. R2O^^.. R3O3]R 7      ]! ] 4      R! 4       4       4       t!]! ] 4      R" 4       t"]! R#R$R7      ]! RR%R7      ]! ] 4      R& 4       4       4       t#]! RR
R7      R' 4       t$]! RR
R7      R( 4       t%R) t&R* t']! R+R,7      ]P8                  P;                  RR-R-.](PR                  ! R-4      .4      ]P8                  P;                  R.R-R-.](PR                  ! R-4      .4      R/ 4       4       4       t*R0t+V t,R1# )4_TestLinearFilteri  c                   \        V\        4      '       d   TM\        P                  ! V4      pVP	                  ^ V^,
          V4      p\        V\        4      '       g   VP                  WA4      pV P                  WB4      # rM  )r  r  mathprodr@  r   convert_dtype)r[   r  r\   	prodshapert   s   &&&  r`   generate_TestLinearFilter.generate  s`    's33E59I	KK9q=)4%%%

1$A!!!((rc   c                   V P                   \        P                   ! R 4      8X  d   \        P                  ! V4      p\        P                  ! VP                  V P                   4      p\        P
                  ! W.RR.R.R..4      pV F   w  rVV P                  VR,          4      VR&   K"  	  V# \        V P                   \        4      '       d   \        W P                   4      MV P                   pVP                  WR7      # )Orefs_okzerosize_okreadonly	writeonly.r   r*  )
r   r   rY   emptyr  nditertyper  strr  )r[   arrr\   r   iterrt   ru   r   s   &&&     r`   r  _TestLinearFilter.convert_dtype  s    ::#&**S/C((399djj1C99cZ)M)B${m46D1R5)# J #4::s33 R,**  ::c://rc   r   z/XXX https://github.com/scipy/scipy/issues/23539rH   c                  a SP                  ^.4      SP                  ^.4      SP                  ^^.4      rCp\        P                  ! \        RR7      ;_uu_ 4        \	        SP                  ^4      W44       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        SP                  . 4      W44       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        VSP                  ^4      V4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        VSP                  . 4      V4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        V3R lW#V3 4       w  r#p\	        W#V4       RRR4       R#   + '       g   i     EL7; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)z"Verify all exceptions are raised. z^Parameter b is notr[  Nz^Parameter a is notz^Parameter's dtypes produced c              3   `   <"   T F#  pSP                  VSP                  R R7      x  K%  	  R# 5i)FrZ  N)r  r   )r  v_r\   s   & r`   r  8_TestLinearFilter.test_invalid_params.<locals>.<genexpr>8  s'     PiryyRYYUy;;is   +.)rY   r  r   r   r   r3  NotImplementedError)r[   r\   r^   r]   rt   s   &f   r`   r   %_TestLinearFilter.test_invalid_params+  sD    **aS/2::qc?BJJ1v4Fa]]:-BCCBFF1Iq$ D]]:-BCCBJJrNA) D]]:-BCCArvvay!$ D]]:-BCCArzz"~q) D]].6UVVPqQiPGA!A! WV DCCCCCCCCCVVVs<   F&$F:,G5G!>G4&F7	:G	G	!G1	4H	c                    V P                  RV4      pV P                  ^R.V4      pV P                  RR.V4      pV P                  . ROV4      p\        \        W4V4      V4       R# )rN   rj  NrN   r         ࿩r   rQ   rL   rN   r   rs  r
  r  r:   r   r[   r\   rt   r^   r]   y_rs   &&    r`   test_rank_1_IIR!_TestLinearFilter.test_rank_1_IIR;  sb    MM$#2w+T{B/  !5r:!'!"2C8rc   c                    V P                  RV4      pV P                  ^^.V4      pV P                  ^.V4      pV P                  . ROV4      p\        \        W4V4      V4       R# )rN   Nr   r   rP   rK   rM   r   r  r#  r$  s   &&    r`   test_rank_1_FIR!_TestLinearFilter.test_rank_1_FIRB  s`    MM$#1vr*sB'  !4b9!'!"2C8rc   z*XXX https://github.com/cupy/cupy/pull/8677c                <   V P                  RV4      pV P                  . ROV4      pV P                  RR.V4      pV P                  ^^.V4      pV P                  . ROV4      pV P                  ^R.V4      p\        W4W%R7      w  r\        W4       \        W4       R# )	rN   rj  ziNr   rP   r   r   r!  )rP   rM   r?  r  r   r  r
  r  r   r:   
r[   r\   rt   r^   r]   r.  r%  zf_rru   zfs
   &&        r`   test_rank_1_IIR_init_cond+_TestLinearFilter.test_rank_1_IIR_init_condI  s    MM$#z2.T{B/A+  !6;!!2s)R0a'!!)!"+rc   c                :   V P                  RV4      pV P                  . ROV4      pV P                  ^.V4      pV P                  ^^.V4      pV P                  . ROV4      pV P                  ^	^.V4      p\        W4W%R7      w  r\        W4       \        W4       R# )rN   r-  Nr   rb  )rP   rQ   rK   rN   r?  r  r1  r2  s
   &&        r`   test_rank_1_FIR_init_cond+_TestLinearFilter.test_rank_1_FIR_init_condU  s    MM$#y"-sB'A+  !5r:!!1a&"-a'!!)!"+rc   c                    V P                  RV4      pV P                  ^R.V4      pV P                  RR.V4      pV P                  . RO. RO. RO. RO.V4      p\        W4V^ R7      p\        WV4       R# )rL   rj  r  NrL   rK   r   r   rQ   rL   rN   rL   rQ   r1  )r[   r\   rt   r^   r]   y_r2_a0ru   s   &&     r`   test_rank_2_IIR_axis_0(_TestLinearFilter.test_rank_2_IIR_axis_0a  su    MM&"%2w+Sz2.$$iI&/&1246A!!$!'-rc   c                    V P                  RV4      pV P                  ^R.V4      pV P                  RR.V4      pV P                  . RO. RO. RO. R	O.V4      p\        W4V^R7      p\        WV4       R# )
rL   rj  r  Nr;  r   r   rQ   r   rN   r]  rN   rW   r0  rW   r  ir  r1  )r[   r\   rt   r^   r]   y_r2_a1ru   s   &&     r`   test_rank_2_IIR_axis_1(_TestLinearFilter.test_rank_2_IIR_axis_1j  su    MM&"%2w+Sz2.$$i])&+,.0A!!$!'-rc   c                   V P                  RV4      pV P                  ^R.V4      pV P                  RR.V4      pV P                  \        P                  ! R4      V4      pV P                  . RO. R	O. R
O. RO.V4      pV P                  . ROV4      R\        P                  3,          p\        W4V^VR7      w  r\        Wh4       \        W4       R# )rL   rj  r  r  r.  Nr;  r   )rL   rP   rb  )r   r   )r  r  )r  r  )rK  rM  ii)r
  r  r   r  rw  r   r:   )
r[   r\   rt   r^   r]   r.  	y_r2_a0_1r3  ru   r4  s
   &&        r`    test_rank_2_IIR_axis_0_init_cond2_TestLinearFilter.test_rank_2_IIR_axis_0_init_conds  s    MM&"%2w+Sz2.3&&	:}+(-.02	!!"5r:1bjj=IaaB/!)/!"+rc   c                z   V P                  RV4      pV P                  ^R.V4      pV P                  RR.V4      pV P                  \        P                  ! R4      V4      pV P                  . RO. RO. RO. RO.V4      pV P                  . R	O.V4      p\	        W4V^ VR7      w  r\        Wh4       \        W4       R# )
rL   rj  rJ  Nr;  r   rP   rK   )rP   rK   rM   )rM   rK   rP   )rS  rS  )r
  r  r   r  r   r:   )
r[   r\   rt   r^   r]   r.  	y_r2_a0_0r3  ru   r4  s
   &&        r`    test_rank_2_IIR_axis_1_init_cond2_TestLinearFilter.test_rank_2_IIR_axis_1_init_cond  s    MM&"%2w+Sz2.4&&	9(19(>?AC	!!?"3R8aaB/!)/!"+rc   c                f  a	a
 V P                  RV4      pV P                  ^R.V4      pV P                  RR.V4      p\        \        WCV34      w  o	o
p\	        VP
                  4       FE  p\        W4W&4      p\        P                  ! V	V
3R lWe4      p\        WqP                  V4      4       KG  	  R# )rL   rj  c                    < \        SSV 4      # r*  r   wr  r  s   &r`   <lambda>3_TestLinearFilter.test_rank_3_IIR.<locals>.<lambda>      dA0Frc   NrL   rK   rQ   r   r
  r  r  rC   r   ndimr   r   apply_along_axisr:   rY   r[   r\   rt   r^   r]   x_npr  ru   r%  r  r  s   &&       @@r`   test_rank_3_IIR!_TestLinearFilter.test_rank_3_IIR  s    MM)R(2w+Sz2.01)<dD!&&MDa&A%%&FSC%aC9 "rc   
inaccuratec                  aaa V P                  RV4      pV P                  ^R.V4      pV P                  RR.V4      p\        VP                  4       F  p\	        VP
                  4      p^We&   V P                  VP                  V4      V4      pV P                  ^.V4      p\        W4W%V4      w  r\        \        W4V34      w  oooVVV3R lpVVV3R lp\        P                  ! W\        V4      4      p\        P                  ! W\        V4      4      p\        WP                  V4      4       \        WP                  V4      4       K  	  R# )rL   rj  c                 0   < \        SSV SR 7      ^ ,          # r-  rY  r[  r  r  zi1_nps   &r`   lf08_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf0      tT18;;rc   c                 0   < \        SSV SR 7      ^,          # rj  rY  rk  s   &r`   lf18_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf1  ro  rc   Nr_  r   )r
  r  r   ra  r  r  r  r   r  rC   r   rb  r:   rY   )r[   r\   rt   r^   r]   r  zi_shaper.  zi1ru   r4  rm  rq  r%  r3  r  r  rl  s   &&             @@@r`   test_rank_3_IIR_init_cond+_TestLinearFilter.test_rank_3_IIR_init_cond  s   MM)R(2w+Sz2.!&&MDAGG}HHN##BGGH$5r:B$$aS"-CA!2.EA!$%6s!DD$<<%%c1B11EFC&&s2CA2FGD%aC9%b**T*:; "rc   c                d  a	a
 V P                  RV4      pV P                  . ROV4      pV P                  ^.V4      p\        \        WCV34      w  o	o
p\	        VP
                  4       FE  p\        W4W&4      p\        P                  ! V	V
3R lWe4      p\        WqP                  V4      4       KG  	  R# )rL   c                    < \        SSV 4      # r*  rY  rZ  s   &r`   r\  3_TestLinearFilter.test_rank_3_FIR.<locals>.<lambda>  r^  rc   Nr_  r/  r`  rc  s   &&       @@r`   test_rank_3_FIR!_TestLinearFilter.test_rank_3_FIR  s    MM)R(z2.sB'01)<dD!&&MDa&A%%&FSC%aC9 "rc   c                  aaa V P                  RV4      pV P                  . ROV4      pV P                  ^.V4      p\        \        W#V34      w  poo\	        VP
                  4       F  p\        VP                  4      p^Wv&   V P                  VP                  V4      V4      pV P                  ^^.V4      p	\        V	4      o\        W4W&V4      w  r\        \        W4V	34      w  oooVVV3R lpVVV3R lp\        P                  ! WV4      p\        P                  ! WV4      p\        WP                  V4      4       \        WP                  V4      4       K  	  R# )rL   c                 0   < \        SSV SR 7      ^ ,          # rj  rY  rk  s   &r`   rm  8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf0  ro  rc   c                 0   < \        SSV SR 7      ^,          # rj  rY  rk  s   &r`   rq  8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf1  ro  rc   Nr_  r/  )r
  r  r  rC   r   ra  r  r  r  r   r   rb  r:   rY   )r[   r\   rt   r^   r]   rd  r  rs  r.  rt  ru   r4  rm  rq  r%  r3  r  r  rl  s   &&              @@@r`   test_rank_3_FIR_init_cond+_TestLinearFilter.test_rank_3_FIR_init_cond  s)   MM)R(z2.sB'01)<dD!&&MDAGG}HHN##BGGH$5r:B$$aVR0C&s+FA!2.EA!$%6s!DD$<<%%c6C&&s$7D%aC9%b**T*:; "rc   c                   V P                  RV4      p\        P                  ! ^RRR7      w  r4V P                  W14      pV P                  WA4      pVP                  ^ ,          ^,
          pV P                  VP                  ^^V34      V4      pV P                  VP                  ^^V34      V4      p\        W4W&R7      w  r\        W4W'R7      w  r\        W4       \        W4       \        \        \        W4VRVP                  V4      4       R# )rL   rQ  bar  r-  N)rL   rM   r  r   )
r
  r   r   r  r  r  r   r:   r   r   )r[   r\   rt   r^   r]   zi_sizezi_fullzi_singy_fullzf_fully_singzf_sings   &&          r`   test_zi_pseudobroadcast)_TestLinearFilter.test_zi_pseudobroadcast  s    MM*b)}}QD1q%q%''!*q. $$RWWaG_%=rB$$RWWaG_%=rB!!6!!6!&1!'3 	j'1B8HIrc   c                    V P                  ^V4      pV P                  . ROV4      pV P                  ^.V4      pV P                  . ROV4      p\        W4^ ,          V4      p\        We4       R# )rN   Nr/  )r   rP   rQ   rQ   rQ   rQ   r1  )r[   r\   rt   r^   r]   r%  ru   s   &&     r`   test_scalar_a_TestLinearFilter.test_scalar_a  se     MM!R z2.sB'  !3R8AtQ!!)rc   c                   V P                  VP                  RVP                  R7      V4      pV P                  VP                  ^VP                  R7      V4      pV P                  VP	                  . RO4      V4      p\
        P                  ! R\
        P                  R7      pVR;;,          ^,          uu&   VR;;,          ^,          uu&   VP	                  V4      pV P                  WQ4      pV P                  VP                  RVP                  R7      V4      p\
        P                  ! R\
        P                  R7      p^..^..^...VR	&   VP	                  V4      pV P                  Wq4      p\        W4VR
V4      w  r\        W4       \        W4       \        W4^ ,          VR
V4      w  r\        W4       \        W4       R# )rK   r   N)rK   rQ   rM   )rP   r   r   )rK   rP   rL   )rP   r  r  )rQ   r  r  )rK   rQ   rL   )r  r  :NrL   Nr   )r  r  r   r  rY   r   r   r:   )r[   r\   rt   r^   r]   r.  zf_expected
y_expectedy_iirzf_iiry_firzf_firs   &&          r`   test_zi_some_singleton_dims-_TestLinearFilter.test_zi_some_singleton_dims  sp   
 rxx	xBBGrwwqw92>rzz)4b9WWYbhh/
7q
7qZZ^'(()288)LbQXXirxx8
"#use4
8ZZ
+
''
7
  aR0!%4!&6  Q4B3!%4!&6rc   c           	         V P                  W4      pV P                  W&4      pV P                  W64      pV P                  WV4      p\        \        \        WW4V4       R # r*  )r  r   r   r   )r[   r^   r]   rt   r  r.  r\   s   &&&&&&&r`   base_bad_size_zi"_TestLinearFilter.base_bad_size_zi  sR    q%q%q%'j'1"=rc   zcupy does not raisec                   VP                  ^4      pV P                  ^.^.VR^.V4       V P                  ^^.^.VR^ ^.V4       V P                  ^^.^.VR^ ..V4       V P                  ^^.^.VR. ROV4       V P                  . RO^.VR^ ..V4       V P                  . RO^.VR. ROV4       V P                  ^.^^.VR^ ^.V4       V P                  ^.^^.VR^ ..V4       V P                  ^.^^.VR. ROV4       V P                  . RO^^.VR^ .V4       V P                  . RO^^.VR^ .^..V4       V P                  . RO^^.VR. ROV4       V P                  . RO^^.VR. ROV4       V P                  ^^.. ROVR^ .V4       V P                  ^^.. ROVR^ .^..V4       V P                  ^^.. ROVR. ROV4       V P                  ^^.. ROVR. ROV4       \        P                   ! ^4      P                  R4      pVP	                  V4      pV P                  ^.^.V^ ^ .V4       V P                  ^^.^.V^ . ROV4       V P                  ^^.^.V^ . RO..V4       V P                  ^^.^.V^ ^ .^.^..V4       V P                  ^^.^.V^ ^ ^..V4       V P                  ^^.^.V^ . RO.V4       V P                  . RO^.V^ . ROV4       V P                  . RO^.V^ . RO. RO..V4       V P                  . RO^.V^ ^ ^.^^.^^..V4       V P                  . RO^.V^ ^ ^.^^..V4       V P                  . RO^.V^ . RO. R	O.V4       V P                  ^.^^.V^ . ROV4       V P                  ^.^^.V^ . RO..V4       V P                  ^.^^.V^ ^ .^.^..V4       V P                  ^.^^.V^ ^ ^..V4       V P                  ^.^^.V^ . RO.V4       V P                  ^.. ROV^ . ROV4       V P                  ^.. ROV^ . RO. RO..V4       V P                  ^.. ROV^ ^ ^.^^.^^..V4       V P                  ^.. ROV^ ^ ^.^^..V4       V P                  ^.. ROV^ . RO. R	O.V4       V P                  . RO^^.V^ . ROV4       V P                  . RO^^.V^ . RO. RO..V4       V P                  . RO^^.V^ ^ ^.^^.^^..V4       V P                  . RO^^.V^ ^ ^.^^..V4       V P                  . RO^^.V^ . RO. R	O.V4       V P                  ^.^.V^^ .V4       V P                  ^^.^.V^. ROV4       V P                  ^^.^.V^^ .^.^.^...V4       V P                  ^^.^.V^. RO.V4       V P                  ^^.^.V^^ .^.^..V4       V P                  ^^.^.V^^ .^.^.^.^..V4       V P                  . RO^.V^. R
OV4       V P                  . RO^.V^^ ^.^^.^^.^^...V4       V P                  . RO^.V^. RO. R	O.V4       V P                  . RO^.V^^ ^.^^.^^..V4       V P                  . RO^.V^^ ^.^^.^^.^^.^^	..V4       V P                  ^.^^.V^. ROV4       V P                  ^.^^.V^^ .^.^.^...V4       V P                  ^.^^.V^. RO.V4       V P                  ^.^^.V^^ .^.^..V4       V P                  ^.^^.V^^ .^.^.^.^..V4       V P                  ^.. ROV^. R
OV4       V P                  ^.. ROV^^ ^.^^.^^.^^...V4       V P                  ^.. ROV^. RO. R	O.V4       V P                  ^.. ROV^^ ^.^^.^^..V4       V P                  ^.. ROV^^ ^.^^.^^.^^.^^	..V4       V P                  . RO^^.V^. R
OV4       V P                  . RO^^.V^^ ^.^^.^^.^^...V4       V P                  . RO^^.V^. RO. R	O.V4       V P                  . RO^^.V^^ ^.^^.^^..V4       V P                  . RO^^.V^^ ^.^^.^^.^^.^^	..V4       R# )rN   Nr   r   rP   rQ   rb  r   rP   rQ   rK   r;  )r   rP   rQ   rK   rL   rM   rh   )rL   rM   rN   r   )r   rP   rQ   rK   rL   rM   rN   r   )r   r  r   r   rY   )r[   r\   r  r  s   &&  r`   test_bad_size_zi"_TestLinearFilter.test_bad_size_zi  sQ
    YYq\qcA3BR8q!fqc2rAq62>q!fqc2rQC5"=q!fqc2r9bAi!b"seR@i!b"iDqcAq62rAq62>qcAq62rQC5"=qcAq62r9bAi!QR!bAi!QR1#sRHi!QRBGi!QRrJq!fiR!bAq!fiR1#sRHq!fiRBGq!fiRrJ YYr]""5)ZZ^qcA3AsB7 	q!fqc2q)R@q!fqc2qI;-Dq!fqc2qA3aS/2Fq!fqc2qAq6(B?q!fqc2q<."Ei!b!5GLi!b!y)6L5MrRi!b!q!fq!fq!f5MrRi!b!q!fq!f5ErJi!b!lL5QSUVqcAq62q)R@qcAq62qI;-DqcAq62qA3aS/2FqcAq62qAq6(B?qcAq62q<."Eqc9b!5GLqc9b!y)6L5MrRqc9b!q!fq!fq!f5MrRqc9b!q!fq!f5ErJqc9b!lL5QSUVi!QQ8JBOi!QQ)Y9O8PRTUi!QQ!Q!Q!Q8PRTUi!QQ!Q!Q8H"Mi!QQ+\:B	@ 	qcA3AsB7q!fqc2q,Cq!fqc2qQC!qcA33G2H"Mq!fqc2q<."Eq!fqc2qA3aS/2Fq!fqc2qA3aS1#s2KRPi!b!5MrRi!b!!"AAAA?@"	Fi!b!lL5QSUVi!b!q!fq!fq!f5MrRi!b! !1v1v1v1v1vF	L 	qcAq62q,CqcAq62qQC!qcA33G2H"MqcAq62q<."EqcAq62qA3aS/2FqcAq62qA3aS1#s2KRPqc9b!5MrRqc9b!!"AAAA?@"	Fqc9b!lL5QSUVqc9b!q!fq!fq!f5MrRqc9b!q!f !fq!fq!fq!f6>?A	C 	i!QQ8PRTUi!QQ!"AAAA?@"	Fi!QQ+\:B	@i!QQ!Q!Q!Q8PRTUi!QQ !1v1v1v1v1vF	Lrc   c                   V P                  RV4      pV P                  ^.V4      pV P                  ^.V4      pV P                  . V4      p\        WCW%R7      w  rg\        Wb4       VP                  \        V P                  \        4      '       d   \        WP                  4      MV P                  8X  g   Q h\        V4      ^ 8X  g   Q hR# )rM   r-  N)rM   )	r
  r  r   r:   r   r  r  r  r=   )r[   r\   rt   r]   r^   r.  ru   r4  s   &&      r`   test_empty_zi_TestLinearFilter.test_empty_zi  s    MM$#sB'sB'B'a'!!'xx)$**c:: $B

3!%- 	- - r{arc   rF   z jax does not support inplace opsr]   )idsc           	     <   \        V4      '       d8   \        V\        \        ,          4      '       d   \        P
                  ! R 4       V P                  ^V4      pV P                  . ROV4      pV P                  W4      p\        V4      ^,
          p\        V4      ^,
          p\        V4      '       d	   We,           M
\        WV4      p\        WAW0P                  Wr4      R7      w  r\        WAVP                  V4      VP                  V4      4      p
\        W4       R# )z0cupy does not supoprt scalar filter coefficientsr-  N)rj  r  rQ  )r9   r  r  r  r  r  r
  r  r=   ry  r   r#   r  r:   )r[   r]   r\   rt   r^   r  r  Kr  zi_1zi_2s   &&&        r`   test_lfiltic_TestLinearFilter.test_lfiltic  s     2;;:au55KKJKMM!R |R0q%AJNAJNR[[AEc!i1}}Q';<qRWWR["''!*5!$-rc   c           	        \        \        \        ^^.. ^ ^ .^ ^.4       \        \        \        ^^.^ ^.^ ^ .^ ^.4       \        \        \        ^^.^.^..^ ^ .^ ^.4       \        \        \        ^.^..^.^ ^ .^ ^.4       R# rP   N)r   r   r#   r   s   &r`   test_lfiltic_bad_coeffs)_TestLinearFilter.test_lfiltic_bad_coeffs  s     	j'Aq621v1vFj'Aq6Aq6Aq6Aq6Jj'Aq6QC!:1v1vNj'QC!:sQFQFKrc   array_api_strictz-int64 and float64 cannot be promoted togetherzjax dtype defaults differc                d   V P                  ^.V4      pV P                  ^.V4      p\        W2VP                  R^ .4      4      p\        W2VP                  R^ .4      4      p\        W2VP                  RR.4      4      p\        WE4       V P                  \
        8X  d   / MRR/p\        WF3/ VB  R# )rP   r  TFr  N)r  r#   rY   r5   r   object)r[   r\   r]   r^   r.  r  r  check_dtype_args   &&      r`   test_lfiltic_bad_zi%_TestLinearFilter.test_lfiltic_bad_zi  s     sB'sB'Q2::r1g./qRZZa12qRZZu67! $

f 4"=%:P4O4rc   c                :   V P                  ^.V4      pV P                  . ROV4      pV P                  ^^.V4      pV P                  ^H.V4      pV P                  ^J.V4      pV P                  ^R.V4      p\        W2WTR7      w  r\        W4       \        W4       R# )rP   r-  Nr/  r  r   r:   
r[   r\   r]   r^   r.  rt   yezferu   r4  s
   &&        r`   test_short_x_FIR"_TestLinearFilter.test_short_x_FIR  s     sB'z2.A+tR(b)  !S2.a'!!(!"*rc   c                <   V P                  ^^.V4      pV P                  . ROV4      pV P                  ^^.V4      pV P                  ^H.V4      pV P                  ^J.V4      pV P                  RR.V4      p\        W2WTR7      w  r\        W4       \        W4       R# )rP   r-  Nr/  ir  r  r  s
   &&        r`   test_short_x_IIR"_TestLinearFilter.test_short_x_IIR  s     1vr*z2.A+tR(b)  #sR0a'!!(!"*rc   c                ,   V P                  RV4      pV P                  ^R.V4      p\        W1R7      pV P                  RR.V4      p\        WQR7      pV P                  . ROV4      p\        W5V4      p\	        W4       \        W44       \        WV4       R# )rN   r   rj  Nr   r   r!  r"  r
  r  r<   r   r:   r5   	r[   r\   rt   r^   b0r]   a0r%  y_fs	   &&       r`   test_do_not_modify_a_b_IIR,_TestLinearFilter.test_do_not_modify_a_b_IIR  s    MM$#2w+QT{B/Q  !5r:aA!#+rc   c                *   V P                  RV4      pV P                  . ROV4      p\        W1R7      pV P                  ^.V4      p\        WQR7      pV P                  . ROV4      p\        W5V4      p\	        W4       \        W44       \        WV4       R# )rN   r   Nr   r  )r   rj  rP   rQ   rK   r  r  r  s	   &&       r`   test_do_not_modify_a_b_FIR,_TestLinearFilter.test_do_not_modify_a_b_FIR  s    MM$#y"-QsB'Q  !6;aA!#+rc   Tr$  r  r^   c                    \         P                  P                  ^
4      pVP                  V4      p\	        \        VP                  R.4      VP                  R.4      V4      \        W!V4      4       R# )rR   r  N)r   r  r  rY   r4   r   )r[   r]   r^   r\   r  s   &&&& r`   test_scalar_input#_TestLinearFilter.test_scalar_input  sX     yyr"zz$BJJu%rzz3%'8$?A$	
rc   r*  N)rP   rj        ?)rQ   rP   rK   )-r,  r-  r.  r/  r
  r  r0  r   r&  r*  r5  r8  r?  rG  rO  rU  re  r1  ru  rz  r  r  r  r  r  r  r  r  r  r  r  r@   r#   r  r  r  r  r  r  r  r   r  r  r2  r3  r4  s   @r`   r  r    s    )0 f%VW X99 f%QR	, S	, f%QR	, S	,.. f%QR, S, f%QR, S,: vl3< 4<*	: vl3< 4<. f%QRJ SJ* f%QR* S* f%QR7 S7:> f%:;gL <gLR  k*LM[[S1qc<QC"K!$  &w.  & N.$ wL  L #R k*EFw5   G
5 f%QR+ S+ f%QR+ S+

 d#[[S3rxx}"=>[[S3rxx}"=>
 ? ? $
rc   r  c                       ] tR tRtRtRtR# )TestLinearFilterFloat32i  r   r*  Nr,  r-  r.  r/  r   r2  r*  rc   r`   r  r        Erc   r  c                       ] tR tRtRtRtR# )TestLinearFilterFloat64i	  r   r*  Nr  r*  rc   r`   r  r  	  r  rc   r  r$  c                   :    ] tR tRt]P
                  ! R4      tRtR# )TestLinearFilterFloatExtendedi	  rG  r*  Nr,  r-  r.  r/  r   r   r2  r*  rc   r`   r  r  	      HHSMErc   r  c                       ] tR tRtRtRtR# )TestLinearFilterComplex64i	  r   r*  Nr  r*  rc   r`   r  r  	  s    Erc   r  c                       ] tR tRtRtRtR# )TestLinearFilterComplex128i	  r   r*  Nr  r*  rc   r`   r  r  	  s    Erc   r  c                   :    ] tR tRt]P
                  ! R4      tRtR# )TestLinearFilterComplexExtendedi	  Gr*  Nr  r*  rc   r`   r  r  	  r  rc   r  c                 *   \        \        R 4      '       d,   R\        P                  9   d   \        P                  ! R4       \        \        \        R.R.. RO4       \        \        \        R.R.. RO4       \        \        \        R.R.. RO4       R# )abiflagsr   z'test is flaky when run with python3-dbgr  N)r  Nr|  r  r|  r  )hasattrsysr  r  r  r   r  r   r   s   &r`   test_lfilter_bad_objectr  	  sf     sJC3<<$7=>)WsecU4DE)WsedV_E)Wtfse_Erc   c                 @    \        \        \        ^^.^^.. RO4       R# )rQ   N)rP   rQ   rK   rL   rM   )r   r  r   r   s   &r`   !test_lfilter_notimplemented_inputr  $	  s     %w1!ukJrc   r  rF   zfails all aroundrH   c                      a  ] tR tRt o R tR tR t]! RRR7      R 4       tR	 t	R
 t
R tR t]! RRR7      R 4       t]! RRR7      R 4       t]! RRR7      R 4       tRtV tR# )TestCorrelateReali*	  c                    VP                  ^ ^^VR7      pVP                  ^^^VR7      pVP                  . ROVR7      pW4V3# )r   r   )r   rQ   rM   r   rK   )r@  rY   r[   r  r\   r]   r^   r%  s   &&&   r`   _setup_rank1TestCorrelateReal._setup_rank13	  sJ    KK1arK*KK1arK*jjj3Syrc   c                    ^p \         P                  ! V4      p\        VR4      '       d1   \        R\         P                  ! VP
                  4      ,          4      pV#   \         d     T# i ; i)rN   
resolutionr!  )r   r  r  r  log10r  	Exception)r[   res_dtr  dt_infos   &&  r`   equal_tolerance!TestCorrelateReal.equal_tolerance:	  se    	hhv&Gw--d288G,>,>#??@   		s   AA A-,A-c                    V\         P                  8X  d    V P                  \         P                  4      # V P                  V4      # r*  )r   r  r  r   )r[   r  s   &&r`   equal_tolerance_fft%TestCorrelateReal.equal_tolerance_fftE	  s6     R]]"''

33''//rc   Tz	order='F'r}   c                \   \        W!4      pV P                  W4      w  r4p\        W4R R7      p\        W4RR7      p\        WVV P	                  VP
                  4      R7       \        WWV P                  VP
                  4      R7       VP
                  V8X  g   Q hVP
                  V8X  g   Q hR# )r
   r   r   r  N)r  _setup_rank3r   r:   r  r   r  )r[   r  r\   r]   r^   r%  y_ffty_directs   &&&     r`   test_methodTestCorrelateReal.test_methodM	  s    R_%%b-	c!u-Q(3!#*.*B*B5;;*O	R!#*.*>*>x~~*N	Q{{b   ~~###rc   c                   \        V4      '       d   VR9   d   \        P                  ! R4       \        V\        4      '       d   \        W!4      MTpV P                  W4      w  r4p\        W4R4      p\        WeR,          4       VP                  V8X  g   Q h\        WCR4      p\        WbP                  VR,          4      4       VP                  V8X  g   Q hR# )r   $torch does not support unsigned intsr   :rP   rL   NNr  )r7   r  r  r  r  r  r  r   r:   r   r  r[   r  r\   r]   r^   r%  ru   s   &&&    r`   test_rank1_valid"TestCorrelateReal.test_rank1_valid\	  s    B<<B"@@;;=> *2s 3 3WR_%%b-	caG$!!X.ww"}} aG$!!WWSX%67ww"}}rc   c                *   \        V4      '       d   VR9   d   \        P                  ! R4       \        V\        4      '       d   \        W!4      MTpV P                  W4      w  r4p\        W4R4      p\        WeRR 4       VP                  V8X  g   Q hR# )r   r  re   Nr  r   
r7   r  r  r  r  r  r  r   r:   r   r  s   &&&    r`   test_rank1_same!TestCorrelateReal.test_rank1_samek	  su    B<<B"@@;;=> *2s 3 3WR_%%b-	caF#!!"X.ww"}}rc   c                $   \        V4      '       d   VR9   d   \        P                  ! R4       \        V\        4      '       d   \        W!4      MTpV P                  W4      w  r4p\        W4R4      p\        We4       VP                  V8X  g   Q hR# )r   r  r   Nr  r  r  s   &&&    r`   test_rank1_full!TestCorrelateReal.test_rank1_fullv	  so    B<<B"@@;;=> *2s 3 3WR_%%b-	caF#!!)ww"}}rc   c                   \         P                  ! ^ ^'^(4      P                  RRR7      P                  V4      p\         P                  ! ^ ^^4      P                  RRR7      P                  V4      p\         P                  ! . RO. RO. RO. R	O. R
O. RO.. RO. RO. RO. RO. RO. RO.. RO. RO. RO. RO. RO. RO..\         P
                  R7      P                  V4      pW4V3# )r   F)orderr   )rQ   rL   rM   r   )rl  g      g@g     @g     @     @@g     @g     }@g      d@)g      G@g      {@g     @g     @g     @     @g      @g     p@)     `@g      @g     @g     @     @g     @g     @@g     s@)g     @p@g     @g     0@g     @g     p@g     (@g     `@g     t@)g     @i@g     @     (@g      @g      @g     ؘ@g     @@g     b@)g     \@g     u@g     @g      @g      @g     @g     r@g      C@)r  g      y@g     ,@     @g     @g     $@g     @@g     Pr@)r  g     @g     @g     @g     @g     ԩ@g     @g     }@)g     Pt@g      @g     R@g     @g     (@g     K@g      @g     @)g     ؁@g     @g     f@g     @g     (@g     }@g     (@g     @)g      {@r  g     4@r  g     @g     ܧ@g     @     l@)g      n@g     @g     @g     @g     @g     @g     @r  )r  g     j@g     @g     @g     Д@g     p@g     z@g     `@)g     U@g     @~@g     (@r  g     P@g     @g      @g     i@)g     g@g     @r  g     X@g     @g     @g     Џ@g     @k@)g     @s@g     p@g     x@g     h@g     @g     @g     ؐ@r  )r  g     @r  g      @g     @g     Ȗ@g     @g     S@)g     _@g      v@g     @g     @g     @g     p@g     @m@rl  )r   r@  r   r  r  r   r  s   &&&   r`   r  TestCorrelateReal._setup_rank3	  s    KK2r"**9C*@GGKK2r"**9C*@GG hhHIKKJFH JKLLLIK GIKLIEGH( **)&( '-fRj) 	, Syrc   c           	     ^   \        V\        4      '       d   \        W!4      MTpV P                  W4      w  r4p\	        W4R 4      p\        WeR,          4       VP                  V8X  g   Q h\	        WCR 4      p\        WeR,          RRR1RRR1RRR13,          4       VP                  V8X  g   Q hR# )r   N):rP   rQ   N:rQ   rL   N:rK   rM   Nr   )r  r  r  r  r   r:   r   r  s   &&&    r`   test_rank3_valid"TestCorrelateReal.test_rank3_valid	  s     *2s 3 3WR_%%b-	caG$!!%78ww"}} aG$!!%7"ddDbD8H%IJww"}}rc   c                    \        V\        4      '       d   \        W!4      MTpV P                  W4      w  r4p\	        W4R 4      p\        We^ R1^R1^R13,          4       VP                  V8X  g   Q hR# )re   Nr   r\  r  r  r  r  r   r4   r   r  s   &&&    r`   test_rank3_same!TestCorrelateReal.test_rank3_same	  si     *2s 3 3WR_%%b-	caF#qtQrT1R4/01ww"}}rc   c                    \        V\        4      '       d   \        W!4      MTpV P                  W4      w  r4p\	        W44      p\        We4       VP                  V8X  g   Q hR # r*  r  r  s   &&&    r`   test_rank3_all TestCorrelateReal.test_rank3_all	  sN     *2s 3 3WR_%%b-	caOww"}}rc   r*  N)r,  r-  r.  r/  r  r  r  r0  r  r  r  r  r  r  r  r   r2  r3  r4  s   @r`   r  r  *	  s     	0 d;7$ 8$		< d;7
 8
 d;7 8 d;7 8rc   r  c                      a  ] tR tRt o ]! RR7      R 4       t]! RR7      R 4       t]! RR7      R 4       t]! RR.R7      ]! R	R
R7      R 4       4       tRt	V t
R# )TestCorrelatei	  Tr$  c                
   \         P                  ! ^^4      P                  R4      p\         P                  ! R^ 4      P                  R4      p\        \        \
        .W#3O5/ RR/B  \        \        \
        .W23O5/ RR/B  R# r   )r   r   r   r   r   r   r   s   &&  r`   r   !TestCorrelate.test_invalid_shapes	  so     IIaO##F+IIb!$$V,j)JqfJ8IJj)JqfJ8IJrc   c           	        . ROp. ROp\        \        \        W#RR7       \        \        \        W#RRR7       \        \        \        W#RRR7       \        \        \        W#RR	R7       \        \        \        W#R
R	R7       R# r   r   r   r   r   s   &&  r`   r   !TestCorrelate.test_invalid_params	  sZ    j)Q?j)QuMj)QhOj)QwOj)QwOrc   c                .   \        \        \        ^.^RR7       \        \        \        ^^.RR7       \        \        \        ^.^RR7       \        \        \        ^^.RR7       \        \        \        ^.^..4       \        \        \        ^.^4       R# r&  r'  r'  s   &&r`   r(  "TestCorrelate.test_mismatched_dims	  sp     	j)aS!HEj)QHEj)aS!EBj)QEBj)aSA3%8j)aS!4rc   r   )cpu_only
exceptionsrF   zdtype differsrH   c                   VP                  . RO4      pVP                  ^^.4      p\        \        W#RR7      VP                  . RO4      4       VP                  . RO4      pVP                  . RO4      p\        \        W#RR7      VP                  . R	O4      4       \        \        W#RR7      VP                  . R
O4      4       \        \        W#RR7      VP                  ^ .4      4       R# )rP   re   rf   r   r   NrO   )rM   r  rV   r   )r   rU   rV   )rN   r   rU   rV   rW   )rY   r4   r   r   s   &&  r`   test_numpy_fastpath!TestCorrelate.test_numpy_fastpath	  s     JJy!JJ1v	!V4bjj6MNJJy!JJy!	!V4bjj6NO	!V4bjjAT6UV	!W5rzz2$7GHrc   r*  N)r,  r-  r.  r/  r0  r   r   r(  r.  r2  r3  r4  s   @r`   r#  r#  	  s      d#
K $
K d#P $P d#5 $5 t9k/:	I ; :	Irc   r#  rg   behindF
input_sizer  r  rK  )marksi'  c                    \         P                  P                  ^ 4      pVP                  V4      p\	        V^
,          4      pV'       d,   \         P
                  ! VP                  V4      V.4      pV) pMWVR pTp\        WWV R7      p	\        VP                  VP                  V R7      p
\         P                  ! V	4      p\        W,          V4       V
P                  V	P                  8X  g   Q hR# )r   Nrf   )r   r  r  rR  r  concatenater   r   r   argmaxr5   r  )rg   r0  r1  r\   r  in1offsetin2r   correlationlags	lag_indexs   &&&&        r`   test_correlation_lagsr<  	  s     ))


"C


j
)CBFnnc11&93?@7 'lC40KCHHchhT:D		+&IDOX.::*****rc   c                     \         P                  ! \        R R7      ;_uu_ 4        \        ^d^dRR7       RRR4       R#   + '       g   i     R# ; i)zMode asdfgh is invalidr[  asdfghrf   N)r  r   r   r   r   s   &r`   "test_correlation_lags_invalid_moder?  
  s0    	z)A	B	Bc1 
C	B	B	Bs	   >A	dt_namer   r   c                      a  ] tR tRt o R tR tR tR tR tR t	R t
]! R	R
R7      R 4       t]! RR7      R 4       tRtV tR# )TestCorrelateComplexi
  c                    \        V4      '       d&   V\        P                  8X  d   \        P                  p^@^^ ^/VP	                  V4      P
                  ,          p\        ^V,          ^,          4      # )rR  )r6   r   r  cdoubler  bitsr  )r[   r  r\   precs   &&& r`   r  TestCorrelateComplex.decimal 
  sT    B<<B"..0B BArxx|0011t8a<  rc   c           	     |   \         P                  P                  ^	4      p\         P                  P                  ^
4      P	                  V4      pVRVP                  ^
4      P	                  V4      ,          ,          p\         P                  P                  ^4      P	                  V4      pVRVP                  ^4      P	                  V4      ,          ,          p\        VP                  VP                  VR7      \        VP                  VP                  VR7      ,           P	                  V4      pVR\        VP                  VP                  VR7      ) \        VP                  VP                  VR7      ,           ,          ,          pVP                  V4      VP                  V4      VP                  V4      rvpWVV3# )r?  r   rf   )
r   r  r9  r  r  rR  r   rB  imagrY   )r[   r  rg   r\   r  r]   r^   r%  s   &&&&    r`   r  !TestCorrelateComplex._setup_rank1(
  sD   ii##A&IIOOB&&r*	R#%%b)00444IIOOA%%b)	R#%%a(//333d3d345;VBZ 	riT::qvvqvvD9: ; 	; JJqM2::a="**S/cSyrc   c                p   V P                  VR V4      w  r4p\        W!4      p\        W4R 4      p\        WuV P	                  Wb4      R7       VP
                  V8X  g   Q h\        WCR 4      p\        WrP                  VP                  V4      4      V P	                  Wb4      R7       VP
                  V8X  g   Q hR# )r   r  N)r  r  r   r:   r  r   conjr  r[   r@  r\   r]   r^   r%  r  ru   s   &&&     r`   r  %TestCorrelateComplex.test_rank1_valid7
  s    %%gw;	cR!aG$!!$,,r2FGww"}} aG$!!WWRWWS\%:*.,,r*>	@ww"}}rc   c                    V P                  VR V4      w  r4p\        W!4      p\        W4R 4      p\        WuV P	                  Wb4      R7       VP
                  V8X  g   Q hR# )re   r  Nr  r  r   r:   r  r   rM  s   &&&     r`   r  $TestCorrelateComplex.test_rank1_sameD
  sS    %%gvr:	cR!aF#!!$,,r2FGww"}}rc   c                    V P                  VR V4      w  r4p\        W!4      p\        W4R 4      p\        WuV P	                  Wb4      R7       VP
                  V8X  g   Q hR# )r   r  NrP  rM  s   &&&     r`   r  $TestCorrelateComplex.test_rank1_fullL
  sS    %%gvr:	cR!aF#!!$,,r2FGww"}}rc   c                    \        W!4      pVP                  . ROVR7      pVP                  . ROVR7      p\        WE4      p\        WbP                  . RO4      RRR7       R# )	rl  r   r   Fr  Nr   rp   r  y      ?      @y       @      @y      @      @y      @      @)r         $@             <@            6@      y      0@      y       @      )r  rY   r   r4   )r[   r@  r\   r  r   kru   s   &&&    r`   test_swap_full#TestCorrelateComplex.test_swap_fullS
  sU    R!JJ/rJ:JJ7rJBaOzzNO5	
rc   c                    VP                  . RO4      pVP                  . RO4      p\        W4RR7      p\        WRP                  . RO4      4       R# )rl  re   rf   NrU  rV  )rW  rX  rY  )rY   r   r4   )r[   r@  r\   r   rZ  ru   s   &&&   r`   test_swap_same#TestCorrelateComplex.test_swap_same]
  s>    JJ/0JJ78a(::&ABCrc   r   notimplementederrorrH   c                r   \        V4      '       d#   \        R 8w  d   \        P                  ! RR7       \        P
                  P                  ^
^^4      P                  V4      pVR\        P
                  P                  ^
^^4      P                  V4      ,          ,          p\        P
                  P                  ^^^4      P                  V4      pVR\        P
                  P                  ^^^4      P                  V4      ,          ,          p\        VP                  VP                  4      \        VP                  VP                  4      ,           P                  V4      pVR\        VP                  VP                  4      ) \        VP                  VP                  4      ,           ,          ,          pVP                  V4      VP                  V4      VP                  V4      rTp\        W!4      p\        W4R4      p\        WuV P                  Wb4      ^,
          R7       VP                  V8X  g   Q hR# )cpuz)error tolerances exceeded with JAX on gpurH   r   r   r  N)r8   rB   r  xfailr   r  r  r  r   rB  rI  rY   r  r:   r  r   rM  s   &&&     r`   
test_rank3TestCorrelateComplex.test_rank3c
  s   "::,%/LL KLIIOOB1%,,W5	R"))//"a+227;;;IIOOAq!$++G4	R"))//!Q*11':::(166166*+,2F7O 	ri//)AFFAFF2KKLLJJqM2::a="**S/cR!aF#!!$,,r2F2JKww"}}rc   Tr$  c           	        \         P                  ! \         P                  P                  4       4      P	                  V4      pVR \         P                  ! \         P                  P                  4       4      P	                  V4      ,          ,          p\         P                  ! \         P                  P                  4       4      P	                  V4      pVR \         P                  ! \         P                  P                  4       4      P	                  V4      ,          ,          p\        W!4      p\        VP                  VP                  4      \        VP                  VP                  4      ,           P	                  V4      pVR \         P                  ! \        VP                  VP                  4      ) \        VP                  VP                  4      ,           4      ,          ,          pVP                  V4      VP                  V4      rC\        W4R4      p\        WvV P                  WR4      ^,
          R7       VP                  V8X  g   Q h\        \        ^.R.4      \         P                  ! \        ^R4      4      RR7       \        \        R.R.4      \         P                  ! \        RR4      4      RR7       \        \        R.^.4      \         P                  ! \        R^4      4      RR7       R# )r   r   r  rs   F)check_shape              @N)r   r  r  r  r  r  r   rB  rI  rY   r:   r  r   r5   )r[   r@  r\   r]   r^   r  r%  ru   s   &&&     r`   
test_rank0TestCorrelateComplex.test_rank0w
  s   HHRYY__&'..w7	R"((299??,-44W===HHRYY__&'..w7	R"((299??,-44W===R!(166166*+,2F2J 	rBHHi77&qvvqvv67 8 8 	8 zz!}bjjm1aF#!!$,,r2F2JKww"}}	1#t,bjj1b9I.J$)	+	2$-rzz)B:K/L$)	+	2$,bjj2q9I.J$)	+rc   r*  N)r,  r-  r.  r/  r  r  r  r  r  r[  r^  r0  rd  ri  r2  r3  r4  s   @r`   rB  rB  
  s^     !
D f%:; <& d#+ $+rc   rB  c                     a  ] tR tRt o ]! ]P                  4      R 4       t]! RR7      ]! ]P                  4      R 4       4       t
]! RR7      ]! ]P                  4      R 4       4       t]! ]P                  4      R 4       tRtV tR	# )
TestCorrelate2di
  c           	        \         P                  ! ^4      p\         P                  ! . RO4      pR F  pVP                  V4      VP                  V4      re\         P                  ! W#VR7      p\        \        P                  ! WVVR7      VP                  V4      4       VR8X  g   Kv  \         P                  ! W2VR7      p\        \        P                  ! WeVR7      VP                  V4      4       K  	  R# rM   r   rf   Nr  r  )r   r   r  rY   r   r;   r   )r[   r\   r]   r^   rg   a_xpb_xpnp_corr_results   &&      r`    test_consistency_correlate_funcs0TestCorrelate2d.test_consistency_correlate_funcs
  s     IIaLHH]#-DA

1$\\!T:N 0 0$ G "

> :< w!#a!>#F$4$4Td$K$&JJ~$>@ .rc   Tr$  c                   \         P                  ! ^4      p\         P                  ! . RO4      pR F  p\        \         P                  ! \
        P                  ! V.V.VR7      4      \
        P                  ! W#VR7      4       VR8X  g   K[  \        \         P                  ! \
        P                  ! V.V.VR7      4      \
        P                  ! W2VR7      4       K  	  R# rn  )r   r   r  r;   r  r   r   r   )r[   r\   r]   r^   rg   s   &&   r`   "test_consistency_correlate_funcs_22TestCorrelate2d.test_consistency_correlate_funcs_2
  s     IIaLHH]#-D

6+=+=qcA3CG,I !J & 0 0D AC
 w#BJJv/A/A1#sGK0M %N$*$4$4Q$EG .rc   c                2   \         P                  ! ^^4      P                  R4      p\         P                  ! R^ 4      P                  R4      p\        \        \
        P                  .W#3O5/ RR/B  \        \        \
        P                  .W23O5/ RR/B  R# r   )r   r   r   r   r   r   r   r   s   &&  r`   r   #TestCorrelate2d.test_invalid_shapes
  s{     IIaO##F+IIb!$$V,j&"4"4SvS&'ARSj&"4"4SvS&'ARSrc   c                
   \        \        P                  ! VP                  ^..4      VP                  R..4      4      VP                  R.4      RRR7       \        \        P                  ! VP                  R..4      VP                  R..4      4      VP                  R.4      RRR7       \        \        P                  ! VP                  R..4      VP                  ^..4      4      VP                  R.4      RRR7       R# )	rP   rs   F)rg  r  rh  y              (@N              y      @        )r5   r   r   rY   r'  s   &&r`   test_complex_input"TestCorrelate2d.test_complex_input
  s    **2::se+<bjj2$>PQ

C5)u%	Q**2::tf+=rzzB4&?QR

D6*5	R**2::tf+=rzzA3%?PQ

C5)u%	Qrc   r*  N)r,  r-  r.  r/  r@   r   r   rr  r0  r   ru  r   r{  r2  r3  r4  s   @r`   rl  rl  
  s     v''(@ )@  d#v))*G + $G  d#v))*
T + $
T v))*Q +Qrc   rl  c                      a  ] tR tRt o ]! RRR7      R 4       tR tR t]P                  P                  RR	R
.4      R 4       tRtV tR# )TestLFilterZIi
  Tzlist inputs are numpy specificr}   c                b    VP                  R R.4      p\        . RO. RO4      p\        W24       R# )r  Nr  r  rl  r|  r  r  rj  rY   r   r:   )r[   r\   zi_expectedr.  s   &&  r`   test_array_likeTestLFilterZI.test_array_like
  s)    jj#t-)9:!"2rc   c                    VP                  . RO4      pVP                  . RO4      pVP                  RR.4      p\        W24      p\        WT4       R# )r  r  Nr  r  r  r  )r[   r\   r]   r^   r  r.  s   &&    r`   ra   TestLFilterZI.test_basic
  sC    JJ'(JJ'jj#t-!"2rc   c                    VP                  . RO4      pVP                  . RO4      p\        W#4      p\        ^V,          ^V,          4      p\        WTRR7       R# )r|  rm  r8  N)r|  r   rM   )r  rP   r   )rY   r   r4   )r[   r\   r^   r]   rt  zi2s   &&    r`   test_scale_invariance#TestLFilterZI.test_scale_invariance
  sH     JJ{#JJ{#1ac"u-rc   r   r   r   c                    \        W!4      pVP                  ^VR7      pVP                  ^.VR7      p\        P                  ! W44      P
                  V8X  g   Q hR# r   r   N)r  r  rY   r   r   r   )r[   r   r\   r^   r]   s   &&&  r`   r  TestLFilterZI.test_types
  sQ    "HHaH&JJs%J(  &,,555rc   r*  N)r,  r-  r.  r/  r0  r  ra   r  r  r  r  r  r2  r3  r4  s   @r`   r~  r~  
  sV      d+KL3 M3
3. [[Wy)&<=6 >6rc   r~  c                      a  ] tR tRt o RtRR lt]! RRR7      R 4       t]! RRR7      R	 4       t]! RRR7      R
 4       t	]! RRR7      R 4       t
]! RRR7      R 4       t]! RRR7      R 4       tRtV tR# )TestFiltFilti
  tfNc	           
        V P                   R 8X  d;   \        V!  w  rVP                  V	4      VP                  V
4      r\        WW#WEWg4      # V P                   R8X  d(   \	        V!  pVP                  V4      p\        WW4V4      # R# )r  sosN)filtfilt_kindr   rY   r   r   r&   )r[   zpkrt   r  r(  padlenr   irlenr\   r^   r]   r  s   &&&&&&&&&   r`   r   TestFiltFilt.filtfilt
  s{    %3<DA::a="**Q-qA!7FJJ5(3-C**S/Cstf== )rc   r   negative stridesrH   c                   \        V4      '       d)   V P                  R 8X  d   \        P                  ! RR7       \	        VP                  . R	O4      VP                  . R	O4      4      pV P                  W!P                  ^4      VR7      p\        V4      '       d   RMRp\        W1P                  ^VP                  R7      VR7       R# )
r  sosfilt works in-placerH   r   g&.1>g6{=r   r   Nr  )r8   r  r  r  r(   rY   r   r   r9   r4   r   )r[   r\   r  r   r   s   &&   r`   ra   TestFiltFilt.test_basic   s    "::$,,5KK78RZZ
+RZZ
-CDmmC22m6bkkdxYYrY<4Hrc   c                   \        V4      '       d)   V P                  R 8X  d   \        P                  ! RR7       RpVP	                  ^ RV^,           4      pVP                  ^
\        P                  ,          V,          4      pVP                  R\        P                  ,          V,          4      pWE,           p\        ^VP                  R4      RR7      p\        P                  ! V^,          4      P                  4       pRp	\        \        P                  ! \        P                  ! V	4      \        P                  ! V4      ,          4      4      p
V P                  WvWR	7      p\        P                  ! W,
          4      P                  4       pVR
8  g   Q hVP                  \        P                   ! WDV,           .4      4      pV P                  W}V
^VR7      pVP"                  VP"                  8X  g   Q h\        P                  ! W,
          4      P                  4       pVR
8  g   Q hV P                  W}P$                  V
^ VR7      p\'        WP$                  4       R# )r  r  rH     r        ?r  r  r   )r  r\   r   r  r  r\   Ni  )r8   r  r  r  r@  rD  r   rx  r   rY   rf  ry  r  ceillogr   vstackr  r  r5   )r[   r\   r~  r  xlowxhighrt   r  repsr  ru   errx2dy2dy2dts   &&              r`   	test_sineTestFiltFilt.test_sine
  s   "::$,,5KK78KK3q)vvebeema'(w*+LQ

5)%8FF3q6N  sbffQi/01 MM#M2ffQX""$Tzz jjD,#789mmCQQ2m>yyCII%%%ffSZ $$&Tzz }}S%%b}AVV$rc   c           
        \        V4      '       d)   V P                  R 8X  d   \        P                  ! RR7       \        P
                  ! R4      P                  ^
^^4      pVP                  V4      p\        ^VP                  R4      RR7      pV P                  W2^ ^ VR7      pV P                  W1P                  \        P                  ! V^ ^4      4      ^ ^VR7      p\        WAP                  \        P                  ! V^ ^4      4      4       V P                  W1P                  \        P                  ! V^ ^4      4      ^ ^VR7      p\        WAP                  \        P                  ! V^ ^4      4      4       R# )	r  r  rH   r  r  r  r  Ng     @)r8   r  r  r  r   r   r   rY   r   r   rG  r5   )r[   r\   rt   r  r  r  r  s   &&     r`   	test_axisTestFiltFilt.test_axis0  s#   "::$,,5KK78 II()11"b"=JJqMQ

5)%8]]3!!];]]BKK1a01!!  
 	JJr{{2q!'<=>]]BKK1a01!!  
 	JJr{{2q!'<=>rc   Tz-python scalars in array_namespace are np-onlyr}   c           	        V P                   R 8w  d   R# \        P                  ! VP                  RR.4      ^VP	                  ^
VP
                  R7      4      p\        W!P	                  ^
VP
                  R7      RRR7       R# )r  Nrj  r   r   rC  )r  r   r   rY   r   r   r4   )r[   r\   r   s   && r`   test_acoeffTestFiltFilt.test_acoeffC  sg     %ooJJBx !RYYrY%D
 	YYrY<5uUrc   z_filtfilt_gust is np-onlyc           
        V P                   R 8w  d   \        P                  ! R4       VP                  RR.4      pVP                  R.4      pVP                  RR
.4      p\	        W4V4      w  rVp\        V^ ,          RV^ ,          ,          RV^,          ,          ,           4       \        V^ ,          RV^ ,          ,          RV^,          ,          ,           4       \        VVP                  V^ ,          RV^ ,          ,          ,           RV^ ,          ,          ,           RV^,          ,          ,           RV^ ,          ,          V^ ,          ,           RV^ ,          ,          ,           RV^,          ,          ,           .4      4       R	# )r  $gust only implemented for TF systemsr  r|  rj  rk  rQ        ?r  Nr!  )r  r  r  rY   r/   r4   )r[   r\   rt   r^   r]   ru   z1z2s   &&      r`   test_gust_simpleTestFiltFilt.test_gust_simpleN  s!   %KK>? JJSz"JJuJJT{#"1+	r1s1Q4x#ad(231s1Q4x#ad(23

BqEDAJ$6ad$BU1Q4Z$O$(AJA$6qt$Cd1Q4i$O$Q R	
rc   c                    V P                   R 8w  d   \        P                  ! R4       VP                  ^4      pRpRp\	        W4VRR7      pW4,          ^,          V,          p\        WV4       R# )r  r  r  r|  gustr   N)r  r  r  r   r   r4   )r[   r\   rt   r^   r]   ru   r   s   &&     r`   test_gust_scalarsTestFiltFilt.test_gust_scalars_  s]     %KK>? IIbMQ1V,C!8a<$rc   r*  )r   oddNr  NN)r,  r-  r.  r/  r  r   r0  ra   r  r  r  r  r  r2  r3  r4  s   @r`   r  r  
  s     M	> g&89I :I g&89#% :#%J g&89? :?$ dLNVNV d+FG
 H
  dLN%N%rc   r  c                   ^   a  ] tR tRt o Rt]! RRR7      ]! RRR7      R 4       4       tR	tV tR
# )TestSOSFiltFiltio  r  rF   r  rH   r   r  c                   \         P                  P                  ^ 4      P                  R4      pVP	                  V4      p\        ^^4       Fs  p\        P                  ! VRRR7      p\        V!  w  rV\        V!  p\        VP                  WVV34      w  rVp\        WVV4      p\        Wr4      p	\        WRRV 2R7       Ku  	  R# )	z1Test equivalence between sosfiltfilt and filtfiltr  ffffff?r  r  rm  zorder=)r   err_msgN)r   r  r  r  rY   r   r   r   r   r   r  r   r&   r4   )
r[   r\   rt   r  r  r^   r]   r  ru   y_soss
   &&        r`   test_equivalence TestSOSFiltFilt.test_equivalences  s     II!!!$**40JJqM1a[E--tE:C3<DA3-CBJJs4IA#q!A'EA5F5':JK !rc   r*  N)	r,  r-  r.  r/  r  r0  r  r2  r3  r4  s   @r`   r  r  o  s7     Mk*BCg&89L : DLrc   r  c                   R p\        \        V4      \        V 4      4      ^,
          p\        W4      p\        P                  ! VRV P                  4       V,          W$) R P                  4       V,          34      p\        W6WV3RRRRRRR7	      pVw  rrpV^ 8  d   \        R	V 24      hVRV pWR p\        WVRRR1,          VR
7      ^ ,          RRR1,          p\        WWR
7      ^ ,          pVW3# )a9  
An alternative implementation of filtfilt with Gustafsson edges.

This function computes the same result as
`scipy.signal._signaltools._filtfilt_gust`, but only 1-d arrays
are accepted.  The problem is solved using `fmin` from `scipy.optimize`.
`_filtfilt_gust` is significantly faster than this implementation.
c                   \        \        V4      \        V4      4      ^,
          pV RV pWR p\        WW5R7      ^ ,          p\        WVRRR1,          VR7      ^ ,          RRR1,          p\        WVRRR1,          VR7      ^ ,          RRR1,          p	\        WWR7      ^ ,          p
\        P                  ! W,
          ^,          4      pV# )z-Objective function used in filtfilt_gust_opt.Nr-  r   )ry  r  r   r   sum)icsr^   r]   rt   mz0fz0br  y_fby_by_bfvalues   &&&&        r`   filtfilt_gust_opt_func1filtfilt_gust_opt.<locals>.filtfilt_gust_opt_func  s    AA!#"1g"gaA&q)qS2Y3/24R48aAddG,Q/"5qS)!,a'(rc   Nr7  rm  rK  TF)r  xtolftolmaxfunmaxiterfull_outputdispz3minimization failed in filtfilt_gust_opt: warnflag=r-  r   )	ry  r  r   r   r4  r)  r   ra  r   )r^   r]   rt   r  r  r.  r  r  optfoptniterfuncallswarnflagr  r  r  ru   s   &&&              r`   filtfilt_gust_optr    s    	CFCFaA	A	B
..!BQ%**,r/1RS6;;=+;<
=C(Q1I5"0F ,2(Cu!|A(L
 	
 bq'C
b'C !$B$C
(
+DbD
1Cc"1%Ac;rc   c           	      z   \         P                  P                  ^{4      pVP                  V4      p\	        WWcRVR7      p\        WWcVR7      w  rp
\         P                  ! WcR4      pVP                  RR p\         P                  ! V4      p\        \        V4      \        V 4      4      ^,
          p\         P                  ! W3,           4      p\         P                  ! W3,           4      p\        V Uu. uF  p\        V4      NK  	  up!   F#  p\        WVV,          4      w  VV&   VV&   VV&   K%  	  \         P                  ! VRV4      p\         P                  ! VRV4      p\         P                  ! VRV4      p\        W}RRR7       \        WRRR7       \        WRRR7       \        V
VRRR7       R# u upi )	rB  r  )r  r   r  )r  r  Nr   r>  rC  r   )r   r  r9  rR  r   r/   rG  r  
empty_likery  r  r  r   r   r  r4   )r^   r]   r  r  r  r  rt   ru   ygzg1zg2xx	out_shaper&  r  zo1zo2r   indxs   &&&&&              r`   check_filtfilt_gustr    sl   
))


$CE"A 	qF%@A "!EBLBS
 
Qb	!B"I	r	BCFCFaA
((9t#
$C
((9t#
$CI6Iq%(I67):1D)J&4#d)SY 8	RT	"B
++c2t
$C
++c2t
$CA40BD1C4d3C4d3 7s   5F8c           	         R EFy  pR	 F  p^^RrTp\         P                  P                  ! V3V,          !  p\         P                  P                  ! V3V,          !  p\        WgVR7      pW8X  g   Q h\        WgVRR7      w  rV	R
9   g   Q h\	        V
\
        4      '       g   Q hRV
P                  4       9   d   RV
P                  4       9   d   K  Q h	  ^
pR FV  p\        \         V4      '       g   K  \         P                  ! W;R7      pVP                  4       p\        WgVR7      R8X  d   KV  Q h	  \         P                  ! R.\         P                  R7      pVP                  4       p\        WgVR7      R8X  d   EKz  Q h	  R# )r   r   rf   T)rg   measurer
   r   Nr   re   r   )rP   rQ   >   r
   r   
complex256
complex192l         @ )r   r  r  r   r  dictkeysr  r  r[  r  r   )r\   rg   ra  r  rZ  true_methodrt   rF  r   
method_trytimesnot_fft_conv_supps   &           r`   test_choose_conv_methodr    sE    *D !1h+A		1$+/A		1$+/A'48F((( 21dD QJ!2222eT****EJJL(X-EEE  !=r,--GGA7FFH)!T:hFFF	 "> HHeWBHH-FFH!!T2h>>>/ *rc   c                     R Fa  p^
pR FV  p\        \        V4      '       g   K  \        P                  ! W#R7      pVP                  4       p\	        WEVR7      R8X  d   KV  Q h	  Kc  	  R# )r   r   rf   r   Nr  r  )r  r   r  r[  r   )r\   rg   r  r  rt   rF  s   &     r`   test_choose_conv_method_2r    sX    )!=r,--GGA7FFH)!T:hFFF	 "> *rc   c           	      $   \         P                  ! ^R^xRRR7      w  rpRp\        P                  ! \        P                  ! V4      4      p\        \        P                  ! \        P                  ! V4      \        P                  ! V4      ,          4      4      p\        WV4      w  rxRV3 FB  p	^V,          p
\        WxV
3^ V	4       \        ^4       F  p. ROpWV&   \        WxWV	4       K  	  KD  	  ^V,          ^2,
          p\        WxV3^ V4       R# )rK   {Gz?gffffff?r  r  r7  Nr   )r   ellipr   ry  rf  r  r  r  r   r  r   )r\   rv   prZ  r  r  approx_impulse_lenr^   r]   r  
signal_lenr  r  lengths   &             r`   test_filtfilt_gustr    s     ll1dC>GA! C
rvvayARWWRVVC[266!9%<=>!?DA*+++
 	A:-E: !HDE$$Ke59  , !!B&Fvi,>?rc   c                     a  ] tR tRt o R tR tR tR t]! RRR7      R	 4       t	]! RRR7      R
 4       t
]! RRR7      R 4       t]! RRR7      R 4       tR tR tR tR t]! RRR7      R 4       t]! RRR7      R 4       tRtV tR# )TestDecimatei  c                    VP                  ^4      p\        \        \        P                  VR^R7       \        \        \        P                  V^RR7       R# )rW   rj  )qr  N)r   r   r  r   decimater[   r\   rt   s   && r`   test_bad_argsTestDecimate.test_bad_args  s7    IIbMi!sa@i!qC@rc   c                    VP                  ^4      p\        P                  ! V^^RRR7      P                  4       p\	        W2R,          P                  \        4      4       R# )rW   iirFr  ftype
zero_phaser  Nr   r   r  roundr5   r  r  r[   r\   rt   ru   s   &&  r`   test_basic_IIRTestDecimate.test_basic_IIR  C    IIbMOOAqAUuEKKMS6==/0rc   c                    VP                  ^4      p\        P                  ! V^^RRR7      P                  4       p\	        W2R,          P                  \        4      4       R# )rW   firFr  r  Nr  r  s   &&  r`   test_basic_FIRTestDecimate.test_basic_FIR$  r  rc   c                    VP                  R4      p\        P                  ! V^^ RR7      pVP                  R8X  g   Q h\        P                  ! V^^RR7      pVP                  R8X  g   Q hR# )r   F)r  r  N)r   r   )r  r   )r   r  )r  r   r  r  )r[   r\   rv   d0d1s   &&   r`   
test_shapeTestDecimate.test_shape)  s\    HHX__Qe<xx8###__Qe<xx8###rc   Tztest code is NumPy specificr}   c                    \         P                  ! 4       ;_uu_ 4        \         P                  ! R R\        4       V P	                  RRR7       RRR4       R#   + '       g   i     R# ; i)rZ  Badly conditioned filterr  Fr   r  Nr_  r`  ra  r)   _test_phaseshiftr'  s   &&r`   test_phaseshift_FIR TestDecimate.test_phaseshift_FIR1  sJ    $$&&##4oG!!5!A '&&&   0AA)	c                    \         P                  ! 4       ;_uu_ 4        \         P                  ! R R\        4       V P	                  RRR7       RRR4       R#   + '       g   i     R# ; i)rZ  r   r  Tr!  Nr"  r'  s   &&r`   test_zero_phase_FIR TestDecimate.test_zero_phase_FIR8  sJ    $$&&##4oG!!4!@ '&&&r&  c                ,    V P                  R RR7       R# )r  Fr!  Nr#  r'  s   &&r`   test_phaseshift_IIR TestDecimate.test_phaseshift_IIR?  s    Uu=rc   c                ,    V P                  R RR7       R# )r  Tr!  Nr+  r'  s   &&r`   test_zero_phase_IIR TestDecimate.test_zero_phase_IIRC  s    Ut<rc   c           	     Z   ^xp. ROp^dp\         P                  ! W5,          ^,           4      \        V4      ,          p\         P                  ! V4      R,          ^,          p\         P                  ! R\         P
                  ,          VR\         P                  3,          ,          V,          4      \        P                  P                  VP                  R4      ,          pV EF  p	W9,          p
\         P                  ! W,          ^,           4      \        V	4      ,          p\         P                  ! R\         P
                  ,          VR\         P                  3,          ,          V,          4      \        P                  P                  VP                  R4      ,          pVR8X  d@   ^p\        P                  ! \        P                  ! V^,           RV
,          RR7      R4      pMfVR8X  d`   ^pR\         P
                  ,          V
,          p\        P                  ! \        P                  ! VR	V\         P
                  ,          4      !  pVR
J dp   \        P                  ! XP                  VP                   Ws,          ^,          \         P
                  ,          4      w  ppV\         P"                  ! V4      ,          pM\         P$                  ! V4      p\        P&                  ! VP(                  V
XXVR7      p\         P*                  ! VP-                  4       V,          RR7      pV\         P"                  ! V4      ,          pVRV	,          8  p\         P.                  ! VP-                  4       V,          4      V,          p\1        V\         P2                  ! V4      RRR7       EK  	  R# )x   皙?r  皙?r  r  r  r!  r  g?Fr  r  r  rj  r   r  N)r  r  r   rQ  rs   r   )r   r   r  r  r  rx  rw  r   windowstukeyr   dltirU  cheby1freqzr5  denrf  r  r  rB  r  rL  angler4   r  )r[   r   r  r~  r  t_totr  r  r   r  r  r  d_tosr  systemwc_h_respsr  	h_resampssubnyqr  s   &&&                   r`   r#  TestDecimate._test_phaseshiftG  s|   #IIdjl#eDk1 "S(1,VVFRUUNU1bjj=%99A=>~~##AFFC01  GA99W]1_-g>DVVFRUUNU1bjj=-AADHI~~++DIIs;<E V]]1q5"q&:C&EFHJ5Yq[fmmAtRX&FG U"#\\&**fjj*/*Q,ruu*<>
7266'?*,,u-1F3=?I uzz|i7bAI	**IS[(F XXgllnY67?FFBMM&$9!%D2 2E  rc   c                   R pRpVP                  V4      V,          pVP                  VP                  RV,          4      VP                  ^VP                  ,          VR,          ,          V,          4      ,          4      p\        VP                  VP                  V4      4      VP                  R4      RRR7       \        P                  ! V^RR	7      pVP                  VP                  V4      4      R
8  g   Q hR# )g      Y@r  r|  g      >@r  r   F)r   check_0dr  )r  r  N)	r   rY   sqrtrD  rx  r4   dotr   r  )r[   r\   sfreqr  r  rt   x_outs   &&     r`   test_auto_nTestDecimate.test_auto_ny  s     IIaL5 JJrwwrAvBEE	US[0IA0M)NNO 	a)2::b>uU2U3wwuyy'(4///rc   c                    \         P                  ! VP                  R VP                  R7      ^
4      p\	        VP                  V4      4      '       d   Q hR# )rK  r   N)r   r  r  r   r  isnanr  s   && r`   test_long_float32TestDecimate.test_long_float32  sA     OOBGGF"**G=rBrxx{#####rc   c                    \         P                  ! \        P                  ! ^d\        P                  R7      ^
4      pVP
                  P                  \        P                  8X  g   Q hR# )r+  r   N)r   r  r   r  r   r   r  r   )r[   rt   s   & r`   test_float16_upcast TestDecimate.test_float16_upcast  s;    OOBGGCrzz:B?ww||rzz)))rc   r8  c                   ^2p^pRp\         P                  ! ^VP                  ^VP                  ,          V,          ^,          4      RVR7      w  rVpVP	                  \
        4      VP                  VP                  RVP                  ,          V,          V,          4      4      ,          pVP	                  \
        4      VP                  VP                  RVP                  ,          V,          V,          4      4      ,          p\         P                  ! WVV4      pVP                  ^4      V,          p	VP                  RVP                  ,          V,          V	,          4      RVP                  RVP                  ,          V,          V	,          4      ,          ,           p
\         P                  ! V
^VRR7      p\         P                  ! . \         P                  ! WVV4      OV
N5!  R,          p\        W4       \         P                  ! V
^VR	R7      p\         P                  ! . \         P                  ! WVV4      OV
N5!  R,          p\        WR
RR7       R# )r       @@r  )r  fsrs   rj  Fr5  r  Tr7  vIh%<=rC  Nrz  )r   r   rY   rx  r  r  r  r8  r   r  r   r   r5   r   r4   )r[   r\   fcentrefwidthrW  rv   r  rZ  r?  r  r   ynzpynzprefyzpyzprefs   &&             r`   test_complex_iir_dlti"TestDecimate.test_complex_iir_dlti  s    --2::agfnQ.>#?',5aHHWrzz"ruu*w2Fr2I'J KKHHWrzz"ruu*w2Fr2I'J KKQ1%IIcNR VVBJ(1,-RVVC"%%K'1A5667 q!6eD.. $&--a"8 $!"$$') 	&ooa&TB $&--a"8 $!"$$') 	%e<rc   c                   ^2p^pRp^p\         P                  ! WS^,          VR7      p\        P                  ! V4      pV\        P                  ! R\        P
                  ,          V,          V,          4      ,          pV^ ,          \        P                  ! V4      ,          p	\         P                  ! V	^4      p
\        P                  ! ^4      V,          p\        P                  ! R\        P
                  ,          V,          V,          4      R\        P                  ! R\        P
                  ,          V,          V,          4      ,          ,           p\         P                  ! V^V
RR7      p\         P                  ! W^^R7      R,          p\        W4       \         P                  ! V^V
R	R7      p\         P                  ! V^^V	R
7      p\        VV4       R# )r  rV  )rW  rs   rj  Fr5  )r  r  :Nr+  NTr!  Nrz  )r   rU  r   rootsr  rx  polyr8  r   r  upfirdnr5   r2  )r[   r\   rY  rZ  rW  numtapsbbasezbasezrotbzr?  r  r   r[  r\  r]  r^  s   &&               r`   test_complex_fir_dlti"TestDecimate.test_complex_fir_dlti  sM     gaxB7 rvvb255j7225661X%R#IIcNR VVBJ(1,-RVVC"%%K'1A5667 q!6eD..115d;&ooa&TB%%aAb9V$rc   r*  N)r,  r-  r.  r/  r	  r  r  r  r0  r$  r(  r,  r/  r#  rL  rP  rS  r_  rj  r2  r3  r4  s   @r`   r  r    s     A
1
1
$ d+HIB JB d+HIA JA d+HI> J> d+HI= J=02d0$*
 d62= 3=B d62"% 3"%rc   r  c                      a  ] tR tRt o R tR tR tR t]P                  P                  RRR.4      R	 4       tR
tV tR# )TestHilberti  c                    VP                  R.4      p\        \        \        V4       VP	                  R4      p\        \        \        V^ R7       R# )r  r.  r  Nr   )rY   r   r   r   r   r  s   && r`   r	  TestHilbert.test_bad_args  s9    JJ
|$j'1-IIcNj'12rc   c           
        ^pVP                   pVP                  ^ ^V,          VR,          VP                  R7      pVP                  V4      pVP	                  V4      pVP                  ^V,          4      pVP	                  ^V,          4      pVP                  WVWx.4      p	\        V	4      p
VP                  V
4      pVP                  VP                  V
4      VP                  V
4      4      pVP                  V
4      p\        WV4       \        WP                  V	P                  4      V4       \        VR,          VP                  V) ^,          V^,          VR,          VP                  R7      V4       \        VR,          VP                  ^ W3R,          VP                  R7      V4       \        VR,          VP                  V) ^,          V^,          V^,          VP                  R7      V4       \        VR,          VP                  ^ W3^,          VP                  R7      V4       \        VP                  V
R,          4      WR4       R# )	r  r  r   N)r   Nr  N)rP   rr  )rQ   Nr  N)rK   rs  )rP   r  )rx  r   r   rD  rA  rC  r   rf  atan2rI  rB  r;   r  r  )r[   r\   r  rx  r  r  a1a2a3r]   rF  h_absh_angleh_reals   &&            r`   test_hilbert_theoretical$TestHilbert.test_hilbert_theoretical  s   UUIIaRcI<VVAYVVAYVVAE]VVAE]HHbb%&AJq	((2771:rwwqz2 	Fw/E77177#3W= 	GG,IIrcAgrAvrCxrzzIR#	%
 	Gbii2CxrzziJG	U 	GG,IIrcAgrAvrCxrzzIR#	% 	Gbii2CxrzziJG	U 	BGGAdG,b:rc   c                *   VP                  VP                  ^VP                  R7      R4      p\        VRR7      p\	        \        VP
                  ^ R7      VP
                  4       \        \        VR	,          4      VR	,          ^4       \        V^RR7      pVP                  R
8X  g   Q h\        VP
                  ^^ R7      P                  R8X  g   Q h\        P                  ! . RO4      pVP                  V4      p\        VR	,          V^RR7       R# )r  r   r  )r  r  zN regression)r  N)rK   rN   r   )r   r  )rK   r  )r  rK   )y        Bm}ąy      ?a y?0fy      @Wa94y      @"nWy      @hIX@y<nm@yF8O2k{?yډoP?y̼YC?y433333<c4Qe?yȒ40p$?yESU?yffffff<?7?y433333<wEoy!5P{3'ſy        _N@տy<}ٿy<-cyF8<2OW\)r   r   r   r   r5   r  r;   r  r   r  rY   )r[   r\   r]   aaaana0hilbs   &&    r`   test_hilbert_axisNTestHilbert.test_hilbert_axisN  s    JJryy2::y6?QR !,bdd3GAdG,bh; a2B'yyG###qssbq)//7:::  F G( F#CIvr>Jrc   c                   VP                  VP                  ^iVP                  R7      R4      p\        VRR7      pR F>  p\        VP	                  VRV4      VR7      pVP	                  WTR4      p\        W54       K@  	  R# )rK   r   r  N)rK   rM   r   r   r  )r   r   r   r   rF  r5   )r[   r\   r]   r~  r  aaps   &&    r`   test_hilbert_axis_3d TestHilbert.test_hilbert_axis_3d2  sj    JJryy"**y=yIQR D"++aT2>C++c,CB$ rc   r   r   r   c                    \        W!4      pVP                  ^VR7      pVP                  \        V4      4      P                  V8X  g   Q hR# r  )r  r  rB  r   r   r  s   &&& r`   test_hilbert_typesTestHilbert.test_hilbert_types;  s@    "88AU8+wwwx()//5888rc   r*  N)r,  r-  r.  r/  r	  r{  r  r  r  r  r  r  r2  r3  r4  s   @r`   rm  rm    sF     3(;T$KL% [[Wy)&<=9 >9rc   rm  c            	         a  ] tR tRt o Rt]! RRR7      R 4       tR t]! RR	R
7      R 4       t]	P                  P                  RRR.4      R 4       tR tR t]	P                  P                  R. RO4      ]! RRR
7      R 4       4       t]	P                  P                  R. RO4      R 4       t]	P                  P                  R^^.4      ]	P                  P                  R^^.4      ]	P                  P                  R^^	.4      ]	P                  P                  R. R O4      ]! RRR
7      R 4       4       4       4       4       t]! RRR
7      R 4       tRtV tR# )!TestHilbert2iB  z!Test function `signal.hilbert2`. Tlist inputs are numpy-specificr}   c                (    \        . RO. RO.4       R# )rP   NrO   r   )r   r'  s   &&r`   r  TestHilbert2.test_array_likeF  s    )Y'(rc   c                   VP                  VP                  ^4      R4      p\        P                  ! \        RR7      ;_uu_ 4        \        VP                  R..4      4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        VR	R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        VR
R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        VRR7       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     Lr; i  + '       g   i     R# ; i)z$Raise all exceptions in `hilbert2`. z^x must be real.r[  Nz^N must be positive.ro  z#^When given as a tuple, N must holdr  r   r   rb  r  )r   r   r  r   r   r   rY   r  s   && r`   r	  TestHilbert2.test_bad_argsJ  s    JJryy}f-]]:-?@@RZZ*/0 A]]:-CDDQ" E]]:-RSSQ)$ T]]:-RSSQ&! TS A@DDSSSSSs0   DD.	EED+	.D>	E	E%	r   z,CuPy's hilbert2 does not have axes= argumentrH   c                ~   VP                  VP                  ^4      R4      p\        P                  ! \        RR7      ;_uu_ 4        \        VRR7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        VRR7       RRR4       R#   + '       g   i     LL; i  + '       g   i     R# ; i)	r   z!^axes must be a tuple of length 2r[  r  Nz"^axes must contain 2 distinct axesr  r  r  )r   r   r  r   r   r   r  s   && r`   test_bad_args2TestHilbert2.test_bad_args2V  su    JJryy}f-]]:-PQQQY' R]]:-QRRQV$ SR RQRRRs   B B+B(	+B<	r   r   r   c                    \        W!4      pVP                  RVR7      pVP                  \        P                  ! V4      4      pVP
                  V8X  g   Q hR# )rQ   r   N)rQ   rU   )r  r  rB  r   r   r   )r[   r   r\   r  r   s   &&&  r`   test_hilbert2_types TestHilbert2.test_hilbert2_types^  sG    "88G581ggfooh/0yyE!!!rc   c                    VP                  . RO4      p\        P                  ! VP                  VR4      4      p\        P                  ! VP                  VR4      4      p\	        W4P
                  4       R# )zNeeded for 100% coverage N)rl  r  r  rl  r  r  )rN   rP   rP   rN   )rY   r   r   r   r4   r  )r[   r\   rt   x0ax1as   &&   r`   test_1d_inputTestHilbert2.test_1d_inpute  sO    JJ12oobjjF34oobjjF34UU#rc   c                r    VP                  R4      p\        V^R7      p\        VRR7      p\        WC4       R# )z%Compare passing tuple to single int. ro  Nr  r  )r  r   r5   )r[   r\   rt   x0_ax1_as   &&   r`   test_parameter_NTestHilbert2.test_parameter_Nl  s0    HHVQV$#rc   r  z)Bug in cupy implementation, see cupy#9396c                b   VP                  WP                  R7      pVR;;,          ^,          uu&   VP                  \        P                  ! V4      4      p\        V4      p\        P                  ! V4      p\        ^V^ ,          ^,           ^,          4      \        V^ ,          ^,           ^,          R4      r\        ^V^,          ^,           ^,          4      \        V^,          ^,           ^,          R4      rRp\        WgV	3,          W7V	3,          ^,          VR7       \        V^ V	3,          V^ V	3,          ^,          VR7       \        Wg^ 3,          W7^ 3,          ^,          VR7       \        VR,          VR,          VR7       WhV
3,          p\        WP                  V4      VR7       R# )z8Compare desired and calculated values in Fourier space. r   Nrm  r   r  )
r  r   rB  rO  ifft2r   fft2r  r4   r  )r[   r  r\   x_frt   x_asx_as_ff0_posf0_negf1_posf1_negr   zz_as_fs   &&&          r`   test_quadrant_values!TestHilbert2.test_quadrant_valuess  sN    gge==g1E
a
GGFLL%&{T" q58a<A"56uQx!|PQ>QSW8Xq58a<A"56uQx!|PQ>QSW8Xv~.FN0Ca0GdSq&y)3q&y>A+=DIqy)3qy>A+=DItc$id;(w!7dCrc   c                   V^ ,          ^,          pV^,          ^,          pVP                  V4      pRWS^,
          V^,           3&   RWS^,           V^,
          3&   \        P                  ! V4      pVP                  \        P                  ! V4      4      pVP                  \        V4      4      R8  g   Q h\        V4      p\        WrP                  V4      VP                  VP                  4      P                  ^,          R7       R# )zYTest that a real signal with Z[-p,-q] == np.conj(Z[p,q])
produces a zero analytic signal.r  rl  r   N)r  rO  	ifftshiftrB  r  r  rf  r   r4   r  r  r   r  )r[   r  r\   c0c1r  rt   r  s   &&&     r`   test_zero_analytic_signal&TestHilbert2.test_zero_analytic_signal  s     1X]1X]hhuo!FBFN!FBFNs#GGFLL%&vvc!f~###{mmD18L8P8PQS8STrc   sh0sh1sh2not_axisz,cupy implementation does not have axes kwargc                \   VP                  VP                  W,          V,          VP                  R7      WV34      p. ROpVP                  V4       \	        WgR7      pVP                  WdR7      p	V	 U
u. uF  p
\	        V
4      NK  	  pp
VP                  WR7      p\        W4       R# u up
i )z?2d transform on 3d array is equal to 2d transform on 2d slices.r   r  r  Nr  )r   r   r   popr   unstackrC  r4   )r[   r  r  r  r  r\   rt   transform_axesx_as_3dpartsr  x_as_2ds   &&&&&&      r`   test_3d_vs_sliceTestHilbert2.test_3d_vs_slice  s     JJryyS

yCcPS_U"8$12

1
,(-.18A;.((7(2) /s   4B)c                n   VP                  VP                  RVP                  R7      R4      p\        V4      pVP	                  V^ ^4      p\        VRR7      pVP	                  V^^ 4      p\        W54       VP	                  V^ ^4      p\        VRR7      pVP	                  V^^ 4      p\        W74       R# )z72d transform on equal arrays with moved axis are equal.r   r  Ni;  )rM   r   r?  )r   rQ   r  )r   r   r   r   rF  r4   )r[   r\   r9  x0_asr  x1_asr  x2_ass   &&      r`   test_3d_axis_orderTestHilbert2.test_3d_axis_order  s     ZZ		)2::	>	J[[Q"&)E1a(%[[Q"&)E1a(%rc   r*  N))rL   rM   )rM   rL   r  r  r  )r,  r-  r.  r/  __doc__r0  r  r	  r  r  r  r  r  r  r  r  r  r  r  r2  r3  r4  s   @r`   r  r  B  s    +d+KL) M)
" f%ST% U% [[Wy)&<=" >"$$ [[W&FGf%PQD R HD, [[W&FGU HU [[UQF+[[UQF+[[UQF+[[Z3f%ST	* U 4 , , ,
	* f%ST& U&rc   r  c                     a  ] tR tRt o Rt]R 4       tR t]! RRR7      R 4       t	]! RRR7      ]
P                  P                  R	. ROR. RO. RO3. ROR. RO. RO3. ROR. RO. RO3. ROR. RO. R O3. R!OR". RO. R O3. R#OR$. RO. R%O3. R#OR&. RO. R#O3.4      R 4       4       t]! RRR7      ]
P                  P                  R. R'OR. R(O. RO3. R)OR*. R(O. R+O3. R,OR*. R-O. R.O3.4      R 4       4       t]! RRR7      R 4       t]! RRR7      R 4       t]! RRR7      ]
P                  P                  R. R/O. R0O.4      R 4       4       tR tRtV tR
# )1TestEnvelopei  z4Unit tests for function `._signaltools.envelope()`. c                t    \        V4      VP                  8X  d   R RRR/MR RRR/p \        W3/ VBRV/B  R# )r   rm  r   r   r  N)r>   r   r4   )r  rG  rb  r\   a_r_tols   &&&& r`   assert_closeTestEnvelope.assert_close  sL     'r*bjj8 E651vt4 	
 	H@7@C@rc   c                   \         P                  ! \        RR7      ;_uu_ 4        \        \        P
                  ! ^4      ^R7       RRR4       \         P                  ! \        RR7      ;_uu_ 4        \        VP                  R4      ^R7       RRR4       R Fo  pRP                  \        \        V4      4      p\         P                  ! \        RV R2R7      ;_uu_ 4        \        VP                  ^4      VR	7       RRR4       Kq  	  \         P                  ! \        R
R7      ;_uu_ 4        \        VP                  ^4      RR7       RRR4       R FL  p\         P                  ! \        RR7      ;_uu_ 4        \        VP                  ^4      VR	7       RRR4       KN  	  \         P                  ! \        RR7      ;_uu_ 4        \        VP                  ^4      RR7       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EK  ; i  + '       g   i     L; i  + '       g   i     K  ; i  + '       g   i     R# ; i)zSFor `envelope()` Raise all exceptions that are used to verify function
parameters. z'Invalid parameter axis=2 for z.shape=.*r[  r  Nz&z.shape\[axis\] not > 0 for z.shape=.*z, zbp_in=\(z\) isn't a 2-tuple of.*)bp_inz)n_out=10.0 is not a positive integer or.*rs  )r  z&`-n//2 <= bp_in\[0\] < bp_in\[1\] <=.*zresidual='undefined' not in .*	undefinedresidual)rK   r   )r  )r   r|  )Nr|  ))r   rK   r  )r   rR   )	r  r   r   r   r   r  joinr  r  )r[   r\   r  tss   &&  r`    test_envelope_invalid_parameters-TestEnvelope.test_envelope_invalid_parameters  s    ]]:!KM MRWWQZa(M ]]:!JL LRWWV_1-L 6E3sE?+Bz(04K%LN N 51N N 6 ]]:!LN N RWWQZs+N 0Ez%NP P51P P 0 ]]:-MNNRWWQZ+6 ON)M M ML L L
N N NN N
P P P ONNsG   "G33H$H1H0?II3H	H	H-0I 	II(	rF   zXXX: immutable arraysrH   c           
        \        V4      pW!P                  8X  d   VP                  MVP                  pVP	                  . ROVR7      pVP	                  . ROVR7      p\
        P                  ! V4      pVP                  ^ ,          pVP                  \        VRRRR7      4      w  rV P                  \
        P                  ! V4      VP	                  . ROVR7      RVR7       V P                  \
        P                  ! V	4      VP	                  . ROVR7      RVR7       VP                  \        VRRRR7      4      w  rV P                  V
^,          VR	VR7       V P                  WR
VR7       VP                  \        VRRR^V,          R7      4      w  rV P                  VR,          VRVR7       V P                  VR,          V	RVR7       VP                  \        VRRRR7      4      w  rV P                  WRVR7       V P                  \
        P                  ! V4      VP	                  . ROVR7      RVR7       \        VRRRR7      pV P                  VVRVR7       VP	                  VRR7      pVR;;,          ^,          uu&   \
        P                  ! VVR7      pV P                  VP                  V4      VRVR7       VP                  \        VRRRR7      4      w  ppV P                  VVP                  W4      RVR7       V P                  \
        P                  ! V4      VP	                  WSR7      RVR7       R# ) zEEnsure that the various parametrizations produce compatible results. r   allTr  squaredEnvelope calculation errorrb  r\   Residual calculation errorFz3Unsquared versus Squared envelope calculation errorz3Unsquared versus Squared residual calculation error)r  r  r  :NNrK   z(3x up-sampled envelope calculation errorz(3x up-sampled residual calculation errorlowpassz/`residual='lowpass'` envelope calculation errorz/`residual='lowpass'` residual calculation errorNz*`residual=None` envelope calculation errorrZ  :rP   NN)r  zReference analytic signal errorz"Complex envelope calculation errorz"Complex residual calculation error)r  rQ   rQ   rK   r   )r  r   r   rN   r   r   r   r   rR  rL   rQ   r   r   r   )rL   r   r   rK   r   )rL   r   r   r   r   )r>   r   r   r   rY   rO  irfftr  r  r   r  rfftifftrB  r  r
   )r[   r\   rE  rF  ZZr_arv   r  ze2_0zr_0ze_1zr_1ze2_2zr_2ze2_3zr_3ze2_4Z_az_aze2_azr_as   &&                   r`   test_envelope_verify_parameters,TestEnvelope.test_envelope_verify_parameters  s     ##zz1r||r}}JJ(J5zz4DzALLOGGAJ jj!VeT!RS&++e,**_D*A:r 	 	C 	&++d+**_D*A:r 	 	C ZZFUE RS
$'5S 	 	! 	$S 	 	! jjQAaCH
 	%*eHR 	 	Q$s)THR 	 	Q jj!ViQU!VW%OTV 	 	X&++d+**_D*AOTV 	 	X FT4@%Jr 	 	S jjj&B1kk##"''#,?B 	 	Hjj#vt!TUt%5!7Br 	 	K&**T*BJJtJ,HBr 	 	Krc   z@               Z,        bp_in,     Ze2_desired,      Zr_desiredNc           	        VP                  WP                  R7      pVP                  W5P                  R7      pVP                  WEP                  R7      p\        P                  ! V4      pVP	                  \        WbRRR7      4      w  rxVP	                  \        WbRRR7      4      w  rR WxW3 4       w  rrVP                  W5P                  R7      pVP                  WEP                  R7      pV P                  WRVR7       V P                  WR	VR7       V^,          e   ^ WB^,          R
% V P                  WRVR7       V P                  WRVR7       R
# )a  Test 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.
r   r  Tr  r  c              3   N   "   T F  p\         P                  ! V4      x  K  	  R # 5ir*  rO  r  r  z_s   & r`   r  :TestEnvelope.test_envelope_real_signals.<locals>.<genexpr>:  s     !U<Tb&++b//<T   #%z+Envelope calculation error (residual='all')r  z+Residual calculation error (residual='all')Nz/Envelope calculation error (residual='lowpass')z/Residual calculation error (residual='lowpass'))rY   r   rO  r  r  r   r   r  )r[   r  r  Ze2_desired
Zr_desiredr\   rv   ze2zrze2_lpzr_lpZe2ZrZe2_lpZr_lps   &&&&&&         r`   test_envelope_real_signals'TestEnvelope.test_envelope_real_signals  sF   ( JJq

J+jjJJj?ZZ
**Z=
LLO**XaMN

8AyRV#WX!USf<T!UjjMMjBZZ
--Z@
#KPR 	 	T"KPR 	 	T 8$%JQxy!&OTV 	 	X%OTV 	 	Xrc   zG               Z,        bp_in,         Ze2_desired,         Zr_desiredc           	        VP                  WP                  R7      pVP                  W5P                  R7      pVP                  WEP                  R7      p\        P                  ! \        P
                  ! V4      4      pVP                  \        WbRRR7      4      w  rxR Wx3 4       w  rV P                  WRVR7       V P                  WRVR7       R	# )
zTest envelope calculation with complex-valued test signals.

We only need to test for the complex envelope here, since the ``Nones``s in the
bandpass filter were already tested in the previous test.
r   r  Tr  c              3   v   "   T F/  p\         P                  ! \         P                  ! V4      4      x  K1  	  R # 5ir*  rO  fftshiftr
   r  s   & r`   r  =TestEnvelope.test_envelope_complex_signals.<locals>.<genexpr>]  s$     GYr6??6::b>22Ys   79r  r  r  N)	rY   r   r   rO  r  r  r  r   r  )r[   r  r  r  r  r\   rv   r  r  r  r  s   &&&&&&     r`   test_envelope_complex_signals*TestEnvelope.test_envelope_complex_signalsJ  s     JJq

J+jjMMjBZZ
--Z@
KK((+,**XaMNGcYG#:r 	 	C":r 	 	Crc   c                   \        V4      pW!P                  8X  d   VP                  MVP                  p\        P
                  ! VP                  . RO. RO.VR7      4      pVP                  . RO. RO.VR7      pVP                  . RO. RO.VR7      pVP                  \        VR^R7      4      w  rxVP                  \        VP                  R^ R7      4      w  rR WyP                  WP                  3 4       w  rrV P                  WRVR7       V P                  WRVR7       V P                  WRVR7       V P                  WR	VR7       R
# )z.Test for multi-channel envelope calculations. r   T)r  r  c              3   N   "   T F  p\         P                  ! V4      x  K  	  R # 5ir*  r  r  s   & r`   r  CTestEnvelope.test_envelope_verify_axis_parameter.<locals>.<genexpr>q  s     O6NFKKOO6Nr  2d envelope calculation errorr  2d residual calculation error"Transposed 2d envelope calc. error"Transposed 2d residual calc. errorN)r  r   rQ   rQ   r   )r   r   rL   rL   r   r  )r   r   r   r   r   rP   r   r   r   r   )r   r   r   r   r   )r>   r   r   r   rO  r  rY   r  r   r  r  )r[   r\   rE  rF  rv   r  r  r  r  ye2TyrTr  Ye2r  Yrs   &&             r`   #test_envelope_verify_axis_parameter0TestEnvelope.test_envelope_verify_axis_parameterd  s5     ##zz1r||r}}LL%6$HPTUVjj/3C!D'+ ! -ZZ/ B$ZO
**XaA>?JJxTBC	OsFFB6NO"#0OTVW"/NSUV"F2 	 	
 	 D 	 	
rc   c                   \        V4      pW!P                  8X  d   VP                  MVP                  pVP	                  . RO. RO.VR7      p\
        P                  ! \
        P                  ! V^R7      4      pVP	                  . RO. RO.VR7      pVP	                  . RO. RO.VR7      p\        RRRR7      pVP                  \        V3R^/VB 4      w  rVP                  \        VP                  3R^ /VB 4      w  rR WP                  WP                  3 4       w  rppV P                  WRVR	7       V P                  WR
VR	7       V P                  WRVR	7       V P                  VVRVR	7       R# )zBTest for multi-channel envelope calculations with complex values. r   r  r  T)r  r  r  r  c              3   z   "   T F1  p\         P                  ! \         P                  ! V4      ^R7      x  K3  	  R# 5i)rP   r  Nr
  r  s   & r`   r  KTestEnvelope.test_envelope_verify_axis_parameter_complex.<locals>.<genexpr>  s.      @&> #OOFJJrNCC&>s   9;r  r  r  r  r  N)r  rM   r   rM   rQ   )rP   rR   r   rR   rQ   rM   r   rR   r   rM   )r  r   rQ  r   r  rP   r   r   r   rQ   r   rQ   )r>   r   r   r   rY   rO  r  r  r  r  r   r  r  )r[   r\   rE  rF  inprv   Ze2_desZr_deskwr  r  r  r  r  r  r  r  s   &&               r`   +test_envelope_verify_axis_parameter_complex8TestEnvelope.test_envelope_verify_axis_parameter_complex|  sd     ##zz1r||r}}jj+->?tjLKK((156**.0BDD*Q_o>dK%>**Xa6a6267JJx:!:r:;	@'*FFB&>@"b 	#,KPRS"*IbQC 	 	
 	"f+OTVWrc   Xc                    VP                  WP                  R7      p\        P                  ! V4      pVP	                  \        V4      4      p\        VRRR7      pV P                  WERVR7       R# )z0Compare output of `envelope()` and `hilbert()`. r   Nr  z!Hilbert-Envelope comparison errorr  NN)rY   r   rO  r  rf  r   r   r  )r[   r)  r\   rt   e_hile_envs   &&&   r`   test_compare_envelope_hilbert*TestEnvelope.test_compare_envelope_hilbert  s\     JJq

J+LLOwqz"L48%,OTVWrc   c                   \         P                  ! . R	O4      p\        P                  ! V^R7      p\	        V^RR7      w  r4\	        VR,           ^RR7      w  rV\        V\        P                  ! ^4      RR7       \        WBRR7       \        V\        P                  ! ^VP                  R7      RR7       \        WbP                  VP                  4      RR7       R# )
aD  Test 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.
)r5  r  )r  r  r   rm  r   r   N)r   r   r   )
rO  r  r   r1  r   r4   r   r  r   r  )r[   x4x6y6y6_resz6z6_ress   &      r`   test_nyquistTestEnvelope.test_nyquist  s     \\)$__RQ'bE:
b2gQ?
BHHQKe4/BHHQbhh7eD		"(( 3%@rc   r*  )rP   r   rQ   rQ   r   r  r  r  )rL   r   rQ   r   r   r  r   )rL   r   r   rQ   r   r+  )r   r   rQ   rQ   r   rR  )rQ   r   r   r   r   )r   r   r   rQ   r   )rL   r   rQ   rQ   r   )rK   )rL   r   rK   rL   r   )NrP   )r   r   rK   rL   r   )Nr   )r   rM   r   rM   r   r   )rP   rM   r   rM   rQ   r"  r!  )rP   rQ   rN   r   rN   rK   )r   rN   r   rW   r   rN   )rP   rQ   r   r   r   rK   )rL   r   r   rP   rQ   )rL   r   r   rQ   rP   rQ   )r,  r-  r.  r/  r  staticmethodr  r  r0  r  r  r  r  r  r  r  r'  r.  r7  r2  r3  r4  s   @r`   r  r    s    >A A76 k*AB8K C8Kt k*AB[[J
i/	J
i/	J
</	J
/	J
/	J
i/	J
i/	J	LMXM CXB k*AB[[Q
<,<	Q
,<	Q
)<>P	Q	C CC& k*AB
 C
. k*ABX CX, k*AB[[S?4F"GHX I CXA Arc   r  c                     a  ] tR tRt o ]RR l4       t]! RR7      R 4       t]! RR7      R 4       t]	! ]
4      R 4       t]	! ]
4      R 4       t]	! ]
4      R	 4       t]	! ]4      R
 4       t]	! ]4      R 4       t]	! ]4      R 4       t]	! ]]4      R 4       t]	! ]]4      R 4       t]	! ]]4      R 4       t]	! ]4      R 4       t]	! ]4      R 4       t]	! ]4      R 4       t]! RR7      ]	! ]]4      R 4       4       tRtV tR# )TestPartialFractionExpansioni  c                t   \        W4      pVP                  V4      pVP                  V4      pVP                  \        VR,          V,
          4      \        V R,          V,
          4      4      p\	        \        V4      4      w  rx\        W,          W8,          VR7       \        W,          W(,          VR7       R# )r  Nr  )r  N)r?   rY   hypotrf  r   rC   r;   )	r  r  r_truep_truer  r\   distancerowscolss	   &&&&&    r`   assert_rp_almost_equal3TestPartialFractionExpansion.assert_rp_almost_equal  s    Q"F#F#88C'
V 34'
V 346 ++<X+FG
AGV\7CAGV\7Crc   Tr$  c                   \        . RO. RO4      w  r#\        V4      ^8X  g   Q h\        V^ ,          \        P                  ! . RO4      4       \        V^,          \        P                  ! . RO4      4       \        V^,          \        P                  ! . RO4      4       \        V\        P                  ! . R	O4      4       \        . RO. RORR7      w  r#\        V4      ^8X  g   Q h\        V^ ,          \        P                  ! . R
O4      4       \        V^,          \        P                  ! . RO4      4       \        V^,          \        P                  ! . RO4      4       \        V^,          \        P                  ! . RO4      4       \        V^,          \        P                  ! . RO4      4       \        V^,          \        P                  ! . RO4      4       \        V\        P                  ! . R	O4      4       R# )rP   T)include_powersNrO   r  )rQ   rQ   rK   )rP   rP   rP   rK   )rP   rP   rP   rQ   rQ   )rP   rP   rP   rQ   rQ   rK   )rP   rP   rQ   rQ   rK   )rP   rQ   rQ   rK   )rP   rP   rP   rQ   rK   )r0   r  r;   r   rc  )r[   r\   factorsrc  s   &&  r`   test_compute_factors1TestPartialFractionExpansion.test_compute_factors  s>   (I>7|q   GAJ	(:;GAJ(=>GAJ(@AD"''*<"=>(I8<>7|q   GAJ(@AGAJ(=>GAJ	(:;GAJ(@AGAJ(=>GAJ(@AD"''*<"=>rc   c                `    \        . RORR4      w  r#\        V. RO4       \        V. RO4       R# )r  r4  r  N)r  gjt?g?5^I?r|  g/$ @r  r  r  )r1   r4   r[   r\   uniquemultiplicitys   &&  r`   test_group_poles-TestPartialFractionExpansion.test_group_poles  s*    +0#u >0i0rc   c                   \        VP                  . RO4      VP                  . RO4      4      w  r#p\        W!P                  . RO4      ^R7       \        W1P                  . R	O4      ^R7       \        WAP                  R
.4      ^R7       \        VP                  R^.4      VP                  . RO4      4      w  r#p\        W!P                  ^R.4      4       \        W1P                  RR.4      4       VP                  ^ 8X  g   Q h\        VP                  ^^.4      VP                  . RO4      4      w  r#p\        W!P                  ^^.4      4       \        W1P                  R^.4      4       VP                  ^ 8X  g   Q h\        VP                  ^^.4      VP                  . RO4      4      w  r#pV P	                  W#. RO. RO4       VP                  ^ 8X  g   Q h\        VP                  ^^.4      VP                  . RO4      4      w  r#pV P	                  W#. RO. RO4       VP                  ^ 8X  g   Q h\        VP                  . RO4      VP                  . RO4      4      w  r#p\        W!P                  . RO4      4       \        W1P                  . RO4      4       \        WAP                  ^^.4      4       \        VP                  ^.4      VP                  . RO4      4      w  r#p\        W!P                  RR.4      4       \        W1P                  ^R.4      4       VP                  ^ 8X  g   Q h\        VP                  . RO4      VP                  . RO4      4      w  r#pV P	                  W#. RO. RO4       VP                  ^ 8X  g   Q h\        VP                  . R O4      VP                  . R!O4      4      w  r#pV P	                  W#. R"O. R#O4       VP                  ^ 8X  g   Q h\        VP                  ^R.4      VP                  . R$O4      4      w  r#p\        W!P                  R^.4      4       \        W1P                  ^^.4      4       VP                  ^ 8X  g   Q h\        VP                  . R%O4      VP                  . R$O4      4      w  r#p\        W!P                  R^.4      4       \        W1P                  ^^.4      4       \        WAP                  ^.4      4       \        VP                  . R&O4      VP                  . R$O4      4      w  r#p\        W!P                  R'^E.4      4       \        W1P                  ^^.4      4       \        WAP                  ^^.4      4       \        VP                  . R%O4      VP                  . R(O4      4      w  r#pV P	                  W#. R)O. R*O4       VP                  ^ 8X  g   Q hR# )+rM   r  r  Nr\  rM   rK   r\  r   r]  r]  r   r   rK   )gZd;O?g9#Jg&䃞ͪ)g-1ڿgeagvq-?g      rP   rN   r   ir   )rP   r   r\  )rQ   g333333gGz?gClٿ)y      2     @*y      2     @*@g      B@)y      ?ɿy      ??gffffff?)rP   rM   r   rL   )r   rP   rK   )r   r\  r\  )rK   gg)\(?g^I+g rh?)rP   gffffffgQg~jt?r9  )r9  rL   rP   )rQ  g333333ӿr3  )rP   rQ   r9        п)rP   r   rK  )rP   r   r   r   r   )rP   y              ?y             r   )r                r   rP   )rK   r   rN   rP   rK   rK   rP   rO   r   r   r   )rP   r9  rQ   )rQ   rK   r   )r   rQ   rK   r   rL  )rP   r9  rL   r\  )rL   y            @y            )rP         ?      rp   )r,   rY   r;   r   rD  r[   r\   r  r  rZ  s   &&   r`   test_residue_general1TestPartialFractionExpansion.test_residue_general  sv    "**]3RZZ5NOaAzz*DEqQAzz*DEqQAzz7)4a@"**b!W-rzz)/DEaAzz1c(34Azz2r(34vv{{"**aV,bjj.EFaAzz1a&12Azz2q'23vv{{"**aV,**%<=?a##?)	+ vv{{"**aV,bjj.FGa##A*$0	2vv{{"**%CD**%<=?aAzz*56Azz*:;<Azz1a&12"**aS/2::j+ABaAzz4-89Azz1b'23vv{{"**Z0"**=M2NOa##A$8$4	6 vv{{"**Y/L1IJa##A)$0	2vv{{"**aW-rzz*/EFaAzz2q'23Azz1a&12vv{{"**Z0"**Z2HIaAzz2r(34Azz1a&12Azz1#/"**]3RZZ
5KLaAzz3)45Azz1a&12Azz1b'23"**Z0"**^2LMa##A*C$7	9vv{{rc   c                T   \        VP                  . RO4      VP                  . RO4      4      w  r#p\        VP                  . RO4      VP                  . RO4      4      w  rVp\        VP                  . RO4      VP                  . RO4      4      w  rp
\        VP                  . RO4      VP                  . RO4      4      w  rp\        W%4       \        W(4       \        W+4       \        W64       \        W94       \        W<4       \        WG4       \        WJ4       \        WM4       R# )rM   NrR  rS  )r   rM   rK   r\  r   )r   r]  r   r   rK   )r   r   rM   rK   r\  r   )r   r   r   r]  r   r   rK   )r,   rY   r;   r[   r\   r0p0k0r1p1k1r2p2k2r3p3k3s   &&            r`   test_residue_leading_zeros7TestPartialFractionExpansion.test_residue_leading_zeros$  s     RZZ6

=8QR
RZZ(892::m;TU
RZZ6

CS8TU
RZZ(;<ZZ(>?A
B#B#B#B#B#B#B#B#B#rc   c                d   \        VP                  ^ ^ .4      VP                  . RO4      4      w  r#p\        W!P                  ^ ^ .4      4       \        W1P                  RR.4      4       VP                  ^ 8X  g   Q h\        VP                  ^ 4      VP                  ^4      4      w  r#pVP                  ^ 8X  g   Q hVP                  ^ 8X  g   Q hVP                  ^ 8X  g   Q h\        P
                  ! \        RR7      ;_uu_ 4        \        ^^ 4       RRR4       R#   + '       g   i     R# ; i)r   Denominator `a` is zero.r[  NrT  r\  r]  )r,   rY   r;   r   r  r   r   rZ  s   &&   r`   test_residue_degenerate4TestPartialFractionExpansion.test_residue_degenerate6  s     "**aV,bjj.CDaAzz1a&12Azz2r(34vv{{"**Q-A7avv{{vv{{vv{{]]:-GHHAqM IHHHs   DD/	c           
        \        VP                  . R	O4      VP                  . RO4      4      w  r#pV P                  W#. RO. RO4       \        WAP                  R.4      4       \        VP                  . RO4      VP                  . RO4      4      w  r#pV P                  W#RR.RR.^R7       \        WAP                  R.4      ^R7       \        VP                  ^R.4      VP                  . RO4      4      w  r#p\        W!P                  R^.4      4       \        W1P                  ^^.4      4       VP                  ^ 8X  g   Q h\        VP                  . RO4      VP                  . RO4      4      w  r#pV P                  W#. RO. RO4       VP                  ^ 8X  g   Q h\        VP                  . RO4      VP                  . RO4      4      w  r#p\        W!P                  RR.4      4       \        W1P                  R^.4      4       \        WAP                  RR.4      4       \        VP                  ^.4      VP                  . RO4      4      w  r#pV P                  W#. R O. R!O4       VP                  ^ 8X  g   Q h\        VP                  ^^.4      VP                  \
        P                  ! ^R".^R.4      4      4      w  r#p\        W!P                  R#R$.4      4       \        W1P                  R%R.4      4       VP                  ^ 8X  g   Q h\        VP                  . R&O4      VP                  ^R.4      4      w  r#p\        W!P                  ^ .4      4       \        W1P                  ^.4      4       \        WAP                  ^R.4      4       \        VP                  ^4      VP                  ^R
.4      4      w  r#p\        W!P                  ^.4      4       \        W1P                  R.4      4       VP                  ^ 8X  g   Q h\        VP                  ^4      VP                  . R'O4      4      w  r#p\        W!P                  ^ ^.4      4       \        W1P                  RR.4      4       VP                  ^ 8X  g   Q h\        VP                  ^4      VP                  . R(O4      4      w  r#p\        W!P                  R^.4      4       \        W1P                  RR.4      4       VP                  ^ 8X  g   Q h\        VP                  . R)O4      VP                  . R&O4      4      w  r#p\        W!P                  R^	.4      4       \        W1P                  ^^.4      4       \        WAP                  ^.4      4       \        VP                  ^^.4      VP                  . R&O4      4      w  r#p\        W!P                  R^.4      4       \        W1P                  ^^.4      4       VP                  ^ 8X  g   Q h\        VP                  . R	O4      VP                  . R&O4      4      w  r#p\        W!P                  R*^.4      4       \        W1P                  ^^.4      4       \        WAP                  ^
^.4      4       \        VP                  . R+O4      VP                  . R,O4      4      w  r#pV P                  W#. R-O. R.O^R7       VP                  ^ 8X  g   Q hR# )/rP   r   rs   rj  r  gŏ1w@r  r  N)rP   rN   rN   rQ   rV  )rP   y             r  rV  r\  )y             @y      @      @y            ()r   rP   rP   )rP   rQ   rP   r   )rP   r   g'W?y	c-y	c-@y      ?*D?y      ?*DԿ)rP   rK  rN   r   rW  )rL   rK  rK   rX  r0  )rP   r0  r]  rL   )rQ   r\  r]  g      )r  rK   r]  r   )g
ףp=
?gQ?皙?)rj  UUUUUUտrs  r!  g
gUUUUUU@rU  rP   r\  rP   )rP   r   r  )rP   g      r  )rP   rN   rQ   ir  )rP   r   r   r   r   r   )yoT?c=yX?yoT?c=yXȿrr  yjM?%uyjM?%u?)ySsA?ySsAr  y-?8gDio?y-?8gDio)r-   rY   rD  r;   r   r   polymulrZ  s   &&   r`   test_residuez_general2TestPartialFractionExpansion.test_residuez_generalF  sc   2::l3::&CDFa##A*G$.	0Azz2$/02::i0"**_2MNa##A%68I$J%2M$B,- 	$ 	/ 	Azz6(3Q?2::q"g.

:0FGaAzz2q'23Azz1a&12vv{{2::i0"**\2JKa##A*lCvv{{2::o6

;8OPaAzz3+67Azz2q'23Azz3)452::rd+RZZ-HIa##A$57H	Jvv{{2::q!f-::bjj!TQH&EFHaAzz5$-89Azz5#,78vv{{2::j12::q"g3FGaAzz1#/Azz1#/Azz1b'232::a="**aX*>?aAzz1#/Azz2$/0vv{{2::a="**]*CDaAzz1a&12Azz3*56vv{{2::a="**5E*FGaAzz2q'23Azz4+67vv{{2::i0"**Z2HIaAzz3(34Azz1a&12Azz1#/2::q!f-rzz*/EFaAzz2q'23Azz1a&12vv{{2::l3RZZ
5KLaAzz3)45Azz1a&12Azz2q'232::i0"**=P2QRa##A%N%N,- 	$ 	/ vv{{rc   c                T   \        VP                  . RO4      VP                  . RO4      4      w  r#p\        VP                  . RO4      VP                  . RO4      4      w  rVp\        VP                  . RO4      VP                  . RO4      4      w  rp
\        VP                  . RO4      VP                  . RO4      4      w  rp\        W%4       \        W(4       \        W+4       \        W64       \        W94       \        W<4       \        WG4       \        WJ4       \        WM4       R# )rM   NrR  rS  )rM   rK   r\  r   r   )r]  r   r   rK   r   )rM   rK   r\  r   r   r   )r]  r   r   rK   r   r   r   )r-   rY   r;   r^  s   &&            r`   test_residuez_trailing_zeros9TestPartialFractionExpansion.test_residuez_trailing_zeros  s     bjj7 jj79
bjj)9: jj79
bjj7 jj)9:<
bjj)<= jj)?@B
B#B#B#B#B#B#B#B#B#rc   c           	     x   \        VP                  ^ ^ .4      VP                  . RO4      4      w  r#p\        W!P                  ^ ^ .4      4       \        W1P                  RR.4      4       VP                  ^ 8X  g   Q h\        VP                  ^ 4      VP                  ^4      4      w  r#pVP                  ^ 8X  g   Q hVP                  ^ 8X  g   Q hVP                  ^ 8X  g   Q h\        P
                  ! \        RR7      ;_uu_ 4        \        VP                  ^4      VP                  ^ 4      4       RRR4       \        P
                  ! \        RR7      ;_uu_ 4        \        VP                  ^4      VP                  . RO4      4       RRR4       R#   + '       g   i     Lk; i  + '       g   i     R# ; i)	r   rn  r[  Nz6First coefficient of determinant `a` must be non-zero.rT  r\  r]  r  )r-   rY   r;   r   r  r   r   rZ  s   &&   r`   test_residuez_degenerate5TestPartialFractionExpansion.test_residuez_degenerate  s?   2::q!f-rzz)/DEaAzz1a&12Azz2r(34vv{{2::a="**Q-8avv{{vv{{vv{{]]:-GHHRZZ]BJJqM2 I ]]:"01 1 RZZ]BJJ|$<=1 1 IH1 1 1s   +F-F(F%	(F9	c                z   VP                  . RO4      pVP                  . RO4      pVP                  . 4      pVP                  . R	O4      pVP                  . R
O4      pR FW  p\        W#WGR7      w  r\        WRR7       \        WRRR7       \        W#WGR7      w  r\        WRR7       \        WRRR7       KY  	  R# )rK   rtypegV瞯<r   F)r  r   N)rk  UUUUUUſg)r   r\  rK  )rl  rP   rK   )rP   r   rR   r   avgr)  r  rt  ry  ru  rY   r    r4   r!   )
r[   r\   r  r  rZ  
b_expected
a_expectedr  r^   r]   s
   &&        r`   *test_inverse_unique_roots_different_rtypesGTestPartialFractionExpansion.test_inverse_unique_roots_different_rtypes  s     JJ01JJ{#JJrNZZ,
ZZ.
 IE!/DAA6Au5I10DAA6Au5I Irc   c                   VP                  . RO4      pVP                  . RO4      pVP                  . 4      pVP                  . R	O4      pVP                  . R
O4      pVP                  . RO4      pR FU  p\        W#WHR7      w  r\        WRR7       \        WRR7       \        W#WHR7      w  r\        WRR7       \        WRR7       KW  	  R# )rK   r  r   r   Fr  Ng333333?g98ȿr  gll?r   r\  r\  rK  )rl  r   rP   rK   )r  gUUUUUUgUUUUUU?rK   )rP   r?  rO  r  r   r  r  )r[   r\   r  r  rZ  r  b_expected_zr  r  r^   r]   s   &&         r`   ,test_inverse_repeated_roots_different_rtypesITestPartialFractionExpansion.test_inverse_repeated_roots_different_rtypes  s    JJ89JJ'JJrNZZ/
zz"78ZZ 12
HE!/DAA6Au=10DAA%8Au= Irc   c           	        VP                  . RO4      pVP                  . RO4      pVP                  . 4      p\        P                  ! \        RR7      ;_uu_ 4        \	        W#VRR7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        W#VRR7       RRR4       R#   + '       g   i     LM; i  + '       g   i     R# ; i)rK   z`rtype` must be one ofr[  medianr  Nr  r  )rY   r  r   r   r    r!   rZ  s   &&   r`   test_inverse_bad_rtype3TestPartialFractionExpansion.test_inverse_bad_rtype  s    JJ89JJ'JJrN]]:-EFF1(+ G]]:-EFFA!8, GF GFFFFs   B0C0C 	C	c                    VP                  ^.4      pVP                  ^.4      pVP                  ^ .4      p\        W#V4      w  rV\        WQP                  ^.4      4       \        WaP                  RR.4      4       R# )rP   r  Ng       )rY   r!   r4   )r[   r\   r  r  rZ  r^   r]   s   &&     r`    test_invresz_one_coefficient_bug=TestPartialFractionExpansion.test_invresz_one_coefficient_bug  sf     JJsOJJsOJJsOqQ::qc?+::sDk23rc   c                   \        VP                  ^.4      VP                  ^.4      VP                  . 4      4      w  r#\        W!P                  ^.4      4       \        W1P                  ^R.4      4       \        VP                  . RO4      VP                  . RO4      VP                  . 4      4      w  r#\        W!P                  . RO4      4       \        W1P                  . R	O4      4       \        VP                  R^.4      VP                  RR
.4      VP                  . RO4      4      w  r#\        W!P                  . RO4      4       \        W1P                  . RO4      4       \        VP                  . RO4      VP                  . RO4      VP                  . 4      4      w  r#\        VVP                  . RO4      4       \        VVP                  . RO4      4       \        VP                  RR.4      VP                  ^^.4      VP                  ^^.4      4      w  r#\        W!P                  . RO4      4       \        W1P                  . RO4      4       R# )rP   r   rj  Nr   rY  rY  rQ         ?      rP   r   rp   y      @      y      !      ?y      @      
@rP   y             y      ?       @y      ?      r  rO   )rP                     ?       r  rR   rP               rL   r   rQ   r   r  rL   r\  r   r   r   rK   rK   rK   )y      @      y      <      0@y      D@      Oy      Y@      8@y     @r     `k@y      h@     prP   y      (       @y     J@      4y      X      Q@y      ;@      Ry      [@      Ky     @T      [@)rP   r   r]  rr   rt  )r    rY   r;   r[   r\   r^   r]   s   &&  r`   test_invres(TestPartialFractionExpansion.test_invres  s   bjj!orzz1#

2GAzz1#/Azz1b'23bjj!67jj!23RZZ^EAzz*OPQAzz*NOPbjj#q*BJJ7G,Hjj+-Azz*LMNAzz/:;bjj!;<jj!>?BQAJJ (A B	C 	AJJ (? @	A bjj"b*BJJ1v,>

Aq6@RSAzz*<=>Azz*56rc   c                   \        VP                  ^.4      VP                  ^.4      VP                  . 4      4      w  r#\        W!P                  ^.4      4       \        W1P                  ^R.4      4       \        VP                  . RO4      VP                  . RO4      VP                  . 4      4      w  r#\        W!P                  . RO4      4       \        W1P                  . R	O4      4       \        VP                  R^.4      VP                  RR
.4      VP                  . RO4      4      w  r#\        W!P                  . RO4      4       \        W1P                  . RO4      4       \        VP                  . RO4      VP                  . RO4      VP                  . 4      4      w  r#\        VVP                  . RO4      4       \        VVP                  . RO4      4       \        VP                  RR.4      VP                  ^^.4      VP                  ^^.4      4      w  r#\        W!P                  . RO4      4       \        W1P                  . RO4      4       R# )rP   r   rj  Nr   rY  r  r  r  r  r  rO   )g      @r  r  y            rW   r  r  r  )rN   y      I      &@y      Y@      Ry      T@      M@y      v     l@y     @m@     rr  )r   rP   r9  rQ   rt  )r!   rY   r;   r  s   &&  r`   test_invresz)TestPartialFractionExpansion.test_invresz  s   rzz1#

A3BHAzz1#/Azz1b'23rzz"78zz"34bjjnFAzz*OPQAzz*NOPrzz3(+zz66"23zz),. 	Azz*MNOAzz/:;rzz"<=zz"?@zz"~' 	AJJ (A B	C 	AJJ (? @	A rzz2r(+zz1a&)zz1a&)+ 	Azz.9:Azz*56rc   c                    \        ^^^4      w  r#\        V^^ .4       \        V^R.4       \        ^^^4      w  r#\        V^R.4       \        V^R.4       R# )rP   Nr   )r    r;   r!   r  s   &&  r`   test_inverse_scalar_arguments:TestPartialFractionExpansion.test_inverse_scalar_arguments<  s[     aAA1v&A2w'q!QA2w'A2w'rc   r*  N)r   )r,  r-  r.  r/  r:  rD  r0  rI  rO  r@   r,   r[  rk  ro  r-   rv  ry  r|  r    r!   r  r  r  r  r  r  r  r2  r3  r4  s   @r`   r<  r<    s    
D 
D d#? $?& d#1 $1 wF  FP w$  $" w   x Q !Qf x $ !$* x > !>& vw'J (J& vw'> (>" vw'- (- w4  4 v7 78 w7  7@ d#vw'( ( $(rc   r<  c                      a  ] tR tRt o R t]! RRR7      R 4       tR tR tR	 t	R
 t
R t]! RRR7      R 4       tR tR tR tR tR tR tRtV tR# )TestVectorstrengthiH  c                V   VP                  R .4      pRpRpRp\        W#4      w  rgVP                  ^ 8X  g   Q hVP                  ^ 8X  g   Q h\        P                  ! WdRR7      '       g   Q h\        P                  ! V^\        P
                  ,          V,          RR7      '       g   Q hR# )rj  r  r  r4  v!>abs_tolNrY   r"   ra  r  iscloserx  r[   r\   eventsperiodtarg_strength
targ_phasestrengthphases   &&      r`   test_single_1dperiod'TestVectorstrength.test_single_1dperiodK  s    RD!
(8}}!!!zzQ||HVDDDD||E1tww;#;VLLLLrc   r   zphase modulo 2*pirH   c                l   VP                  R .4      pVP                  . RO4      pVP                  R.^,          4      pVP                  . RO4      p\        W#4      w  rgVP                  ^8X  g   Q hVP                  ^8X  g   Q h\        Wd4       \	        V^VP
                  ,          V,          4       R# )rj  r  N)rP   rQ   r  )rj  r  r4  )rY   r"   ra  r:   r;   rx  r  s   &&      r`   test_single_2dperiod'TestVectorstrength.test_single_2dperiodY  s    RD!J'

B4!8,ZZ.
(8}}!!!zzQ!(:E1ruu9z#9:rc   c                X   VP                  . RO4      p^pRpRp\        W#4      w  rgVP                  ^ 8X  g   Q hVP                  ^ 8X  g   Q h\        P                  ! WdRR7      '       g   Q h\        P                  ! V^\        P
                  ,          V,          RR7      '       g   Q hR# )r  r  r  r  r  Nr  r  r  r  r  r  r  r  s   &&      r`   test_equal_1dperiod&TestVectorstrength.test_equal_1dperiodg  s    :;
(8}}!!!zzQ||HVDDDD||E1tww;#;VLLLLrc   c                n   VP                  . RO4      pVP                  ^^.4      pVP                  R.^,          4      pVP                  R R.4      p\        W#4      w  rgVP                  ^8X  g   Q hVP                  ^8X  g   Q h\        Wd4       \        V^VP                  ,          V,          4       R# )r  r  r  Nr  rY   r"   ra  r;   rx  r  s   &&      r`   test_equal_2dperiod&TestVectorstrength.test_equal_2dperiodu  s    :;QH%

B4!8,ZZd,
(8}}!!!zzQH4E1ruu9z#9:rc   c                X   VP                  . RO4      p^pRpR p\        W#4      w  rgVP                  ^ 8X  g   Q hVP                  ^ 8X  g   Q h\        P                  ! WdRR7      '       g   Q h\        P                  ! V^\        P
                  ,          V,          RR7      '       g   Q hR# )r4  r  r  r  r  Nr4  g?g @gffffff@g333333$@r  r  s   &&      r`   test_spaced_1dperiod'TestVectorstrength.test_spaced_1dperiod  s    56
(8}}!!!zzQ||HVDDDD||E1tww;#;VLLLLrc   c                   VP                  . RO4      pVP                  ^R.4      pVP                  R.^,          4      pVP                  R R.4      p\        W#4      w  rgVP                  ^8X  g   Q hVP                  ^8X  g   Q h\        Wd4       \	        V4      VP
                  8X  d   RR/M/ p\        V^VP                  ,          V,          3/ VB  R# )r4  rj  r  rQ  r   g>Nr  )rY   r"   ra  r;   r>   r   r4   rx  )	r[   r\   r  r  r  r  r  r  rtol_kws	   &&       r`   test_spaced_2dperiod'TestVectorstrength.test_spaced_2dperiod  s    56QG$

B4!8,ZZR)
(8}}!!!zzQH4$4R$8BJJ$F64.Bq255y:5AArc   c                P   VP                  . RO4      p^pRpRp\        W#4      w  rgVP                  ^ 8X  g   Q hVP                  ^ 8X  g   Q h\        P                  ! Wd4      '       g   Q h\        P                  ! V^\        P
                  ,          V,          4      '       g   Q hR# )r  rj  Nr  rj        ?UUUUUU?r  r  s   &&      r`   test_partial_1dperiod(TestVectorstrength.test_partial_1dperiod  s    N+
(8}}!!!zzQ||H4444||E1tww;#;<<<<rc   c                n   VP                  . RO4      pVP                  . RO4      pVP                  R.^,          4      pVP                  . RO4      p\        W#4      w  rgVP                  ^8X  g   Q hVP                  ^8X  g   Q h\        Wd4       \        V^VP                  ,          V,          4       R# )r  Nr  )r  r  r  r  r  )rj  rj  rj  rj  r  r  s   &&      r`   test_partial_2dperiod(TestVectorstrength.test_partial_2dperiod  s    N+,-

G9q=1ZZ 01
(8}}!!!zzQH4E1ruu9z#9:rc   c                    VP                  . RO4      pRp^ p\        W#4      w  rVVP                  ^ 8X  g   Q hVP                  ^ 8X  g   Q h\        P                  ! WTRR7      '       g   Q hR# )r   r  r  r  Nr   r  rj  r  )rY   r"   ra  r  r  r[   r\   r  r  r  r  r  s   &&     r`   test_opposite_1dperiod)TestVectorstrength.test_opposite_1dperiod  s`    -.(8}}!!!zzQ||HVDDDDrc   c                   VP                  . RO4      pVP                  R.^
,          4      pVP                  R.^
,          4      p\        W#4      w  rVVP                  ^8X  g   Q hVP                  ^8X  g   Q h\        WT4       R# )r   r  rl  Nr  )rY   r"   ra  r;   r  s   &&     r`   test_opposite_2dperiod)TestVectorstrength.test_opposite_2dperiod  so    -.RD2I&

B4"9-(8}}!!!zzQH4rc   c                \    VP                  ^^..4      pRp\        \        \        W#4       R# )rP   r  NrY   r   r   r"   r[   r\   r  r  s   &&  r`   test_2d_events_ValueError,TestVectorstrength.test_2d_events_ValueError  s'    aVH%j.&Arc   c                Z    R pVP                  ^..4      p\        \        \        W#4       R# r  Nr  r  s   &&  r`   test_2d_period_ValueError,TestVectorstrength.test_2d_period_ValueError  s%    aSE"j.&Arc   c                8    R p^ p\        \        \        W#4       R# r  r   r   r"   r  s   &&  r`   test_zero_period_ValueError.TestVectorstrength.test_zero_period_ValueError  s    j.&Arc   c                8    R pRp\        \        \        W#4       R# )r  Nr   r  r  s   &&  r`   test_negative_period_ValueError2TestVectorstrength.test_negative_period_ValueError  s    j.&Arc   r*  N)r,  r-  r.  r/  r  r1  r  r  r  r  r  r  r  r  r  r  r  r  r  r2  r3  r4  s   @r`   r  r  H  s     M w':;; <;M;MB= w':;; <;	E	5B
B
B
B Brc   r  )r+  c                   x  a  ] tR tRt o ]! RRR7      R 4       t]! RRR7      R 4       t]! RRR7      R 4       tR t]! RR	R7      R
 4       t	]! RR	R7      ]! RRR7      R 4       4       t
]! RR	R7      R 4       t]! RRR7      ]! RR	R7      R 4       4       t]! RR	R7      R 4       t]! RR7      R 4       tRtV tR# )TestSOSFilti  rF   zbuffer array is read-onlyrH   c                ~   \        W!4      pVP                  ^ ^^VR7      pVP                  ^R.VR7      pVP                  RR.VR7      pVP                  . ROVR7      p\        \        P                  WE34      w  rx\        Wx4      p	VP                  V	4      p	\        \        W4      V4       VP                  ^^.VR7      pVP                  ^^ .VR7      pVP                  . ROVR7      p\        \        P                  WE34      w  rx\        Wx4      p	VP                  V	4      p	\        \        W4      V4       VP                  . RO4      pVP                  . R	O4      pVP                  ^4      pVP                  WE34      p	VP                  V	R
4      p	\        W4      p
\        WP                  . RO4      4       R# )r   r   rj  Nr   r!  r"  r)  )r  rP   r   )r  r   r   r  )r  rQ   rQ   rQ   rQ   rQ   rQ   rQ   )r  r@  rY   r  r   r$   r:   r%   r  concatr   r4   )r[   r  r\   rt   r^   r]   r%  bbr~  r  ru   s   &&&        r`   
test_rank1TestSOSFilt.test_rank1  sw   R_KK1arK*JJ2wbJ)JJT{"J- jj-Rj8RZZ!(Rnjjo!'#/37 JJ1vRJ(JJ1vRJ(jj,Bj7RZZ!(Rnjjo!'#/37JJ{#JJ{#GGAJiijjf%CO::&@ABrc   c                ~   \        W!4      pRp\        P                  ! V4      pVP                  ^ V^,
          WAR7      pVP	                  WS4      pVP                  ^R.VR7      pVP                  RR.VR7      pVP                  . RO. RO. RO. RO.VR7      pVP                  . R	O. R
O. RO. RO.VR7      p	\        \        P
                  Wg34      w  r\        W4      pVP                  V4      p\        W^ R7      p\        W4       \        W4      pVP                  V4      p\        W^R7      p\        W4       R# )rL   r   rj  r  Nr;  r   r<  r=  rB  rC  rD  rE  )r  r  r  r@  r   rY   r  r   r$   r%   r:   )r[   r  r\   r  r	  rt   r^   r]   r>  rF  r  r~  r  ru   s   &&&           r`   
test_rank2TestSOSFilt.test_rank2  s!   R_IIe$	KK9q=)K>JJq JJ2wbJ)JJSzJ,**iIyI!#  % **i])+24  6 RZZ!(RnjjoC#!'-RnjjoC#!'-rc   c                Z   \        W!4      pRp\        P                  ! V4      pVP                  ^ V^,
          V4      pVP	                  WS4      pVP                  ^R.VR7      pVP                  RR.VR7      p\        \        P
                  Wg34      w  r\        W4      p
VP                  V
4      p
\        W4      p\        VP                  ^ ,          4       FN  p\        VP                  ^,          4       F+  p\        WVR3,          \        WgW\VR3,          4      4       K-  	  KP  	  R# )rL   r   rj  .Nr_  r   )r  r  r  r@  r   rY   r  r   r$   r%   r   r  r:   r   )r[   r  r\   r  r	  rt   r^   r]   r  r~  r  ru   r   js   &&&           r`   rd  TestSOSFilt.test_rank3/  s    R_IIe$	KK9q=)4JJq JJ2wbJ)JJSzJ, RZZ!(RnjjoCOqwwqz"A1771:&)!q#I,a1c	l8ST ' #rc   c                >   \         P                  ! ^RR4      w  r#\         P                  ! ^RR4      w  rE\         P                  ! ^RR4      w  rg\        P                  ! \        P                  ! W$4      V4      p\        P                  ! \        P                  ! W54      V4      p	\        P                  ! \        P
                  W#3,          \        P
                  WE3,          \        P
                  Wg3,          34      p
\        VP                  WV
34      w  rp
WV
3# )rQ   r  lowr  )r   r   r   r   r  r_r  rY   )r[   r\   b1ru  b2rv  b3rw  r^   r]   r  s   &&         r`   _get_ab_sosTestSOSFilt._get_ab_sosC  s    q$.q$.q$.KKB+R0KKB+R0hhbfruuRV}beeBFmDE

Q3K0	cSyrc   zitem assignmentc           
        V P                  V4      w  r4p\        P                  P                  ^24      P	                  V4      pVP                  V4      p\        W!4      p\        WCVR,          VP                  ^4      R7      w  rxVP                  V\        WCVR,          VR7      ^ ,          34      p\        V\        WCV4      4       \        WVR,          VP                  R4      R7      w  rVP                  V	\        WVR,          VR7      ^ ,          34      p	\        Wy4       \        V4      pVP                  ^VR7      p\        WVVR7      w  r\        WP                  ^4      RR7       \        WRR7       R# )	r  :Nr  Nr-  :r  NNr   Fr  Nr   )r  r   r  r:  r  rY   r  r   r  r  r4   r%   r'   r  )r[   r  r\   r]   r^   r  rt   y_truer.  r  ru   r4  s   &&&         r`   test_initial_conditions#TestSOSFilt.test_initial_conditionsN  s*   $$R(	cIINN2%%b)JJqMR_ Q1S6bhhqk:
FGA!C&R$@$CDEa 01C3BHHV,<=			5'#v""=a"@AB& _GGARG 2&771:59E2rc   r  zfancy indexing not supportedc                "   \        W!4      pVP                  ^VR7      pV P                  V4      w   rE\        V4      pVP	                  VRVP
                  ,           4      p\        P                  ! \        4      ;_uu_ 4        \        WSVR7       RRR4       \        WbR7      pVP	                  WvP
                  ^ ,          ^^VP
                  R	,          34      p\        P                  ! \        4      ;_uu_ 4        \        WSVRRR. R
O3,          R7       RRR4       \        WSVR7      w  r\        VR,          VP                  ^4      RR7       \        V	R,          VRR7       R#   + '       g   i     L; i  + '       g   i     Lm; i)r   r   r-  Nr   r  Fr  r  r   )r   rP   rP   r  )r  r   r   r  )r  r  r  r'   r   r  r  r   r   r%   r<   r4   )
r[   r  r\   rt   rA  r  r.  zi_ndru   r4  s
   &&&       r`   test_initial_conditions_2%TestSOSFilt.test_initial_conditions_2h  s    R_GGARG $$R(	1_ JJq&177*+]]:&&Cr" ' "

588A;1bhhrl"CD]]:&&CuQ1i%789 ' 5)$?:> '& '&s   E+>E>+E;	>F	c                4   \         P                  P                  ^4      P                  ^ ^RR7      pVP	                  V4      pVP                  V4      p\        P                  ! ^RRR7      p\        V!  pVP                  V4      pVP                  ^ ,          p^p\        VP                  4      p^W&   \        V.V,           4      pVP                  V4      p	\        WSWyR7      w  r\        WSR,          WyR7      w  r\        WSR,          W}R7      w  rVP                  W3VR7      p\        VV
RRR	7       \        WRRR	7       \!        V4      pVP#                  VV^^^34      pVVR,          ,          p\        WSVVR7      ^ ,          p\%        V!  w  ppVP                  V4      VP                  V4      pp\'        VV4      pVP#                  V^\)        V4      ^34      pVVR,          ,          p\+        VVW7VR7      ^ ,          p\        VVRRR	7       R
# )   r   r  r  r  rJ  r  r7  rX  rC  N)rQ   r  rK   )r  :NrM   Nr  )r  :rM   NNr  )r  :r   rP   Nr  )r   r  r  r^  r  rY   r   r   r   r  r  r   r  r%   r  r4   r'   r   r   r   r=   r   )r[   r  r\   rt   r  r  	nsectionsr  shpz0r  r4  r  r  r  r  ru   r.  r^   r]   y_tfs   &&&                  r`    test_initial_conditions_3d_axis1,TestSOSFilt.test_initial_conditions_3d_axis1  s   
 II!!#&..q!*.EHHRLJJqM mmAtE2smjjoIIaL	  177m	YK#%&XXc] d2 k<k< IIrhTI*2E6U7 _ZZY1a01!I,C"-a0s|1zz!}bjjm11ZZQQ/0!I,q!Qb1!44e%8rc   r   zissues a RuntimeWarningc           	        \        W!4      pVP                  RVR7      pVP                  R	4      pVP                  R
4      p\        P                  ! \
        RR7      ;_uu_ 4        \        WCV^R7       RRR4       RVR&   \        P                  ! \
        RR7      ;_uu_ 4        \        WCV^R7       RRR4       R#   + '       g   i     LR; i  + '       g   i     R# ; i)rK   r   zshould be all onesr[  )r.  r  Nr  zInvalid zi shape)rK   r  rK   )rL   rN   )rL   rK   rK   rQ   )r  rK   )r  r  r  r  r   r   r%   )r[   r  r\   rt   r  r.  s   &&&   r`   test_bad_zi_shapeTestSOSFilt.test_bad_zi_shape  s     R_ HHZrH*hhvXXl#]]:-ABBCr* CD	]]:-?@@Cr* A@ CB A@@s   %B>%C>C	C"	c                   \        W!4      p\        P                  ! ^RRR7      pVP                  V4      p\	        V4      p\        W2P                  ^(VR7      VR7      w  rV\        WdRRR7       VP                  VP                  VR,          RR	7      VP                  VR,          RR	7      ,          4      p\        WWVP                  V4      ,          RR
7       R# )rN   rQ  r  r  r   r-  rX  Fr   r  r  r8  N)r  :NrK   Nr   )r  :rK   NN)r  r   r   rY   r'   r%   r  r4   r  r  r  )r[   r  r\   r  r.  ru   r4  sss   &&&     r`   test_sosfilt_ziTestSOSFilt.test_sosfilt_zi  s    R_mmAs51jjo_WWRrW2r:U> WWRVVCJRV0266#e*263NNOQ/e<rc   Tr$  c                    \        W!4      p\        P                  ! ^RRR7      pVP                  V4      p\	        V4      p\        W2P                  ^(VR7      VP                  4       R7      w  rV\        WdRRR7       R	# )
rN   rQ  r  r  r   r-  rX  Fr  N)	r  r   r   rY   r'   r%   r  r_  r4   )r[   r  r\   r  r.  rA  r4  s   &&&    r`   test_sosfilt_zi_2TestSOSFilt.test_sosfilt_zi_2  sb     R_mmAs51jjo_WWRrW2ryy{CU>rc   r*  N)r,  r-  r.  r/  r0  r  r  rd  r  r  r  r  r  r  r  r2  r3  r4  s   @r`   r  r    s/     k*EFC GC@ k*EF. G.6 k*EFU GU&	 k*;<3 =32 k*;<(1OP? Q =?, k*;<19 =19f g&?@k*;<+ = A+ k*;<= == d#? $?rc   r  c                      a  ] tR tRt o ]! RRR7      R 4       tR t]! RRR	7      R
 4       t]! RRR	7      R 4       t	R t
RtV tR# )TestDeconvolvei  Tr  r}   c                    . ROp^^.pVP                  . RO4      p\        P                  ! WC4      w  rV\        WR4       R# )rl  Nrl  rP   r   r   rP   rP   r   r   	rl  rQ   rP   r   rQ   rK   rP   r   r   )rY   r   
deconvolver4   r[   r\   originalimpulse_responserecorded	recovered	remainders   &&     r`   r  TestDeconvolve.test_array_like  s=     .q6::;<%00L		,rc   c                    VP                  . ROVP                  R7      pVP                  ^^.4      pVP                  . RO4      p\        P                  ! WC4      w  rV\	        WR4       R# )rl  r   Nr$  r%  )rY   r   r   r&  r4   r'  s   &&     r`   ra   TestDeconvolve.test_basic  sV    ::8

:K::q!f-::;<%00L		,rc   r   zdifferent error messagerH   c                   VP                  ^ ^ .^ ^ ..4      pVP                  ^ ^ .4      p\        P                  ! \        RR7      ;_uu_ 4        \        P
                  ! W#4      w  rERRR4       R#   + '       g   i     R# ; i)r   z#^Parameter signal must be non-emptyr[  NrY   r  r   r   r   r&  r[   r\   r*  r)  quotientr,  s   &&    r`   test_n_dimensional_signal(TestDeconvolve.test_n_dimensional_signal  se    ::1v1v./::q!f-]]:-RSS"("3"3H"OH TSSS   A22B	c                   VP                  ^ ^ .4      pVP                  ^ ^ .^ ^ ..4      p\        P                  ! \        RR7      ;_uu_ 4        \        P
                  ! W#4      w  rERRR4       R#   + '       g   i     R# ; i)r   z$^Parameter divisor must be non-emptyr[  Nr1  r2  s   &&    r`   test_n_dimensional_divisor)TestDeconvolve.test_n_dimensional_divisor  se    ::q!f%::1v1v&67]]:-STT"("3"3H"OH UTTTr6  c                    VP                  . RO4      VP                  . RO4      r2\        P                  ! W#4      w  rE\        WR4       \	        VP                  V4      4      ^ 8X  g   Q hR# )zCReturn signal as `remainder` when ``len(divisior) > len(signal)``. Nr  )r   rP   rQ   rL   rM   )rY   r   r&  r5   r=   )r[   r\   r4  divr3  r,  s   &&    r`   test_divisor_greater_signal*TestDeconvolve.test_divisor_greater_signal  sR    ::i("**_*ES$//9	'rzz(+,111rc   r*  N)r,  r-  r.  r/  r0  r  ra   r1  r4  r8  r<  r2  r3  r4  s   @r`   r"  r"    so      d+KL- M-- v&?@P AP v&?@P AP2 2rc   r"  c                   F  a  ] tR tRt o R t]! RRR7      R 4       t]P                  P                  RRR	.4      ]P                  P                  R
. RO4      R 4       4       t
R t]P                  P                  R]P                  ! ^ ^.4      ^ ^..4      R 4       tRtV tR# )TestDetrendi  c                z    \        VP                  . RO4      4      pVP                  . RO4      p\        W#4       R# )rP   NrO   r  )r*   rY   r:   )r[   r\   	detrendeddetrended_exacts   &&  r`   ra   TestDetrend.test_basic
  s+    BJJy12	**Y/!)=rc   rF   zoverwrite_data not implementedrH   c                v    VP                  . RO4      p\        VRR7      p\        VRR7      p\        W44       R# )rP   F)overwrite_dataTN)rP   333333?r  g?g333333@)rY   r*   r:   )r[   r\   rt   
copy_arrayinplaces   &&   r`   	test_copyTestDetrend.test_copy  s1    JJ./Qu5
!D1!*6rc   r  linearr,  r  c                    VP                  VP                  ^4      R4      p\        WBVR7      pVP                  VP                  8X  g   Q hR# )rM   )r  r  N)rM   rN   r   )r   r   r*   r  )r[   r  r  r\   r  rA  s   &&&&  r`   r  TestDetrend.test_axis  s?     zz"))E*I6D$7	$**,,,rc   c                   . RO. RO,           pVP                  V4      p\        VR^R7      p\        W1P                  V4      RR7       VP                  V4      R	,          p\        VR^^R7      p\        W1P                  V4      RR7       \	        \
        4      ;_uu_ 4        \        VR^R7       RRR4       R#   + '       g   i     R# ; i)
r   rK  )r  bpr   r   N)r  rO  r  r  )rM   r   rK  r0  )Nr  N)rY   r*   r4   r  r   r   )r[   r\   r  rA  s   &&  r`   test_bpTestDetrend.test_bp  s    ?*zz$DxA6		==#;%H zz$.DxAA>		==#;%H :&&DxA. '&&&s   #B<<C	rO  c                (   \         P                  P                  R 4      pVP                  ^
4      pVP	                  V\        V4      R7      p\        V\         P                  4      '       d$   \        V4      '       g   VP	                  V4      pM8\        V4      '       g(   \        V4      '       g   \        P                  ! R4       \        WAR7      pVP	                  . RO4      p\        V4      VP                  8X  d   RMRp\        WVVR7       R# )	i90  r   z'list bp is currently numpy and jax only)rO  r?  r   r   N)
g3   g3   g_rgb	6ſgq]?g=~D?g@zI?gբg?ԅg1
ȿ)r   r  r  r:  rY   r>   r  ndarrayr8   r6   r  r  r*   r   r4   )r[   rO  r\   r  rt   r  res_scipy_191r   s   &&&     r`   test_detrend_array_bp!TestDetrend.test_detrend_array_bp-  s     ii##E*HHRLJJq 0 4J5b"**%%fRjj BBRLLF2JJEFa

 $O P (+rzz9tu6rc   r*  Nr  )r,  r-  r.  r/  ra   r0  rI  r  r  r  r  rP  r   r  rU  r2  r3  r4  s   @r`   r?  r?    s     >
 k*JK7 L7 [[Vh
%;<[[VY/- 0 =-
/  [[TBHHaV$4q!f#=>7 ?7rc   r?  c                   J   a  ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )TestUniqueRootsiD  c                    VP                  . RO4      p\        V4      w  r4\        W2^R7       \        WAP	                  \        V4      \        R7      4       R# )r  r  r   N)r  r!  rk  rF  rs  rY   r+   r;   r5   r  r  r  r[   r\   r  rM  rN  s   &&   r`   test_real_no_repeat#TestUniqueRoots.test_real_no_repeatF  s@    JJ34+AFr2ggc!fCg&@Arc   c                   VP                  . RO4      p\        VRRR7      w  r4\        W1P                  . R	O4      ^R7       \        WAP                  . R
O4      4       \        VRRR7      w  r4\        W1P                  . RO4      ^R7       \        WAP                  . R
O4      4       \        VRRR7      w  r4\        W1P                  . RO4      ^R7       \        WAP                  . R
O4      4       R# )r  r4  r  tolr  r  ry  r  N)r  ffffff{Gz皙rj  r  ?)r  rb  rj  r  rQ   rQ   rP   rQ   )ra  rc  rj  rd  )g333333g
ףp=
rj  gffffff?rY   r+   r;   r5   r[  s   &&   r`   test_real_repeat TestUniqueRoots.test_real_repeatL  s    JJAB+A4uEFJJ/F$GQSTjj&>?+A4uEFJJ/G$HRTUjj&>?+A4uEFJJ/K$L$&	(jj&>?rc   c                    VP                  . RO4      p\        V4      w  r4\        W2^R7       \        WAP	                  \        V4      \        R7      4       R# )r  r  r   N)r  r         ?      ?r  r  rZ  r[  s   &&   r`   test_complex_no_repeat&TestUniqueRoots.test_complex_no_repeat\  s@    JJHI+AFr2ggc!fCg&@Arc   c                   VP                  . RO4      p\        VRRR7      w  r4\        VVP                  . R	O4      ^R7       \        WAP                  . R
O4      4       \        VRRR7      w  r4\        VVP                  . RO4      ^R7       \        WAP                  . R
O4      4       \        VRRR7      w  r4\        VVP                  . RO4      ^R7       \        WAP                  . R
O4      4       R# )r  r4  r  r_  r  ry  r  N)r        𿚙?ffffff333333?333333?rl  rj  ??)r  ro  rl  rq  re  )rn  rp  rl  rj  )y      𿚙?y333333?rl  yffffff??rf  r[  s   &&   r`   test_complex_repeat#TestUniqueRoots.test_complex_repeatb  s    JJ ' (  ,A4uEFJJ'OP$&	( 	jj&>?+A4uEJJ> 	
 	jj&>?+A4uEJJKL	

 	jj&>?rc   c           
        VP                  \        P                  ! \        P                  ! \        P                  ! ^4      \        P                  ! ^4      4      4      4      pVP                  . RO4      p\        V4      w  rEVP                  V4      p\        VP                  V4      V^R7       \        WQP                  . RO4      4       R# )rM   r  N)yw^Zu#yw_Zu#?yN/7? UDoyP/7?TDo?)rQ   rQ   rQ   rQ   )	rY   r   rb  r   r  r+   sortr;   r5   )r[   r\   r  
true_rootsrM  rN  s   &&    r`   test_gh_4915TestUniqueRoots.test_gh_4915~  s    JJrxxBGGAJ
 CDEZZB

  ,ABGGFOZCjj&>?rc   c                j   \        VP                  . RO4      4      w  r#\        W!P                  R R.4      ^R7       \        W1P                  ^^.4      4       \        VP                  . RO4      RR7      w  r#\        W!P                  R R.4      ^R7       \        W1P                  ^^.4      4       R# )	r  r   r  r4  )r`  N)r  r   r  &.>      ?)rP   g_p   ?rz  )r+   rY   r;   r5   rL  s   &&  r`   test_complex_roots_extra(TestUniqueRoots.test_complex_roots_extra  s    +BJJ7G,HIFJJT{$;RHjj!Q&89+JJ/0c 
 	FJJ[/A$BBOjj!Q&89rc   c                l   VP                  \        P                  P                  ^d4      R\        P                  P                  ^d4      ,          ,           4      p\	        V^4      w  r4\        W1P                  \        P                  ! V4      .4      ^R7       \        WAP                  ^d.4      4       R# )r+  r   r  N)rY   r   r  r:  r+   r;   r  r5   r[  s   &&   r`   test_single_unique_root'TestUniqueRoots.test_single_unique_root  ss    JJryy~~c*R"))..2E-EEF+Aq1FJJq	{$;RHjj#&78rc   r*  N)r,  r-  r.  r/  r\  rg  rk  rr  rw  r{  r~  r2  r3  r4  s   @r`   rX  rX  D  s2     B@ B@8
@	:9 9rc   rX  c                      \         P                  ! \        P                  ! R \        P                  R7      ^^4      p V P
                  \        P                  8X  g   Q hR# )r  r   N)r   r2  r   r   r   r   )r  s    r`   test_gh_22684r    s;    !!"))D"Eq!LF<<2<<'''rc   )r)  r  rt  ru  liner  r  r*  )r   r   r   r   )r  r  r_  concurrent.futuresr   r   	itertoolsr   r   r  r   r   numpyr   numpy.exceptionsr	   scipyr
   rO  r  r   scipy.optimizer   r   r   scipy.signalr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   scipy.signal.windowsr.   scipy.signal._signaltoolsr/   r0   r1   scipy.signal._upfirdnr2   
scipy._libr3   scipy._lib._array_apir4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   r  r0  r1  lazy_xp_modulesrE   r7  r  rb  ri  rt  rv  rx  r  r  ra  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  paramr  r<  r?  rB  rl  r~  r  r  r  r  	fail_slowr  r  r  r  r  rm  r  r  r<  r  r  r&  r"  r?  rX  r  r*  rc   r`   <module>r     sl   
   ?    *  +  % 6          & T T 0 !     ;;// KK11 ( 8o4 o4 o4d :[" [" ["| ;mL mL  mL`3

C
 :R$ R$ R$j $'JK.{;.z:<=90 90= L90x $'JK892==".."AB8[)	 * C : L	U* U*p 6==!L L "L  C > !v, v,r	 6(()1 1 *1> 6&&'[E [E ([E| 7h
 h
 h
V/ /  $$5    1 !2  $&7    7F F 7K K
   ! " ;'9:9H H  ;"HV 9/I /I /Id #$!:;D%=1S$(.U6;;CSCSBT(U(.U6;;CSCSBT(U(W +	 2 < %+2 #$2 %2
 9[,$?@w+ w+ A w+v:Q :Qz :6 6 6@ 8[)z% z% *z%z ;)Ll L *L(*Z4@ %&r?  '?6 %&G 'G $r@   @: 6??#~% ~% $~%@ 7e9 e9 e9P 8u& u& u&p 8sA sA sAlS( S(l >"ZB ZB #ZBF 4 7PQk? k? R  !k?\ 6$$%&2 &2 &&2R 797 97 97x < T9 T9 !T9n(rc   