
    -iis                         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c 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  d dl!m"Z"m#Z#m$Z$ d d	l%m&Z&m'Z' e j(        j)        Z) e"e           G d
 d                      Z* e"e           G d d                      Z+ e"e           G d d                      Z, e"e           G d d                      Z- e"e           G d d                      Z. e"e           G d d                      Z/ e"e           G d d                      Z0ddddddZ1 e"e           G d d                      Z2 e"ej3                   G d d                      Z4d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)skip_xp_invalid_arg)make_xp_test_casexp_default_dtypeis_numpy)xp_assert_closexp_assert_equalc                       e Zd Zd Zd ZdS )TestFixedQuadc                 r    dddz  z  }t          fddd          \  }}t          ||d           d S )	N         c                     | dz  dz
  z  S )Nr   r    )xns    k/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/integrate/tests/test_quadrature.py<lambda>z+TestFixedQuad.test_scalar.<locals>.<lambda>   s    a!A#'l     r   r#   -q=rtol)r   r   )selfexpectedgot_r#   s       @r$   test_scalarzTestFixedQuad.test_scalar   sT    ac72222AqA>>>QXE222222r&   c                     d}t          j        dd|z            ddz   z  }t          fddd|          \  }}t          ||d           d S )	Nr   r   r   c                 "    | d d d f         z  S Nr!   )r"   ps    r$   r%   z+TestFixedQuad.test_vector.<locals>.<lambda>#   s    a111d7m r&   r   r'   r(   r)   )nparanger   r   )r+   r#   r,   r-   r.   r3   s        @r$   test_vectorzTestFixedQuad.test_vector   si    Ia1a!e93333QQ???QXE222222r&   N)__name__
__module____qualname__r/   r6   r!   r&   r$   r   r      s2        3 3 33 3 3 3 3r&   r   c                       e Zd Zd Zd ZdS )TestRombc                     t          t          |                    d                    |                    d|j                             d S )Ng      1@g      `@dtype)r   r   r5   asarrayfloat64r+   xps     r$   	test_rombzTestRomb.test_romb)   s<    RYYt__--rzz%rzz/R/RSSSSSr&   c                 l   t          j        d          }t          j        d|z            }t          |                    |                    }t          d t          j        |          t          j        |                    \  }}t          ||                    ||j	                  dd           d S )N   皙?c                 T    t          j        t          j        d| z                      S )NrF   )r4   cosarrayr"   s    r$   r%   z,TestRomb.test_romb_gh_3731.<locals>.<lambda>1   s    RVBHSUOO%<%< r&   r=   g:0yE>r   r*   atol)
r4   r5   rH   r   r?   r   minmaxr   r@   )r+   rB   r"   yvalr,   r.   s          r$   test_romb_gh_3731zTestRomb.test_romb_gh_3731,   s    IfF3q5MM2::a==!!<<bfQiiPQSS!RZZ
ZCC$UVWWWWWWr&   N)r7   r8   r9   rC   rQ   r!   r&   r$   r;   r;   '   s:        T T TX X X X Xr&   r;   c                       e Zd Zd Zd ZdS )TestNewtonCotesc                    d}t          |d          \  }}t          ||t          j        ddg          z             t	          ||dz   dz             d}t          |d          \  }}t	          ||t          j        g d          z  dz             t	          ||dz   d	z             d}t          |d          \  }}t	          ||t          j        g d
          z  dz             t	          ||dz   dz             d}t          |d          \  }}t	          ||t          j        g d          z  dz             t	          ||dz   dz             dS )z5Test the first few degrees, for evenly spaced points.r         ?         (@r   )      ?      @rX         @   g     @)rX         @r\   rX          @g     P@r   )      @      @@rW   r_   r^   g     V@   g     =AN)r   r   r4   rI   r   )r+   r#   wtserrcoffs       r$   test_newton_cotesz!TestNewtonCotes.test_newton_cotes7   sq   #Aq))WS!BHc3Z000111GadU4Z000#Aq))WC28OOO#<#<!<S!@AAAGadU6\222#Aq))WC28,@,@,@#A#A!A#!EFFFGadU6\222#Aq))WC28,H,H,H#I#I!I$!NOOOGadU9_55555r&   c                 V   t          j        g d          }|dz  }t          |          \  }}d}t          j        ||          }t	          ||           t          j        g d          }|dz  }t          |          \  }}d}t          j        ||          }t	          ||           dS )z9Test newton_cotes with points that are not evenly spaced.)        g      ?       @r   gUUUUUU@)re   gffffff?g @r\         "@N)r4   rI   r   dotr   )r+   r"   rO   ra   rb   exact_integralnumeric_integrals          r$   test_newton_cotes2z"TestNewtonCotes.test_newton_cotes2M   s     H___%%qD#AW6#q>>,n===H)))**qD#AW6#q>>,n=====r&   N)r7   r8   r9   rc   rk   r!   r&   r$   rS   rS   5   s2        6 6 6,> > > > >r&   rS   c                   `    e Zd Zd Zej                            dddg          d             ZdS )TestSimpsonc           
      z   t          j        d          }t          t          |          d           t          t          |d          d           t          t          |t          j        ddd                    d	           t          j        d
dd          }d }t          t           ||          |          d           t          j        d
dd          }t          t           ||          d          d           t          j        d                              dd          }t          j        d                              ddd          } ||          }t          d          D ]}t          |||          }t          j        |dg          }|D ]}t          |j
                  }	|	                    |t          d                      |t          |	                   d         dz  dz  |t          |	                   d         dz  dz  z
  }
t          ||j
                 |
           t          j        d                              dd          } ||          }t          ||d          }d|d d d
f         |d d df         z   z  |d d d
f         |d d df         z
  z  }
t          ||
           t          j        d                              dd          }t          j        d                              ddd          } ||          }t          d          D ]}t          |||          }t          j        |dg          }|D ]}t          |j
                  }	|	                    |t          d                      |t          |	                   d         dz  dz  |t          |	                   d         dz  dz  z
  }
t          ||j
                 |
           t          j        dg          }t          j        |d          }t          t          ||d          d           t          t          ||d          d           t          j        g d          }t          j        |d          }t          t          ||d          d           t          t          ||d          d           t          j        g dg dg dg          }t          j        |d          }g d}d gdz  }t          t          ||d          |           t          t          ||d          |           t          j        g dg dg d!g          }t          j        |d          }g d"}g d#}t          t          ||d          |           t          t          ||d          |           d S )$NrE      rU   dx@   r   r   rJ       r   c                     | dz  S )Nr   r!   rJ   s    r$   fz#TestSimpson.test_simpson.<locals>.fi   s    a4Kr&         5@r`   rf   r            P@rV   r"   axismulti_index)flags   r      r[   }   re   )rV   rV   rV   rV   )r   r   r   r   )re   re   re   re   竪Je@)r   r   rx   rs   )re   g      a@g      @g      @)r   r   g*U@)r4   r5   r   r   linspacer   reshaperangenditerlistr|   insertslicetuplerI   power)r+   rO   r"   ru   airitr.   idxintegral	zero_axisdefault_axiss                r$   test_simpsonzTestSimpson.test_simpsona   s   IbMMWQZZ%%%WQ3''',,,WQ"+aB"7"7888"=== K1a  	 	 	 	!***D111 K1a  !---s333 IbMM!!!Q''IcNN""1a++AaDDq 	= 	=AQQ'''A1]O444B = =2>**

1eDkk***U3ZZ=,a/!3ac

mA6F6IA6MM". 18<<<<	= IbMM!!!Q''AaDDA$$$!AAAqD'AaaadG+,!!!Q$!AAAqD'0AB8$$$ IbMM!!!Q''IcNN""1a++AaDDq 	= 	=AQQ'''A1]O444B = =2>**

1eDkk***U3ZZ=,a/!3ac

mA6F6IA6MM". 18<<<<	= HaSMMHQNNQQ///555QR000#666H\\\""HQNNQQ///555QR000#666HlllLLL,,,?@@HQNN(((	!{QQQ///;;;QR000,???HlllLLL...ABBHQNN000	>>>QQ///;;;QR000,?????r&   droplastFTc                     t          j        g dg dg          }|r|d d d df         }t          |d          }t          t          j        |t           j                  d          }t	          ||           d S )N)r   r   r   r   r   r   r[   )r   r   r   r   
      r   r~   r{   r=   )r4   rI   r   r@   r   )r+   r   rO   resultr,   s        r$   test_simpson_2d_integer_no_xz(TestSimpson.test_simpson_2d_integer_no_x   s     H///3335 6 6 	!!!SbS&	A$$$28ARZ888rBBBVX&&&&&r&   N)r7   r8   r9   r   pytestmarkparametrizer   r!   r&   r$   rm   rm   _   s\        K@ K@ K@\ [Z%77	' 	' 87	' 	' 	'r&   rm   c                   x    e Zd Zd Zd Zd Zd Zej        	                    dddg          d             Z
d	 Zd
S )TestCumulative_trapezoidc                     |                     ddd          }|}t          ||d          }|                    g d          }t          ||           t          ||d           }t          ||dd                     d S )	Nr   r   r[   numr   initial)re                r   re   r   r   r	   r?   r   )r+   rB   r"   rO   y_int
y_expecteds         r$   test_1dz TestCumulative_trapezoid.test_1d   s    KKA1K%%$Q1555ZZ 9 9 9::
z***$Q4888z!""~.....r&   c                    |                     |                    dt          |                    d          }|}t          ||d          }|                    g dg dgg dg d	gg d
g dgg          }t          ||           g d}t          g d|          D ]E\  }}t          ||d|          }|j        dk    sJ t          ||d |          }|j        |k    sJ Fd S )N   r=   rV   r   r   r   r   )re   rU   rf         @)re   r         $@     0@)re         !@      2@g     <@)re         )@g      :@     @D@)re   r   g      A@g     @J@)re        4@g      E@g      P@))r   r   r   )rV   r   r   )rV   r   rV   r   r   r   )r   r{   )r   r5   r   r	   r?   r   zipshape)	r+   rB   r"   rO   r   r   shapesr{   r   s	            r$   test_y_nd_x_ndz'TestCumulative_trapezoid.test_y_nd_x_nd   sC   JJryy2B22F2FyGGSS$Q1555ZZ"4"4"4"6"6"6"8"6"6"6"7"7"7"9"7"7"7"7"7"7"9	!: ; ;
 	z*** 322yyy&11 	( 	(KD%(AqtDDDE;)++++(At$GGGE;%'''''		( 	(r&   c           	      :   |                     |                    dt          |                    d          }|                    dt          |                    dz  }|                    g dg dgg dg d	gg          |                    g d
gg dgg dgg          |                    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           }t          ||           <d S )Nr   r=   r   r   r   )rY         @rZ   r^   )r]   rg   r         &@)g      D@g      F@g      H@g      J@)g      L@g      N@ry   g      Q@)rf   r\   rY   r   )r   r   rW         *@)r   g      3@      4@rv   )rU   r   g     1@)r   rv   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   r5   r   r?   r   r	   r   r   )r+   rB   rO   r"   ys_expectedr{   r   r   s           r$   test_y_nd_x_1dz'TestCumulative_trapezoid.test_y_nd_x_1d   s   JJryy2B22F2FyGGSSIIa/33I44a7 JJ)))+++-------/0 1 1 JJ)))*---.---.0 1 1 JJ)))+)))+++-++++++-	. / /0 !$III{ ; ; 	/ 	/D*(a.?d157 7 7EE:....	/ 	/r&   c                    |                     ddd          }t          |          }|                    g d          }t          ||           t          |d          }|                    g d          }t          ||           t          |d	
          }|                    g d          }t          ||           t          |d	d          }|                    g d          }t          ||           d S )Nr   r   r[   r   )r   r   r   re   r   r   )r   r   r   r   re   rV   rp   )            r   re   )rq   r   )r   r   r   r   re   r   )r+   rB   rO   r   r   s        r$   test_x_nonez$TestCumulative_trapezoid.test_x_none   s   KKA1K%%$Q''ZZ 5 5 566
z***$Q222ZZ 8 8 899
z***$Q1---ZZ 5 5 566
z***$Q1a888ZZ 8 8 899
z*****r&   r   r   rU   c                     |                     ddd          }t          j        t          d          5  t	          ||           ddd           dS # 1 swxY w Y   dS )z4If initial is not None or 0, a ValueError is raised.r   r   r   z	`initial`matchr   N)r   r   raises
ValueErrorr	   )r+   r   rB   rO   s       r$   test_initial_errorz+TestCumulative_trapezoid.test_initial_error  s    
 KK22K&&]:[999 	5 	5 G4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   AAAc                     t          j        t          d          5  t          |                    g                      d d d            d S # 1 swxY w Y   d S )NAt least one point is requiredr   rO   )r   r   r   r	   r?   rA   s     r$   test_zero_len_yz(TestCumulative_trapezoid.test_zero_len_y  s    ]:-MNNN 	3 	3 2::b>>2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   $AAAN)r7   r8   r9   r   r   r   r   r   r   r   r   r   r!   r&   r$   r   r      s        / / /( ( (*/ / /0+ + +& [As8 5 5 53 3 3 3 3r&   r   c                   <    e Zd Zd Zd Zd Zed             Zd ZdS )TestTrapezoidc           	      0   |                     ddd          }t          |                    d|dz  z            |                    d|                    |j                  z            z  d          }t          ||                    d                     d S )Nr   g?      r   rp   rX   )r5   r
   expsqrtr?   pir   )r+   rB   r"   r   s       r$   test_simplezTestTrapezoid.test_simple  s    IIc2r""bffS16\**RWWQBE9J9J5J-K-KKPSTTT2::c??+++++r&   c                 D   |                     ddd          }|                     ddd          }|                     ddd          }|                    |          |d         |d         z
  z  }|dxx         dz  cc<   |dxx         dz  cc<   |                    |          |d         |d         z
  z  }|dxx         dz  cc<   |dxx         dz  cc<   |                    |          |d         |d         z
  z  }|dxx         dz  cc<   |dxx         dz  cc<   |d d d d f         |d d d d f         z   |d d d d f         z   }|                    ||d d d d f         z  d          }	|                    ||d d d d f         z  d          }
|                    ||d d d d f         z  d          }t          ||d d d d f         d	          }t	          ||	           t          ||d d d d f         d	          }t	          ||
           t          ||d d d d f         d	          }t	          ||           t          ||d	          }t	          ||	           t          ||d	          }t	          ||
           t          ||d	          }t	          ||           d S )
Nr   r   rV   r   r      r~   r   rz   )r   	ones_likesumr
   r   )r+   rB   r"   rO   zwxwywzqqxqyqzr   s                r$   	test_ndimzTestTrapezoid.test_ndim  s   KK1a  KK1a  KK1b!!\\!__!qt,
1

2!\\!__!qt,
1

2!\\!__!qt,
1

2!aaatmqaaa.4aaa<@VVA111dD=))V22VVA4D=))V22VVA4qqq=))V22 a1QQQd]+!4442a1T!!!T\?3332a1T4\?3332 a11%%%2a11%%%2a11%%%2r&   c           
         |                     |                    ddd          d          }|                     |                    ddd          d          }|                    ddd          }t          t          ||d          |           t          t          ||                    g d	          d          |           t          t          ||                    g d	          d d d f         d          |           t          j        t                    5  t          ||                    g d	          d d d f         d           d d d            n# 1 swxY w Y   |                    g d
          }t          t          ||d          |           t          t          ||                    ddd          d          |           d S )Nr         )rV   r      i|  r   rz   )r   r   r   )r   g     P`@g     k@r   	   )r   r   r   r
   r?   r   r   	Exception)r+   rB   r"   rO   out0out1s         r$   test_gh21908zTestTrapezoid.test_gh21908C  s   JJr{{1b"--w77JJr{{1b"--w77{{3R((	!qq1114888	!rzz---'@'@qIII4PPPa2::mmm44QQQW=AFFF	
 	
 	
 ]9%% 	G 	Ga2::mmm44T111W=AFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G zz///00	!qq1114888a2;;q!R00q999	
 	
 	
 	
 	
s   2EE Ec                    t          j        d          }||z  }|dk    }t           j                            ||          }d}t	          t          ||          |           t           j                            ||          }t	          t          ||          |           t           j                            ||          }t	          t          ||          |           d S )Nr[   r   )maskr   )r4   r5   marI   r   r
   )r+   rB   r"   rO   r   ymr   xms           r$   test_maskedzTestTrapezoid.test_masked[  s     IaLLEAvU[[[&&	"a((!,,,U[[[&&	"b))1---U[[[&&	!R((!,,,,,r&   c                 6   t          t          d                    }d |D             }t          j        |t          j                  }t          j        |t          j                  }t          ||          }t          ||          }t          ||           d S )Nr[   c                     g | ]}||z  S r!   r!   ).0ts     r$   
<listcomp>z1TestTrapezoid.test_array_like.<locals>.<listcomp>n  s    qQUr&   r=   )r   r   r4   r?   r@   r
   r   )r+   r"   rO   xarryarrresresarrs          r$   test_array_likezTestTrapezoid.test_array_likel  s    qNNAz!2:...z!2:...1oo4&&V$$$$$r&   N)	r7   r8   r9   r   r   r   r   r   r  r!   r&   r$   r   r     sm        , , ,# # #J
 
 
0 - - - % % % % %r&   r   c                   `   e Zd Zd ZddZej                            dddg          ej                            ddd	g          d
                         Zej                            dddgddgddgddgg          d             Z	ej                            dddg          d             Z
d ZdS )TestQMCQuadc           	                              ddg          }                     ddg          }d}t          j        t          |          5  t	          d||           d d d            n# 1 swxY w Y   d}t          j        t
          |          5  t	          d ||           d d d            n# 1 swxY w Y   fd}d	}t                    rEt          j        t          |          5  t	          |||           d d d            n# 1 swxY w Y   nDt          j        t
          |          5  t	          |||           d d d            n# 1 swxY w Y   d
}t          j        t          |          5  t	          d ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          d ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          d ||d           d d d            n# 1 swxY w Y   d}t          j        t
          |          5  t	          d ||t          j
                            d                     d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          d ||d           d d d            d S # 1 swxY w Y   d S )Nre   rX   z`func` must be callable.r   za duckz/`func` must evaluate the integrand at points...c                      dS Nr   r!   r!   r&   r$   r%   z3TestQMCQuad.test_input_validation.<locals>.<lambda>  s    Q r&   c                 H    | j         dk    sJ                     |           S r  )ndimr   r"   rB   s    r$   funcz/TestQMCQuad.test_input_validation.<locals>.func  s"    6Q;;;;66!99r&   z8Exception encountered when attempting vectorized call...z`n_points` must be an integer.c                     dS r  r!   rJ   s    r$   r%   z3TestQMCQuad.test_input_validation.<locals>.<lambda>      q r&   g     @)n_pointsz!`n_estimates` must be an integer.c                     dS r  r!   rJ   s    r$   r%   z3TestQMCQuad.test_input_validation.<locals>.<lambda>  r  r&   r   )n_estimatesz8`qrng` must be an instance of scipy.stats.qmc.QMCEngine.c                     dS r  r!   rJ   s    r$   r%   z3TestQMCQuad.test_input_validation.<locals>.<lambda>  r  r&   )qrngz8`qrng` must be initialized with dimensionality equal to c                     dS r  r!   rJ   s    r$   r%   z3TestQMCQuad.test_input_validation.<locals>.<lambda>  r  r&   r   z,`log` must be boolean \(`True` or `False`\).c                     dS r  r!   rJ   s    r$   r%   z3TestQMCQuad.test_input_validation.<locals>.<lambda>  r  r&   r   log)r?   r   r   	TypeErrorr   r   r   warnsUserWarningr   qmcSobol)r+   rB   r   bmessager
  s    `    r$   test_input_validationz!TestQMCQuad.test_input_validationx  sA   JJBx  JJBx  ,]9G444 	% 	%Xq!$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% D]:W555 	& 	&YY1%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&	 	 	 	 	 MB<< 	%k999 % %q!$$$% % % % % % % % % % % % % % % z999 % %q!$$$% % % % % % % % % % % % % % % 3]9G444 	9 	9[[!Q8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 6]9G444 	9 	9[[!QC8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 M]9G444 	7 	7[[!QX6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 M]:W555 	A 	A[[!QUY__Q-?-?@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A B]9G444 	0 	0[[!QB////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   A++A/2A/B22B69B6.DDD3EEE9FF!FG##G'*G'H,,H03H02JJJ:KK #K    r   Nc           	         t                    }|t          j        d          }d}t          j        |          }t          j        |          }fdt          j                            d          }	t          j        	                    ||	          }
t          j        |          }t          j        |          |z  }t                              ||                              ||          |||
          }t          j                            ||||          }t          j        |dz
  d	          |j        z  }t#          |j                            ||          |
           t          j        |          |j        z  dk    sJ t          j                            d          }	t          j        	                    ||	          }
t          fd                    ||                              ||          ||d|
          }|j        j        j        k    rdnd}t#                                                  |j                            |j        |                               |j        dz             t          j        |          dk     rj        ndk    sJ t#                              |j                  |j        ||dz             d S )Nr   c                 z                         d                    | | z  d          z            dj        z  z  S )Nr   r   r   r   )r   r   r   r	  s    r$   r
  z$TestQMCQuad.basic_test.<locals>.func  s9    66$!!!4!4455RUCCr&   l   ^^@E9? )seedr=   )r  r  r  )lower_limitr   gףp=
?rL   r   c                  4                          |            S r2   r  )argsr
  rB   s    r$   r%   z(TestQMCQuad.basic_test.<locals>.<lambda>  s    ttT{(;(; r&   T)r  r  r  r  +=g>r)   y                d   rK   )r   r4   oneszeroseyerandomdefault_rngr   r  r  r   r?   multivariate_normalcdfr   stdtritstandard_errorr   r   prodr>   r@   realr   imagr   )r+   r  r  signsrB   r>   r  meancovrngr  r   r  r   refrL   logresr*   r
  s       `             @r$   
basic_testzTestQMCQuad.basic_test  s    $$=GAJJEx~~fTll	D 	D 	D 	D 	D i##$788yt#..HTNNGDMME!tRZZZ77AU9S9S (kN N N'++AtSa+HH{1}e44s7IIbjjEj&B&BNNNNwu~~cl*Q....i##$788yt#..;;;;;**Qe*44bjj%j6P6P#+"/ / / *bj88uudv 7 788#,TRRRRwwv+,,"'%..1:L:LRSTTTTv455*DH	F 	F 	F 	F 	F 	Fr&   r  i   r  rx   c                 6    |                      |||           d S )N)rB   r:  )r+   r  r  rB   s       r$   
test_basiczTestQMCQuad.test_basic  s"     	+"55555r&   r4  rX   g      c                 4    |                      ||           d S )N)r4  rB   r<  )r+   r4  rB   s      r$   	test_signzTestQMCQuad.test_sign  s    e+++++r&   r  FTc           	      4   d}t          j        t          |          5  t          d |                    ddg          |                    ddg          |          }d d d            n# 1 swxY w Y   |j        |r|j         ndk    sJ |j        dk    sJ d S )Nz-A lower limit was equal to an upper limit, sor   c                     dS r  r!   rJ   s    r$   r%   z'TestQMCQuad.test_zero.<locals>.<lambda>  s    Q r&   r   r   r  )r   r  r  r   r?   r   infr0  )r+   r  rB   r  r   s        r$   	test_zerozTestQMCQuad.test_zero  s    A\+W555 	Y 	Y;;

Aq6(:(:BJJ1v<N<NTWXXXC	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y|3 5A6666!Q&&&&&&s   ?A))A-0A-c                     d }t          |dd          }t          j                            dd          t          j                            dd          z
  }t	          |j        |d           d S )Nc                 D    t           j                            | d          S )Nr   scale)r   normpdfrJ   s    r$   r
  z-TestQMCQuad.test_flexible_input.<locals>.func  s    :>>!1>---r&   r   r   r   rF  g{Gz?)r   r   rH  r.  r   r   )r+   r
  r   r8  s       r$   test_flexible_inputzTestQMCQuad.test_flexible_input  sl    	. 	. 	. tQ""jnnQan((5:>>!1>+E+EEc400000r&   )r  r   NN)r7   r8   r9   r  r:  r   r   r   r=  r?  rC  rJ  r!   r&   r$   r  r  v  s       )0 )0 )0V!F !F !F !FF [Z$77[]QG446 6 54 876 [WBx#sc2YS	&RSS, , TS, [UUDM22' ' 32'1 1 1 1 1r&   r  r~   r"   rq   r   r{   c                f  	 | j         |         dk     r-|t          | |||d           S |t          | |||d          z   S t          j        | |d          } t          j        |          dk    rt          j        ||d          n|}t          j        |          dk    rt          j        ||d          n|}t          j        |          dk    rt          j        ||d          n|}| j         d         	||t          j        	          z  n|}|d u }|rdn|}t          j        || j                   }t          j        || j         d d         dz             }t          j        | ||fd          }	fd}t          j        |d|          }|r|d	dd f         n|}t          j        |d|          }|S )
NrV   )r"   rq   r{   r   r   r~   r   )r   r   c                 d    t          | d          | dz           | dz  d                    S )Nr   )r"   r   )r   )r   r#   s    r$   ru   z*cumulative_simpson_nd_reference.<locals>.f  s8    !!BQB%1QqsU8QqsttWEEEEr&   .)	r   r	   r4   moveaxisr  r5   broadcast_toconcatenateapply_along_axis)
rO   r"   rq   r   r{   initial_was_noner   ru   r   r#   s
            @r$   cumulative_simpson_nd_referencerS    s   wt}q?'Q2D$OOOO1!qRdTUVVVVV 	AtR  A$&GAJJNNAtR   A&(gbkkAooRr	"	"	"2B020@0@10D0Dbk'4,,,'G 	
A^RYq\\A$#0aaG 	17##Aogqwss|d':;;G
1gR000AF F F F F

aQ
'
'C +
3#c122g,,C
+c2t
$
$CJr&   c                   >   e Zd Z ej        d          Zedz  Zej        	                    dd          ej        	                    dd          d                         Z
 ed          ej        	                    d	 ej        d
d                    ej        	                    dd          ej        	                    dd          ej        	                    dd          ej        	                    dd          d                                                                         Zej        	                    dd eg d          fd eeg dgeeg          fd eeeegeeegd          fd eg g           fd ed          fd  e ej        d!                    fd" e ej        d!          #          fd$ ed% ej        d!          &          fg          d'             Zd( Zd) Zej                            d*          ej        j         e ej        ej         ej        ddd*+           ej        d,d*d-.                              d/           0          1          d2                                     Zej                            d*          ej        j         e ej        ej         ej        ddd*+           ej        d,d*d-.                              d3           0          1          d4                                     Zd%S )5TestCumulativeSimpsonr   r   use_dx)FTuse_initialc                 (   t           j                            d          }d}|rdnd}|                    |                                          }|dk    r;|                    t          j        |                    |                              }nG|                    ||j                  |z  |                    |                                          z   }|                    |dz   |j                  d d |j        f         }	|                    |                    |dz                       d d |j        f         }
|                    |
||	z  z  d          }|                    |
||	dz   z  z  |	dz   z  d          }|r|n||d         z
  dd          }|r|d         nd }|rd	|ind
|i}t          |fi |d|i}|st          ||d           d S |rdnd}t          ||d           t          ||d d         ||d d         d           d S )N   F*BG r   rV   r   r=   r   r   r   rq   r"   r   gV瞯<r)   g{Gzd?)r4   r+  r,  r?   sortr5   r@   newaxisr   r   r   )r+   rV  rW  rB   r7  r#   orderrq   r"   r   crO   Yr8  r   kwargr   i0s                     r$   r   zTestCumulativeSimpson.test_1d  s.   
 i##$899 "ZZ

%%A::

273::a==1122AA		!2:	..r1BJJszz||4L4LLAIIeairzI22111bj=AJJszz%!),,--aaam<FF1QT6F""FF1QQZ<Q'aF000aaQqtVQRRL &/!A$$4$2r

3( ==e==W===  	@C5111111!(qBC62222CAJBEE
??????r&   T)cpu_onlyr{   rV   x_ndim)r   rV   x_len)r   r   r`   i_ndim)Nr   rV   rq   )NTc                 (   t           j                            d          }dd|g}|d         ||         c||<   |d<   |                                }	d|	|<   |dk    r|	nd}
|                    |                    |                    }d	\  }}|rF|dk    r|                    |	          n|                                }|                    |          }ns|dk    r*t          j        |                    |          |
          n-t          j        |                    ||                             }|                    |          }|d n(|                    |                    |
                    }t          |||||          }t          t          j        |          t          j        |          |d nt          j        |          |d nt          j        |          |          }t          ||                    |          d           d S )NrY  r[      r~   r   rV   r!   size)NNr   rK  V瞯<r)   )	r4   r+  r,  copyr?   rZ  r   rS  r   )r+   r{   rc  rd  re  rq   rB   r7  r   shape_len_1i_shaperO   r"   r   r   r8  s                   r$   test_ndzTestCumulativeSimpson.test_nd1  s    i##$899 Au!&rE$KdU2YjjllD!'1++" JJszzuz--..2 	17!---BBBB?Ezz//d;;;;gcjjeDkj::;; 

1A .$$bjj9Q9Q.R.R !aBdKKK .JqMMRZ]]rzttrzRT~~#ODDG1D1D4
 
 
 	RZZ__5999999r&   )r  kwarg_updatezx must be strictly increasing)r   r   rV   r   rJ   )r   r   r   r   )r"   rO   r   )r"   rO   r{   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-Dr[   z'`initial` must either be a scalar or...r   z"`dx` must either be a scalar or...N)r"   rq   c           
      f   t                              | j                                      | j                  d d d          }fd|                                D             }t          j        t          |          5  t          di t          |fi | d d d            d S # 1 swxY w Y   d S )Nr~   )rO   r"   rq   r   r{   c                     i | ]D\  }}|t          |t                    r'                    t          j        |                    n|ES r!   )
isinstancer   r?   r4   )r   kvrB   s      r$   
<dictcomp>zATestCumulativeSimpson.test_simpson_exceptions.<locals>.<dictcomp>e  sX     : : : Aq 
1d8K8KR2::bjmm444QR : : :r&   r   r!   )	dictr?   y0x0itemsr   r   r   r   )r+   r  ro  rB   kwargs0s      ` r$   test_simpson_exceptionsz-TestCumulativeSimpson.test_simpson_exceptionsX  s%    DG,,

470C0C#". . .: : : :$0$6$6$8$8: : :]:W555 	@ 	@??g!>!>!>!>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   B&&B*-B*c                    t           j                            d          }|                    |                    d                    }t	          |d          }t          ||                    d|j                             d S )NrY  r   rh  re   rp   r   r=   )r4   r+  r,  r?   r   r   r)  r@   )r+   rB   r7  rO   r   s        r$   test_special_casesz(TestCumulativeSimpson.test_special_casesj  sq    i##$899JJszzrz**++ r***RXXarzX::;;;;;r&   c                    t          j        |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          j        |          |dddf         |dddf         z
  t          j        |          g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`.
        r~   r   .Nr   re   r   )r4   diffr   r   rP  r)  )r+   rO   r"   dsub_integrals_h1sub_integrals_h2zeros_shapetheoretical_differences           r$   1_get_theoretical_diff_between_simps_and_cum_simpszGTestCumulativeSimpson._get_theoretical_diff_between_simps_and_cum_simpsu  s    GAB@AFF@c44R4iL!C2I,
 

ttt)
 )(a((!#%%!#qrr'*-=c3B3h-GG%%
 "
 "
 "
 -0sADqDy) &%r&   r   )max_dimsmin_sidemax_sider   F)	allow_nanc                 (    t          |           dk    S NgHz>absrJ   s    r$   r%   zTestCumulativeSimpson.<lambda>      #a&&SW- r&   )elementsr   c           
      ^   d }t          |                    |          d          } ||          }|                     |t          j        |j        d                             }t          |dddf         |                    |dddf         |dddf         z             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                      t          j         fdt          d j        d         dz             D             d          S )Nc                 F    g | ]}t          d d|f         d          S ).NrX   rp   r   )r   r   rO   s     r$   r   z|TestCumulativeSimpson.test_cumulative_simpson_against_simpson_with_default_dx.<locals>.simpson_reference.<locals>.<listcomp>  s2    NNN37,,,NNNr&   r   r~   r   r   r4   stackr   r   r   s   `r$   simpson_referencezhTestCumulativeSimpson.test_cumulative_simpson_against_simpson_with_default_dx.<locals>.simpson_reference  sJ    8NNNNeAqwr{1}6M6MNNNUW   r&   rX   rp   r~   rJ   .r   NgؗҜ<r#  )r   r?   r  r4   r5   r   r   )r+   rO   rB   r  r   r8  r  s          r$   7test_cumulative_simpson_against_simpson_with_default_dxzMTestCumulativeSimpson.test_cumulative_simpson_against_simpson_with_default_dx  s    "	 	 	
 !A3777""!%!W!W172;'' "X "
 "
 	QRRL"**Sabb\4J3PQPRPR74S%STT	
 	
 	
 	
 	
 	
r&   c                 (    t          |           dk    S r  r  rJ   s    r$   r%   zTestCumulativeSimpson.<lambda>  r  r&   c           
      >   d|j         d         dz
  z  }t          j        dd|j         d                   }|dd         d|z  t          j                            ddt          |          dz
            z  z   |dd<   d }t          |                    |          |                    |          	          } |||          }|                     ||          }t          |d
ddf         |                    |d
ddf         |d
ddf         z                        dS )r  r   r~   r   r   r   NrF   c                      t          j         fdt          d j        d         dz             D             d          S )Nc           	      Z    g | ]'}t          d d|f         d d|f                   (S ).NrJ   r  )r   r   r"   rO   s     r$   r   zlTestCumulativeSimpson.test_cumulative_simpson_against_simpson.<locals>.simpson_reference.<locals>.<listcomp>  s>    TTTq37qbqbz222TTTr&   r   r~   r   r   r  )rO   r"   s   ``r$   r  zXTestCumulativeSimpson.test_cumulative_simpson_against_simpson.<locals>.simpson_reference  sO    8TTTTTE!QWR[QR]<S<STTT   r&   rJ   .)
r   r4   r   r+  uniformlenr   r?   r  r   )	r+   rO   rB   intervalr"   r  r   r8  r  s	            r$   'test_cumulative_simpson_against_simpsonz=TestCumulativeSimpson.test_cumulative_simpson_against_simpson  s6   " qwr{Q'K2172;///!""HRY%6%6r1c!ffqj%I%III!""	 	 	 !A"**Q--@@@1%%!%!W!Wq"
 "
 	QRRL"**Sabb\4J3PQPRPR74S%STT	
 	
 	
 	
 	
r&   )r7   r8   r9   r4   r5   rx  rw  r   r   r   r   skip_xp_backendsrn  rv  r{  r}  r  	fail_slowslowr   hyp_numarraysr@   array_shapesstfloatsfilterr  r  r!   r&   r$   rU  rU    s       	1B	QB[X}55[]M::!@ !@ ;: 65!@F t$$$[VYRYr1%5%566[Xv..[Wi00[X}55[T<00: : 10 65 10 /. 76 %$:B [8	($$*>*>*>?	($$"lll1CBx*P*P*PQ	($$"b""b"TU*V*V*VW	)44"+;+;+;<	8$$A,,,G	6yry||8L8L8LM	2DD14N4N4NO	-ttdyry||/L/L/LM	; 	 	@ @	 	@< < <& & &< [2[
U
'.J G !a"EEERYsB%888??@W@WXX
 
 
  
 
   
. [2[
U
'.J G !a"EEERYsB%888??@W@WXX
 
 
  
 
   
 
 
r&   rU  c                       e Zd Zd Zd Zej                            d e e	ddd                     e e	ddd	                    z             d
             Z
dS )TestLebedevc                     d}t          j        t          |          5  t          j        d           d d d            d S # 1 swxY w Y   d S )NzOrder n=-1 not available...r   r~   )r   r   NotImplementedErrorr   lebedev_rule)r+   r  s     r$   r  z!TestLebedev.test_input_validation  s    /].g>>> 	' 	'"2&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A  AAc                     d }t          j        d          \  }}| ||          z  }d}t          ||d           t          t          j        |          dt          j        z             d S )Nc                 6    t          j        | d                   S )Nr   )r4   r   rJ   s    r$   ru   z&TestLebedev.test_quadrature.<locals>.f  s    6!A$<<r&      g9-@r&  r)   r   )r   r  r   r4   r   r   )r+   ru   r"   wr   r8  s         r$   test_quadraturezTestLebedev.test_quadrature  sv    	  	  	  %b))1!!A$$hSu----q		1ru9-----r&   r\  rV   rs   r   #      rg  c                 R   t          j        |          \  }}t          j        dd          5  t	          j        |j        d          }t          |j        dd           d d d            n# 1 swxY w Y   t          t          j	        |          dt          j
        z             d S )Nignore)divideinvalidr   r   rj  r#  r   )r   r  r4   errstater   directional_statsTr   mean_resultant_lengthr   r   )r+   r\  r"   r  r   s        r$   test_propertieszTestLebedev.test_properties  s    %e,,1[(;;; 	F 	F)!#A666CC5quEEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	q		1RU7+++++s   3A--A14A1N)r7   r8   r9   r  r  r   r   r   r   r   r  r!   r&   r$   r  r    s        ' ' '
. 
. 
. [Wdd55B??&;&;dd55SRSCTCT>U>U&UVV, , WV, , ,r&   r  )5r   numpyr4   numpy.testingr   r   r   
hypothesisr   hypothesis.strategies
strategiesr  hypothesis.extra.numpyextrar  scipy.integrater   r   r	   r
   r   r   r   r   r   scipy.integrate._quadraturer   scipyr   r   r   scipy.conftestr   scipy._lib._array_apir   r   r   scipy._lib._array_api_no_0dr   r   r   r  r   r;   rS   rm   r   r   r  rS  rU  r  r  r!   r&   r$   <module>r     s        L L L L L L L L L L       " " " " " " ( ( ( ( ( ( ( ( (; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; N M M M M M + + + + + + + + + + . . . . . . O O O O O O O O O O H H H H H H H H;/ :3 3 3 3 3 3 3 3  4
X 
X 
X 
X 
X 
X 
X 
X <  &> &> &> &> &> &> &> ! &>R 7Y' Y' Y' Y' Y' Y' Y' Y'x '((V3 V3 V3 V3 V3 V3 V3 )(V3r 9\% \% \% \% \% \% \% \%~ 8h1 h1 h1 h1 h1 h1 h1 h1V -1T4b " " " " "J %&&M
 M
 M
 M
 M
 M
 M
 '&M
` 9)**, , , , , , , +*, , ,r&   