
    YhB                         d dl Z d dlZd dlZd dlmc mZ d dl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d Z G d d          ZdS )	    N)is_cupyxp_assert_closexp_default_dtype)symiirorder1_icsymiirorder2_ic_fwdsymiirorder2_ic_bwd)symiirorder1symiirorder2c                 `                           t           fd|D                                 S )Nc              3   F   K   | ]}t          j        |d           V  dS )   )ndimxpN)xpx
atleast_nd).0xr   s     q/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/scipy/signal/tests/test_splines.py	<genexpr>znpr.<locals>.<genexpr>   s4      JJ3>!!;;;JJJJJJ    )concattuple)r   argss   ` r   nprr      s2    99UJJJJTJJJJJKKKr   c                 ~   ||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       @      ?r      )npabspowercostansin)kcsrsqomegacssqrsupkc0gammas           r   _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Gr   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   r2   >gH׊>atolrtolr8   r   )getattrr3   r5   intmathceillogasarrayonesr   r   r   arange)
selfr2   r7   r   c_precisionbn_expexpectedr   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 )Nr=   d   r>   r   r   r   )rI   r4   pytestraises
ValueErrorr   )rK   r   rM   r   r7   s        r   test_symiir1_ic_failsz TestSymIIR.test_symiir1_ic_failsT   s     GGCrzG** QK	j/1aCCC 	j/1c2>>>j/1c2>>>>>r   cupyzinternals are numpy-only)cpu_only
exceptionsr1   zsum did not converge)r1   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;   r<   g333333?r=      r>   r   rT   r   >v!>r@   )rC   r3   r5   rI   rD   rE   rF   rG   rH   astyperJ   zerosrangeflipr	   r   )rK   r2   r7   r   rL   r+   z1nsignalrN   initialposcomp1comp2comp3expected_fwdsym_condexp_outiouts                       r   test_symiir1zTestSymIIR.test_symiir1c   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   r3   r4   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     sizer8   皙?)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>rA         ?      ?)r   randomRandomStateuniformr`   rC   rH   r	   r2   r4   r3   r   result_typer5   r6   )	rK   r2   r   rngsresexp_resrA   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;   r<   r8   r>         @r   r         rS   r^   r_   r@   )rC   r3   r5   rH   r   pir"   rF   rG   r$   rE   minr   r`   rI   r   r   )rK   r2   r7   r   rL   rr(   r&   ublbrN   fwd_initial_1fwd_initial_2rO   re   rf   rp   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=-88qqqA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;   r<   r8   r>   r   r   r   rS   r   rT   r^   r_   r@   )rC   r3   r5   rH   r   r"   rI   r   ra   rb   rJ   r-   r   cumsumnonzerocumulative_sumr   r   )rK   r2   r7   r   rL   r   r(   r&   a2a3re   rf   icrp   ro   ic2idxdiff	ic2_0_allrh   	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   )rZ   r1   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 )Nr8   r   r   r   rS   r>   r   r   rT   r^   r_   r@   )rC   rE   r   r"   rI   r   rH   r   ra   rb   r   emptyrc   r
   r   )rK   r2   r7   r   r   r(   r&   r   r   re   rf   	signal_npr   out1ro   r   exprp   s                     r   test_symiir2zTestSymIIR.test_symiir2F  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 )Nrs   rt   ru   rw   g|=)r7   )g윏 ?g_VQQ/?g|n4T?gAٌ?gJ8]<?gZ(Z?gTV?gRs?g?gd'Q?g*&?g$SЊ?g%֘?g4O?gM4?g!?r>   r?   rx   ry   r8   )r   rz   r{   r|   r`   rH   r   r4   rC   r
   r   r}   r5   rU   rV   	TypeErrorrW   )	rK   r   r   r~   r   r2   r   r   r   s	            r   test_symiir2_valueszTestSymIIR.test_symiir2_valuesq  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 )NrS   r   rT   r   r8   )wherer`   rJ   boolrH   r	   r   r   rK   r   r   rO   rp   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 )NrS   r   rT   r   r8   r   )	r   r`   rJ   r   rH   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_backendsrU   markparametrizerQ   rX   xfail_xp_backendsrq   r   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/   )rE   numpyr   rU   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-   r/   r   r   r   <module>r      s         ( ( ( ( ( ( ( ( ( L L L L L L L L L L? ? ? ? ? ? ? ? ? ? 3 3 3 3 3 3 3 3;/ K1 L L LH H HL' L' L' L' L' L' L' L' L' L'r   