
    -iB                         S SK r S SKrS SKrS SKJs  Jr  S SKJ	r	J
r
Jr  S SKJrJrJr  S SKJrJr  \R&                  R(                  r\R&                  R*                  rS rS r " S S5      rg)	    N)is_cupyxp_assert_closexp_default_dtype)symiirorder1_icsymiirorder2_ic_fwdsymiirorder2_ic_bwd)symiirorder1symiirorder2c                 L   ^  T R                  [        U 4S jU 5       5      5      $ )Nc              3   P   >#    U  H  n[         R                  " US TS9v   M     g7f)   )ndimxpN)xpx
atleast_nd).0xr   s     R/var/www/html/venv/lib/python3.13/site-packages/scipy/signal/tests/test_splines.py	<genexpr>npr.<locals>.<genexpr>   s     JT3>>!!;Ts   #&)concattuple)r   argss   ` r   nprr      s    99UJTJJKK    c                    X-  n[         R                  " U 5      n [         R                  " X S-  5      nUSU-   -  SU-
  -  SSU-  [         R                  " SU-  5      -  -
  X"-  -   -  nSU-
  SU-   -  [         R                  " U5      -  nXe-  [         R                  " X0-  5      U[         R
                  " X0-  5      -  -   -  $ )N       @      ?r      )npabspowercostansin)kcsrsqomegacssqrsupkc0gammas           r   _compute_symiirorder2_bwd_hsr.      s    7D
q	AHHSc'"E
#)
c	
*q3wE	***SY68B3Y39%u5E:	*URVVEI5F-FFGGr   c            	          \ rS rSr\" SSS9\R                  R                  S/ SQ5      \R                  R                  S/ SQ5      S	 5       5       5       r\" SSS9S
 5       r	\" SS/SS9\
" SSS9\" SSS9\R                  R                  S/ SQ5      \R                  R                  S/ SQ5      S 5       5       5       5       5       r\
" SSS9\" SS/SS9\R                  R                  SSS/5      S 5       5       5       r\" SSS9\R                  R                  SSS/5      \R                  R                  S/ SQ5      S 5       5       5       r\" SSS9\R                  R                  SSS/5      \R                  R                  S/ SQ5      S 5       5       5       r\" SSS9\" SSS9\R                  R                  SSS/5      \R                  R                  S/ SQ5      S 5       5       5       5       r\" SS/SS9\R                  R                  SSS/5      S 5       5       r\" SS/SS9\
" SSS9S  5       5       r\" SS/SS9\
" SSS9S! 5       5       rS"rg#)$
TestSymIIR   Tz(_ic functions are private and numpy-only)np_onlyreasondtype)float32float64	complex64
complex128	precision)g      gffffff?      ?g      ?gQ~?c                    [        X15      nUnUS::  d  US:  a   XR                  UR                  1;   a  SnOSnSn[        [        R
                  " [        R                  " U5      [        R                  " U5      -  5      5      nUR                  SXV-  -
  SU-
  -  //US9nSXW-  -   nUR                  US-   US9n[        [        XU5      USS	S
9  UR                  XQS9n	[        R                  " SSU	-  U-  -
  SSU	-  -
  -  //US9nSX-  -   nSUR                  US-   US9* -  n[        [        XU5      USS	S
9  g )N        r   ư>dy=333333?r   r4   >gH׊>atolrtolr:   r   )getattrr5   r7   intmathceillogasarrayonesr   r   r    arange)
selfr4   r9   r   c_precisionbn_expexpectedr   b_ds
             r   test_symiir1_icTestSymIIR.test_symiir1_ic!   s\    "y3R\\22"# DIIdhh{3dhhqkABC::QZAE :;<E:Jq|# GGEAIUG+i8(!	. jjj(::C#I%''AsO<=>eMs~% "))EAIU)333i8(!	.r   c                    SnUR                  SUR                  S9nSSU-
  -  n[        R                  " [        [
        X2U5        [        R                  " [        [
        USS5        [        R                  " [        [
        USS5        g )Nr?   d   r@   r   r   r   )rK   r6   pytestraises
ValueErrorr   )rM   r   rO   r   r9   s        r   test_symiir1_ic_fails TestSymIIR.test_symiir1_ic_failsT   sj     GGCrzzG* QK	j/1C 	j/1c2>j/1c2>r   cupyzinternals are numpy-only)cpu_only
exceptionsr3   zsum did not converge)r3   z	jax.numpyzitem assignment in testsc                 F   [        X15      nUnUS::  d  US:  a   XR                  UR                  1;   a  SnOSnSnSnSnUR                  XqS9n[	        [
        R                  " [
        R                  " U5      [
        R                  " U5      -  5      5      n	UR                  S	Xi-  -
  S	U-
  -  US9n
S	Xj-  -   n
UR                  UR                  U5      U5      nXU-  -  nUR                  XqS9nU* S	U-
  -  XkS S
 -  -  US	S & UR                  XqS9nS	S	U-
  -  US	S & X-   U-   nU* US-
  -  US
   -  nUR                  XqS9nUUS'   [        S	U5       H  nX_US	-
  U-
     -  UUUS	-
     -  -   UU'   M!     UR                  U5      n[        XXb5      n[        UUSSS9  g )Nr<   r   r=   r>   g333333?r?      r@   r   rW   r   >v!>rB   )rE   r5   r7   rK   rF   rG   rH   rI   rJ   astyperL   zerosrangeflipr	   r   )rM   r4   r9   r   rN   r,   z1nsignalrP   initialposcomp1comp2comp3expected_fwdsym_condexp_outiouts                       r   test_symiir1TestSymIIR.test_symiir1c   s    "y3R\\22"# ( DIIdhh{3dhhrlBCD**a"+o!b&9*Gbl" ii		!e,c'! (C1r6NRSb\1ab	 (RLab	}u, 3"s(#l2&66 ((1(*
q!A1q51955WQU^8KKGAJ  '''"6r5W4d;r   r5   r6   c                 `   [         R                  R                  S5      nUR                  SS9R	                  U5      n[        X!5      nUR                  U5      n[        USS5      nUR                  / SQUR                  S9nUR                  SUR                  S	0U   n[        XVUS
9  UR                  SUR                  XBR                  5      S9nXH-  n[        USS5      nXR                  :X  a  UR                  UR                  :X  d   eUR                  (       d   e[        XXU-  US
9  g )N     sizer:   皙?)gzj?g|ꚁ?g7F?g$d"?gv)u?gx?gF4˯0?g/yR?gdOm6wP?g^ۂ?gnI:5?g(?giԴIM?g|
?gIq?g?r@   gV瞯<gHz>rC         ?      ?)r    randomRandomStateuniformrd   rE   rJ   r	   r4   r6   r5   r   result_typer7   r8   )	rM   r4   r   rngsresexp_resrC   I1s	            r   test_symiir1_valuesTestSymIIR.test_symiir1_values   s    ii##D)KKRK ''."JJqM1c3' **   #yy	  *
 

E2::t4U;40ZZ"..LL9  
 F1c3',1ZZ,?syyBLL(RRR]]RR'\5r   z1_initial_fwd functions are private and numpy-onlyc                    [        X15      nUnUS::  d  US:  a   XR                  UR                  1;   a  SnOSnUR                  SUS9nUR                  [        R
                  S-  US9nSS	U-  UR                  U5      -  -
  US	-  -   nUR                  UR                  XCR                  U5      -  5      [        R                  " U5      -  5      nUR                  [        R
                  U-  5      S	-
  n	[        X5      n
US	U-  UR                  U5      -  -   US	-  -
  XZS	-   -  UR                  XjS
-   -  5      -  UR                  U5      -  -
  XZS
-   -  UR                  XjS	-   -  5      -  UR                  U5      -  -   nUR                  UR                  XCR                  U5      -  5      [        R                  " U5      -  5      nUR                  UR
                  U-  5      S
-
  n	[        X5      n
XwS	-  U-  UR                  U5      -  -   US	-  UR                  S
U-  5      -  US
-  UR                  S	U-  5      -  -
  XZS
-   -  UR                  XjS-   -  5      -  -
  XZS-   -  UR                  XjS
-   -  5      -  -   UR                  U5      -  -   n[        X;U5      S S S 24   nUR                  X5      nSn[        R                  " XS9n[        XXb5      n[!        UUSSS9  g )Nr<   r   r=   r>   r:   r@         @r   r         rV   rb   rc   rB   )rE   r5   r7   rJ   r    pir#   rH   rI   r%   rG   minr   rd   rK   r   r   )rM   r4   r9   r   rN   rr)   r'   ublbrP   fwd_initial_1fwd_initial_2rQ   ri   rj   rt   s                    r   test_symiir2_initial_fwd#TestSymIIR.test_symiir2_initial_fwd   s    "y3R\\22"# JJs%J(

2553;e
4Q&&A- WWRVVK&&-78488K;PPQWWTWWu_%)B EBFF5M!"qD 	NRVVEQY$788266%=HI 	NRVVEQY$788266%=H	I 	 WWRVVK&&-78488K;PPQWWRUUU]#a'B a!bffUm++TBFF1u9%%TBFF1u9%%&^bffUai%899: ^bffUai%899: >@VVE]KK 	 r-8qA99X-(!&U>XDt<r   z1_initial_bwd functions are private and numpy-onlyc                 <   [        X15      nUnUS::  d  US:  a   XR                  UR                  1;   a  SnOSnUR                  SUS9nUR                  UR                  S-  US9nSS	U-  UR                  U5      -  -
  XU-  -   nS	U-  UR                  U5      -  nU* U-  n	S
n
UR                  XS9n[        XXb5      nUR                  U
S	-   US9nUS   US S	& [        S	U
S	-   5       H%  nX{US	-
     -  XUS-
     -  -   XUS	-
     -  -   X'   M'     UR                  S	US9nUR                  U
5      n[        UXuU-  U5      [        US-   XuU-  U5      -   n[        R                  " UUS SS2   -  5      nUR                  US	-  U:  5      S   nUUS      US'   [        US-
  XuU-  U5      [        US	-   XuU-  U5      -   nUR                  UUS SS2   -  5      nUR                  US	-  U:  5      S   nUUS      US'   [!        XXb5      S   n[#        UUSSS9  g )Nr<   r   r=   r>   r:   r@   r   r   r   rV   r   rW   rb   rc   rB   )rE   r5   r7   rJ   r   r#   rK   r   re   rf   rL   r.   r    cumsumnonzerocumulative_sumr   r   )rM   r4   r9   r   rN   r   r)   r'   a2a3ri   rj   icrt   rs   ic2idxdiff	ic2_0_allrl   	ic2_1_allout_ics                         r   test_symiir2_initial_bwd#TestSymIIR.test_symiir2_initial_bwd  sq    "y3R\\22"#JJs%J(

2553;e
4Q&&.URVVE]"R!V( !E=hhq1uEh*Q%BQ q!a%AQ-'"1q5z/9BQUOKCF ! hhqh&iil,S"!eUC,S1Wba%GHIIdS!BZ/0	jj[01!43q6"A,S1Wba%G,S1Wba%GH %%dS!BZ&78	jj[01!43q6"A$SU>qA$T:r   )r^   r3   c                 X   [        X15      nSn[        R                  S-  nSSU-  [        R                  " U5      -  -
  XD-  -   nSU-  [        R                  " U5      -  nU* U-  nSn	UR	                  XS9n
[
        R                  " U
5      n[        XXR5      nUR                  U5      nUR                  U	S-   US9nUSS S 24   US S& [        SU	S-   5       H%  nXjUS-
     -  X}US-
     -  -   XUS-
     -  -   X'   M'     [        [
        R                  " U5      XEU5      S   nUR                  U5      nUR                  XS9nUR                  U5      USS & [        U	S	-
  S
S
5       H%  nXmU   -  UUUS-      -  -   UUUS-      -  -   UU'   M'     [        XXR5      n[        UUSSS9  g )Nr:   r   r   r   rV   r@   r   r   rW   rb   rc   rB   )rE   rG   r   r#   rK   r    rJ   r   re   rf   r   emptyrg   r
   r   )rM   r4   r9   r   r   r)   r'   r   r   ri   rj   	signal_npr   out1rs   r   exprt   s                     r   test_symiir2TestSymIIR.test_symiir2F  s    "#Q%((150UTXXe_$R!V( JJv&	 u@ZZ^xxAUx+ad8Ra q!a%A!a%=(2QU+;;bA;>NNDG ! ""**T"2AiHKjjo hhqh&773<BCq1ub"%Aq'\BQUO3b3q1u:oECF & 6e7St$7r   zC internalsdtypc                 &   [         R                  R                  S5      nUR                  SS9R	                  U5      nUR                  U5      n[        U5      (       a  UR                  O
[        X!5      n[        USSSS9nUR                  / SQUS9n[        XgS	S
9  UR                  SUR                  XBR                  5      S9nXH-  n[        R                  " [        [         45         [        USS5      nS S S 5        g ! , (       d  f       g = f)Nrx   ry   rz   r|   g|=)r9   )g윏 ?g_VQQ/?g|n4T?gAٌ?gJ8]<?gZ(Z?gTV?gRs?g?gd'Q?g*&?g$SЊ?g%֘?g4O?gM4?g!?r@   rA   r}   r~   r:   )r    r   r   r   rd   rJ   r   r6   rE   r
   r   r   r7   rX   rY   	TypeErrorrZ   )	rM   r   r   r   r   r4   r   r   r   s	            r   test_symiir2_valuesTestSymIIR.test_symiir2_valuesq  s     ii##D)KKRK ''-JJqM &bkk

wr/@1c3%8 ** !&	  
 	40ZZbnnQ&EZFF]]Iz23q#s+C 433s   +D
Dz#cupy does not accept integer arraysc                 :   UR                  UR                  UR                  S5      S-  UR                  5      UR	                  S5      UR	                  S5      5      n[        UR                  U[        U5      5      SS5      n[        USS5      n[        XC5        g )NrV   r   rW   r   r:   )whererd   rL   boolrJ   r	   r   r   rM   r   r   rQ   rt   s        r   test_symiir1_integer_input%TestSymIIR.test_symiir1_integer_input  s~     HHIIbiinq("''2JJrNJJqM

  		!-=b-A BCM1c3'&r   c                 n   UR                  UR                  UR                  S5      S-  UR                  5      UR	                  S5      UR	                  S5      5      n[        UR                  U[        U5      5      SUR                  S-  5      n[        USUR                  S-  5      n[        XC5        g )NrV   r   rW   r   r:   r   )	r   rd   rL   r   rJ   r
   r   r   r   r   s        r   test_symiir2_integer_input%TestSymIIR.test_symiir2_integer_input  s     HHIIbiinq("''2JJrNJJqM

  		!-=b-A BCQTU1c2553;/&r    N)__name__
__module____qualname____firstlineno__skip_xp_backendsrX   markparametrizerS   r[   xfail_xp_backendsru   r   r   r   r   r   r   r   __static_attributes__r   r   r   r0   r0      s   d+UV[[BD[[[*HI-. JD W-.^ d+UV? W? 6(3M v&<=k*DE[[BD[[[*HIB< JD F >B<H v&<=6(3M [[Wy)&<=6 > >
60 dPR[[)Y')[[[*HI>= J)R
>=@ dPR[[)Y')[[[*HI.; J)R
.;` t,FGk*DE[[)Y')[[[*HI$8 J) F H
$8L tO[[Vi%;< , = P ,D tOv&KL' M P' tOv&KL' M P'r   r0   )rG   numpyr    rX   scipy._lib.array_api_extra_libarray_api_extrar   scipy._lib._array_apir   r   r   scipy.signal._spliner   r   r   scipy.signalr	   r
   r   r   r   r   r.   r0   r   r   r   <module>r      s_       ( ( L L? ? 3;;// KK11 LHL' L'r   