o
    ?HhXn                     @   s<  d dl Z d dlZd dlmZmZmZ d dlmZ d dl	m
Z d dlm  mZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZ d dlm Z m!Z! d dl"m#Z# e j$j%Z%G d	d
 d
Z&G dd dZ'G dd dZ(e G dd dZ)G dd dZ*dddddddZ+G dd dZ,G dd dZ-dS )    N)assert_equalassert_almost_equalassert_allclose)given)	rombnewton_cotescumulative_trapezoid	trapezoidquadsimpson
fixed_quadqmc_quadcumulative_simpson)%_cumulative_simpson_unequal_intervals)statsspecial	integrate)array_api_compatibleskip_xp_invalid_arg)xp_assert_closec                   @   s   e Zd Zdd Zdd ZdS )TestFixedQuadc                    s>   d dd   }t  fdddd d\}}t||dd	 d S )
N         c                    s   | d  d  S )Nr   r    xnr   e/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/scipy/integrate/tests/test_quadrature.py<lambda>   s    z+TestFixedQuad.test_scalar.<locals>.<lambda>r   r   -q=rtol)r   r   )selfexpectedgot_r   r   r   test_scalar   s   zTestFixedQuad.test_scalarc                    sN   d}t dd|  d d  }t fdddd|d\}}t||dd	 d S )
Nr   r   r   c                    s   |  d d d f  S Nr   r   pr   r   r    "       z+TestFixedQuad.test_vector.<locals>.<lambda>r   r   r!   r"   )nparanger   r   )r$   r   r%   r&   r'   r   r*   r   test_vector   s
   zTestFixedQuad.test_vectorN)__name__
__module____qualname__r(   r/   r   r   r   r   r      s    r   c                   @   sV   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dddgdd ZdS )TestQuadraturec                 C   s   t r)   )NotImplementedError)r$   r   abargsr   r   r   r
   '   s   zTestQuadrature.quadc                 C   s   t ttdd d S )N      )r   r   r-   r.   r$   r   r   r   	test_romb*   s   zTestQuadrature.test_rombc                 C   sP   t d}t d| }t|}tdd | | \}}t||ddd d S )Nr8   皙?c                 S   s   t d|  S )Nr<   )r-   cosr   r   r   r   r    2       z2TestQuadrature.test_romb_gh_3731.<locals>.<lambda>g:0yE>r   r#   atol)r-   r.   r=   r   r
   minmaxr   )r$   r   yvalval2errr   r   r   test_romb_gh_3731-   s
   
z TestQuadrature.test_romb_gh_3731c                 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   )      ?      @rK         @   g     @)rK         @rO   rK          @g     P@r   )      @      @@rJ   rR   rQ   g     V@   g     =AN)r   r   r-   arrayr   )r$   r   wtserrcoffr   r   r   test_newton_cotes5   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@)rX   gffffff?g @rO         "@N)r-   rT   r   dotr   )r$   r   rC   rU   rV   exact_integralnumeric_integralr   r   r   test_newton_cotes2K   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d}dd }tt|||dd t d
dd}tt||ddd t ddd}t dddd}||}tdD ]C}t|||d}t j|dgd}|D ]/}t	|j
}	|	|td  |t|	 d d d |t|	 d d d  }
t||j
 |
 qyqft ddd}||}t||dd}d|d d d
f |d d df   |d d d
f |d d df   }
t||
 t ddd}t dddd}||}tdD ]E}t|||d}t j|dgd}|D ]0}t	|j
}	|	|td  |t|	 d d d |t|	 d d d  }
t||j
 |
 qq t dg}t |d}tt||ddd tt||ddd t g d}t |d}tt||ddd tt||ddd t g dg dg dg}t |d}g d }d!gd }tt||dd| tt||dd| t g dg dg d"g}t |d}g d#}g d$}tt||dd| tt||dd| d S )%Nr8   r9   rH   dx@   r   r   r       r   c                 S   s   | d S )Nr   r   r   r   r   r   fd   s   z&TestQuadrature.test_simpson.<locals>.f      5@rS   rY   r            P@rI   r   axismulti_index)flags   r      rN   }   rX   )rI   rI   rI   rI   )r   r   r   rm   )rX   rX   rX   rX   竪Je@)r   rm   rf   rb   )rX   g      a@g      @g      @)rp   rp   g*U@)r-   r.   r   r   linspacer   reshaperangenditerlistrj   insertslicetuplerT   power)r$   rC   r   rc   r5   iritr'   idxintegral	zero_axisdefault_axisr   r   r   test_simpson\   st   

0D

0
zTestQuadrature.test_simpsondroplastFTc                 C   s`   t g dg dg}|r|d d d df }t|dd}tt j|t jddd}t|| d S )N)r   r   r   r   rm   rm   rN   )r   r   r   r   
      r   rl   ri   dtype)r-   rT   r   float64r   )r$   r   rC   resultr%   r   r   r   test_simpson_2d_integer_no_x   s   
z+TestQuadrature.test_simpson_2d_integer_no_xN)r0   r1   r2   r
   r;   rG   rW   r^   r   pytestmarkparametrizer   r   r   r   r   r3   &   s    Nr3   c                   @   sN   e Zd Zdd Zdd Zdd Zdd Zej	d	d
dg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   r   rN   numr   initial)rX                r   rX   r   r-   rq   r   r   )r$   r   rC   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   rI   r   r   r   r   )rX   rH   rY         @)rX   r         $@     0@)rX         !@      2@g     <@)rX         )@g      :@     @D@)rX   r   g      A@g     @J@)rX        4@g      E@g      P@))r   r   r   )rI   r   r   )rI   r   rI   r   r   r   )r   ri   )rI   r   r   )	r-   r.   rr   r   rT   r   zipr   shape)r$   r   rC   r   r   shapesri   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   rI   r   r   )rL         @rM   rQ   )rP   rZ   r         &@)g      D@g      F@g      H@g      J@)g      L@g      N@rg   g      Q@)rY   rO   rL   r   )r   r   rJ         *@)r   g      3@      4@rd   )rH   r   g     1@)r   rd   g     J@)r   g     B@g     `V@)r   g     J@g     `_@)r   g     @Q@g     0d@)r   g     @U@g     h@r   )r   ri   r   )r-   r.   rr   rT   r   r   r   r   )r$   rC   r   ys_expectedri   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   rN   r   )r   r   r   rX   r   r   )r   r   r   r   rX   rI   r_   )            r   rX   )r`   r   )r   r   r   r   rX   r   )r$   rC   r   r   r   r   r   test_x_none   s   


z$TestCumulative_trapezoid.test_x_noner   r   rH   c                 C   sP   t jdddd}tjtdd t||d W d   dS 1 s!w   Y  dS )z4If initial is not None or 0, a ValueError is raised.r   r   r   z	`initial`matchr   N)r-   rq   r   raises
ValueErrorr   )r$   r   rC   r   r   r   test_initial_error  s   "z+TestCumulative_trapezoid.test_initial_errorc                 C   s>   t jtdd tg d W d    d S 1 sw   Y  d S )NAt least one point is requiredr   rC   )r   r   r   r   r:   r   r   r   test_zero_len_y  s   "z(TestCumulative_trapezoid.test_zero_len_yN)r0   r1   r2   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    

r   c                   @   s   e Zd Zdd Zeddgdejddd Zeddgdejdd	d
 Z	e
dd Zeddgdejddd ZdS )TestTrapezoidc                 C   sR   | ddd}t|d|d  |d||j  dd}t||d d S )Nr   g?g      r   r_   rK   )r.   r	   expsqrtasarraypir   )r$   xpr   r{   r   r   r   test_simple  s   0zTestTrapezoid.test_simplez	jax.numpyz)JAX arrays do not support item assignment)reasonsskip_xp_backendsc                 C   s,  | ddd}| ddd}| ddd}|||d |d   }|d  d  < |d  d  < |||d |d   }|d  d  < |d  d  < |||d |d   }|d  d  < |d  d  < |d d d d f |d d d d f  |d d d d f  }|j||d d d d f  dd}	|j||d d d d f  dd}
|j||d d d d f  dd}t||d d d d f dd	}t||	 t||d d d d f dd	}t||
 t||d d d d f dd	}t|| t||dd	}t||	 t||dd	}t||
 t||dd	}t|| d S )
Nr   r   rI   r   rm      rl   r   rh   )rq   	ones_likesumr	   r   )r$   r   r   rC   zwxwywzqqxqyqzr{   r   r   r   	test_ndim  s8   6   




zTestTrapezoid.test_ndimc                 C   s(  | |dddd}| |dddd}|ddd}tt||dd| tt||g d	dd| tt||g d	d d d f dd| tt t||g d	d d d f dd W d    n1 smw   Y  |g d
}tt||dd| tt||ddddd| d S )Nr         )rI   r      i|  r   rh   )r   r   r   )r   g     P`@g     k@r   	   )rr   rq   r   r	   r   r   r   	Exception)r$   r   r   rC   out0out1r   r   r   test_gh21908@  s$   "&zTestTrapezoid.test_gh21908c                 C   s   t d}|| }|dk}t jj||d}d}tt||| t jj||d}tt||| t jj||d}tt||| d S )NrN   r   )maskr   )r-   r.   marT   r   r	   )r$   r   r   rC   r   ymr{   xmr   r   r   test_masked[  s   
zTestTrapezoid.test_maskedTz,array-likes only supported for NumPy backend)np_onlyr   c                 C   s\   t td}dd |D }|j||jd}|j||jd}t||}t||}t|| d S )NrN   c                 S   s   g | ]}|| qS r   r   ).0tr   r   r   
<listcomp>q  r,   z1TestTrapezoid.test_array_like.<locals>.<listcomp>r   )ru   rs   r   r   r	   r   )r$   r   r   rC   xarryarrresresarrr   r   r   test_array_likel  s   

zTestTrapezoid.test_array_likeN)r0   r1   r2   r   r   r   r   usefixturesr   r   r   r   r   r   r   r   r   r     s&    
%


r   c                   @   s   e Zd Zejjdd ZdddZejddd	gejd
ddgdd Z	ejdddgddgddgddggdd Z
ejjejdddgdd Zdd ZdS )TestQMCQuadc                 C   sv  d}t jt|d tdddgddg W d    n1 sw   Y  d}t jt|d tdd ddgddg W d    n1 sCw   Y  d	d
 }d}t jt|d t|ddgddg W d    n1 sjw   Y  d}t jt|d tdd ddgddgdd W d    n1 sw   Y  d}t jt|d tdd ddgddgdd W d    n1 sw   Y  d}t jt|d tdd ddgddgdd W d    n1 sw   Y  d}t jt|d tdd ddgddgtj	dd W d    n	1 sw   Y  d}t jt|d tdd ddgddgdd W d    d S 1 s4w   Y  d S )Nz`func` must be callable.r   za duckr   r   z/`func` must evaluate the integrand at points...c                   S      dS Nr   r   r   r   r   r   r          z3TestQMCQuad.test_input_validation.<locals>.<lambda>c                 S   s   | j dksJ t| S r   )ndimr-   r   r   r   r   r   func  s   
z/TestQMCQuad.test_input_validation.<locals>.funcz8Exception encountered when attempting vectorized call...z`n_points` must be an integer.c                 S   r   r   r   r   r   r   r   r      r   g     @)n_pointsz!`n_estimates` must be an integer.c                 S   r   r   r   r   r   r   r   r      r   r   )n_estimatesz8`qrng` must be an instance of scipy.stats.qmc.QMCEngine.c                 S   r   r   r   r   r   r   r   r      r   )qrngz8`qrng` must be initialized with dimensionality equal to c                 S   r   r   r   r   r   r   r   r      r   z,`log` must be boolean \(`True` or `False`\).c                 S   r   r   r   r   r   r   r   r      r   r   log)
r   r   	TypeErrorr   r   warnsUserWarningr   qmcSobol)r$   messager   r   r   r   test_input_validationz  sB   &$z!TestQMCQuad.test_input_validation   rm   Nc              	      sj  |d u r	t d}d}t |t |  fddt jd}tjj||d}t |}t || }t	|||||d}	tj
j| |d}
t|d d	|	j }t|	j|
|d
 t ||	j dksiJ t jd}tjj||d}t	fdd||||d|d}tt |j|	jdd t |jt |dk rt jndksJ tt |j|	jddd d S )Nr   c                    s   t j| j S r)   )r   multivariate_normalpdfTr   )covmeanr   r   r     s   z$TestQMCQuad.basic_test.<locals>.funcl   ^^@E9? )seed)r   r   r   )lower_limitr   gףp=
?r@   r   c                     s   t  |  S r)   )r-   r   )r7   )r   r   r   r      r>   z(TestQMCQuad.basic_test.<locals>.<lambda>T)r   r   r   r   +=r"   缉ؗҜ<r?   )r-   oneszeroseyerandomdefault_rngr   r   r   r   r   cdfr   stdtritstandard_errorr   r~   prodr   imagr   )r$   r   r   signsr   rngr   r5   r6   r   refr@   logresr   )r   r   r   r   
basic_test  s8   




(
zTestQMCQuad.basic_testr   i   r   rf   c                 C   s   |  || d S r)   r  )r$   r   r   r   r   r   
test_basic  s   zTestQMCQuad.test_basicr  r   rl   c                 C   s   | j |d d S )N)r  r  )r$   r  r   r   r   	test_sign  s   zTestQMCQuad.test_signr   FTc                 C   sz   d}t jt|d tdd ddgddg|d}W d    n1 s"w   Y  |j|r/tj ndks4J |jdks;J d S )Nz-A lower limit was equal to an upper limit, sor   c                 S   r   r   r   r   r   r   r   r      r   z'TestQMCQuad.test_zero.<locals>.<lambda>r   r   r   )r   r   r   r   r~   r-   infr  )r$   r   r   r   r   r   r   	test_zero  s   zTestQMCQuad.test_zeroc                 C   sF   dd }t |dd}tjjdddtjjddd }t|j|d d S )Nc                 S   s   t jj| ddS )Nr   scale)r   normr   r   r   r   r   r     s   z-TestQMCQuad.test_flexible_input.<locals>.funcr   r   r   r  g{Gz?)r   r   r  r	  r   r~   )r$   r   r   r  r   r   r   test_flexible_input  s    zTestQMCQuad.test_flexible_input)r   rm   N)r0   r1   r2   r   r   thread_unsafer   r  r   r  r  r  r  r   r   r   r   r   y  s    

$$
r   rl   r   r`   r   ri   c          	         sd  | j | dk r|d u rt| |||d dS |t| |||dd S t| |d} t|dkr4t||dn|}t|dkrDt||dn|}t|dkrTt||dn|}| j d  |d urf|t  n|}|d u }|rpdn|}t|| j }t|| j d d d }tj| ||fdd} fdd	}t|d|}|r|d
dd f n|}t|d|}|S )NrI   )r   r`   ri   r   r   rl   r   )r   r   c                    s.   t | d   |  d   | d  d  dS )Nr   )r   r   )r   )r   r   r   r   rc     s   .z*cumulative_simpson_nd_reference.<locals>.f.)	r   r   r-   moveaxisr   r.   broadcast_toconcatenateapply_along_axis)	rC   r   r`   r   ri   initial_was_noner   rc   r   r   r   r   cumulative_simpson_nd_reference  s(      
r#  c                   @   s  e Zd ZedZed Zej	ddej	dddd Z
ej	ded	d
ej	ddej	ddej	ddej	dddd Zej	ddeg ddfdeeg dgeegdfdeeeegeeegddfdeg g dfdeddfd eed!dfd"eed!d#fd$ed%ed!d&fgd'd( Zd)d* Zd+d, Zejjejjeejejejdd
d-d.ejd/d-d0d1d2d3 d4d5d6d7 Zejjejjeejejejdd
d-d.ejd/d-d0d1d8d3 d4d5d9d: Zd%S );TestCumulativeSimpsonr   r   use_dx)FTuse_initialc                 C   sp  t jd}d}|rdnd}| }|dkrt ||n
t || |  }t |d d d t jf }||d d d t jf }	t j|	||  dd}
t j|	||d   |d  dd}|re|n	||d  dd  }|ru|d nd }|r}d|ind	|i}t|
fi |d
|i}|st||dd d S |rdnd}t||dd t||d d ||d d dd d S )N   F*BG r   rI   r   r   r   r   r`   r   r   gV瞯<r"   g{Gzd?)	r-   r  r  sortr.   newaxisr   r   r   )r$   r%  r&  r  r   orderr`   r   rz   crC   Yr  r   kwargr   i0r   r   r   r     s(   "&zTestCumulativeSimpson.test_1dri   rI   x_ndim)r   rI   x_len)r   r   rS   i_ndim)Nr   rI   r`   )NTc                 C   s  t jd}dd|g}|d || ||< |d< | }d||< |dkr&|nd}	|j|d}
d	\}}|rC|dkr>|j|dn| }n|dkrRt j|j|d|d
n
t |j|| d}|d u rcd n|j|	d}t|
||||d}t|
||||d}t jj||dd d S )Nr'  rN      rl   r   rI   r   size)NNr   r  V瞯<r"   )	r-   r  r  copyr(  r   r#  testingr   )r$   ri   r0  r1  r2  r`   r  r   shape_len_1i_shaperC   r   r   r   r  r   r   r   test_nd'  s"   
zTestCumulativeSimpson.test_nd)r   kwarg_updatezx must be strictly increasing)r   r   rI   r   r   )r   r   r   rm   r   rC   r   )r   rC   ri   r   z-`axis=4` is not valid for `y` with `y.ndim=1`r   z+shape of `x` must be the same as `y` or 1-DrN   z'`initial` must either be a scalar or...r   z"`dx` must either be a scalar or...N)r   r`   c                 C   sd   t | j| jd d dd}tjt|d tdi t |fi | W d    d S 1 s+w   Y  d S )Nrl   )rC   r   r`   r   ri   r   r   )dicty0x0r   r   r   r   )r$   r   r<  kwargs0r   r   r   test_simpson_exceptionsF  s   "z-TestCumulativeSimpson.test_simpson_exceptionsc                 C   s2   t jd}|jdd}t|dd}t|d d S )Nr'  r   r4  r   r_   )r-   r  r  r   r   )r$   r  rC   r   r   r   r   test_special_casesU  s   z(TestCumulativeSimpson.test_special_casesc                 C   s   t j|dd}t||}t|ddddf |ddddf ddddf }g |jdd dR }t jt ||dddf |dddf  t |gdd}d|ddddf< |S )aj  `cumulative_simpson` and `simpson` can be tested against other to verify
        they give consistent results. `simpson` will iteratively be called with
        successively higher upper limits of integration. This function calculates
        the theoretical correction required to `simpson` at even intervals to match
        with `cumulative_simpson`.
        rl   r   .Nr   rX   r   )r-   diffr   r   r   r  )r$   rC   r   dsub_integrals_h1sub_integrals_h2zeros_shapetheoretical_differencer   r   r   1_get_theoretical_diff_between_simps_and_cum_simps`  s"   
 
zGTestCumulativeSimpson._get_theoretical_diff_between_simps_and_cum_simpsr   )max_dimsmin_sidemax_sider   F)	allow_nanc                 C      t | dkS NgHz>absr   r   r   r   r          zTestCumulativeSimpson.<lambda>)elementsr   c                 C   st   dd }t |dd}||}| j|t|jd d}tjj|ddd	f |ddd	f |ddd	f  d
d d	S )e  Theoretically, the output of `cumulative_simpson` will be identical
        to `simpson` at all even indices and in the last index. The first index
        will not match as `simpson` uses the trapezoidal rule when there are only two
        data points. Odd indices after the first index are shown to match with
        a mathematically-derived correction.c                    s,   t j fddtd jd d D ddS )Nc                    s$   g | ]}t  d d|f ddqS ).NrK   r_   r   r   rz   r   r   r   r     s   $ z|TestCumulativeSimpson.test_cumulative_simpson_against_simpson_with_default_dx.<locals>.simpson_reference.<locals>.<listcomp>r   rl   r   r   r-   stackrs   r   r   r   r   r   simpson_reference  s   "zhTestCumulativeSimpson.test_cumulative_simpson_against_simpson_with_default_dx.<locals>.simpson_referencerK   r_   rl   r   .r   Nr  r  )r   rJ  r-   r.   r   r8  r   )r$   rC   rZ  r   r  rI  r   r   r   7test_cumulative_simpson_against_simpson_with_default_dx~  s   .
zMTestCumulativeSimpson.test_cumulative_simpson_against_simpson_with_default_dxc                 C   rO  rP  rQ  r   r   r   r   r      rS  c                 C   s   d|j d d  }tjdd|j d d}|dd d| tjddt|d   |dd< dd	 }t||d
}|||}| ||}tj	|dddf |dddf |dddf   dS )rU  r   rl   r   r   r   Nr<   c                    s.   t j fddtdjd d D ddS )Nc                    s0   g | ]}t d d|f  d d|f dqS ).Nr   rV  rW  r=  r   r   r     s   0 zlTestCumulativeSimpson.test_cumulative_simpson_against_simpson.<locals>.simpson_reference.<locals>.<listcomp>r   rl   r   r   rX  )rC   r   r   r=  r   rZ    s   "zXTestCumulativeSimpson.test_cumulative_simpson_against_simpson.<locals>.simpson_referencer   .)
r   r-   rq   r  uniformlenr   rJ  r8  r   )r$   rC   intervalr   rZ  r   r  rI  r   r   r   'test_cumulative_simpson_against_simpson  s   4
,z=TestCumulativeSimpson.test_cumulative_simpson_against_simpson)r0   r1   r2   r-   r.   r@  r?  r   r   r   r   r;  r>  rB  rC  rJ  r  slowr   hyp_numarraysr   array_shapesstfloatsfilterr[  r_  r   r   r   r   r$     sZ    
!

r$  c                	   @   sN   e Zd Zdd Zdd Zejdee	dddee	d	d
d dd Z
dS )TestLebedevc                 C   sB   d}t jt|d td W d    d S 1 sw   Y  d S )NzOrder n=-1 not available...r   rl   )r   r   r4   r   lebedev_rule)r$   r   r   r   r   r     s   "z!TestLebedev.test_input_validationc                 C   sN   dd }t d\}}||| }d}t||dd tt|dtj  d S )Nc                 S   s   t | d S )Nr   )r-   r   r   r   r   r   rc     s   z&TestLebedev.test_quadrature.<locals>.f   g9-@r  r"   r   )r   rh  r   r-   r   r   )r$   rc   r   wr   r  r   r   r   test_quadrature  s   zTestLebedev.test_quadraturer*  rI   rb   r   #      r3  c                 C   sv   t |\}}tjddd tj|jdd}t|jddd W d    n1 s)w   Y  tt	|dtj
  d S )Nignore)divideinvalidr   r   r6  r  r   )r   rh  r-   errstater   directional_statsr   r   mean_resultant_lengthr   r   )r$   r*  r   rj  r   r   r   r   test_properties  s   zTestLebedev.test_propertiesN)r0   r1   r2   r   rk  r   r   r   ru   rs   rt  r   r   r   r   rg    s
    (rg  ).r   numpyr-   numpy.testingr   r   r   
hypothesisr   hypothesis.strategies
strategiesrd  hypothesis.extra.numpyextrara  scipy.integrater   r   r   r	   r
   r   r   r   r   scipy.integrate._quadraturer   scipyr   r   r   scipy.conftestr   r   scipy._lib._array_api_no_0dr   r   r   r   r3   r   r   r   r#  r$  rg  r   r   r   r   <module>   s.   , Yhb% B