
    dois                        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'  \ RP                  RR                  r)\"" \5       " S
 S5      5       r*\"" \5       " S S5      5       r+\"" \5       " S S5      5       r,\"" \5       " S S5      5       r-\"" \5       " S S5      5       r.\"" \5       " S S5      5       r/\"" \5       " S S5      5       r0SSSSS.S jr1\"" \5       " S S5      5       r2\"" \Rf                  5       " S S5      5       r4g)    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                        \ 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    a/var/www/html/land-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/   r0   r6   s        @r%   test_vectorTestFixedQuad.test_vector   sF    IIa1a!e93QQ?E2r(   r"   N)__name__
__module____qualname____firstlineno__r1   r:   __static_attributes__r"   r(   r%   r   r      s    33r(   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 )Ng      1@g      `@dtype)r   r   r9   asarrayfloat64r-   xps     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      $ )NrO   )r8   cosarrayr#   s    r%   r&   ,TestRomb.test_romb_gh_3731.<locals>.<lambda>1   s    RVVBHHSUO%<r(   rE   g:0yE>r   r,   atol)
r8   r9   rQ   r   rG   r   minmaxr   rH   )r-   rJ   r#   yvalr.   r0   s          r%   test_romb_gh_3731TestRomb.test_romb_gh_3731,   sq    IIfFF3q5M2::a=!<bffQiPQSZZ

ZC$UVWr(   r"   N)r<   r=   r>   r?   rK   r[   r@   r"   r(   r%   rB   rB   '   s    TXr(   rB   c                        \ rS rSrS rS rSrg)TestNewtonCotes5   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    )      ?      @rd         @   g     @)rd         @rh   rd          @g     P@r   )      @      @@rc   rk   rj   g     V@   g     =AN)r   r   r8   rR   r   )r-   r$   wtserrcoffs       r%   test_newton_cotes!TestNewtonCotes.test_newton_cotes7   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@)rr   gffffff?g @rh         "@N)r8   rR   r   dotr   )r-   r#   rY   rm   rn   exact_integralnumeric_integrals          r%   test_newton_cotes2"TestNewtonCotes.test_newton_cotes2M   s     HH_%qD#A66#>,=HH)*qD#A66#>,=r(   r"   N)r<   r=   r>   r?   ro   rx   r@   r"   r(   r%   r^   r^   5   s    6,>r(   r^   c                   b    \ rS rSrS r\R                  R                  SSS/5      S 5       rSr	g)	TestSimpson_   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 )$NrN      ra   dx@   r   r   rS       r   c                     U S-  $ )Nr    r"   rS   s    r%   f#TestSimpson.test_simpson.<locals>.fi   s    a4Kr(         5@rl   rs   r            P@rb   r#   axismulti_index)flags   r       rg   }   rr   )rb   rb   rb   rb   )r   r    r   r   )rr   rr   rr   rr   竪Je@)r   r   r   r   )rr   g      a@g      @g      @)r   r   g*U@)r8   r9   r   r   linspacer   reshaperangenditerlistr   insertslicetuplerR   power)r-   rY   r#   r   airitr0   idxintegral	zero_axisdefault_axiss                r%   test_simpsonTestSimpson.test_simpsona   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   rg   )r   r   r    r   
   r   r   r   r   rE   )r8   rR   r   rH   r   )r-   r   rY   resultr.   s        r%   test_simpson_2d_integer_no_x(TestSimpson.test_simpson_2d_integer_no_x   s`     HH/35 6!SbS&	A$288ARZZ8rBV&r(   r"   N)
r<   r=   r>   r?   r   pytestmarkparametrizer   r@   r"   r(   r%   r{   r{   _   s3    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                     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    rg   numr   initial)rr                r   rr   r   r   r	   rG   r   )r-   rJ   r#   rY   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   rb   r    r   r   r   )rr   ra   rs         @)rr   r         $@     0@)rr         !@      2@g     <@)rr         )@g      :@     @D@)rr   r   g      A@g     @J@)rr        4@g      E@g      P@))r    r    r   )rb   r   r   )rb   r    rb   r   r   r    )r   r   )r   r9   r   r	   rG   r   zipshape)	r-   rJ   r#   rY   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    )re         @rf   rj   )ri   rt   r         &@)g      D@g      F@g      H@g      J@)g      L@g      N@r   g      Q@)rs   rh   re   r   )r   r   rc         *@)r   g      3@      4@r   )ra   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   r9   r   rG   r   r	   r   r   )r-   rJ   rY   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    rg   r   )r   r   r   rr   r   r   )r   r   r   r   rr   rb   r   )            r   rr   )r   r   )r   r   r   r   rr   r   )r-   rJ   rY   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   ra   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`matchr   N)r   r   raises
ValueErrorr	   )r-   r   rJ   rY   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 requiredr   rY   )r   r   r   r	   rG   rI   s     r%   test_zero_len_y(TestCumulative_trapezoid.test_zero_len_y  s.    ]]:-MN 2::b>2 ONNs	   <
A
r"   N)r<   r=   r>   r?   r   r   r   r   r   r   r   r   r   r@   r"   r(   r%   r   r      sG    /(*/0+& [[As8553r(   r   c                   <    \ rS rSrS rS rS r\S 5       rS 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?      r    r   rd   )r9   r
   expsqrtrG   pir   )r-   rJ   r#   r   s       r%   test_simpleTestTrapezoid.test_simple  sb    IIc2r"bffS16\*RWWQBEE9J5J-KKPST::c?+r(   c                    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   rb   r    r      r   r   r   )r   	ones_likesumr
   r   )r-   rJ   r#   rY   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         )rb   r      i|  r   r   )r   r   r   )r   g     P`@g     k@r   	   )r   r   r   r
   rG   r   r   	Exception)r-   rJ   r#   rY   out0out1s         r%   test_gh21908TestTrapezoid.test_gh21908C  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 )Nrg   r    )maskr   )r8   r9   marR   r   r
   )r-   rJ   r#   rY   r  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 )Nrg   rE   )r   r   r8   rG   rH   r
   r   )r-   r#   trY   xarryarrresresarrs           r%   test_array_likeTestTrapezoid.test_array_likel  sm    qNAqUAzz!2::.zz!2::.o4&$ s   Br"   N)r<   r=   r>   r?   r   r  r  r   r  r  r@   r"   r(   r%   r   r     s+    ,#J
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)TestQMCQuadiv  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)Nrr   rd   z`func` must be callable.r   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      $ r   )ndimr   r#   rJ   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"   rS   s    r%   r&   r!        qr(   g     @)n_pointsz!`n_estimates` must be an integer.c                     gr   r"   rS   s    r%   r&   r!    r(  r(   r   )n_estimatesz8`qrng` must be an instance of scipy.stats.qmc.QMCEngine.c                     gr   r"   rS   s    r%   r&   r!    r(  r(   )qrngz8`qrng` must be initialized with dimensionality equal to c                     gr   r"   rS   s    r%   r&   r!    r(  r(   r   z,`log` must be boolean \(`True` or `False`\).c                     gr   r"   rS   s    r%   r&   r!    r(  r(   r   log)rG   r   r   	TypeErrorr   r   r   warnsUserWarningr   qmcSobol)r-   rJ   r   bmessager%  s    `    r%   test_input_validation!TestQMCQuad.test_input_validationx  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   r$  s    r%   r%  $TestQMCQuad.basic_test.<locals>.func  s3    66$!!445RUUCCr(   l   ^^@E9? )seedrE   )r)  r+  r-  )lower_limitr   gףp=
?rV   r   c                  ,   > TR                  T" U 6 5      $ r5   r0  )argsr%  rJ   s    r%   r&   (TestQMCQuad.basic_test.<locals>.<lambda>  s    tT{(;r(   T)r)  r+  r1  r-  +=g>r+   y                d   rU   )r   r8   oneszeroseyerandomdefault_rngr   r5  r6  r   rG   multivariate_normalcdfr   stdtritstandard_errorr   r   prodrF   rH   realr   imagr   )r-   r)  r+  signsrJ   rF   r#  meancovrngr-  r   r7  r  refrV   logresr,   r%  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(   r)  i   r+  r   c                 $    U R                  XUS9  g )N)rJ   rY  )r-   r)  r+  rJ   s       r%   
test_basicTestQMCQuad.test_basic  s     	"5r(   rS  rd   g      c                 "    U R                  XS9  g )N)rS  rJ   r\  )r-   rS  rJ   s      r%   	test_signTestQMCQuad.test_sign  s    e+r(   r1  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, sor   c                     gr   r"   rS   s    r%   r&   'TestQMCQuad.test_zero.<locals>.<lambda>  s    Qr(   r   r   r0  )r   r3  r4  r   rG   r   infrO  )r-   r1  rJ   r8  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pdfrS   s    r%   r%  -TestQMCQuad.test_flexible_input.<locals>.func  s    ::>>!1>--r(   r   r   r    rj  g{Gz?)r   r   rl  rM  r   r   )r-   r%  r  rW  s       r%   test_flexible_inputTestQMCQuad.test_flexible_input  sS    	. tQ"jjnnQan(5::>>!1>+EEc40r(   r"   )r;  r   NN)r<   r=   r>   r?   r9  rY  r   r   r   r]  r`  rf  ro  r@   r"   r(   r%   r  r  v  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(   r  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$ )
Nrb   )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	   r8   moveaxisr#  r9   broadcast_toconcatenateapply_along_axis)
rY   r#   r   r   r   initial_was_noner   r   r  r$   s
            @r%   cumulative_simpson_nd_referencerz    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   rb   r    rE   r   r   r   r   r#   r   gV瞯<r+   g{Gzd?)r8   rJ  rK  rG   sortr9   rH   newaxisr   r   r   )r-   r}  r~  rJ   rV  r$   orderr   r#   r   crY   YrW  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   rb   x_ndim)r   rb   x_len)r   r    rl   i_ndim)Nr   rb   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  rg      r   r   rb   r"   size)NNr   rq  V瞯<r+   )	r8   rJ  rK  copyrG   r  r   rz  r   )r-   r   r  r  r  r   rJ   rV  r   shape_len_1i_shaperY   r#   r   r  rW  s                   r%   test_ndTestCumulativeSimpson.test_nd1  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(   )r8  kwarg_updatezx must be strictly increasing)r    r    rb   r   rS   )r    r    r   r   )r#   rY   r   )r#   rY   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-Drg   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   )rY   r#   r   r   r   r   r"   )dictrG   y0x0items
isinstancer   r8   r   r   r   r   )r-   r8  r  rJ   kwargs0kvs          r%   test_simpson_exceptions-TestCumulativeSimpson.test_simpson_exceptionsX  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  rr   r   r  rE   )r8   rJ  rK  rG   r   r   rH  rH   )r-   rJ   rV  rY   r  s        r%   test_special_cases(TestCumulativeSimpson.test_special_casesj  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   rr   r    )r8   diffr   r   rw  rH  )r-   rY   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_simpsu  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>absrS   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   .rd   r   r   r8   stackr   r   r   )rY   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rd   r   r   rS   .r   NgؗҜ<rA  )r   rG   r  r8   r9   r   r   )r-   rY   rJ   r  r  rW  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  rS   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   NrO   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   .rS   r   r  )rY   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rS   .)
r   r8   r   rJ  uniformlenr   rG   r  r   )	r-   rY   rJ   intervalr#   r  r  rW  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"   )r<   r=   r>   r?   r8   r9   r  r  r   r   r   r   skip_xp_backendsr  r  r  r  r  	fail_slowslowr   hyp_numarraysrH   array_shapesstfloatsfilterr  r  r@   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...r   r   )r   r   NotImplementedErrorr   lebedev_rule)r-   r8  s     r%   r9  !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   )r8   r   rS   s    r%   r   &TestLebedev.test_quadrature.<locals>.f  s    66!A$<r(      g9-@rE  r+   r   )r   r  r   r8   r   r   )r-   r   r#   wr  rW  s         r%   test_quadratureTestLebedev.test_quadrature  sQ    	  %%b)!A$hu-q	1ruu9-r(   r  rb   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  rA  r   )r   r  r8   errstater   directional_statsTr   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)r<   r=   r>   r?   r9  r  r   r   r   r   r   r  r@   r"   r(   r%   r  r    sS    '
. [[Wd5B?&;d5SRSCT>U&UV, W,r(   r  )5r   numpyr8   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   rB   r^   r{   r   r   r  rz  r|  r  r  r"   r(   r%   <module>r     s     L L  " ( (; ; ; N + + . O O H;;// :3 3 3  4
X 
X 
X < &> &> !&>R 7Y' Y' Y'x '(V3 V3 )V3r 9\% \% \%~ 8h1 h1 h1V -1T4b "J %&M
 M
 'M
` 9))*, , +,r(   