
    >qjvB                     
   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ej                   j)                  dd       G d	 d
             Zy)    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           ^/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/scipy/signal/tests/test_splines.py_compute_symiirorder2_bwd_hsr       s    7D
q	AHHS!c'"E
#)
c	
*q3wE	***S3Y68B3Y39%u5E:	*URVVEAI5F-FFGG    Fprivatereasonc            	          e Zd Z edd      ej
                  j                  dg d      ej
                  j                  dg d      d                      Z edd      d	        Z edd
gd       e	d
d       edd      ej
                  j                  dg d      ej
                  j                  dg d      d                                    Z
 e	d
d       edd
gd      ej
                  j                  dddg      d                      Z edd      ej
                  j                  dddg      ej
                  j                  dg d      d                      Z edd      ej
                  j                  dddg      ej
                  j                  dg d      d                      Z edd       edd      ej
                  j                  dddg      ej
                  j                  dg d      d                             Z edd
gd      ej
                  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y!)"
TestSymIIRTz(_ic functions are private and numpy-only)np_onlyr$   dtype)float32float64	complex64
complex128	precision)g      gffffff?      ?g      ?gQ~?c                    t        ||      }|}|dk  s|dkD  r||j                  |j                  hv rd}nd}d}t        t	        j
                  t	        j                  |      t	        j                  |      z              }|j                  d||z  z
  d|z
  z  gg|      }d||z  z   }|j                  |dz   |      }t        t        |||      |dd	
       |j                  ||      }	t        j                  dd|	z  |z  z
  dd|	z  z
  z  gg|      }d|	|z  z   }d|j                  |dz   |       z  }t        t        |||      |dd	
       y )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   sl    E"y3R\\22"# DIIdhh{3dhhqkABC::Q%ZAE :;<E:Jq8|# GGEAIUG+1i8(!	. jj%j(::C#I%''AsO<=>eMsX~% "))EAIU)3331i8(!	.r!   c                    d}|j                  d|j                        }dd|z
  z  }t        j                  t        t
        |||       t        j                  t        t
        |dd       t        j                  t        t
        |dd       y )Nr3   d   r4   r   r   r   )r?   r*   pytestraises
ValueErrorr   )rA   rB   rD   rG   r-   s        r   test_symiir1_ic_failsz TestSymIIR.test_symiir1_ic_failsP   sl     GGCrzzG* QK	j/1a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                 t   t        ||      }|}|dk  s|dkD  r||j                  |j                  hv rd}nd}d}d}d}|j                  ||      }t	        t        j                  t        j                  |      t        j                  |      z              }	|j                  d	||	z  z
  d	|z
  z  |      }
d	||
z  z   }
|j                  |j                  |      |      }|
||z  z  }|j                  ||      }| d	|z
  z  ||d d
 z  z  |d	d  |j                  ||      }d	d	|z
  z  |d	d  ||z   |z   }| |dz
  z  |d
   z  }|j                  ||      }||d<   t        d	|      D ]  }|||d	z
  |z
     z  |||d	z
     z  z   ||<   ! |j                  |      }t        ||||      }t        ||dd       y )Nr0   r   r1   r2   g333333?r3      r4   r   rL   r   >v!>r6   )r9   r)   r+   r?   r:   r;   r<   r=   r>   astyper@   zerosrangeflipr
   r   )rA   r(   r-   rB   rC   r   z1nsignalrE   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"# %( DIIdhh{3dhhrlBCD**a"+o!b&9*Gb7l" ii		!e,"c'! %(C1r6NRSb\1ab	 %(RLab	u}u, 3"s(#l2&66 ((1E(*
q! 	LAl1q51955WQU^8KKGAJ	L '''"62r95W4d;r!   r)   r*   c                 |   t         j                  j                  d      }|j                  d      j	                  |      }t        ||      }|j                  |      }t        |dd      }|j                  g d|j                        }|j                  d|j                  d	i|   }t        |||
       |j                  d|j                  ||j                              }||z  }t        |dd      }||j                  k(  r|j                  |j                  k(  sJ |j                  sJ t        |||z  |
       y )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?r4   gV瞯<gHz>r7         ?      ?)r   randomRandomStateuniformrX   r9   r>   r
   r(   r*   r)   r   result_typer+   r,   )	rA   r(   rB   rngsresexp_resr7   I1s	            r   test_symiir1_valueszTestSymIIR.test_symiir1_values   s#    ii##D)KKRK ''.E"JJqM1c3' **   #yy	  *
 

E2::t4U;W40ZZ"..BLL9  
 F1c3',1RZZ,?syyBLL(RRR]]RRR'\5r!   z1_initial_fwd functions are private and numpy-onlyc                    t        ||      }|}|dk  s|dkD  r||j                  |j                  hv rd}nd}|j                  d|      }|j                  t        j
                  dz  |      }dd	|z  |j                  |      z  z
  |d	z  z   }|j                  |j                  ||j                  |      z        t        j                  |      z        }|j                  t        j
                  |z        d	z
  }	t        ||	      }
|d	|z  |j                  |      z  z   |d	z  z
  ||
d	z   z  |j                  ||
d
z   z        z  |j                  |      z  z
  ||
d
z   z  |j                  ||
d	z   z        z  |j                  |      z  z   }|j                  |j                  ||j                  |      z        t        j                  |      z        }|j                  |j
                  |z        d
z
  }	t        ||	      }
||d	z  |z  |j                  |      z  z   |d	z  |j                  d
|z        z  |d
z  |j                  d	|z        z  z
  ||
d
z   z  |j                  ||
dz   z        z  z
  ||
dz   z  |j                  ||
d
z   z        z  z   |j                  |      z  z   }t        |||      d d d f   }|j                  ||      }d}t	        j                  ||      }t        ||||      }t!        ||dd       y )Nr0   r   r1   r2   r.   r4         @r   r         rK   rV   rW   r6   )r9   r)   r+   r>   r   pir   r<   r=   r   r;   minr   rX   r?   r   r   )rA   r(   r-   rB   rC   rr   r   ublbrE   fwd_initial_1fwd_initial_2rF   r]   r^   rh   s                    r   test_symiir2_initial_fwdz#TestSymIIR.test_symiir2_initial_fwd   s    E"y3R\\22"# JJs%J(

2553;e
4Q&&A- WWRVVK"&&-78488K;PPQWWTWWu_%)B EBFF5M!"qD 	NRVVEUQY$788266%=HI 	NRVVEUQY$788266%=H	I 	 WWRVVK"&&-78488K;PPQWWRUUU]#a'B a!bffUm++TBFF1u9%%TBFF1u9%%&^bffUeai%899: ^bffUeai%899: >@VVE]KK 	 R>tQwG99Xu-%(!&!UI>XDt<r!   z1_initial_bwd functions are private and numpy-onlyc                 r   t        ||      }|}|dk  s|dkD  r||j                  |j                  hv rd}nd}|j                  d|      }|j                  |j                  dz  |      }dd	|z  |j                  |      z  z
  ||z  z   }d	|z  |j                  |      z  }| |z  }	d
}
|j                  |
|      }t        ||||      }|j                  |
d	z   |      }|d   |d d	 t        d	|
d	z         D ](  }|||d	z
     z  |||dz
     z  z   |	||d	z
     z  z   ||<   * |j                  d	|      }|j                  |
      }t        ||||z  |      t        |dz   |||z  |      z   }t        j                  ||d dd   z        }|j                  |d	z  |k        d   }||d      |d<   t        |dz
  |||z  |      t        |d	z   |||z  |      z   }|j                  ||d dd   z        }|j                  |d	z  |k        d   }||d      |d<   t!        ||||      d   }t#        ||dd       y )Nr0   r   r1   r2   r.   r4   r}   r   r   rK   r   rL   rV   rW   r6   )r9   r)   r+   r>   r   r   r?   r   rY   rZ   r@   r    r   cumsumnonzerocumulative_sumr	   r   )rA   r(   r-   rB   rC   r   r   r   a2a3r]   r^   icrh   rg   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"#JJs%J(

2553;e
4Q&&Q.URVVE]"R!V%( !E9=hhq1uEh*Q%BQ q!a% 	LA&Q-'"s1q5z/9BQUOKCF	L hhqh&iil,S"a!eUC,S1Wb!a%GHIIdS!BZ/0	jj[01!43q6"A,S1Wb!a%G,S1Wb!a%GH %%dS!BZ&78	jj[01!43q6"A$S!UI>qA$T:r!   )rR   r$   c                 |   t        ||      }d}t        j                  dz  }dd|z  t        j                  |      z  z
  ||z  z   }d|z  t        j                  |      z  }| |z  }d}	|j	                  |	|      }
t        j                  |
      }t        ||||      }|j                  |      }|j                  |	dz   |      }|dd d f   |d d t        d|	dz         D ](  }||
|dz
     z  |||dz
     z  z   |||dz
     z  z   ||<   * t        t        j                  |      |||      d   }|j                  |      }|j                  |	|      }|j                  |      |dd  t        |	d	z
  d
d
      D ]%  }|||   z  |||dz      z  z   |||dz      z  z   ||<   ' t        |
|||      }t        ||dd       y )Nr.   r}   r   r   rK   r4   r   r~   rL   rV   rW   r6   )r9   r;   r   r   r?   r   r>   r   rY   rZ   r	   emptyr[   r   r   )rA   r(   r-   rB   r   r   r   r   r   r]   r^   	signal_npr   out1rg   r   exprh   s                     r   test_symiir2zTestSymIIR.test_symiir2B  s    E"#Q%((1q50UTXXe_$R!V%( JJv&	 Aui@ZZ^xxAUx+ad8Ra q!a% 	OA6!a%=(2QU+;;b4A;>NNDG	O ""**T"2AuiHKjjo hhqh&773<BCq1ub"% 	FA$q'\BQUO3b3q1u:oECF	F 61eY7St$7r!   zC internalsdtypc                 6   t         j                  j                  d      }|j                  d      j	                  |      }|j                  |      }t        |      r|j                  nt        ||      }t        |ddd      }|j                  g d|      }t        ||d	
       |j                  d|j                  ||j                              }||z  }t        j                  t        t         f      5  t        |dd      }d d d        y # 1 sw Y   y xY w)Nrk   rl   rm   ro   g|=)r-   )g윏 ?g_VQQ/?g|n4T?gAٌ?gJ8]<?gZ(Z?gTV?gRs?g?gd'Q?g*&?g$SЊ?g%֘?g4O?gM4?g!?r4   r5   rp   rq   r.   )r   rr   rs   rt   rX   r>   r   r*   r9   r   r   ru   r+   rM   rN   	TypeErrorrO   )	rA   r   rB   rv   rw   r(   rx   ry   rz   s	            r   test_symiir2_valueszTestSymIIR.test_symiir2_valuesm  s     ii##D)KKRK ''-JJqM &bk

wr4/@1c3%8 ** !&	  
 	W40ZZbnnQ&EZFF]]Iz23 	,q#s+C	, 	, 	,s   8DDz#cupy does not accept integer arraysc                 <   |j                  |j                  |j                  d      dz  |j                        |j	                  d      |j	                  d            }t        |j                  |t        |            dd      }t        |dd      }t        ||       y )NrK   r   rL   r   r.   )whererX   r@   boolr>   r
   r   r   rA   rB   rw   rF   rh   s        r   test_symiir1_integer_inputz%TestSymIIR.test_symiir1_integer_input  s     HHIIbiinq("''2JJrNJJqM

  		!-=b-A BCM1c3'X&r!   c                 p   |j                  |j                  |j                  d      dz  |j                        |j	                  d      |j	                  d            }t        |j                  |t        |            d|j                  dz        }t        |d|j                  dz        }t        ||       y )NrK   r   rL   r   r.   r}   )	r   rX   r@   r   r>   r   r   r   r   r   s        r   test_symiir2_integer_inputz%TestSymIIR.test_symiir2_integer_input  s     HHIIbiinq("''2JJrNJJqM

  		!-=b-A BCQTU1c2553;/X&r!   N)__name__
__module____qualname__skip_xp_backendsrM   markparametrizerI   rP   xfail_xp_backendsri   r{   r   r   r   r   r   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    uses_xp_capabilitiesr&   r   r!   r   <module>r      sw       W W? ? 3;;// KK11 H !!%	!:L' L' ;L'r!   