
    Bpjf|                        S SK r S SKrS SKJrJrJr  S SKJr  S SK	J
r  S SKJs  Jr  S SKJrJrJrJrJrJrJrJrJr  S SKJr  S SKJrJrJr  S SKJ r   S SK!J"r"J#r#J$r$  S S	K%J&r&J'r'  S S
K(J)r*  \ RV                  RX                  r,\"" \5       " S S5      5       r-\"" \5       " S S5      5       r.\"" \5       " S S5      5       r/\"" \5       " S S5      5       r0\"" \5       " S S5      5       r1 " S S5      r2\"" \5       " S S\25      5       r3\"" \5       " S S\25      5       r4\"" \5       " S S5      5       r5SSSSS.S jr6\"" \5       " S  S!5      5       r7\"" \Rp                  5       " S" S#5      5       r9g)$    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_equal)array_api_extrac                       \ rS rSrS rS r\R                  R                  S/ SQ5      S 5       r	\
" SSS	9\
" S
SS	9S 5       5       rSrg)TestFixedQuad   c                 |   ^ SmSST-  -  n[        U4S jSSTS9u  p#[        U[        R                  " U5      SS9  g )	N         c                    > U ST-  S-
  -  $ Nr!   r     xns    a/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/integrate/tests/test_quadrature.py<lambda>+TestFixedQuad.test_scalar.<locals>.<lambda>       a!A#'l    r   r'   -q=rtol)r   r   npasarray)selfexpectedgot_r'   s       @r(   test_scalarTestFixedQuad.test_scalar   s=    ac72AqA>RZZ1>r,   c                    ^ SmSST-  -  n[        U4S jUR                  S5      UR                  S5      TS9u  p4[        X1R                  U5      SS	9  g )
Nr   r    r!   c                    > U ST-  S-
  -  $ r#   r$   r%   s    r(   r)   'TestFixedQuad.test_0d.<locals>.<lambda>#   r+   r,                 ?r-   r.   r/   )r   r2   r   )r3   xpr4   r5   r6   r'   s        @r(   test_0dTestFixedQuad.test_0d    sL    ac72BJJrNBJJrNVWXZZ1>r,   dtype)Nfloat32float64c                 $  ^ Uc  UO[        TU5      nSnTR                  SSU-  US9nTR                  SUS9TR                  SUS9peSUS-   -  n[        U4S jXVU4US9u  pUTR                  :X  a  S	OS
n
[        UTR                  U5      U
S9  g )Nr   r=   r!   rA   r<   r    c                 .   > XS S 2TR                   4   -  $ N)newaxis)r&   pr>   s     r(   r)   +TestFixedQuad.test_vector.<locals>.<lambda>.   s    am,<)<r,   )argsr'   r.   gH׊>r/   )getattraranger2   r   rC   r   )r3   rA   r>   r'   rI   abr4   r5   r6   r0   s     `        r(   test_vectorTestFixedQuad.test_vector'   s    GB,>IIb!A#UI+zz"Ez*BJJrJ,G1a!e9<a!QRS+uRZZ1=r,   z	jax.numpyz lazy -> limited input validationreasonz
dask.arrayc                   ^ SmSn[         R                  " [        US9   [        U4S jUR	                  UR
                  * 5      UR	                  S5      TS9  S S S 5        [         R                  " [        US9   [        U4S jUR	                  S5      UR	                  UR
                  5      TS9  S S S 5        g ! , (       d  f       Ni= f! , (       d  f       g = f)	Nr   z8Gaussian quadrature is only available for finite limits.matchc                    > U ST-  S-
  -  $ r#   r$   r%   s    r(   r)   5TestFixedQuad.test_input_validation.<locals>.<lambda>8       QqS1Wr,   r=   r-   c                    > U ST-  S-
  -  $ r#   r$   r%   s    r(   r)   rX   :   rY   r,   r<   )pytestraises
ValueErrorr   r2   inf)r3   r>   messager'   s      @r(   test_input_validation#TestFixedQuad.test_input_validation2   s     L]]:W5-rzz266'/BBJJrNVWX 6]]:W5-rzz"~rzz"&&?QUVW 65 6555s   :B<:9C<
C

Cr$   N)__name__
__module____qualname____firstlineno__r7   r?   r[   markparametrizerP   skip_xp_backendsr`   __static_attributes__r$   r,   r(   r   r      sc    ?? [[W&BC> D> k*LMl+MNX O NXr,   r   c                        \ rS rSrS rS rSrg)TestRomb=   c                 |    [        [        UR                  S5      5      UR                  SUR                  S95        g )N      1@      `@rE   )r   r   rM   r2   rC   r3   r>   s     r(   	test_rombTestRomb.test_romb?   s*    RYYt_-rzz%rzzz/RSr,   c                 J   [         R                  " S5      n[         R                  " SU-  5      n[        UR	                  U5      5      n[        S [         R                  " U5      [         R                  " U5      5      u  pV[        XAR	                  XQR                  S9SSS9  g )N   皙?c                 \    [         R                  " [         R                  " SU -  5      5      $ )Nru   )r1   cosarrayr&   s    r(   r)   ,TestRomb.test_romb_gh_3731.<locals>.<lambda>G   s    RVVBHHSUO%<r,   rE   g:0yE>r   r0   atol)
r1   rM   rw   r   r2   r   minmaxr   rC   )r3   r>   r&   yvalr4   r6   s          r(   test_romb_gh_3731TestRomb.test_romb_gh_3731B   sq    IIfFF3q5M2::a=!<bffQiPQSZZ

ZC$UVWr,   r$   N)rb   rc   rd   re   rq   r   ri   r$   r,   r(   rk   rk   =   s    TXr,   rk   c                        \ rS rSrS rS rSrg)TestNewtonCotesK   c                 F   Sn[        US5      u  p#[        X![        R                  " SS/5      -  5        [	        X1S-  * S-  5        Sn[        US5      u  p#[	        X![        R                  " / SQ5      -  S-  5        [	        X1S-  * S	-  5        Sn[        US5      u  p#[	        X![        R                  " / S
Q5      -  S-  5        [	        X1S-  * S-  5        Sn[        US5      u  p#[	        X![        R                  " / SQ5      -  S-  5        [	        X1S-  * S-  5        g)z5Test the first few degrees, for evenly spaced points.r          ?         (@r!   )r=         @r=         @   g     @)r=         @r   r=          @g     P@r   )      @      @@r   r   r   g     V@   g     =AN)r   r   r1   rx   r   )r3   r'   wtserrcoffs       r(   test_newton_cotes!TestNewtonCotes.test_newton_cotesM   s   #Aq)SBHHc3Z001GdU4Z0#Aq)C288O#<!<S!@AGdU6\2#Aq)C288,@#A!A#!EFGdU6\2#Aq)C288,H#I!I$!NOGdU9_5r,   c                 8   [         R                  " / SQ5      nUS-  n[        U5      u  p4Sn[         R                  " X25      n[	        Xe5        [         R                  " / SQ5      nUS-  n[        U5      u  p4Sn[         R                  " X25      n[	        Xe5        g)z9Test newton_cotes with points that are not evenly spaced.)r<   g      ?       @r!   gUUUUUU@)r<   gffffff?g @r         "@N)r1   rx   r   dotr   )r3   r&   r   r   r   exact_integralnumeric_integrals          r(   test_newton_cotes2"TestNewtonCotes.test_newton_cotes2c   s     HH_%qD#A66#>,=HH)*qD#A66#>,=r,   r$   N)rb   rc   rd   re   r   r   ri   r$   r,   r(   r   r   K   s    6,>r,   r   c                       \ rS rSrS r\R                  R                  SSS9\R                  R                  SSS/5      S	 5       5       r	S
r
g)TestSimpsonu   c           
      l
   UR                  S5      n[        [        U5      UR                  S5      5        [        [        USS9UR                  S5      5        [        [        X!R	                  SSS5      S	9UR                  S
5      5        UR	                  SSS5      nS n[        [        U" U5      US	9UR                  S5      5        UR	                  SSS5      n[        [        U" U5      SS9UR                  S5      5        [        R                   " S5      R                  SS5      nUR                  UR                  S5      S5      nU" U5      n[        S5       H  n[        X#US9n[        R                  " US/S9nU H  n	[        UR                  5      n
U
R                  U[        S 5      5        U[        U
5         S   S-  S-  U[        U
5         S   S-  S-  -
  n[        XxR                     UR                  U5      5        M     M     UR                  UR                  S5      S5      nU" U5      n[        X#SS9nSUS S 2S4   US S 2S4   -   -  US S 2S4   US S 2S4   -
  -  n[        XqR                  U5      5        [        R                   " S5      R                  SS5      nUR                  UR                  S5      S5      nU" U5      n[        S5       H  n[        X#US9n[        R                  " US/S9nU H  n	[        UR                  5      n
U
R                  U[        S 5      5        U[        U
5         S   S-  S-  U[        U
5         S   S-  S-  -
  n[        XxR                     UR                  U5      5        M     M     UR                  S /5      nUS!-  n[        [        X#SS9UR                  S5      5        [        [        X#SS9UR                  S5      5        UR                  / S"Q5      nUS!-  n[        [        X#SS9UR                  S5      5        [        [        X#SS9UR                  S5      5        UR                  / S#Q/ S#Q/ S#Q/5      nUS!-  nUR                  / S$Q5      nUR                  S%/S-  5      n[        [        X#SS9U5        [        [        X#SS9U5        UR                  / S#Q/ S#Q/ S&Q/5      nUS!-  nUR                  / S'Q5      nUR                  / S(Q5      n[        [        X#SS9U5        [        [        X#SS9U5        g ))Nrn   ro   r   dx      P@r<   r   rt   ry   r   r=   r   c                     U S-  $ )Nr!   r$   ry   s    r(   f#TestSimpson.test_simpson.<locals>.f   s    a4Kr,         5@r   r   g     \@      0@)r   r   r   r   r&   axismulti_index)flagsr   )   r!   r       r   g     @_@)r   r   r   r   r!   )r   r   r   r   )r=   r   r   r   )r<   r<   r<   r<   竪Je@)r=   r   r   r   )r<   g      a@g      @g      @)r   r   g*U@)rM   r   r   r2   linspacer   r1   reshaperangenditerlistr   insertslicetuple)r3   r>   r   r&   r   rN   iritr6   idxintegral	zero_axisdefault_axiss                 r(   test_simpsonTestSimpson.test_simpsonx   so   IIcN
BJJt$45c*BJJsO<[[R%<=rzz#O KKB"	 	!*BJJt,<= KKB"!-rzz$/?@ IIcN""1a(JJryy~y1aDqAQ'A1]O4B2>>*

1eDk*U3Z=,a/!3ac
mA6F6IA6MM.. 12::h3GH	   JJryy~v.aDA$!AqD'AadG+,!Q$!AqD'0AB::h/0 IIbM!!!Q'JJryy	2aDqAQ'A1]O4B2>>*

1eDk*U3Z=,a/!3ac
mA6F6IA6MM.. 12::h3GH	   JJtqDQ/CAR0"**S/BJJ'(qDQ/CAR0"**S/BJJ(*:<LMNqDJJ34	zz9+/2Q/;R0,?JJ(*:<NOPqDJJ;<	zz"IJQ/;R0,?r,   array_api_strictzno int->float promotionrR   droplastFTc                     UR                  / SQ/ SQ/5      nU(       a  US S 2S S24   n[        USS9n[        UR                  U[        U5      S9SS9n[        XE5        g )N)r!   r!   r   r   r   r   r   )r   r   r!   r   
      r   r   r   rE   )r2   r   r   r   )r3   r   r>   r   resultr4   s         r(   test_simpson_2d_integer_no_x(TestSimpson.test_simpson_2d_integer_no_x   sd    
 JJ157 8!SbS&	A$2::a/?/C:D2N)r,   r$   N)rb   rc   rd   re   r   r[   rf   rh   rg   r   ri   r$   r,   r(   r   r   u   sR    K@Z [[!!"4=V!W[[Z%7	* 8 X	*r,   r   c                   z    \ rS rSrS rS rS rS r\R                  R                  SSS/5      S	 5       rS
 rSrg)TestCumulative_trapezoid   c                     UR                  SSSS9nUn[        X2SS9nUR                  / SQ5      n[        XE5        [        X2S S9n[        XESS  5        g )	Nr   r!   r   numr   initial)r<                r   r<   r    r   r	   r2   r   )r3   r>   r&   r   y_int
y_expecteds         r(   test_1d TestCumulative_trapezoid.test_1d   sX    KKA1K%$Q15ZZ 9:
*$Q48!"~.r,   c                 z   UR                  UR                  S[        U5      S9S5      nUn[        X2SS9nUR	                  / SQ/ SQ// SQ/ S	Q// S
Q/ SQ//5      n[        XE5        / SQn[        / SQU5       H?  u  px[        X2SUS9nUR                  S:X  d   e[        X2S US9nUR                  U:X  a  M?   e   g )N   rE   r   r!   r   r   r   )r<   r   r         @)r<   r         $@     0@)r<         !@      2@g     <@)r<         )@g      :@     @D@)r<   r   g      A@g     @J@)r<        4@g      E@g      P@))r!   r!   r   )r   r    r   )r   r!   r   r   r    r!   )r   r   )r   rM   r   r	   r2   r   zipshape)	r3   r>   r&   r   r   r   shapesr   r   s	            r(   test_y_nd_x_nd'TestCumulative_trapezoid.test_y_nd_x_nd   s    JJryy2B22FyGS$Q15ZZ"4"6"8"6"7"9"7"7"9	!: ;
 	* 3y&1KD(qtDE;;)+++(t$GE;;%'''	 2r,   c           	         UR                  UR                  S[        U5      S9S5      nUR                  S[        U5      S9S-  nUR                  / SQ/ SQ// SQ/ S	Q//5      UR                  / S
Q// SQ// SQ//5      UR                  / SQ/ SQ// SQ/ SQ// SQ/ SQ//5      4n[	        / SQU5       H+  u  pV[        X#S UR                  U    US S9n[        Xv5        M-     g )Nr   rE   r   r   r!   )r         @r   r   )r   r   r         &@)g      D@g      F@g      H@g      J@)g      L@g      N@r   g      Q@)r   r   r   r   )r   r   r         *@)r   g      3@      4@r   )r   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   rM   r   r2   r   r	   r   r   )r3   r>   r   r&   ys_expectedr   r   r   s           r(   test_y_nd_x_1d'TestCumulative_trapezoid.test_y_nd_x_1d   s   JJryy2B22FyGSIIa/3I4a7 JJ)+---/0 1 JJ)*-.-.0 1 JJ)+)+-++-	. /0 !$I{ ;D(.?d157EE. !<r,   c                 j   UR                  SSSS9n[        U5      nUR                  / SQ5      n[        X45        [        USS9nUR                  / SQ5      n[        X45        [        US	S
9nUR                  / SQ5      n[        X45        [        US	SS9nUR                  / SQ5      n[        X45        g )Nr   r!   r   r   )r   r   r   r<   r   r   )r   r   r   r   r<   r   r   )            r   r<   )r   r   )r   r   r   r   r<   r   )r3   r>   r   r   r   s        r(   test_x_none$TestCumulative_trapezoid.test_x_none  s    KKA1K%$Q'ZZ 56
*$Q2ZZ 89
*$Q1-ZZ 56
*$Q1a8ZZ 89
*r,   r   r    r   c                     UR                  SSSS9n[        R                  " [        SS9   [	        X1S9  SSS5        g! , (       d  f       g= f)z4If initial is not None or 0, a ValueError is raised.r   r   r   z	`initial`rU   r   N)r   r[   r\   r]   r	   )r3   r   r>   r   s       r(   test_initial_error+TestCumulative_trapezoid.test_initial_error  s:    
 KK22K&]]:[9 4 :99s	   
>
Ac                     [         R                  " [        SS9   [        UR	                  / 5      S9  S S S 5        g ! , (       d  f       g = f)NAt least one point is requiredrU   r   )r[   r\   r]   r	   r2   rp   s     r(   test_zero_len_y(TestCumulative_trapezoid.test_zero_len_y(  s.    ]]:-MN 2::b>2 ONNs	   <
A
r$   N)rb   rc   rd   re   r   r   r   r   r[   rf   rg   r   r  ri   r$   r,   r(   r   r      sG    /(*/0+& [[As8553r,   r   c                        \ rS rSrS rS rSrg)CommonTrapezoidSimpsonTestsi-  c           	         UR                  SSS5      nU R                  UR                  SUS-  -  5      UR                  SUR	                  UR
                  5      -  5      -  SS9n[        X1R	                  S5      5        g )Nr   g?      r!   r   r=   )rM   quadrature_funcexpsqrtr2   pir   )r3   r>   r&   r   s       r(   test_simple'CommonTrapezoidSimpsonTests.test_simple.  sq    IIc2r"  a1f!5BJJruuDU@U8V!V$' ! ) 	::c?+r,   c                 T   UR                  SSS5      nUR                  SSS5      nUR                  SSS5      nUR                  U5      US   US   -
  -  n[        R                  " U5      S   R	                  S5      n[        R                  " U5      S   R	                  S5      nUR                  U5      US   US   -
  -  n[        R                  " U5      S   R	                  S5      n[        R                  " U5      S   R	                  S5      nUR                  U5      US   US   -
  -  n[        R                  " U5      S   R	                  S5      n[        R                  " U5      S   R	                  S5      nUS S 2S S 4   US S S 2S 4   -   US S S S 24   -   nUR                  XS S 2S S 4   -  SS9n	UR                  XS S S 2S 4   -  SS9n
UR                  XS S S S 24   -  SS9nU R                  XS S 2S S 4   SS	9n[        X5        U R                  XS S S 2S 4   SS	9n[        X5        U R                  XS S S S 24   SS	9n[        X5        U R                  XSS	9n[        X5        U R                  XSS	9n[        X5        U R                  XSS	9n[        X5        g )
Nr   r    r   r!   r      r   r   r   )r   	ones_likexpxatdividesumr  r   )r3   r>   r&   r   zwxwywzqqxqyqzr   s                r(   	test_ndim%CommonTrapezoidSimpsonTests.test_ndim5  s   KK1a KK1a KK1b!\\!_!qt,VVBZ]!!!$VVBZ^""1%\\!_!qt,VVBZ]!!!$VVBZ^""1%\\!_!qt,VVBZ]!!!$VVBZ^""1%atmqa.4a<@VVA1dD=))V2VVA4D=))V2VVA4q=))V2   4&6Q ?  QoA >  d1oA >   a 0  a 0  a 0r,   r$   N)rb   rc   rd   re   r  r  ri   r$   r,   r(   r  r  -  s    ,#r,   r  c                       \ rS rSrS rSrg)TestSimpson2iZ  c                     [        U0 UD6$ rG   )r   r3   rK   kwargss      r(   r  TestSimpson2.quadrature_func]  s    '''r,   r$   N)rb   rc   rd   re   r  ri   r$   r,   r(   r   r   Z  s    (r,   r   c                   6    \ rS rSrS rS r\S 5       rS rSr	g)TestTrapezoidi`  c                     [        U0 UD6$ rG   )r
   r"  s      r(   r  TestTrapezoid.quadrature_funcb  s    $)&))r,   c           
         UR                  UR                  SSS5      S5      nUR                  UR                  SSS5      S5      nUR                  SSS5      n[        [        X2SS9U5        [        [        X1R	                  / S	Q5      SS9U5        [        [        X1R	                  / S	Q5      S S 2S 4   SS9U5        [
        R                  " [        5         [        X1R	                  / S	Q5      S S S 24   SS9  S S S 5        UR	                  / S
Q5      n[        [        X2SS9U5        [        [        X1R                  SSS5      SS9U5        g ! , (       d  f       N[= f)Nr         )r   r      i|  r   r   )r   r   r   )r   g     P`@g     k@r    	   )r   r   r   r
   r2   r[   r\   	Exception)r3   r>   r&   r   out0out1s         r(   test_gh21908TestTrapezoid.test_gh21908e  s   JJr{{1b"-w7JJr{{1b"-w7{{3R(	!q148	!zz-'@qI4Pa::m4QW=AF	
 ]]9%a::m4T1W=AF & zz/0	!q148a;;q!R0q9	
 &%s   #E
Ec                 r   [         R                  " S5      nX"-  nUS:H  n[         R                  R                  X4S9nSn[	        [        XR5      U5        [         R                  R                  X$S9n[	        [        XW5      U5        [         R                  R                  X$S9n[	        [        X75      U5        g )Nr   r!   )maskr   )r1   rM   marx   r   r
   )r3   r>   r&   r   r4  ymr   xms           r(   test_maskedTestTrapezoid.test_masked}  s     IIaLEAvUU[[[&	"(!,UU[[[&	")1-UU[[[&	!(!,r,   c                 ,   [        [        S5      5      nU Vs/ s H  o"U-  PM	     nn[        R                  " U[        R                  S9n[        R                  " U[        R                  S9n[        X15      n[        XT5      n[        Xg5        g s  snf )Nr   rE   )r   r   r1   r2   rC   r
   r   )r3   r&   tr   xarryarrresresarrs           r(   test_array_likeTestTrapezoid.test_array_like  sm    qNAqUAzz!2::.zz!2::.o4&$ s   Br$   N)
rb   rc   rd   re   r  r1  r   r8  r@  ri   r$   r,   r(   r&  r&  `  s%    *
0 - - %r,   r&  c                   X   \ rS rSrS rSS jr\R                  R                  SSS/5      \R                  R                  S	SS
/5      S 5       5       r	\R                  R                  SSS/SS/SS/SS//5      S 5       r
\R                  R                  SSS/5      S 5       rS rSrg)TestQMCQuadi  c           	      V  ^ TR                  SS/5      nTR                  SS/5      nSn[        R                  " [        US9   [	        SX#5        S S S 5        Sn[        R                  " [
        US9   [	        S X#5        S S S 5        U4S jnS	n[        T5      (       a/  [        R                  " [        US9   [	        XRU5        S S S 5        O.[        R                  " [
        US9   [	        XRU5        S S S 5        S
n[        R                  " [        US9   [	        S X#SS9  S S S 5        Sn[        R                  " [        US9   [	        S X#SS9  S S S 5        Sn[        R                  " [        US9   [	        S X#SS9  S S S 5        Sn[        R                  " [
        US9   [	        S X#[        R                  R                  S5      S9  S S S 5        Sn[        R                  " [        US9   [	        S X#SS9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNA= f! , (       d  f       GNS= f! , (       d  f       GN5= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr<   r=   z`func` must be callable.rU   za duckz/`func` must evaluate the integrand at points...c                      gNr    r$   r$   r,   r(   r)   3TestQMCQuad.test_input_validation.<locals>.<lambda>  s    Qr,   c                 J   > U R                   S:X  d   eTR                  U 5      $ rF  )ndimr  r&   r>   s    r(   func/TestQMCQuad.test_input_validation.<locals>.func  s!    66Q;;66!9r,   z8Exception encountered when attempting vectorized call...z`n_points` must be an integer.c                     grF  r$   ry   s    r(   r)   rG        qr,   g     @)n_pointsz!`n_estimates` must be an integer.c                     grF  r$   ry   s    r(   r)   rG    rN  r,   r   )n_estimatesz8`qrng` must be an instance of scipy.stats.qmc.QMCEngine.c                     grF  r$   ry   s    r(   r)   rG    rN  r,   )qrngz8`qrng` must be initialized with dimensionality equal to c                     grF  r$   ry   s    r(   r)   rG    rN  r,   r    z,`log` must be boolean \(`True` or `False`\).c                     grF  r$   ry   s    r(   r)   rG    rN  r,   r   log)r2   r[   r\   	TypeErrorr   r]   r   warnsUserWarningr   qmcSobol)r3   r>   rN   rO   r_   rK  s    `    r(   r`   !TestQMCQuad.test_input_validation  s   JJBx JJBx ,]]9G4Xq$ 5 D]]:W5Y% 6	 MB<<k9!$ :9 z9!$ : 3]]9G4[!8 5 6]]9G4[!C8 5 M]]9G4[!X6 5 M]]:W5[!UYY__Q-?@ 6 B]]9G4[!B/ 54G 54 65 :9 :9 54 54 54 65 54sl   H3H:H0)II	I&9I8)*J	6J
H
H-0
H?
I
I#&
I58
J	
J
J(   r   Nc           
        ^^ [        T5      nUc  [        R                  " S5      nSn[        R                  " U5      n[        R                  " U5      nU4S jm[        R
                  R                  S5      n	[        R                  R                  XiS9n
[        R                  " U5      n[        R                  " U5      U-  n[        TTR                  XS9TR                  XS9XU
S9n[        R                  R                  XXS9n[        R                  " US-
  S	5      UR                   -  n[#        UR$                  TR                  XS9US
9  [        R&                  " U5      UR$                  -  S:  d   e[        R
                  R                  S5      n	[        R                  R                  XiS9n
[        UU4S jTR                  XS9TR                  XS9XSU
S9nUR$                  R(                  TR*                  :X  a  SOSn[#        TR-                  TR/                  UR$                  5      5      UR$                  US9  TR1                  UR$                  S-   5      [        R&                  " U5      S:  a  TR2                  OS:X  d   e[#        TR/                  UR                   5      UR                   UUS-  S9  g )Nr!   c                 l   > TR                  STR                  X -  SS9-  5      STR                  -  -  $ )Nr  r   r   r!   )r	  r  r  rJ  s    r(   rK  $TestQMCQuad.basic_test.<locals>.func  s3    66$!!445RUUCCr,   l   ^^@E9? )seedrE   )rO  rQ  rS  )lower_limitr    gףp=
?r|   r   c                  ,   > TR                  T" U 6 5      $ rG   rV  )rK   rK  r>   s    r(   r)   (TestQMCQuad.basic_test.<locals>.<lambda>  s    tT{(;r,   T)rO  rQ  rW  rS  +=g>r/   y                d   r{   )r   r1   oneszeroseyerandomdefault_rngr   r[  r\  r   r2   multivariate_normalcdfr   stdtritstandard_errorr   r   prodrA   rC   realr	  imagr  )r3   rO  rQ  signsr>   rA   rI  meancovrngrS  rN   rO   r>  refr|   logresr0   rK  s       `             @r(   
basic_testTestQMCQuad.basic_test  s,    $=GGAJExx~ffTl	D ii##$78yyt.HHTNGGDME!tRZZZ7A9S (N''++AS+H{1}e4s7I7IIbjjj&BNwwu~cll*Q...ii##$78yyt.;**Q*4bjjj6P#+"/ **bjj8udv 78#,,TRwwv+,"''%.1:LRSTTTv445**DH	Fr,   rO  i   rQ     c                 $    U R                  XUS9  g )N)r>   r{  )r3   rO  rQ  r>   s       r(   
test_basicTestQMCQuad.test_basic  s     	"5r,   ru  r=   g      c                 "    U R                  XS9  g )N)ru  r>   r  )r3   ru  r>   s      r(   	test_signTestQMCQuad.test_sign  s    e+r,   rW  FTc           	      <   Sn[         R                  " [        US9   [        S UR	                  SS/5      UR	                  SS/5      US9nS S S 5        WR
                  U(       a  UR                  * OS:X  d   eUR                  S:X  d   eg ! , (       d  f       NG= f)Nz-A lower limit was equal to an upper limit, sorU   c                     grF  r$   ry   s    r(   r)   'TestQMCQuad.test_zero.<locals>.<lambda>  s    Qr,   r   r    rV  )r[   rY  rZ  r   r2   r   r^   rq  )r3   rW  r>   r_   r>  s        r(   	test_zeroTestQMCQuad.test_zero  s~    A\\+W5;

Aq6(:BJJ1v<NTWXC 6||3A666!!Q&&& 65s   0B
Bc                     S n[        USS5      n[        R                  R                  SSS9[        R                  R                  SSS9-
  n[	        UR
                  US5        g )Nc                 >    [         R                  R                  U SS9$ )Nr!   scale)r   normpdfry   s    r(   rK  -TestQMCQuad.test_flexible_input.<locals>.func  s    ::>>!1>--r,   r   r    r!   r  g{Gz?)r   r   r  ro  r   r   )r3   rK  r>  ry  s       r(   test_flexible_inputTestQMCQuad.test_flexible_input  sS    	. tQ"jjnnQan(5::>>!1>+EEc40r,   r$   )r^  r   NN)rb   rc   rd   re   r`   r{  r[   rf   rg   r  r  r  r  ri   r$   r,   r(   rC  rC    s    )0V!FF [[Z$7[[]QG46 5 86 [[WBx#sc2YS	&RS, T, [[UUDM2' 3'1r,   rC  r   r&   r   r   r   c          	        ^	 U R                   U   S:  a  Uc  [        XX$S S9$ U[        XX$SS9-   $ [        R                  " XS5      n [        R                  " U5      S:  a  [        R                  " XS5      OUn[        R                  " U5      S:  a  [        R                  " X$S5      OUn[        R                  " U5      S:  a  [        R                  " X4S5      OUnU R                   S   m	Ub  U[        R
                  " T	5      -  OUnUS L nU(       a  SOUn[        R                  " XR                   5      n[        R                  " X0R                   S S S-   5      n[        R                  " XU4SS9nU	4S jn[        R                  " USU5      nU(       a	  US	SS 24   OUn[        R                  " USU5      nU$ )
Nr   )r&   r   r   r   r   r   r    )r    r   c                 8   > [        U S T U TST-   U ST-  S  S9$ )Nr!   )r&   r   )r   )r  r'   s    r(   r   *cumulative_simpson_nd_reference.<locals>.f  s,    !!BQ%1Qqs8QqstWEEr,   .)	r   r	   r1   moveaxisrI  rM   broadcast_toconcatenateapply_along_axis)
r   r&   r   r   r   initial_was_noner  r   r>  r'   s
            @r(   cumulative_simpson_nd_referencer    sv   wwt}q?'2$OO1!RTUVVV 	AR A$&GGAJNAR A&(ggbkAoRr	"2B020@10Dbkk','G 	
A^RYYq\A$#aG 	77#Aoogwws|d':;G
gR0AF


aQ
'C +#c12g,C
++c2t
$CJr,   c                      \ rS rSr\R
                  " S5      r\S-  r\R                  R                  SS5      \R                  R                  SS5      S 5       5       r\" SS	9\R                  R                  S
\R
                  " SS5      5      \R                  R                  SS5      \R                  R                  SS5      \R                  R                  SS5      \R                  R                  SS5      S 5       5       5       5       5       5       r\R                  R                  SS\" / SQS94S\" \/ SQ/\\/S94S\" \\\/\\\/SS94S\" / / S94S\" SS 94S!\" \R
                  " S"5      S94S#\" \R
                  " S"5      S$94S%\" S&\R
                  " S"5      S'94/5      S( 5       rS) rS* r\R                  R%                  S+5      \R                  R&                  \" \R,                  " \R.                  \R0                  " SSS+S,9\R4                  " S-S+S.S/9R7                  S0 5      S19S29S3 5       5       5       r\R                  R%                  S+5      \R                  R&                  \" \R,                  " \R.                  \R0                  " SSS+S,9\R4                  " S-S+S.S/9R7                  S4 5      S19S29S5 5       5       5       rS6rg&)7TestCumulativeSimpsoni)  r   r!   use_dx)FTuse_initialc                    [         R                  R                  S5      nSnU(       a  SOSnUR                  UR                  5       5      nUS:X  a5  UR                  [         R                  " UR                  U5      5      5      nO<UR                  XSR                  S9U-  UR                  UR                  5       5      -   nUR                  US-   UR                  S9S S 2UR                  4   n	UR                  UR                  US-   5      5      S S 2UR                  4   n
UR                  XU	-  -  SS9nUR                  XU	S-   -  -  U	S-   -  SS9nU(       a  UO	XS   -
  SS  nU(       a  US   OS nU(       a  S	U0OS
U0n[        U40 UDSU0D6nU(       d  [        UUSS9  g U(       a  SOSn[        UUSS9  [        UUS S2   UUS S2   SS9  g )N   F*BG r   r   r!   rE   r    r   r   r   r&   r   gV瞯<r/   g{Gzd?)r1   rl  rm  r2   sortrM   rC   rH   r  r   r   )r3   r  r  r>   rx  r'   orderr   r&   r   cr   Yry  r   kwargr>  i0s                     r(   r   TestCumulativeSimpson.test_1d.  s   
 ii##$89 ZZ

%A:

2773::a=12A		!::	.r1BJJszz|4LLAIIeairzzI21bjj=AJJszz%!),-am<FF1T6F"FF1QZ<Q'aF0aQtVQRL &!A$4$r
3( =e=W= C51!qBC62CAJBEE
?r,   T)cpu_onlyr   r   x_ndim)r    r   x_len)r    r!   r   i_ndim)Nr   r   r   )NTc                 ~   [         R                  R                  S5      nSSU/nUS   X   sX'   US'   UR                  5       n	SX'   US:X  a  U	OSn
UR	                  UR                  US95      nS	u  pU(       a7  US:  a  UR                  U	S9OUR                  5       nUR	                  U5      nO^US:  a"  [         R
                  " UR                  US9US
9O$[         R
                  " UR                  X   S95      nUR	                  U5      nUc  S OUR	                  UR                  U
S95      n[        XX]US9n[        [         R                  " U5      [         R                  " U5      Uc  S O[         R                  " U5      Uc  S O[         R                  " U5      US9n[        XR	                  U5      SS9  g )Nr  r      r   r    r   r$   size)NNr   r  V瞯<r/   )	r1   rl  rm  copyr2   r  r   r  r   )r3   r   r  r  r  r   r>   rx  r   shape_len_1i_shaper   r&   r   r>  ry  s                   r(   test_ndTestCumulativeSimpson.test_ndS  s    ii##$89 Au!&rEKU2Yjjl!'1+" JJszzuz-.17!-BBB?Ez/d;ggcjjekj:; 

1A .$bjj9Q.R !BdK .JJqMRZZ]rztrzzRT~#ODG1D4
 	ZZ_59r,   )r_   kwarg_updatezx must be strictly increasing)r!   r!   r   r   ry   )r!   r!   r   r   )r&   r   r   )r&   r   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&   r   c           
         [        UR                  U R                  5      UR                  U R                  5      S S SS9nUR	                  5        VVs0 s HB  u  pVU[        U[        5      (       a%  UR                  [        R                  " U5      5      OU_MD     nnn[        R                  " [        US9   [        S0 [        U40 UD6D6  S S S 5        g s  snnf ! , (       d  f       g = f)Nr   )r   r&   r   r   r   rU   r$   )dictr2   y0x0items
isinstancer   r1   r[   r\   r]   r   )r3   r_   r  r>   kwargs0kvs          r(   test_simpson_exceptions-TestCumulativeSimpson.test_simpson_exceptionsz  s     DGG,

4770C#". %1$6$6$8:$8DA 
1d8K8K2::bjjm4QRR$8 	 :]]:W5?g!>!>? 65:55s   A	C8C
C+c                     [         R                  R                  S5      nUR                  UR                  SS95      n[	        USS9n[        XAR                  SUR                  S95        g )Nr  r   r  r<   r   r-  rE   )r1   rl  rm  r2   r   r   rj  rC   )r3   r>   rx  r   r>  s        r(   test_special_cases(TestCumulativeSimpson.test_special_cases  sU    ii##$89JJszzrz*+ r*XXarzzX:;r,   c                 l   [         R                  " USS9n[        X5      n[        USSSS24   USSSS24   5      SSSS24   n/ UR                  SS QSP7n[         R                  " [         R
                  " U5      USSS24   USSS24   -
  [         R
                  " U5      /SS9nSUSSSS24'   U$ )aB  `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    r<   r!   )r1   diffr   r   r  rj  )r3   r   r&   dsub_integrals_h1sub_integrals_h2zeros_shapetheoretical_differences           r(   1_get_theoretical_diff_between_simps_and_cum_simpsGTestCumulativeSimpson._get_theoretical_diff_between_simps_and_cum_simps  s     GGAB@F@c4R4iL!C2I,

tt)
 )(a(!#%!#qr'*-=c3B3h-GG%
 "
 -0sADqDy) &%r,   r   )max_dimsmin_sidemax_sider  F)	allow_nanc                     [        U 5      S:  $ NgHz>absry   s    r(   r)   TestCumulativeSimpson.<lambda>      #a&SW-r,   )elementsr   c           
         S n[        UR                  U5      SS9nU" U5      nU R                  U[        R                  " UR
                  S   5      S9n[        USSS24   UR                  USSS24   USSS24   -   5      S	S
9  g)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                     [         R                  " [        SU R                  S   S-   5       Vs/ s H  n[	        U SS U24   SS9PM     snSS9$ s  snf )Nr!   r   r    .r=   r   r   r1   stackr   r   r   )r   r   s     r(   simpson_referencehTestCumulativeSimpson.test_cumulative_simpson_against_simpson_with_default_dx.<locals>.simpson_reference  sS    886;Aqwwr{1}6MN6M37,6MNUW Ns   Ar=   r   r   ry   .r    NgؗҜ<rd  )r   r2   r  r1   rM   r   r   )r3   r   r>   r  r>  ry  r  s          r(   7test_cumulative_simpson_against_simpson_with_default_dxMTestCumulativeSimpson.test_cumulative_simpson_against_simpson_with_default_dx  s    "	
 !A37"!%!W!W1772;' "X "
 	QRL"**Sab\4J3PQPR74S%ST	
r,   c                     [        U 5      S:  $ r  r  ry   s    r(   r)   r    r  r,   c           
         SUR                   S   S-
  -  n[        R                  " SSUR                   S   S9nUSS SU-  [        R                  R	                  SS[        U5      S-
  5      -  -   USS& S n[        UR                  U5      UR                  U5      S	9nU" X5      nU R                  X5      n[        US
SS24   UR                  US
SS24   US
SS24   -   5      5        g)r  r   r   r    r   r   Nru   c                     [         R                  " [        SU R                  S   S-   5       Vs/ s H  n[	        U SS U24   USS U24   S9PM     snSS9$ s  snf )Nr!   r   r    .ry   r   r  )r   r&   r   s      r(   r  XTestCumulativeSimpson.test_cumulative_simpson_against_simpson.<locals>.simpson_reference  s`    88<A!QWWR[QR]<ST<Sq37qbqbz2<ST Ts   "Ary   .)
r   r1   r   rl  uniformlenr   r2   r  r   )	r3   r   r>   intervalr&   r  r>  ry  r  s	            r(   'test_cumulative_simpson_against_simpson=TestCumulativeSimpson.test_cumulative_simpson_against_simpson  s    " qwwr{Q'KK21772;/!"HRYY%6%6r1c!fqj%III!"	 !A"**Q-@%!%!W!W"
 	QRL"**Sab\4J3PQPR74S%ST	
r,   r$   )rb   rc   rd   re   r1   rM   r  r  r[   rf   rg   r   rh   r  r  r  r  r  	fail_slowslowr   hyp_numarraysrC   array_shapesstfloatsfilterr  r  ri   r$   r,   r(   r  r  )  s   	1B	QB[[X}5[[]M:!@ ; 6!@F t$[[VRYYr1%56[[Xv.[[Wi0[[X}5[[T<0: 1 6 1 / 7 %:B [[8	($*>?	($"l1CBx*PQ	($"b""b"TU*VW	)4"+;<	8$A,G	6ryy|8LM	2D14NO	-tdryy|/LM	; 	@	@<&< [[2[[

..JJ  !a"EYYsB%8??@WX

  
. [[2[[

..JJ  !a"EYYsB%8??@WX

  
r,   r  c                       \ rS rSrS rS r\R                  R                  S\	" \
" SSS5      5      \	" \
" SS	S
5      5      -   5      S 5       rSrg)TestLebedevi  c                     Sn[         R                  " [        US9   [        R                  " S5        S S S 5        g ! , (       d  f       g = f)NzOrder n=-1 not available...rU   r   )r[   r\   NotImplementedErrorr   lebedev_rule)r3   r_   s     r(   r`   !TestLebedev.test_input_validation  s0    /]].g>""2& ?>>s	   <
A
c                     S n[         R                  " S5      u  p#X1" U5      -  nSn[        XESS9  [        [        R                  " U5      S[        R
                  -  5        g )Nc                 4    [         R                  " U S   5      $ )Nr   )r1   r	  ry   s    r(   r   &TestLebedev.test_quadrature.<locals>.f  s    66!A$<r,      g9-@rg  r/   r   )r   r  r   r1   r  r  )r3   r   r&   wr>  ry  s         r(   test_quadratureTestLebedev.test_quadrature  sQ    	  %%b)!A$hu-q	1ruu9-r,   r  r       r!   #      r  c                 \   [         R                  " U5      u  p#[        R                  " SSS9   [        R
                  " UR                  SS9n[        UR                  SSS9  S S S 5        [        [        R                  " U5      S[        R                  -  5        g ! , (       d  f       N@= f)Nignore)r  invalidr   r   r  rd  r   )r   r  r1   errstater   directional_statsTr   mean_resultant_lengthr  r  )r3   r  r&   r   r>  s        r(   test_propertiesTestLebedev.test_properties  st    %%e,[[(;))!##A6CC55quE < 	q	1RUU7+	 <;s   5B
B+r$   N)rb   rc   rd   re   r`   r  r[   rf   rg   r   r   r  ri   r$   r,   r(   r  r    sS    '
. [[Wd5B?&;d5SRSCT>U&UV, W,r,   r  ):r[   numpyr1   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   scipy._externalr   r  rf   rh   r   rk   r   r   r   r  r   r&  rC  r  r  r  r  r$   r,   r(   <module>r     s     L L  " ( (; ; ; N + + . O O H 2;;// :"X "X "XJ 4
X 
X 
X < &> &> !&>R 7Z* Z* Z*z '(V3 V3 )V3r+ +Z 7(. ( (
 94%/ 4% 4%n 8h1 h1 h1V -1T4b "J %&M
 M
 'M
` 9))*, , +,r,   