
    9im                        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"  \ RF                  RH                  r$ " S	 S
5      r% " S S5      r& " S S5      r' " S S5      r( " S S5      r)SSSSS.S jr* " S S5      r+ " S S5      r,g)    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)xp_assert_closec                        \ rS rSrS rS rSrg)TestFixedQuad   c                 R   ^ SmSST-  -  n[        U4S jSSTS9u  p#[        X!SS9  g )	N         c                    > U ST-  S-
  -  $ )Nr   r    )xns    e/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/scipy/integrate/tests/test_quadrature.py<lambda>+TestFixedQuad.test_scalar.<locals>.<lambda>   s    a!A#'l    r   r    -q=rtol)r   r   )selfexpectedgot_r    s       @r!   test_scalarTestFixedQuad.test_scalar   s2    ac72AqA>E2r$   c                    ^ Sn[         R                  " SSU-  5      mSTS-   -  n[        U4S jSSUS9u  p4[        X2SS9  g )	Nr   r   r   c                    > U TS S 2S 4   -  $ Nr   )r   ps    r!   r"   +TestFixedQuad.test_vector.<locals>.<lambda>"   s    a1d7mr$   r   r%   r&   r'   )nparanger   r   )r)   r    r*   r+   r,   r2   s        @r!   test_vectorTestFixedQuad.test_vector   sF    IIa1a!e93QQ?E2r$   r   N)__name__
__module____qualname____firstlineno__r-   r6   __static_attributes__r   r$   r!   r   r      s    33r$   r   c                       \ rS rSrS rS rS rS rS rS r	\
R                  R                  SS	S
/5      S 5       rSrg)TestQuadrature&   c                     [         er1   )NotImplementedError)r)   r   abargss        r!   r   TestQuadrature.quad'   s    !!r$   c                 V    [        [        [        R                  " S5      5      S5        g )N      )r   r   r4   r5   r)   s    r!   	test_rombTestQuadrature.test_romb*   s    T"))B-(#.r$   c                     [         R                  " S5      n[         R                  " SU-  5      n[        U5      n[	        S UR                  5       UR                  5       5      u  pE[        X4SSS9  g )NrG   皙?c                 4    [         R                  " SU -  5      $ )NrM   )r4   cosr   s    r!   r"   2TestQuadrature.test_romb_gh_3731.<locals>.<lambda>2   s    266#a%=r$   g:0yE>r   r(   atol)r4   r5   rO   r   r   minmaxr   )r)   r   yvalval2errs         r!   test_romb_gh_3731 TestQuadrature.test_romb_gh_3731-   sS    IIfFF3q5M1g0!%%'1557C	15r$   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`         @   g     @)r`         @rd   r`          @g     P@r   )      @      @@r_   rg   rf   g     V@   g     =AN)r   r   r4   arrayr   )r)   r    wtserrcoffs       r!   test_newton_cotes TestQuadrature.test_newton_cotes5   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.)        g      ?       @r   gUUUUUU@)ro   gffffff?g @rd         "@N)r4   ri   r   dotr   )r)   r   rV   rj   rk   exact_integralnumeric_integrals          r!   test_newton_cotes2!TestQuadrature.test_newton_cotes2K   s     HH_%qD#A66#>,=HH)*qD#A66#>,=r$   c           
      	   [         R                  " S5      n[        [        U5      S5        [        [        USS9S5        [        [        U[         R                  " SSS5      S9S	5        [         R                  " S
SS5      nS n[        [        U" U5      US9S5        [         R                  " S
SS5      n[        [        U" U5      SS9S5        [         R                  " S5      R                  SS5      n[         R                  " S5      R                  SSS5      nU" U5      n[        S5       H  n[        XUS9n[         R                  " US/S9nU Hz  n[        UR                  5      n	U	R                  U[        S 5      5        U[        U	5         S   S-  S-  U[        U	5         S   S-  S-  -
  n
[        XgR                     U
5        M|     M     [         R                  " S5      R                  S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
[        Xj5        [         R                  " S5      R                  SS5      n[         R                  " S5      R                  SSS5      nU" U5      n[        S5       H  n[        XUS9n[         R                  " US/S9nU Hz  n[        UR                  5      n	U	R                  U[        S 5      5        U[        U	5         S   S-  S-  U[        U	5         S   S-  S-  -
  n
[        XgR                     U
5        M|     M     [         R                  " S/5      n[         R                  " US5      n[        [        XSS9S5        [        [        XSS9S5        [         R                  " / SQ5      n[         R                  " US5      n[        [        XSS9S5        [        [        XSS9S5        [         R                  " / SQ/ SQ/ SQ/5      n[         R                  " US5      n/ SQnS /S-  n[        [        XSS9U5        [        [        XSS9U5        [         R                  " / SQ/ SQ/ S!Q/5      n[         R                  " US5      n/ S"Qn/ S#Qn[        [        XSS9U5        [        [        XSS9U5        g )$NrG   rH   r]   dx@   r   r   rP       r   c                     U S-  $ )Nr   r   rP   s    r!   f&TestQuadrature.test_simpson.<locals>.fd   s    a4Kr$         5@rh   rp   r            P@r^   r   axismulti_index)flags   r      rc   }   ro   )r^   r^   r^   r^   )r   r   r   r   )ro   ro   ro   ro   竪Je@)r   r   r   r{   )ro   g      a@g      @g      @)r   r   g*U@)r4   r5   r   r   linspacer   reshaperangenditerlistr   insertslicetupleri   power)r)   rV   r   r}   rB   iritr,   idxintegral	zero_axisdefault_axiss                r!   test_simpsonTestQuadrature.test_simpson\   s   IIbMWQZ%WQ3',WQ"++aB"78"= KK1a 	 	!*D1 KK1a !-s3 IIbM!!!Q'IIcN""1a+aDqAQ'A1]O4B2>>*

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

1eDk*U3Z=,a/!3ac
mA6F6IA6MM.. 18<	   HHaSMHHQNQ/5R0#6HH\"HHQNQ/5R0#6HHlL,?@HHQN(	!{QQ/;R0,?HHlL.ABHHQN0	>Q/;R0,?r$   droplastFTc                     [         R                  " / SQ/ SQ/5      nU(       a  US S 2S S24   n[        USS9n[        [         R                  " U[         R                  S9SS9n[	        X45        g )N)r   r   r   r   r   r   rc   )r   r   r   r   
   r   r   r   r   dtype)r4   ri   r   float64r   )r)   r   rV   resultr*   s        r!   test_simpson_2d_integer_no_x+TestQuadrature.test_simpson_2d_integer_no_x   s`     HH/35 6!SbS&	A$288ARZZ8rBV&r$   r   N)r8   r9   r:   r;   r   rJ   rZ   rl   ru   r   pytestmarkparametrizer   r<   r   r$   r!   r>   r>   &   sL    "/66,>"K@\ [[Z%7	' 8	'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                     [         R                  " SSSS9nUn[        X!SS9n/ SQn[        X45        [        X!S S9n[        X4SS  5        g )	Nr   r   rc   numr   initial)ro                r   ro   r   r4   r   r	   r   )r)   r   rV   y_int
y_expecteds        r!   test_1d TestCumulative_trapezoid.test_1d   sL    KKA1%$Q15.
*$Q48!"~.r$   c                    [         R                  " S5      R                  SSS5      nUn[        X!SS9n[         R                  " / SQ/ SQ// S	Q/ S
Q// SQ/ SQ//5      n[        X45        / SQn[        / SQU5       HG  u  pg[        X!SUS9n[        UR                  S5        [        X!S US9n[        UR                  U5        MI     g )N   r^   r   r   r   r   )ro   r]   rp         @)ro   r         $@     0@)ro         !@      2@g     <@)ro         )@g      :@     @D@)ro   r   g      A@g     @J@)ro        4@g      E@g      P@))r   r   r   )r^   r   r   )r^   r   r^   r   r   r   )r   r   )r^   r   r   )	r4   r5   r   r	   ri   r   zipr   shape)r)   r   rV   r   r   shapesr   r   s           r!   test_y_nd_x_nd'TestCumulative_trapezoid.test_y_nd_x_nd   s    IIi ((Aq1$Q15XX 2 4 6 4 5 7 5 5 7	8 9
 	* 3y&1KD(qtDEi0(t$GEe,	 2r$   c           	         [         R                  " S5      R                  SSS5      n[         R                  " S5      S-  n[         R                  " / SQ/ SQ// SQ/ SQ//5      [         R                  " / S	Q// S
Q// SQ//5      [         R                  " / SQ/ SQ// SQ/ SQ// SQ/ SQ//5      4n[	        / SQU5       H+  u  pE[        XS UR                  U    US S9n[        Xe5        M-     g )Nr   r^   r   r   )ra         @rb   rf   )re   rq   r         &@)g      D@g      F@g      H@g      J@)g      L@g      N@r   g      Q@)rp   rd   ra   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   )r4   r5   r   ri   r   r	   r   r   )r)   rV   r   ys_expectedr   r   r   s          r!   test_y_nd_x_1d'TestCumulative_trapezoid.test_y_nd_x_1d   s    IIi ((Aq1IIaL!O HH')+++-. / HH'(+,+,. / HH')')+))+	, -. !$I{ ;D(.?d157EE. !<r$   c                     [         R                  " SSSS9n[        U5      n/ SQn[        X#5        [        USS9n/ SQn[        X#5        [        US	S
9n/ SQn[        X#5        [        US	SS9n/ SQn[        X#5        g )Nr   r   rc   r   )r   r   r   ro   r   r   )r   r   r   r   ro   r^   rx   )            r   ro   )ry   r   )r   r   r   r   ro   r   )r)   rV   r   r   s       r!   test_x_none$TestCumulative_trapezoid.test_x_none   sx    KKA1%$Q'*
*$Q2-
*$Q1-*
*$Q1a8-
*r$   r   r   r]   c                     [         R                  " SSSS9n[        R                  " [        SS9   [        X!S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`matchr   N)r4   r   r   raises
ValueErrorr	   )r)   r   rV   s      r!   test_initial_error+TestCumulative_trapezoid.test_initial_error  s8    
 KK22&]]:[9 4 :99s   
A
Ac                 |    [         R                  " [        SS9   [        / S9  S S S 5        g ! , (       d  f       g = f)NAt least one point is requiredr   rV   )r   r   r   r	   rI   s    r!   test_zero_len_y(TestCumulative_trapezoid.test_zero_len_y  s&    ]]:-MN 2& ONNs   
-
;r   N)r8   r9   r:   r;   r   r   r   r   r   r   r   r   r   r<   r   r$   r!   r   r      sG    /-*/0+& [[As855'r$   r   c                   x    \ rS rSrS r\" SSS9S 5       r\" SSS9S 5       r\S 5       r	\" S	S
S9S 5       r
Srg)TestTrapezoidi  c           	          UR                  SSS5      n[        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?g      r   rx   r`   )r5   r
   expsqrtasarraypir   )r)   xpr   r   s       r!   test_simpleTestTrapezoid.test_simple  sb    IIc2r"bffS16\*RWWQBEE9J5J-KKPST::c?+r$   z	jax.numpyz)JAX arrays do not support item assignment)reasonc                    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US==   S-  ss'   US==   S-  ss'   UR                  U5      US   US   -
  -  nUS==   S-  ss'   US==   S-  ss'   UR                  U5      US   US   -
  -  nUS==   S-  ss'   US==   S-  ss'   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[        XS S 2S S 4   SS	9n[	        X5        [        XS S S 2S 4   SS	9n[	        X5        [        XS S S S 24   SS	9n[	        X5        [        XSS	9n[	        X5        [        XSS	9n[	        X5        [        XSS	9n[	        X5        g )
Nr   r   r^   r   r      r   r   r   )r   	ones_likesumr
   r   )r)   r   r   rV   zwxwywzqqxqyqzr   s                r!   	test_ndimTestTrapezoid.test_ndim  s    KK1a KK1a KK1b!\\!_!qt,
1

2!\\!_!qt,
1

2!\\!_!qt,
1

2!atmqa.4a<@VVA1dD=))V2VVA4D=))V2VVA4q=))V2 aQd]+!4aT!T\?3aT4\?3 a1%a1%a1%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
   r   r   r   	Exception)r)   r   r   rV   out0out1s         r!   test_gh21908TestTrapezoid.test_gh21908>  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 )Nrc   r   )maskr   )r4   r5   mari   r   r
   )r)   r   r   rV   r
  ymr   xms           r!   test_maskedTestTrapezoid.test_maskedX  s     IIaLEAvUU[[[&	"(!,UU[[[&	")1-UU[[[&	!(!,r$   Tz,array-likes only supported for NumPy backend)np_onlyr   c                    [        [        S5      5      nU Vs/ s H  o3U-  PM	     nnUR                  X!R                  S9nUR                  XAR                  S9n[	        XB5      n[	        Xe5      n[        Xx5        g s  snf )Nrc   r   )r   r   r   r   r
   r   )	r)   r   r   trV   xarryarrresresarrs	            r!   test_array_likeTestTrapezoid.test_array_likei  so     qNAqUAzz!::z.zz!::z.o4&$ s   A=r   N)r8   r9   r:   r;   r   skip_xp_backendsr   r  r   r  r  r<   r   r$   r!   r   r     s|    , kHJ#J#J kHJ
J
0 - -  dKM%M%r$   r   c                      \ rS rSr\R
                  R                  S 5       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                  \R
                  R                  SSS/5      S 5       5       rS rSrg)TestQMCQuadiu  c           	         Sn[         R                  " [        US9   [        SSS/SS/5        S S S 5        Sn[         R                  " [        US9   [        S SS/SS/5        S S S 5        S nS	n[         R
                  " [        US9   [        USS/SS/5        S S S 5        S
n[         R                  " [        US9   [        S SS/SS/SS9  S S S 5        Sn[         R                  " [        US9   [        S SS/SS/SS9  S S S 5        Sn[         R                  " [        US9   [        S SS/SS/SS9  S S S 5        Sn[         R                  " [        US9   [        S SS/SS/[        R                  R                  S5      S9  S S S 5        Sn[         R                  " [        US9   [        S SS/SS/SS9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNZ= f! , (       d  f       GN7= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nz`func` must be callable.r   za duckr   r   z/`func` must evaluate the integrand at points...c                      gNr   r   r   r$   r!   r"   3TestQMCQuad.test_input_validation.<locals>.<lambda>~  s    Qr$   c                 R    U R                   S:X  d   e[        R                  " U 5      $ r  )ndimr4   r   rP   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r  r   rP   s    r!   r"   r        qr$   g     @)n_pointsz!`n_estimates` must be an integer.c                     gr  r   rP   s    r!   r"   r    r%  r$   r   )n_estimatesz8`qrng` must be an instance of scipy.stats.qmc.QMCEngine.c                     gr  r   rP   s    r!   r"   r    r%  r$   )qrngz8`qrng` must be initialized with dimensionality equal to c                     gr  r   rP   s    r!   r"   r    r%  r$   z,`log` must be boolean \(`True` or `False`\).c                     gr  r   rP   s    r!   r"   r    r%  r$   r   log)
r   r   	TypeErrorr   r   warnsUserWarningr   qmcSobol)r)   messager"  s      r!   test_input_validation!TestQMCQuad.test_input_validationv  s   ,]]9G4X1v1v. 5 D]]:W5YAA/ 6	 M\\+W5TAq6Aq6* 6 3]]9G4[1a&1a&6B 5 6]]9G4[1a&1a&cB 5 M]]9G4[1a&1a&x@ 5 M]]:W5[1a&1a&uyyq7IJ 6 B]]9G4[1a&1a&b9 54? 54 65 65 54 54 54 65 54s_   GG
G/?H4H)H%/H60I
G
G,/
G>
H
H"%
H36
I
I   r   Nc           
        ^^^ Uc  [         R                  " S5      nSn[         R                  " U5      m[         R                  " U5      mUU4S jm[         R                  R                  S5      n[        R                  R                  XES9n[         R                  " U5      n[         R                  " U5      U-  n[        TXxUX&S9n	[        R                  R                  UTTUS9n
[        R                  " US-
  S5      U	R                  -  n[        U	R                   XS	9  [         R"                  " U5      U	R                   -  S
:  d   e[         R                  R                  S5      n[        R                  R                  XES9n[        U4S jXxXSUS9n[        [         R$                  " UR                   5      U	R                   SS9  [         R&                  " UR                   5      [         R"                  " U5      S
:  a  [         R(                  OS
:X  d   e[        [         R$                  " UR                  5      U	R                  SSS9  g )Nr   c                 Z   > [         R                  R                  U R                  TT5      $ r1   )r   multivariate_normalpdfT)r   covmeans    r!   r"  $TestQMCQuad.basic_test.<locals>.func  s"    ,,00dC@@r$   l   ^^@E9? )seed)r&  r(  r*  )lower_limitr   gףp=
?rS   r   c                  6   > [         R                  " T" U 6 5      $ r1   )r4   r.  )rD   r"  s    r!   r"   (TestQMCQuad.basic_test.<locals>.<lambda>  s    tT{(;r$   T)r&  r(  r.  r*  +=r'   缉ؗҜ<rR   )r4   oneszeroseyerandomdefault_rngr   r2  r3  r   r:  cdfr   stdtritstandard_errorr   r   prodr   imagr   )r)   r&  r(  signsr!  rngr*  rB   rC   r  refrS   logresr=  r"  r>  s                @@@r!   
basic_testTestQMCQuad.basic_test  s   =GGAJExx~ffTl	A ii##$78yyt.HHTNGGDME!tQH#.;''++AtSa+H{1}e4s7I7IIc5wwu~cll*Q...ii##$78yyt.;Q#+"/ 	v/EJwwv'RWWU^a5GBEEQOOOv445**U	Dr$   r&  i   r(  r   c                 &    U R                  X5        g r1   rU  )r)   r&  r(  s      r!   
test_basicTestQMCQuad.test_basic  s     	.r$   rQ  r   r   c                 "    U R                  US9  g )N)rQ  rX  )r)   rQ  s     r!   	test_signTestQMCQuad.test_sign  s    e$r$   r.  FTc                    Sn[         R                  " [        US9   [        S SS/SS/US9nS S S 5        WR                  U(       a  [
        R                  * OS:X  d   eUR                  S:X  d   eg ! , (       d  f       NK= f)Nz-A lower limit was equal to an upper limit, sor   c                     gr  r   rP   s    r!   r"   'TestQMCQuad.test_zero.<locals>.<lambda>  s    Qr$   r   r   r-  )r   r0  r1  r   r   r4   infrN  )r)   r.  r4  r  s       r!   	test_zeroTestQMCQuad.test_zero  sn     B\\+W5;AAC@C 6||3A666!!Q&&& 65s   A33
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   normr;  rP   s    r!   r"  -TestQMCQuad.test_flexible_input.<locals>.func  s    ::>>!1>--r$   r   r   r   rf  g{Gz?)r   r   rh  rL  r   r   )r)   r"  r  rS  s       r!   test_flexible_inputTestQMCQuad.test_flexible_input  sS    	. tQ"jjnnQan(5::>>!1>+EEc40r$   r   )r7  r   N)r8   r9   r:   r;   r   r   thread_unsafer5  rU  r   rY  r\  rb  rj  r<   r   r$   r!   r  r  u  s    [[": ":HD> [[Z$7[[]QG4/ 5 8/ [[W1vBx"a1b'&JK% L% [[[[UUDM2' 3 '1r$   r  r   r   ry   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   ry   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	   r4   moveaxisr!  r5   broadcast_toconcatenateapply_along_axis)
rV   r   ry   r   r   initial_was_noner   r}   r  r    s
            @r!   cumulative_simpson_nd_referencerv    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\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       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&                  \" \R,                  " \R.                  \R0                  " SS
S)S*9\R4                  " S+S)S,S-9R7                  S. 5      S/9S09S1 5       5       5       5       r\R                  R#                  S)5      \R                  R$                  \R                  R&                  \" \R,                  " \R.                  \R0                  " SS
S)S*9\R4                  " S+S)S,S-9R7                  S2 5      S/9S09S3 5       5       5       5       rS4rg$)5TestCumulativeSimpsoni  r   r   use_dx)FTuse_initialc                 J   [         R                  R                  S5      nSnU(       a  SOSnUR                  5       nUS:X  a%  [         R                  " UR                  U5      5      O)[         R                  " U5      U-  UR                  5       -   n[         R                  " US-   5      S S 2[         R
                  4   nUR                  US-   5      S S 2[         R
                  4   n	[         R                  " XU-  -  SS9n
[         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  [        XSS9  g U(       a  SOSn[        XSS9  [        UUS S2   UUS S2   SS9  g )N   F*BG r   r^   r   r   r   r   ry   r   r   gV瞯<r'   g{Gzd?)	r4   rJ  rK  sortr5   newaxisr   r   r   )r)   ry  rz  rR  r    orderry   r   r   crV   YrS  r   kwargr  i0s                    r!   r   TestCumulativeSimpson.test_1d   so   
 ii##$89 ZZ\',zRWWSZZ]#))A,r/CJJL0 	
IIeai BJJ/JJuqy!!RZZ-0FF1T6"FF1QZ<Q'a0aQtVQRL &!A$4$r
3( =e=W= C51!qBC62CAJBEE
?r$   r   r^   x_ndim)r   r^   x_len)r   r   rh   i_ndim)Nr   r^   ry   )NTc                 P   [         R                  R                  S5      nSSU/nUS   Xq   sXq'   US'   UR                  5       nSX'   US:X  a  UOSn	UR                  US9n
S	u  pU(       a&  US:  a  UR                  US9OUR                  5       nOMUS:  a"  [         R                  " UR                  US9US
9O$[         R                  " UR                  Xq   S95      nUc  S OUR                  U	S9n[        XX\US9n[        XX\US9n[         R                  R                  XSS9  g )Nr|  rc      r   r   r^   r   size)NNr   rm  V瞯<r'   )	r4   rJ  rK  copyr}  r   rv  testingr   )r)   r   r  r  r  ry   rR  r   shape_len_1i_shaperV   r   r   r  rS  s                  r!   test_ndTestCumulativeSimpson.test_nd#  s!    ii##$89 Au!&rEKU2Yjjl!'1+" JJEJ"17!-B?Ez/d;ggcjjekj:;  .$cjjgj.F !BdK-aSWX


""3%"8r$   )r4  kwarg_updatezx must be strictly increasing)r   r   r^   r   rP   )r   r   r   r   )r   rV   r   )r   rV   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-Drc   z'`initial` must either be a scalar or...r   z"`dx` must either be a scalar or...N)r   ry   c           
          [        U R                  U R                  S S SS9n[        R                  " [
        US9   [        S0 [        U40 UD6D6  S S S 5        g ! , (       d  f       g = f)Nr   )rV   r   ry   r   r   r   r   )dicty0x0r   r   r   r   )r)   r4  r  kwargs0s       r!   test_simpson_exceptions-TestCumulativeSimpson.test_simpson_exceptionsB  sM     DGGdL]]:W5?g!>!>? 655s   A
A(c                     [         R                  R                  S5      nUR                  SS9n[        USS9n[	        US5        g )Nr|  r   r  r   rx   )r4   rJ  rK  r   r   )r)   rR  rV   r  s       r!   test_special_cases(TestCumulativeSimpson.test_special_casesQ  s=    ii##$89JJBJ q)S!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   ro   r   )r4   diffr   r   rs  rH  )r)   rV   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>absrP   s    r!   r"   TestCumulativeSimpson.<lambda>      #a&SW-r$   )elementsr   c                     S n[        USS9nU" U5      nU R                  U[        R                  " UR                  S   5      S9n[        R
                  R                  USSS24   USSS24   USSS24   -   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`   rx   r   r4   stackr   r   r   )rV   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`   rx   r   rP   .r   NrF  rB  )r   r  r4   r5   r   r  r   )r)   rV   r  r  rS  r  s         r!   7test_cumulative_simpson_against_simpson_with_default_dxMTestCumulativeSimpson.test_cumulative_simpson_against_simpson_with_default_dxz  s    $	
 !s+"!%!W!W1772;' "X "
 	

""QRL#c12g,)?QR)HHu 	# 	
r$   c                     [        U 5      S:  $ r  r  rP   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[        XS	9nU" X5      nU R                  X5      n[        R                  R                  US
SS24   US
SS24   US
SS24   -   5        g)r  r   r   r   r   r   NrM   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   .rP   r   r  )rV   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rP   .)
r   r4   r   rJ  uniformlenr   r  r  r   )r)   rV   intervalr   r  r  rS  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!"	 !(%!%!W!W"
 	

""QRL#c12g,)?QR)HH	
r$   r   )r8   r9   r:   r;   r4   r5   r  r  r   r   r   r   r  r  r  r  r  	fail_slowrl  slowr   hyp_numarraysr   array_shapesstfloatsfilterr  r  r<   r   r$   r!   rx  rx    s   	1B	QB[[X}5[[]M:@ ; 6@B [[VRYYr1%56[[Xv.[[Wi0[[X}5[[T<09 1 6 1 / 7
94 [[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$   rx  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...r   r   )r   r   rA   r   lebedev_rule)r)   r4  s     r!   r5  !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   )r4   r   rP   s    r!   r}   &TestLebedev.test_quadrature.<locals>.f  s    66!A$<r$      g9-@rE  r'   r   )r   r  r   r4   r   r   )r)   r}   r   wr  rS  s         r!   test_quadratureTestLebedev.test_quadrature  sQ    	  %%b)!A$hu-q	1ruu9-r$   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)divideinvalidr   r   r  rB  r   )r   r  r4   errstater   directional_statsr<  r   mean_resultant_lengthr   r   )r)   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)r8   r9   r:   r;   r5  r  r   r   r   r   r   r  r<   r   r$   r!   r  r    sS    '
. [[Wd5B?&;d5SRSCT>U&UV, W,r$   r  )-r   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_api_no_0dr   r   r  r   r>   r   r   r  rv  rx  r  r   r$   r!   <module>r     s      L L  " ( (; ; ; N + + . 7;;// 3 3 N' N'bV' V'rb% b%J_1 _1D -1T4b "JA
 A
F, ,r$   