
    -iiJ                        d dl Z d dlZd dlmZmZmZmZmZm	Z	m
Z
 d dlZd dlmZ d dlmZ ej        j        Zej        j        ZegZ G d d          Zej        ej        eej        ej        ej        eeej        ej        eeiZ ed           G d	 d
                      Z eej                  d             Z eej                  d             Z dS )    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                      e Zd ZdZ eej                  d             Z eej                  d             Z eej	                  d             Z
 edd           eej	                  d                         Z eej                  d	             Z eej                  d
             Z edd           eej                  d                         Z edd           eej                  d                         ZdS )TestBSplinesa  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                    t           j                            d          }t          t          t
          j        |                    dg          d           |                    dd          }ddd|z  z
  z  }|                    |          }|                    g dg dg d	g d
g dg dg dg dg dg dg dg dg|j	                  }t          t          j        |d          |           d S )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        f/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/signal/tests/test_bsplines.pytest_spline_filterzTestBSplines.test_spline_filter   s   i##E**y&.

A3CCC((2r**a/ 112**_55JJ@ @ @@ @ @? ? ?@ @ @@ @ @@ @ @@ @ @? ? ?@ @ @@ @ @A A A@ @ @C#AF IK
I ' $T $TJ 	,_a@@)	+ 	+ 	+ 	+ 	+    c           
         t           j                            d          }|                    dd          |                    dd          dz  z   }ddd|z  z
  z  }|                    |          }|                    g dg dg d	g d
g dg dg dg|j                  }t          t          j        |d          |d           d S )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_complexz'TestBSplines.test_spline_filter_complexL   s/   i##E** XXa^^chhq!nnR.??a(:&:!:;ZZ(:;;!zz& & && & && & &% % %+ + +& & &% % %1&6 .0]9  *  <  <@ 	,-?CC,4	9 	9 	9 	9 	9 	9r%   c                     t          j        t          j        dd          d          sJ t	          t          j        |                    dg          d          |                    dg          d           d S )Nr   g<~?      ?r   g?g&.>atol)mathiscloser   gauss_spliner   r   )r   r   s     r#   test_gauss_splinezTestBSplines.test_gauss_splinew   sy    |F/1557HIIIII+BJJt,<,<a@@

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

B4rz
::	< 	< 	<jj & & &-/Z  9 9 	(4D4D4D)E)EqII3OOOzz ' ' '.0j  : :(4D4D4D)E)EFFMMMMMr%   c                 8   t          t          j        |                    dg                    |                    dg|j                             t          t          t          j        |                    g d          d           t          t          t          j        |                    g d          d           |                    g d|j                  }t          t          j        |                    g d|j                            |           d S )Nr   r:   r   r@   r.   r9   )g)`O?gAk2 @g@go@g5ڕ@)r   r   	qspline1dr   r   r
   
ValueErrorr   )r   r   q1d0s      r#   test_qspline1dzTestBSplines.test_qspline1d   s   (QC99

B4rz
::	< 	< 	< 	z6+RZZ8H8H8H-I-I2NNNz6+RZZ8H8H8H-I-I3OOOzz ' ' '.0j  : :RZZ(8(8(8
ZKKLLd	
 	
 	
 	
 	
r%   cupyz&https://github.com/cupy/cupy/pull/9484r7   c           	      J   t          j        |                    ddg|j                  |                    dg|j                            }t	          ||                    dg|j                             t          j        |                    g d|j                  |                    g |j                            }t          ||                    g |j                             t          j        |                    g d|j                  |                    dg|j                            }t	          ||                    dg|j                             g d}|d         |d         z
  }g d	}|                    g d
          }|                    t          j        t          |                              }|                    g d|j                  }t	          t          j        ||                    |          ||d                   |           t          j	        t          d          5  t          j        |                    g |j                  |                    dg|j                             d d d            d S # 1 swxY w Y   d S )Nr:   r   r   r.   r   r   r9   gQUU?
r   r   r   r;   rA   rB      r   &g      g      g      g      g      g      g      g      g       g      r9   g      r:         ?r.   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`@)&ra   SW@r`   7.O@r_   00/@g)-3/@rj   r_   ri   r`   rh   ra   ^:@rb   4Ev@rc   c4~#.@rd   uyJ9@re   /~	@rf   Y@@rg   rp   rf   ro   re   rn   rd   rm   rc   rl   rb   rk   ra   rh   dxx0+Spline coefficients 'cj' must not be empty.match)r   cspline1d_evalr   r   r   r   rC   r	   pytestr
   rI   	r   r   rxrr   newxycjnewys	            r#   test_cspline1d_evalz TestBSplines.test_cspline1d_eval   s    !"**b!WBJ*"G"G!zz2$bjzAAC C2::rd"*:==>>>!"**ZZZrz*"J"J!zz"BJz??A A2::b
:;;<<< !"**[[[
*"K"K"$**dV2:*"F"FH H2::zl"*:EEFFF---qTAaD[   JJ & & & ' 'ZZ():1)=)=>>??zz : : : BD  M M 	!"bjj&6&62!A$GGG	
 	
 	
 ]:"OQ Q Q 	G 	G!"**Rrz*"B"B"$**cU"**"E"EG G G	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs    AJJJc                    t          t          j        |                    ddg          |                    dg                    |                    dg                     t	          t          j        |                    g d          |                    g                     |                    g                      t          j        |                    g d|j                  |                    dg|j                            }t	          ||                    dg|j                             g d}|d         |d         z
  }g d	}|                    g d
          }t          j        |          }|                    g d|j                  }t          j        ||                    ||j                  ||d                   }t          ||           t          j        t          d          5  t          j        |                    g |j                  |                    dg|j                             d d d            d S # 1 swxY w Y   d S )Nr:   r   rO   r   r9   g      ?rP   r   rU   r^   )&ra   TW
@r`   oR@r_   bP@geW/@r   r_   r   r`   r   ra    B@rb   HG(@rc   nfWΜ=@rd   %d	O@re   u#	@rf   )C@rg   r   rf   r   re   r   rd   r   rc   r   rb   r   ra   r   rq   rt   ru   )
r   r   qspline1d_evalr   r   r   rH   rx   r
   rI   ry   s	            r#   test_qspline1d_evalz TestBSplines.test_qspline1d_eval   s    	-bjj"a.A.A2::rdCSCSTT

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

2	
 	
 	

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

4rz
22rad
 
 
 	4   ]:!NP P P 	G 	G!"**Rrz*"B"B"$**cU"**"E"EG G G	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   ;AIIIN)__name__
__module____qualname____doc__r   r   r   r$   r,   r3   r4   skip_xp_backendsr>   rC   rF   rH   rK   xfail_xp_backendsrw   r   r   r    r%   r#   r   r      s       H H
 v+,,/+ /+ -,/+b v+,,(9 (9 -,(9T v*++
 
 ,+
 d+QRRRv*++
 
 ,+ SR
 v'((	N 	N )(	N v'((

 

 )(

 v&NOOOv,--%G %G .- PO%GN v&NOOOv,--%G %G .- PO%G %G %Gr%   r   T)r6   c                      e Zd Zd Zd Zej                            dej	        e
ej        eej        eg          d             Z edd          ej                            dej	        e
ej        eej        eg          d                         Z edd          ej                            d	
          d                         Z edd          ej                            d
          ej        j        ej                            dej	        e
ej        eej        eg          d                                                 ZdS )TestSepfir2dc           	         |                     g d          }t          j                            dd          }|                     |          }t	          j        |||dd                     t          j        t          d          5  t	          j        |||dd                     d d d            n# 1 swxY w Y   t          j        t          d          5  t	          j        ||dd          |           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          j        ||	                    |d	          |           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          j        |||	                    |d	                     d d d            d S # 1 swxY w Y   d S )
Nr.   rW   rZ   rW   r.   r'   	   r   z
odd lengthru   r   object too deep)r   rS   )
r   r   r   r   r   sepfir2drx   r
   rI   reshaper   r   filtimages       r#   test_sepfir2d_invalid_filterz)TestSepfir2d.test_sepfir2d_invalid_filter   s   zz33344	q!$$

5!!tT!""X... ]:\::: 	3 	3OE4abb222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3]:\::: 	3 	3OE48T222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 ]:->??? 	D 	DOE2::dG#<#<dCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D]:->??? 	D 	DOE4D')B)BCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	DsH   B11B58B5DD	D(+EE#&E#+F==GGc                     |                     g d          }t          j                            dd          }|                     |          }t	          j        t          d          5  t          j        |	                    |d          ||           d d d            n# 1 swxY w Y   t	          j        t          d          5  t          j        |dd d f         ||           d d d            d S # 1 swxY w Y   d S )Nr      r   ru   )rA   rA   rA   zobject of too small depthr   )
r   r   r   r   rx   r
   rI   r   r   r   r   s       r#   test_sepfir2d_invalid_imagez(TestSepfir2d.test_sepfir2d_invalid_image  s|   zz33344	q!$$

5!! ]:->??? 	F 	FOBJJui88$EEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F ]:-HIII 	5 	5OE!QQQ$Kt444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s$   (+BB#&B#!C33C7:C7dtypc                    t          j        g dg dg dg dg|          }g d}dg}t          j        |||          }t          |         }t          j        g dg dg dg dg|          }t          ||d           t          j        |||          }t          j        g dg dg dg dg|          }t          ||d           d S )	N)r   r   r;   r;   r   r   r   rV   r   rV   r   )rX   rZ   r[   r[   rZ   rX   gؗҜ<r/   )rW   rZ   r\   r\   rZ   rW   )r   arrayr   r   sepfir_dtype_mapr   r   )	r   r   r   ah1h2resultdtexpecteds	            r#   test_simplezTestSepfir2d.test_simple  sP   
 H((((((((((((* 267 7 7 ]]SB++d#:============? GIJ J J 	u5555B++:7777777777779 ACD D D 	u555555r%   TzTODO: convert this testr5   c                 L   t          j        g dg dg dg dg          }g ddg}}t          j        |d d d d df         ||          }t          j        |d d d d df                                         ||          }t          ||d           |j        |j        k    sJ d S )N)	r   r   r;   r;   r   r   r   r   r;   r   r   r   V瞯<r/   )r   r   r   r   copyr   r   )r   r   r   r   r   r   result_stridedresult_contigs           r#   test_stridedzTestSepfir2d.test_strided5  s    
 H1110000000002 3 3 B111ccc6B;;!!!SSqS&	(8(8"bAAEBBBB#}':::::::r%   z#XXX: filt.size > image.shape: flakyrM   c           
         t          j        g d          }t           j                            dd          }t          j        g dg dg dg dg          }t          t          j        |||d d d                   |           d S )N)r.   rW   rZ   rW   r.   rY   rW   rA   )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_2z$TestSepfir2d.test_sepfir2d_strided_2D  s    
 x;;;<<	q!$$:KKK L L L L L L L L LN O O 	tT##A#Y??JJJJJr%   z*XXX: flaky. pointers OOB on some platformsc                 J   t          j        g d|          }t          j        g dg dg dg dg dg|          }g dg d	g d
g dg dg}t          j        |          }t          j        |||d d d                   }t          ||d           |j        t          |         k    sJ g dg dg dg dg dg}t          j        |          }t          j        ||d d d         |d d d                   }t          ||d           |j        t          |         k    sJ d S )N)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   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   r/   )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_3z$TestSepfir2d.test_sepfir2d_strided_3R  s    x---T:::
OOO+OO+OO+OO+OO	- 59	: : : 322222222222222	4
 :h''d33Q3i88u5555|/55555---------------	/
 :h''SSqS	4!9==u5555|/5555555r%   N)r   r   r   r   r   rx   markparametrizer   uint8intfloat32float	complex64complexr   r   r   xfailr   	fail_asanr   r   r%   r#   r   r      s       D D D&
5 
5 
5 [V	3
E2<A 6 6 6. d+DEEE[V	3
E2<A 	; 	;  FE	; d+DEEE[CDD
K 
K ED FE
K d+DEEE[JKK[[V	3
E2<A 6 6   LK FE6 6 6r%   r   c                    t           j                            d          }|                    dd          }|                     |t          |                     }t          j        |d          }t          |          | k    sJ d S )NiW
G   I   r   r]   )	r   r   r   r   r   r   r   	cspline2dr   r   r    r   r   s       r#   test_cspline2dr   x  sy    
)

	
*
*CHHREJJu$4R$8$8J99EeS))F6""b((((((r%   c                 
   t           j                            d          }|                    dd          }|                     |t          |                     }t          j        |          }t          |          | k    sJ d S )NiW
r   r   r   )	r   r   r   r   r   r   r   	qspline2dr   r   s       r#   test_qspline2dr     sw    
)

	
*
*CHHREJJu$4R$8$8J99Ee$$F6""b((((((r%   )!r1   numpyr   scipy._lib._array_apir   r   r   r   r   r   r	   rx   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                                     ;/ K1 (]G ]G ]G ]G ]G ]G ]G ]GB Hbj#rzJ
E5L",B 
 $z6 z6 z6 z6 z6 z6 z6  z6z 6#$$) ) %$) 6#$$) ) %$) ) )r%   