o
    tBhr&                     @   s   d dl Zd dl mZmZmZ d dlmZmZmZm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZmZ G dd dZG dd dZG d	d
 d
ZG dd dZdS )    Ncossinpi)assert_equalassert_almost_equalassert_allcloseassert_suppress_warnings)
quadraturerombergrombnewton_cotescumulative_trapezoidcumtrapztrapz	trapezoidquadsimpsonsimps
fixed_quadAccuracyWarningc                   @   s   e Zd Zdd Zdd ZdS )TestFixedQuadc                    sB   d  fdd}dd   }t |dd d\}}t||dd	 d S )
N   c                    s   | d  d  S )N       xnr   |/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/scipy/integrate/tests/test_quadrature.py<lambda>   s    z+TestFixedQuad.test_scalar.<locals>.<lambda>r   r   r   r   -q=rtol)r   r   )selffuncexpectedgot_r   r   r!   test_scalar   s
   zTestFixedQuad.test_scalarc                    sR   d}t dd|   fdd}d d  }t|dd|d\}}t||dd	 d S )
Nr   r   r   c                    s   |  d d d f  S Nr   r   pr   r!   r"      s    z+TestFixedQuad.test_vector.<locals>.<lambda>r   r   r#   r$   )nparanger   r   )r&   r    r'   r(   r)   r*   r   r-   r!   test_vector   s   zTestFixedQuad.test_vectorN)__name__
__module____qualname__r+   r1   r   r   r   r!   r      s    r   c                   @   s|   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )TestQuadraturec                 C   s   t r,   )NotImplementedError)r&   r   abargsr   r   r!   r      s   zTestQuadrature.quadc                 C   s0   dd }t |dtd\}}d}t||dd d S )Nc                 S      t ||  |t|   t S r,   r   r   r    zr   r   r!   myfunc#      z.TestQuadrature.test_quadrature.<locals>.myfuncr   r   ?ۗ?   decimal)r   r   r   r&   r=   valerr	table_valr   r   r!   test_quadrature!      zTestQuadrature.test_quadraturec                 C   s4   dd }t |dtddd\}}d}t||dd d S )Nc                 S       dt ||  |t|    t S )NY)	kRr   r;   r   r   r!   r=   *       z3TestQuadrature.test_quadrature_rtol.<locals>.myfuncr   r?   绽|=r$   .<Rr   r   r   rE   r   r   r!   test_quadrature_rtol)      z#TestQuadrature.test_quadrature_rtolc                 C   sJ   dd }d}dD ]}t |dtd|d\}}t||dd	 t|d
k  qd S )Nc                 S   r:   r,   r   r;   r   r   r!   r=   2   r>   z6TestQuadrature.test_quadrature_miniter.<locals>.myfuncrA   )   4   r   r?   )miniterrB   rC         ?)r   r   r   r	   )r&   r=   rH   rU   rF   rG   r   r   r!   test_quadrature_miniter0   s   z&TestQuadrature.test_quadrature_miniterc                 C   s4   dd }t |dtddd\}}d}t||dd d S )	Nc                 S   s    dt ||  dt|    t S )NrL   r@   r   )r   r    r   r   r!   r=   ;   rM   z:TestQuadrature.test_quadrature_single_args.<locals>.myfuncr   r   rN   r9   r%   rO   r$   rP   rE   r   r   r!   test_quadrature_single_args:   rR   z*TestQuadrature.test_quadrature_single_argsc                 C   s.   dd }t |dtdd}d}t||dd d S )	Nc                 S   r:   r,   r   r;   r   r   r!   r=   C   r>   z+TestQuadrature.test_romberg.<locals>.myfuncr   r?   )r9   rA   rB   rC   )r   r   r   r&   r=   rF   rH   r   r   r!   test_rombergA   s   zTestQuadrature.test_rombergc                 C   s0   dd }t |dtddd}d}t||dd d S )	Nc                 S   rK   )Ng =`XCr   r;   r   r   r!   r=   K   rM   z0TestQuadrature.test_romberg_rtol.<locals>.myfuncr   r?   rN   rX   g3>Cr$   )r   r   r   rZ   r   r   r!   test_romberg_rtolI   rJ   z TestQuadrature.test_romberg_rtolc                 C   s   t ttdd d S )N      )r   r   r/   r0   )r&   r   r   r!   	test_rombQ   s   zTestQuadrature.test_rombc                 C   s   t d}t d| }t|}tdd | | \}}t||ddd t }|	t
d td	d | | d
d}W d    n1 sHw   Y  t||ddd d S )Nr]   皙?c                 S      t d|  S Nr`   r/   r   r   r   r   r!   r"   Y       z2TestQuadrature.test_romb_gh_3731.<locals>.<lambda>g:0yE>r   )r%   atolzdivmax .4. exceededc                 S   ra   rb   rc   r   r   r   r!   r"   _   rd   r   )divmaxr#   )r/   r0   r   r   r   minmaxr   r
   filterr   r   )r&   r   yrF   val2rG   supval3r   r   r!   test_romb_gh_3731T   s   
z TestQuadrature.test_romb_gh_3731c                 C   s,   dd l }t|jdd}d}t||dd d S )Nr   r   g?k?rB   rC   )mathr   r   r   )r&   ro   valmathexpected_valr   r   r!   test_non_dtypeb   s   zTestQuadrature.test_non_dtypec                 C   s  d}t |d\}}t||tddg  t||d  d  d}t |d\}}t||tg d d  t||d  d	  d}t |d\}}t||tg d
 d  t||d  d  d}t |d\}}t||tg d d  t||d  d  dS )z5Test the first few degrees, for evenly spaced points.r         ?         (@r   )rV         @rV         @rS   g     @)rV         @rx   rV          @g     P@r   )      @      @@ru   r{   rz   g     V@rB   g     =AN)r   r   r/   arrayr   )r&   r    wtserrcoffr   r   r!   test_newton_cotesi   s    z TestQuadrature.test_newton_cotesc                 C   s|   t g d}|d }t|\}}d}t ||}t|| t g d}|d }t|\}}d}t ||}t|| dS )z9Test newton_cotes with points that are not evenly spaced.)        g      ?       @r   gUUUUUU@)r   gffffff?g @rx         "@N)r/   r|   r   dotr   )r&   r   rj   r}   r~   exact_integralnumeric_integralr   r   r!   test_newton_cotes2   s   
z!TestQuadrature.test_newton_cotes2c                 C   s   t d}tt|d tt|ddd tt|t ddddd	 t d}d
| }tt||ddd tt||ddd tt||ddd d S )Nr]   r^   rs   dx@   r   r   r       r   avg)r   eveng     +@firstg     +@last   )r/   r0   r   r   linspacer&   rj   r   r   r   r!   test_simpson   s   

zTestQuadrature.test_simpsonc                 C   8   t d}d| }tt||dddt||ddd d S )Nr   r   rs   r   )r   r   r   )r/   r0   r   r   r   r   r   r   r!   
test_simps   
   
zTestQuadrature.test_simpsN)r2   r3   r4   r   rI   rQ   rW   rY   r[   r\   r_   rn   rr   r   r   r   r   r   r   r   r!   r5      s    
r5   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestCumulative_trapezoidc                 C   sX   t jdddd}|}t||dd}g d}t|| t||d d}t||dd   d S )	Nr   rS   numr   initial)r                r   r   r   r/   r   r   r   )r&   r   rj   y_int
y_expectedr   r   r!   test_1d   s   
z TestCumulative_trapezoid.test_1dc                 C   s   t dddd}|}t||dd}t g dg dgg d	g d
gg dg dgg}t|| g d}tg d|D ] \}}t||d|d}t|jd t||d |d}t|j| q=d S )N   rt   r   r   r   r   )r   rs   r         @)r   r         $@     0@)r         !@      2@g     <@)r         )@g      :@g     @D@)r   r   g      A@g     @J@)r        4@g      E@g      P@))r   r   r   )rt   r   r   )rt   r   rt   r   r   r   g@)r   axis)rt   r   r   )	r/   r0   reshaper   r|   r   zipr   shape)r&   r   rj   r   r   shapesr   r   r   r   r!   test_y_nd_x_nd   s*   

z'TestCumulative_trapezoid.test_y_nd_x_ndc              	   C   s   t dddd}t dd }t g dg dgg dg dggt g d	gg d
gg dggt g dg dgg dg dgg dg dggf}tg d|D ]\}}t||d |j|  |d d}t|| qUd S )Nr   rt   r   r   )rv         @rw   rz   )ry   r   r         &@)g      D@g      F@g      H@g      J@)g      L@g      N@g      P@g      Q@)r   rx   rv   r   )r   r   ru   g      *@)r   g      3@g      4@      5@)rs   r   g     1@)r   r   g     J@)r   g     B@g     `V@)r   g     J@g     `_@)r   g     @Q@g     0d@)r   g     @U@g     h@r   )r   r   r   )r/   r0   r   r|   r   r   r   r   )r&   rj   r   ys_expectedr   r   r   r   r   r!   test_y_nd_x_1d   s<   

z'TestCumulative_trapezoid.test_y_nd_x_1dc                 C   s   t jdddd}t|}g d}t|| t|dd}g d}t|| t|d	d
}g d}t|| t|d	dd}g d}t|| d S )Nr   r   rS   r   )r   r   r   r   Gz?r   )r   r   r   r   r   rt   r   )            r   r   )r   r   )r   r   r   r   r   r   )r&   rj   r   r   r   r   r!   test_x_none   s   


z$TestCumulative_trapezoid.test_x_nonec              	   C   sF   t dddd}|}tt||ddddt||dddddd	 d S )
Nr   rt   r   r   rs   r   )r   r   r   g+=r$   )r/   r0   r   r   r   r   )r&   r   rj   r   r   r!   test_cumtrapz   s   
z&TestCumulative_trapezoid.test_cumtrapzN)r2   r3   r4   r   r   r   r   r   r   r   r   r!   r      s    
r   c                   @   s    e Zd ZdZdd Zdd ZdS )TestTrapezoidz[This function is tested in NumPy more extensive, just do some
    basic due diligence here.c                 C   sp   t d}tt|d tt|ddd tt|t ddddd	 t d}d
| }tt||ddd d S )Nr]   r^   rs   r   r   r   r   r   r   r   g?)r   r   g      +@)r/   r0   r   r   r   r   r   r   r!   test_trapezoid   s   

zTestTrapezoid.test_trapezoidc                 C   r   )Nr   r   rs   r   )r   r   r   )r/   r0   r   r   r   r   r   r   r!   
test_trapz  r   zTestTrapezoid.test_trapzN)r2   r3   r4   __doc__r   r   r   r   r   r!   r      s    
r   )numpyr/   r   r   r   numpy.testingr   r   r   r	   r
   scipy.integrater   r   r   r   r   r   r   r   r   r   r   r   r   r   r5   r   r   r   r   r   r!   <module>   s    < T