
    doi=B                         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 " S S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/land-ocr/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    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   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 )Nr2   d   r3   r   r   r   )r>   r)   pytestraises
ValueErrorr   )r@   rA   rC   rF   r,   s        r   test_symiir1_ic_fails TestSymIIR.test_symiir1_ic_failsO   sj     GGCrzzG* QK	j/1C 	j/1c2>j/1c2>r!   cupyzinternals are numpy-only)cpu_only
exceptionsr&   zsum did not converge)r&   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   r0   r1   g333333?r2      r3   r   rL   r   >v!>r5   )r8   r(   r*   r>   r9   r:   r;   r<   r=   astyper?   zerosrangeflipr
   r   )r@   r'   r,   rA   rB   r   z1nsignalrD   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?r3   gV瞯<gHz>r6         ?      ?)r   randomRandomStateuniformrY   r8   r=   r
   r'   r)   r(   r   result_typer*   r+   )	r@   r'   rA   rngsresexp_resr6   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   r0   r1   r-   r3         @r   r         rK   rW   rX   r5   )r8   r(   r*   r=   r   pir   r;   r<   r   r:   minr   rY   r>   r   r   )r@   r'   r,   rA   rB   rr   r   ublbrD   fwd_initial_1fwd_initial_2rE   r^   r_   ri   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 )Nr/   r   r0   r1   r-   r3   r   r   r   rK   r   rL   rW   rX   r5   )r8   r(   r*   r=   r   r   r>   r   rZ   r[   r?   r    r   cumsumnonzerocumulative_sumr	   r   )r@   r'   r,   rA   rB   r   r   r   a2a3r^   r_   icri   rh   ic2idxdiff	ic2_0_allra   	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!   )rS   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   rK   r3   r   r   rL   rW   rX   r5   )r8   r:   r   r   r>   r   r=   r   rZ   r[   r	   emptyr\   r   r   )r@   r'   r,   rA   r   r   r   r   r   r^   r_   	signal_npr   out1rh   r   expri   s                     r   test_symiir2TestSymIIR.test_symiir2A  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)Nrm   rn   ro   rq   g|=)r,   )g윏 ?g_VQQ/?g|n4T?gAٌ?gJ8]<?gZ(Z?gTV?gRs?g?gd'Q?g*&?g$SЊ?g%֘?g4O?gM4?g!?r3   r4   rr   rs   r-   )r   rt   ru   rv   rY   r=   r   r)   r8   r   r   rw   r*   rM   rN   	TypeErrorrO   )	r@   r   rA   rx   ry   r'   rz   r{   r|   s	            r   test_symiir2_valuesTestSymIIR.test_symiir2_valuesl  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 )NrK   r   rL   r   r-   )whererY   r?   boolr=   r
   r   r   r@   rA   ry   rE   ri   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 )NrK   r   rL   r   r-   r   )	r   rY   r?   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_backendsrM   markparametrizerH   rP   xfail_xp_backendsrj   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   rM   scipy._lib._array_apir   r   r   r   scipy.signal._spliner   r   r	   scipy.signalr
   r   r   r   r   r    r#   r   r!   r   <module>r      sS       W W? ? 3;;// KK11 HL' L'r!   