
    BpjvB                        S SK r S SKrS SKrS SKJr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\R                   R)                  SSS9 " S	 S
5      5       rg)    N)is_cupyxp_assert_closexp_default_dtype	concat_1d)symiirorder1_icsymiirorder2_ic_fwdsymiirorder2_ic_bwd)symiirorder1symiirorder2c                    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       @      ?      )npabspowercostansin)kcsrsqomegacssqrsupkc0gammas           [/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/signal/tests/test_splines.py_compute_symiirorder2_bwd_hsr       s    7D
q	AHHSc'"E
#)
c	
*q3wE	***SY68B3Y39%u5E:	*URVVEI5F-FFGG    Fprivatereasonc            	          \ 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_onlyr$   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   r)   >gH׊>atolrtolr/   r   )getattrr*   r,   intmathceillogasarrayonesr   r   r   arange)
selfr)   r.   xpc_precisionbn_expexpectedx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 )Nr4   d   r5   r   r   r   )r@   r+   pytestraises
ValueErrorr   )rB   rC   rE   rH   r.   s        r   test_symiir1_ic_fails TestSymIIR.test_symiir1_ic_failsP   sj     GGCrzzG* QK	j/1C 	j/1c2>j/1c2>r!   cupyzinternals are numpy-only)cpu_only
exceptionsr$   zsum did not converger#   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 )Nr1   r   r2   r3   g333333?r4      r5   r   rN   r   >v!>r7   )r:   r*   r,   r@   r;   r<   r=   r>   r?   astyperA   zerosrangeflipr
   r   )rB   r)   r.   rC   rD   r   z1nsignalrF   initialposcomp1comp2comp3expected_fwdsym_condexp_outiouts                       r   test_symiir1TestSymIIR.test_symiir1_   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!   r*   r+   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?r5   gV瞯<gHz>r8         ?      ?)r   randomRandomStateuniformr[   r:   r?   r
   r)   r+   r*   r   result_typer,   r-   )	rB   r)   rC   rngsresexp_resr8   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 )Nr1   r   r2   r3   r/   r5         @r   r         rM   rY   rZ   r7   )r:   r*   r,   r?   r   pir   r=   r>   r   r<   minr   r[   r@   r   r   )rB   r)   r.   rC   rD   rr   r   ublbrF   fwd_initial_1fwd_initial_2rG   r`   ra   rk   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>tQwG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 )Nr1   r   r2   r3   r/   r5   r   r   r   rM   r   rN   rY   rZ   r7   )r:   r*   r,   r?   r   r   r@   r   r\   r]   rA   r    r   cumsumnonzerocumulative_sumr	   r   )rB   r)   r.   rC   rD   r   r   r   a2a3r`   ra   icrk   rj   ic2idxdiff	ic2_0_allrc   	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!   )rU   r$   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   rM   r5   r   r   rN   rY   rZ   r7   )r:   r<   r   r   r@   r   r?   r   r\   r]   r	   emptyr^   r   r   )rB   r)   r.   rC   r   r   r   r   r   r`   ra   	signal_npr   out1rj   r   exprk   s                     r   test_symiir2TestSymIIR.test_symiir2B  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)Nro   rp   rq   rs   g|=)r.   )g윏 ?g_VQQ/?g|n4T?gAٌ?gJ8]<?gZ(Z?gTV?gRs?g?gd'Q?g*&?g$SЊ?g%֘?g4O?gM4?g!?r5   r6   rt   ru   r/   )r   rv   rw   rx   r[   r?   r   r+   r:   r   r   ry   r,   rO   rP   	TypeErrorrQ   )	rB   r   rC   rz   r{   r)   r|   r}   r~   s	            r   test_symiir2_valuesTestSymIIR.test_symiir2_valuesm  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 )NrM   r   rN   r   r/   )wherer[   rA   boolr?   r
   r   r   rB   rC   r{   rG   rk   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 )NrM   r   rN   r   r/   r   )	r   r[   rA   r   r?   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_backendsrO   markparametrizerJ   rR   xfail_xp_backendsrl   r   r   r   r   r   r   r   __static_attributes__r   r!   r   r&   r&      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!   r&   )r<   numpyr   rO   scipy._lib._array_apir   r   r   r   scipy.signal._spliner   r   r	   scipy.signalr
   r   r   r   r   r    uses_xp_capabilitiesr&   r   r!   r   <module>r      sw       W W? ? 3;;// KK11 H !!%	!:L' L' ;L'r!   