
    -ii=B                         d dl Z d dlZd dlZd dlmZmZmZmZ d dl	m
Z
mZmZ d dlmZmZ ej        j        Zej        j        Zd Z G d d          ZdS )    N)is_cupyxp_assert_closexp_default_dtype	concat_1d)symiirorder1_icsymiirorder2_ic_fwdsymiirorder2_ic_bwd)symiirorder1symiirorder2c                 ~   ||z  }t          j        |           } t          j        || dz            }|d|z   z  d|z
  z  dd|z  t          j        d|z            z  z
  ||z  z   z  }d|z
  d|z   z  t          j        |          z  }||z  t          j        || z            |t          j        || z            z  z   z  S )N       @      ?      )npabspowercostansin)kcsrsqomegacssqrsupkc0gammas           e/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/signal/tests/test_splines.py_compute_symiirorder2_bwd_hsr       s    7D
q		AHS!c'""E
#)
c	
*q3wE	****S3Y68B3Y39%u5E:	**URVEAI5F5F-FFGG    c            	          e Zd Z edd          ej                            dg d          ej                            dg d          d                                     Z edd          d	             Z edd
gd           e	d
d           edd          ej                            dg d          ej                            dg d          d                                                             Z
 e	d
d           edd
gd          ej                            dddg          d                                     Z edd          ej                            dddg          ej                            dg d          d                                     Z edd          ej                            dddg          ej                            dg d          d                                     Z edd           edd          ej                            dddg          ej                            dg d          d                                                 Z edd
gd          ej                            dddg          d                         Z edd
gd           e	d
d          d                         Z edd
gd           e	d
d          d                          Zd!S )"
TestSymIIRTz(_ic functions are private and numpy-only)np_onlyreasondtype)float32float64	complex64
complex128	precision)g      gffffff?      ?g      ?gQ~?c                    t          ||          }|}|dk    s|dk    r||j        |j        hv rd}nd}d}t          t	          j        t	          j        |          t	          j        |          z                      }|                    d||z  z
  d|z
  z  gg|          }d||z  z   }|                    |dz   |          }t          t          |||          |dd	
           |                    ||          }	t          j        dd|	z  |z  z
  dd|	z  z
  z  gg|          }d|	|z  z   }d|                    |dz   |           z  }t          t          |||          |dd	
           d S )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_iczTestSymIIR.test_symiir1_ic   s    E""y3R\222"# DIdh{33dhqkkABBCC::Q%ZAE :;<E:JJq8|# GGEAIUG++1i88(!	. 	. 	. 	. jj%j((:C#I%''AsO<=>eM M MsX~% "))EAIU)33331i88(!	. 	. 	. 	. 	. 	.r!   c                    d}|                     d|j                  }dd|z
  z  }t          j        t          t
          |||           t          j        t          t
          |dd           t          j        t          t
          |dd           d S )Nr1   d   r2   r   r   r   )r=   r(   pytestraises
ValueErrorr   )r?   r@   rB   rE   r+   s        r   test_symiir1_ic_failsz TestSymIIR.test_symiir1_ic_failsO   s     GGCrzG** QK	j/1aCC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                    t          ||          }|}|dk    s|dk    r||j        |j        hv rd}nd}d}d}d}|                    ||          }t	          t          j        t          j        |          t          j        |          z                      }	|                    d	||	z  z
  d	|z
  z  |          }
d	||
z  z   }
|	                    |
                    |          |          }|
||z  z  }|                    ||          }| d	|z
  z  ||d d
         z  z  |d	d <   |                    ||          }d	d	|z
  z  |d	d <   ||z   |z   }| |dz
  z  |d
         z  }|                    ||          }||d<   t          d	|          D ]%}|||d	z
  |z
           z  |||d	z
           z  z   ||<   &|                    |          }t          ||||          }t          ||dd           d S )Nr.   r   r/   r0   g333333?r1      r2   r   rJ   r   >v!>r4   )r7   r'   r)   r=   r8   r9   r:   r;   r<   astyper>   zerosrangeflipr
   r   )r?   r&   r+   r@   rA   r   z1nsignalrC   initialposcomp1comp2comp3expected_fwdsym_condexp_outiouts                       r   test_symiir1zTestSymIIR.test_symiir1^   s@    E""y3R\222"# %(( DIdh{33dhrllBCCDD**a"+o!b&9*GGb7l" ii		!e,,"c'! %((C1r6NRSbS\1abb	 %((RLabb	u}u, 3"s(#l2&66 ((1E(**
q! 	L 	LAl1q51955WQU^8KKGAJJ'''""62r955W4d;;;;;;r!   r'   r(   c                    t           j                            d          }|                    d                              |          }t          ||          }|                    |          }t          |dd          }|                    g d|j                  }|j	        d|j
        d	i|         }t          |||
           |                    d|                    ||j                            }||z  }t          |dd          }||j
        k    r|j        |j        k    s
n|j        sJ t          |||z  |
           d S )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?r2   gV瞯<gHz>r5         ?      ?)r   randomRandomStateuniformrV   r7   r<   r
   r&   r(   r'   r   result_typer)   r*   )	r?   r&   r@   rngsresexp_resr5   I1s	            r   test_symiir1_valueszTestSymIIR.test_symiir1_values   sZ    i##D))KKRK  ''..E""JJqMM1c3'' **     #y	  * *
 
E2:t4U;W40000ZZ"..BL99  
 
 F1c3'',1RZ,?,?syBL(((R](((R'\555555r!   z1_initial_fwd functions are private and numpy-onlyc                    t          ||          }|}|dk    s|dk    r||j        |j        hv rd}nd}|                    d|          }|                    t          j        dz  |          }dd	|z  |                    |          z  z
  |d	z  z   }|                    |                    ||	                    |          z            t          j        |          z            }|                    t          j        |z            d	z
  }	t          ||	          }
|d	|z  |                    |          z  z   |d	z  z
  ||
d	z   z  |	                    ||
d
z   z            z  |	                    |          z  z
  ||
d
z   z  |	                    ||
d	z   z            z  |	                    |          z  z   }|                    |                    ||	                    |          z            t          j        |          z            }|                    |j        |z            d
z
  }	t          ||	          }
||d	z  |z  |                    |          z  z   |d	z  |	                    d
|z            z  |d
z  |	                    d	|z            z  z
  ||
d
z   z  |	                    ||
dz   z            z  z
  ||
dz   z  |	                    ||
d
z   z            z  z   |	                    |          z  z   }t          |||          d d d f         }|                    ||          }d}t	          j        ||          }t          ||||          }t!          ||dd           d S )Nr.   r   r/   r0   r,   r2         @r   r         rI   rT   rU   r4   )r7   r'   r)   r<   r   pir   r:   r;   r   r9   minr   rV   r=   r   r   )r?   r&   r+   r@   rA   rr   r   ublbrC   fwd_initial_1fwd_initial_2rD   r[   r\   rf   s                    r   test_symiir2_initial_fwdz#TestSymIIR.test_symiir2_initial_fwd   si    E""y3R\222"# JJs%J((

253;e
44Q&&A- WWRVVK"&&--78848K;P;PPQQWWTWu_%%)B EBFF5MM!"qD 	NRVVEUQY$7888266%==HI 	NRVVEUQY$7888266%==H	I 	 WWRVVK"&&--78848K;P;PPQQWWRUU]##a'B a!bffUmm++TBFF1u9%%%TBFF1u9%%%&^bffUeai%8999: ^bffUeai%8999: >@VVE]]KK 	 R>>tQQQwG99Xu--%(((!&!UI>>XDt<<<<<<r!   z1_initial_bwd functions are private and numpy-onlyc                 J   t          ||          }|}|dk    s|dk    r||j        |j        hv rd}nd}|                    d|          }|                    |j        dz  |          }dd	|z  |                    |          z  z
  ||z  z   }d	|z  |                    |          z  }| |z  }	d
}
|                    |
|          }t          ||||          }|                    |
d	z   |          }|d         |d d	<   t          d	|
d	z             D ]1}|||d	z
           z  |||dz
           z  z   |	||d	z
           z  z   ||<   2|                    d	|          }|
                    |
          }t          ||||z  |          t          |dz   |||z  |          z   }t          j        ||d dd         z            }|                    |d	z  |k               d         }||d                  |d<   t          |dz
  |||z  |          t          |d	z   |||z  |          z   }|                    ||d dd         z            }|                    |d	z  |k               d         }||d                  |d<   t!          ||||          d         }t#          ||dd           d S )Nr.   r   r/   r0   r,   r2   r{   r   r   rI   r   rJ   rT   rU   r4   )r7   r'   r)   r<   r~   r   r=   r   rW   rX   r>   r    r   cumsumnonzerocumulative_sumr	   r   )r?   r&   r+   r@   rA   r   r   r   a2a3r[   r\   icrf   re   ic2idxdiff	ic2_0_allr^   	ic2_1_allout_ics                         r   test_symiir2_initial_bwdz#TestSymIIR.test_symiir2_initial_bwd  s    E""y3R\222"#JJs%J((

253;e
44Q&&Q.URVVE]]"R!V%(( !E9==hhq1uEh**Q%BQB q!a% 	L 	LA&Q-'"s1q5z/9BQUOKCFF hhqh&&iill,S"a!eUCC,S1Wb!a%GGHIdS!BZ/00	jj[011!43q6"A,S1Wb!a%GG,S1Wb!a%GGH %%dS!BZ&788	jj[011!43q6"A$S!UI>>qA$T::::::r!   )rP   r%   c                    t          ||          }d}t          j        dz  }dd|z  t          j        |          z  z
  ||z  z   }d|z  t          j        |          z  }| |z  }d}	|                    |	|          }
t          j        |
          }t          ||||          }|                    |          }|                    |	dz   |          }|dd d f         |d d<   t          d|	dz             D ]1}||
|dz
           z  |||dz
           z  z   |||dz
           z  z   ||<   2t          t          j        |          |||          d         }|                    |          }|                    |	|          }|                    |          |dd <   t          |	d	z
  d
d
          D ].}|||         z  |||dz            z  z   |||dz            z  z   ||<   /t          |
|||          }t          ||dd           d S )Nr,   r{   r   r   rI   r2   r   r|   rJ   rT   rU   r4   )r7   r9   r~   r   r=   r   r<   r   rW   rX   r	   emptyrY   r   r   )r?   r&   r+   r@   r   r   r   r   r   r[   r\   	signal_npr   out1re   r   exprf   s                     r   test_symiir2zTestSymIIR.test_symiir2A  s)    E""#Q%((1q50UTXe__$R!V%(( Jv&&	 Aui@@ZZ^^xxAUx++ad8RaR q!a% 	O 	OA6!a%=(2QU+;;b4A;>NNDGG ""*T"2"2AuiHHKjjoo hhqh&&773<<BCCq1ub"%% 	F 	FA$q'\BQUO3b3q1u:oECFF61eY77St$777777r!   zC internalsdtypc                    t           j                            d          }|                    d                              |          }|                    |          }t          |          r|j        nt          ||          }t          |ddd          }|                    g d|          }t          ||d	
           |                    d|                    ||j                            }||z  }t          j        t          t           f          5  t          |dd          }d d d            d S # 1 swxY w Y   d S )Nri   rj   rk   rm   g|=)r+   )g윏 ?g_VQQ/?g|n4T?gAٌ?gJ8]<?gZ(Z?gTV?gRs?g?gd'Q?g*&?g$SЊ?g%֘?g4O?gM4?g!?r2   r3   rn   ro   r,   )r   rp   rq   rr   rV   r<   r   r(   r7   r   r   rs   r)   rK   rL   	TypeErrorrM   )	r?   r   r@   rt   ru   r&   rv   rw   rx   s	            r   test_symiir2_valueszTestSymIIR.test_symiir2_valuesl  s~    i##D))KKRK  ''--JJqMM &bkk@

wr4/@/@1c3%888 **   !&	  
 
 	W40000ZZbnnQ&E&EZFFF]Iz233 	, 	,q#s++C	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   D66D:=D:z#cupy does not accept integer arraysc                    |                     |                    |                    d          dz  |j                  |                    d          |                    d                    }t          |                    |t          |                    dd          }t          |dd          }t          ||           d S )NrI   r   rJ   r   r,   )whererV   r>   boolr<   r
   r   r   r?   r@   ru   rD   rf   s        r   test_symiir1_integer_inputz%TestSymIIR.test_symiir1_integer_input  s     HHIIbiinnq("'22JJrNNJJqMM
 

  		!-=b-A-A B BCMM1c3''X&&&&&r!   c                    |                     |                    |                    d          dz  |j                  |                    d          |                    d                    }t          |                    |t          |                    d|j        dz            }t          |d|j        dz            }t          ||           d S )NrI   r   rJ   r   r,   r{   )	r   rV   r>   r   r<   r   r   r~   r   r   s        r   test_symiir2_integer_inputz%TestSymIIR.test_symiir2_integer_input  s     HHIIbiinnq("'22JJrNNJJqMM
 

  		!-=b-A-A B BCQTUU1c253;//X&&&&&r!   N)__name__
__module____qualname__skip_xp_backendsrK   markparametrizerG   rN   xfail_xp_backendsrg   ry   r   r   r   r   r   r    r!   r   r#   r#      s       d+UVVV[BBBD D[[*H*H*HII-. -. JID D WV-.^ d+UVVV? ? WV? 6(3M   v&<===k*DEEE[BBBD D[[*H*H*HIIB< B< JID D FE >= B<H v&<===6(3M   [Wy)&<==6 6 >=  >=
60 dPR R R[)Y') )[[*H*H*HII>= >= JI) )R R
>=@ dPR R R[)Y') )[[*H*H*HII.; .; JI) )R R
.;` t,FGGGk*DEEE[)Y') )[[*H*H*HII$8 $8 JI) ) FE HG
$8L tOOO[Vi%;<< ,  , =< PO ,D tOOOv&KLLL' ' ML PO' tOOOv&KLLL' ' ML PO' ' 'r!   r#   )r9   numpyr   rK   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      s          W W W W W W W W W W W W? ? ? ? ? ? ? ? ? ? 3 3 3 3 3 3 3 3;/ K1 H H HL' L' L' L' L' L' L' L' L' L'r!   