
    doiJ                        S SK r S SKrS SKJrJrJrJrJrJ	r	J
r
  S SKrS SKJr  S SKJr  \R                  R                   r\R                  R"                  r\/r " S S5      r\R(                  \R*                  \\R.                  \R*                  \R*                  \\\R2                  \R2                  \\0r\" SS9 " S	 S
5      5       r\" \R:                  5      S 5       r\" \R>                  5      S 5       r g)    N)assert_almost_equalxp_assert_closexp_assert_equalmake_xp_test_casexp_default_dtypearray_namespace_xp_copy_to_numpy)raises)signalc                      \ rS rSrSr\" \R                  5      S 5       r\" \R                  5      S 5       r	\" \R                  5      S 5       r\" SSS9\" \R                  5      S	 5       5       r\" \R                  5      S
 5       r\" \R                   5      S 5       r\" SSS9\" \R&                  5      S 5       5       r\" SSS9\" \R*                  5      S 5       5       rSrg)TestBSplines   a  Test behaviors of B-splines. Some of the values tested against were
returned as of SciPy 1.1.0 and are included for regression testing
purposes. Others (at integer points) are compared to theoretical
expressions (cf. Unser, Aldroubi, Eden, IEEE TSP 1993, Table 1).c                    [         R                  R                  S5      n[        [        [
        R                  UR                  S/5      S5        UR                  SS5      nSSSU-  -
  -  nUR                  U5      nUR                  / SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9n[        [
        R                  " US5      U5        g )N0  r      
         )g7ݿgD @g5P?gB߸"@gyӼ®@gE5`@g&)#@gEf!g<@gSbυ.X gFgg$`#@)gI<M$k@gYvR@gd)B	g,#@gd?H#gk"`	@g)k	gi	V@gH-Q#@gn)Ҕ g3%0?g@	)gAZg9s@g /{Dg٩@gEC@g'UE@gآ?@gւ gzk@ga"@g򿽴~gKG#@)g$9gL|wglT@g?ss}aJ?g7iH^	gt,`?gh@glA1mg(T#g* #gDV#@g@)g'"@ga+ٓgE=a@g:"gIV@g5@gYd\gі1pg"2 g:i@gi^J @g`HQ!)g^!g#Mƽ!@g论H&@gfQq@g%gm̂r!@g
,@gY bgY#@g/-i@g Vqg")gH"@ggʜ6@ggeg&P@gY2#Cg
0@g|0g *!/@g(gqq?g)a)gF!Ígzǫg^geF?g
O0!gV<gtСg%9W@g^[H#@g3Fz?g.5 gsd?)g놎g,
@gA/u@g`9ogebgȀ@gMgZa@g<ˉ8g:ɘ%@gdH	g4g:Ns@)gg-ҿgE- g)in"@gd.xg2~wgďgYr4Q?gkM-:g,@g+ @gVu)g@+_$?gKGj?g[ C$}@g_gD/X@gHgJSʌ@g@ggN+gë	gk8gjZ@)gݵB`#@g+N?g	gg'g=!"F@gƱҟ"g'-:@g#g'gj \B@g~ge@g$q߼dtype)nprandomRandomStater
   	TypeErrorr   spline_filterasarrayrandfloat64r   )selfxprngdata_array_realresult_array_reals        \/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/signal/tests/test_bsplines.pytest_spline_filterTestBSplines.test_spline_filter   s    ii##E*y&..

A3C((2r*a/ 112**_5JJ@@?@@@@?@@A@C#AF IK

I ' $TJ 	,,_a@)	+    c           
      h   [         R                  R                  S5      nUR                  SS5      UR                  SS5      S-  -   nSSSU-  -
  -  nUR	                  U5      nUR	                  / SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/UR
                  S9n[        [        R                  " US5      USS9  g )Nr      y              ?r   y      ?      ?r   )y$
ݿ%)y @;;R@yH?k៌"y?!@3⟥@yʱƯ@bȺ@ymտ5a@,y`#@A4p)yF! y韷@@_@yw.X /@ @y4 L &Q!yjٿ_#@!yߟk@a
 ƽ!@ySh?@ӿ&@)y?@	X@@yH:#@~%yXH#r!@y} "`	@)ƿ@y@k	ubyoU@I"$#@yA Q#@,i@)yb@r ߂KqyӔ?Ȥ"yr	"@y%`Zv.y$?s@*  7@yxebeyC@P@)y?M@k9FyθUE@4%@@y[y@#?0yN 5H /@ywk@y"a"@$?y~H)y}?\#@A?y	dy{_( y^p@;^F?yu?aJ?U 0!y\@^	Kyx_?+ߡ)yl.@@9UY@yNЪmxp[H#@yDT#bz?yh #F5 y#@^d?y<@V?y{?"@&@@r   r   gư>)rtol)	r   r   r   r   r   
complex128r   r   r   )r   r    r!   data_array_complexresult_array_complexs        r$   test_spline_filter_complex'TestBSplines.test_spline_filter_complexL   s    ii##E* XXa^chhq!nR.??a(:&:!:;ZZ(:;!zz&&&%+&%1&6 .0]]9  *  <@ 	,,-?C,4	9r'   c                     [         R                  " [        R                  " SS5      S5      (       d   e[	        [        R                  " UR                  S/5      S5      UR                  S/5      SS9  g )Nr   g<~?      ?r   g?g&.>atol)mathiscloser   gauss_spliner   r   )r   r    s     r$   test_gauss_splineTestBSplines.test_gauss_splinew   sY    ||F//157HIIII++BJJt,<a@

J<0t	
r'   Tz$deliberate: array-likes are acceptednp_onlyreasonc                 z    / SQn[        [        R                  " US5      [        R                  " / SQ5      5        g )N)              r=      )硫Y.?gye~?r@   )r   r   r6   r   r   )r   r    knotss      r$   test_gauss_spline_list#TestBSplines.test_gauss_spline_list   s-     "F//q9JJ'JK	
r'   c                    [        [        R                  " UR                  S/5      5      UR                  S/UR                  S95        UR                  / SQUR                  S9n[        [        R                  " UR                  / SQ5      S5      U5        UR                  / SQUR                  S9n[        [        R                  " UR                  / SQ5      5      U5        g )Nr   r>   r   )g{߮]?gzU%?gz@g6fw@gven'@r1   r   r?         r   )g|-?g>!<m @g6L@glMO@g>}@)r   r   	cspline1dr   r   r   )r   r    c1dc1d0s       r$   test_cspline1dTestBSplines.test_cspline1d   s    ((QC9

B4rzz
:	<jj &-/ZZ  9 	((4D)EqI3Ozz '.0jj  :((4D)EFMr'   c           	         [        [        R                  " UR                  S/5      5      UR                  S/UR                  S95        [        [        [        R                  UR                  / SQ5      S5        [        [        [        R                  UR                  / SQ5      S5        UR                  / SQUR                  S9n[        [        R                  " UR                  / SQUR                  S95      U5        g )Nr   r>   r   rE   r1   r=   )g)`O?gAk2 @g@go@g5ڕ@)r   r   	qspline1dr   r   r
   
ValueErrorr   )r   r    q1d0s      r$   test_qspline1dTestBSplines.test_qspline1d   s    ((QC9

B4rzz
:	< 	z6++RZZ8H-I2Nz6++RZZ8H-I3Ozz '.0jj  :RZZ(8

ZKLd	
r'   cupyz&https://github.com/cupy/cupy/pull/9484r;   c           	         [         R                  " UR                  SS/UR                  S9UR                  S/UR                  S95      n[	        X!R                  S/UR                  S95        [         R                  " UR                  / SQUR                  S9UR                  / UR                  S95      n[        X!R                  / UR                  S95        [         R                  " UR                  / SQUR                  S9UR                  S/UR                  S95      n[	        X!R                  S/UR                  S95        / SQnUS   US   -
  n/ S	QnUR                  / S
Q5      nUR                  [         R                  " [        U5      5      5      nUR                  / SQUR                  S9n[	        [         R                  " XqR                  U5      XCS   S9U5        [        R                  " [        SS9   [         R                  " UR                  / UR                  S9UR                  S/UR                  S95        S S S 5        g ! , (       d  f       g = f)Nr>   r   r   r1   r   r   r=   gQUU?
r   r   r   r?   rF   rG      r   &g      g      g      g      g      g      g      g      g       g      r=   g      r>         ?r1   g      ?       @      @      @g      @      @g      @g      @      @      @g      @g      @g      @       @g      !@g      "@g      #@g      $@g      %@g      &@g      '@g      (@g      )@
gw/@~jt@&1@Zd;@K7	@Zd@"~@jt@tV?K7A`@)&rh   SW@rg   7.O@rf   00/@g)-3/@rq   rf   rp   rg   ro   rh   ^:@ri   4Ev@rj   c4~#.@rk   uyJ9@rl   /~	@rm   Y@@rn   rw   rm   rv   rl   ru   rk   rt   rj   rs   ri   rr   rh   ro   dxx0+Spline coefficients 'cj' must not be empty.match)r   cspline1d_evalr   r   r   r   rH   r	   pytestr
   rO   	r   r    rxry   newxycjnewys	            r$   test_cspline1d_eval TestBSplines.test_cspline1d_eval   s    !!"**b!WBJJ*"G!zz2$bjjzAC::rd"**:=>!!"**Zrzz*"J!zz"BJJz?A::b

:;< !!"**[

*"K"$**dV2::*"FH::zl"**:EF-qTAaD[ JJ & 'ZZ(():1)=>?zz : BD  M 	!!"jj&62A$G	
 ]]:"OQ!!"**Rrzz*"B"$**cU"***"EGQ Q Qs   A	I
I#c           	      >   [        [        R                  " UR                  SS/5      UR                  S/5      5      UR                  S/5      5        [	        [        R                  " UR                  / SQ5      UR                  / 5      5      UR                  / 5      5        [        R                  " UR                  / SQUR
                  S9UR                  S/UR
                  S95      n[	        X!R                  S/UR
                  S95        / SQnUS   US   -
  n/ S	QnUR                  / S
Q5      n[        R                  " U5      nUR                  / SQUR
                  S9n[        R                  " XqR                  XQR
                  S9XCS   S9n[        X(5        [        R                  " [        SS9   [        R                  " UR                  / UR
                  S9UR                  S/UR
                  S95        S S S 5        g ! , (       d  f       g = f)Nr>   r   rV   r   r=   g      ?rW   r   r\   re   )&rh   TW
@rg   oR@rf   bP@geW/@r   rf   r   rg   r   rh    B@ri   HG(@rj   nfWΜ=@rk   %d	O@rl   u#	@rm   )C@rn   r   rm   r   rl   r   rk   r   rj   r   ri   r   rh   r   rx   r{   r|   )
r   r   qspline1d_evalr   r   r   rN   r   r
   rO   r   s	            r$   test_qspline1d_eval TestBSplines.test_qspline1d_eval   s    	--bjj"a.A2::rdCST

B4(	
 	--bjj.DbjjQSnU

2	

 !!"**[

*"K"$**dV2::*"FH::tfBJJ:?@-qTAaD[ JJ & 'a zz : BD  M !!

4zz
2rd
 	 ]]:!NP!!"**Rrzz*"B"$**cU"***"EGP P Ps   <A	H
H N)__name__
__module____qualname____firstlineno____doc__r   r   r   r%   r.   r6   r7   skip_xp_backendsrB   rH   rK   rN   rQ   xfail_xp_backendsr~   r   r   r   __static_attributes__r   r'   r$   r   r      s<   H
 v++,/+ -/+b v++,(9 -(9T v**+
 ,
 d+QRv**+
 , S
 v''(	N )	N v''(

 )

 v&NOv,,-%G . P%GN v&NOv,,-%G . P%Gr'   r   T)r:   c                      \ rS rSrS rS r\R                  R                  S\	R                  \\	R                  \\	R                  \/5      S 5       r\" SSS9\R                  R                  S\	R                  \\	R                  \\	R                  \/5      S	 5       5       r\" SSS9\R                  R'                  S
S9S 5       5       r\" SSS9\R                  R'                  SS9\R                  R*                  \R                  R                  S\	R                  \\	R                  \\	R                  \/5      S 5       5       5       5       rSrg)TestSepfir2d   c           	      \   UR                  / SQ5      n[        R                  R                  SS5      nUR                  U5      n[        R
                  " X2USS  5        [        R                  " [        SS9   [        R
                  " X2USS  5        S S S 5        [        R                  " [        SS9   [        R
                  " X2SS  U5        S S S 5        [        R                  " [        SS9   [        R
                  " X1R                  US	5      U5        S S S 5        [        R                  " [        SS9   [        R
                  " X2UR                  US	5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nz= f! , (       d  f       g = f)
Nr1   r^   ra   r^   r1   r)   	   r   z
odd lengthr|   r   object too deep)r   rZ   )
r   r   r   r   r   sepfir2dr   r
   rO   reshaper   r    filtimages       r$   test_sepfir2d_invalid_filter)TestSepfir2d.test_sepfir2d_invalid_filter   s   zz34		q!$

5!T!"X. ]]:\:OOEab2 ;]]:\:OOE8T2 ; ]]:->?OOE::dG#<dC @]]:->?OOED')BC @? ;::: @???s0   8E*4E;0(F9(F*
E8;
F	
F
F+c                    UR                  / SQ5      n[        R                  R                  SS5      nUR                  U5      n[        R
                  " [        SS9   [        R                  " UR                  US5      X"5        S S S 5        [        R
                  " [        SS9   [        R                  " USS S 24   X"5        S S S 5        g ! , (       d  f       NO= f! , (       d  f       g = f)Nr      r   r|   )rF   rF   rF   zobject of too small depthr   )
r   r   r   r   r   r
   rO   r   r   r   r   s       r$   test_sepfir2d_invalid_image(TestSepfir2d.test_sepfir2d_invalid_image  s    zz34		q!$

5! ]]:->?OOBJJui8$E @ ]]:-HIOOE!Q$K4 JI @? JIs   (C'C 
C 
C.dtypc                 n   [         R                  " / SQ/ SQ/ SQ/ SQ/US9n/ SQnS/n[        R                  " X4U5      n[        U   n[         R
                  " / SQ/ SQ/ SQ/ SQ/US9n[        XhSS9  [        R                  " X5U5      n[         R
                  " / SQ/ SQ/ SQ/ SQ/US9n[        XhSS9  g )	N)r   r   r?   r?   r   r   r   r]   r   r]   r   )r_   ra   rb   rb   ra   r_   gؗҜ<r2   )r^   ra   rc   rc   ra   r^   )r   arrayr   r   sepfir_dtype_mapr   r   )	r   r   r    ah1h2resultdtexpecteds	            r$   test_simpleTestSepfir2d.test_simple  s    
 HH((((* 267 S+d#::====? GIJ 	u5+::77779 ACD 	u5r'   TzTODO: convert this testr9   c                 @   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n/ SQS/pT[        R                  " US S 2S S S24   XE5      n[        R                  " US S 2S S S24   R	                  5       XE5      n[        XgSS9  UR                  UR                  :X  d   eg )N)	r   r   r?   r?   r   r   r   r   r?   r   r   r   V瞯<r2   )r   r   r   r   copyr   r   )r   r   r    r   r   r   result_stridedresult_contigs           r$   test_stridedTestSepfir2d.test_strided5  s    
 HH10002 3 B1cc6B;!SqS&	(8"AEB##}':'::::r'   z#XXX: filt.size > image.shape: flakyrT   c           
         [         R                  " / SQ5      n[         R                  R                  SS5      n[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        [        R                  " X2US S S2   5      U5        g )N)r1   r^   ra   r^   r1   r`   r^   rF   )g!SB@g¿3=>@gs`[C@gsLhE@)gͨ*C@g5A@g;/K;E@g<f2E@)gE@g>#jD@gB`G@g]n0a#F@)gٕzH@g|FC@gǜgKE@gCF@r?   )r   r   r   r   r   r   r   r   )r   r    r   r   r   s        r$   test_sepfir2d_strided_2$TestSepfir2d.test_sepfir2d_strided_2D  sg    
 xx;<		q!$::K L L LN O 	T#A#Y?Jr'   z*XXX: flaky. pointers OOB on some platformsc                 "   [         R                  " / SQUS9n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/US9n/ SQ/ S	Q/ S
Q/ SQ/ SQ/n[         R                  " U5      n[        R                  " XCUS S S2   5      n[        XeSS9  UR                  [        U   :X  d   e/ SQ/ SQ/ SQ/ SQ/ SQ/n[         R                  " U5      n[        R                  " XCS S S2   US S S2   5      n[        XeSS9  UR                  [        U   :X  d   eg )N)r   r   rF   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   )g     ^@g     @Y@g     V@      a@g     _@)     `@g     @_@g     _@      c@g      d@)r   g      a@g     b@g     @d@g      f@)r   g      _@g     `@g     b@g     `b@)g     e@g     c@r   g     d@g     a@r?   r   r2   )g      6@g     A@     D@g      ?@     G@)g      ;@     C@      H@r   g     K@)g     @@g      E@g     H@g     J@g     M@)r   g      F@r   g      B@r   )g     P@g      O@r   g      A@g      G@)r   r   r   r   r   r   r   r   )r   r   r    r   r   r   r   s          r$   test_sepfir2d_strided_3$TestSepfir2d.test_sepfir2d_strided_3R  s    xx-T:

O++++	- 59	: 32222	4
 ::h'd3Q3i8u5||/5555-----	/
 ::h'SqS	4!9=u5||/5555r'   r   N)r   r   r   r   r   r   r   markparametrizer   uint8intfloat32float	complex64complexr   r   r   xfailr   	fail_asanr   r   r   r'   r$   r   r      s[   D&
5 [[V	3

E2<<A66. d+DE[[V	3

E2<<A	; F	; d+DE[[CD
K E F
K d+DE[[JK[[[[V	3

E2<<A6  L F6r'   r   c                     [         R                  R                  S5      nUR                  SS5      nU R	                  U[        U 5      S9n[        R                  " US5      n[        U5      U :X  d   eg )NiW
G   I   r   rd   )	r   r   r   r   r   r   r   	cspline2dr   r    r!   r   r   s       r$   test_cspline2dr   x  sc    
))

	
*CHHREJJu$4R$8J9EeS)F6"b(((r'   c                     [         R                  R                  S5      nUR                  SS5      nU R	                  U[        U 5      S9n[        R                  " U5      n[        U5      U :X  d   eg )NiW
r   r   r   )	r   r   r   r   r   r   r   	qspline2dr   r   s       r$   test_qspline2dr     sa    
))

	
*CHHREJJu$4R$8J9Ee$F6"b(((r'   )!r4   numpyr   scipy._lib._array_apir   r   r   r   r   r   r	   r   r
   scipyr   r   r   r   lazy_xp_modulesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r'   r$   <module>r      s          ;;// KK11 (]G ]GB HHbjj#rzzJJ

E5LL",,B 
 $z6 z6  z6z 6##$) %) 6##$) %)r'   