
    ge
E                        d dl Z d dlZd dlmZmZmZ d dlmZmZm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZ  G d d          Z G d d	          Z  G d
 d          Z! G d d          Z" G d d          Z#dS )    Ncossinpi)assert_equalassert_almost_equalassert_allcloseassert_suppress_warnings)
quadraturerombergrombnewton_cotescumulative_trapezoidcumtrapztrapz	trapezoidquadsimpsonsimps
fixed_quadAccuracyWarningqmc_quad)statsspecialc                       e Zd Zd Zd ZdS )TestFixedQuadc                 r    dddz  z  }t          fddd          \  }}t          ||d           d S )	N         c                     | dz  dz
  z  S )Nr!   r     xns    Elib/python3.11/site-packages/scipy/integrate/tests/test_quadrature.py<lambda>z+TestFixedQuad.test_scalar.<locals>.<lambda>   s    a!A#'l     r   r&   -q=rtol)r   r	   )selfexpectedgot_r&   s       @r'   test_scalarzTestFixedQuad.test_scalar   sT    ac72222AqA>>>QXE222222r)   c                     d}t          j        dd|z            ddz   z  }t          fddd|          \  }}t          ||d           d S )	Nr   r    r!   c                 "    | d d d f         z  S Nr#   )r%   ps    r'   r(   z+TestFixedQuad.test_vector.<locals>.<lambda>   s    a111d7m r)   r   r*   r+   r,   )nparanger   r	   )r.   r&   r/   r0   r1   r6   s        @r'   test_vectorzTestFixedQuad.test_vector   si    Ia1a!e93333QQ???QXE222222r)   N)__name__
__module____qualname__r2   r9   r#   r)   r'   r   r      s2        3 3 33 3 3 3 3r)   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zej                            d          d             Zd Zej                            dddg          d             Zd ZdS )TestQuadraturec                     t           r5   )NotImplementedError)r.   r%   abargss        r'   r   zTestQuadrature.quad   s    !!r)   c                 h    d }t          |dt          d          \  }}d}t          ||d           d S )Nc                 \    t          || z  |t          |           z  z
            t          z  S r5   r   r%   r&   zs      r'   myfuncz.TestQuadrature.test_quadrature.<locals>.myfunc$   '    qs1SVV8|$$R''r)   r   r!   ?ۗ?   decimal)r   r   r   r.   rH   valerr	table_vals        r'   test_quadraturezTestQuadrature.test_quadrature"   sH    	( 	( 	(faX66S*	CA666666r)   c                 l    d }t          |dt          dd          \  }}d}t          ||d           d S )Nc                 b    dt          || z  |t          |           z  z
            z  t          z  S )NY)	kRr   rF   s      r'   rH   z3TestQuadrature.test_quadrature_rtol.<locals>.myfunc+   s,    #ac!CFF(l+++B..r)   r   rJ   绽|=r,   .<Rr   r   r	   rP   s        r'   test_quadrature_rtolz#TestQuadrature.test_quadrature_rtol*   sM    	/ 	/ 	/faXEBBBS1	YU333333r)   c                     d }d}dD ]C}t          |dt          d|          \  }}t          ||d           t          |d	k                Dd S )
Nc                 \    t          || z  |t          |           z  z
            t          z  S r5   r   rF   s      r'   rH   z6TestQuadrature.test_quadrature_miniter.<locals>.myfunc3   rI   r)   rL   )   4   r   rJ   )miniterrM   rN         ?)r   r   r   r
   )r.   rH   rS   r`   rQ   rR   s         r'   test_quadrature_miniterz&TestQuadrature.test_quadrature_miniter1   su    	( 	( 	(*	 	 	G!&!R7KKKHCY::::C#I	 	r)   c                 l    d }t          |dt          dd          \  }}d}t          ||d           d S )Nc                 b    dt          || z  dt          |           z  z
            z  t          z  S )NrW   rK   r   r$   s     r'   rH   z:TestQuadrature.test_quadrature_single_args.<locals>.myfunc<   s,    #ac#c!ff*n---b00r)   r   r!   rX   rC   r-   rY   r,   rZ   rP   s        r'   test_quadrature_single_argsz*TestQuadrature.test_quadrature_single_args;   sM    	1 	1 	1fa!%@@@S1	YU333333r)   c                 d    d }t          |dt          d          }d}t          ||d           d S )Nc                 \    t          || z  |t          |           z  z
            t          z  S r5   r   rF   s      r'   rH   z+TestQuadrature.test_romberg.<locals>.myfuncD   rI   r)   r   rJ   )rC   rL   rM   rN   )r   r   r   r.   rH   rQ   rS   s       r'   test_rombergzTestQuadrature.test_rombergB   sG    	( 	( 	(fa(333*	CA666666r)   c                 f    d }t          |dt          dd          }d}t          ||d           d S )Nc                 b    dt          || z  |t          |           z  z
            z  t          z  S )Ng =`XCr   rF   s      r'   rH   z0TestQuadrature.test_romberg_rtol.<locals>.myfuncL   s,    AaC#a&&L)))",,r)   r   rJ   rX   re   g3>Cr,   )r   r   r	   ri   s       r'   test_romberg_rtolz TestQuadrature.test_romberg_rtolJ   sI    	- 	- 	-fa(???/	YU333333r)   c                 d    t          t          t          j        d                    d           d S )N      )r   r   r7   r8   )r.   s    r'   	test_rombzTestQuadrature.test_rombR   s(    T")B--((#.....r)   c                 *   t          j        d          }t          j        d|z            }t          |          }t	          d |                                |                                          \  }}t          ||dd           t                      5 }|	                    t          d           t          d |                                |                                d	
          }d d d            n# 1 swxY w Y   t          ||dd           d S )Nro   皙?c                 0    t          j        d| z            S Nrs   r7   r   r%   s    r'   r(   z2TestQuadrature.test_romb_gh_3731.<locals>.<lambda>Z   s    26#a%== r)   g:0yE>r   r-   atolzdivmax .4. exceededc                 0    t          j        d| z            S ru   rv   rw   s    r'   r(   z2TestQuadrature.test_romb_gh_3731.<locals>.<lambda>`   s    RVCE]] r)   r   )divmaxr+   )r7   r8   r   r   r   minmaxr	   r   filterr   r   )r.   r%   yrQ   val2rR   supval3s           r'   test_romb_gh_3731z TestQuadrature.test_romb_gh_3731U   s;   IfF3q5MM1gg00!%%''15577CC	cT15555    	PCJJ(=>>>22AEEGGQUUWWQOOOD	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	TA666666s   AC55C9<C9c                 b    dd l }t          |j        dd          }d}t          ||d           d S )Nr   r    g?k?rM   rN   )mathr   r   r   )r.   r   valmathexpected_vals       r'   test_non_dtypezTestQuadrature.test_non_dtypec   s>    $(Aq))*G\1======r)   c                    d}t          |d          \  }}t          ||t          j        ddg          z             t	          ||dz   dz             d}t          |d          \  }}t	          ||t          j        g d          z  dz             t	          ||dz   d	z             d}t          |d          \  }}t	          ||t          j        g d
          z  dz             t	          ||dz   dz             d}t          |d          \  }}t	          ||t          j        g d          z  dz             t	          ||dz   dz             dS )z5Test the first few degrees, for evenly spaced points.r          ?         (@r!   )ra         @ra         @r^   g     @)ra         @r   ra          @g     P@r   )      @      @@r   r   r   g     V@rM   g     =AN)r   r   r7   arrayr   )r.   r&   wtserrcoffs       r'   test_newton_cotesz TestQuadrature.test_newton_cotesj   sq   #Aq))WS!BHc3Z000111GadU4Z000#Aq))WC28OOO#<#<!<S!@AAAGadU6\222#Aq))WC28,@,@,@#A#A!A#!EFFFGadU6\222#Aq))WC28,H,H,H#I#I!I$!NOOOGadU9_55555r)   c                 V   t          j        g d          }|dz  }t          |          \  }}d}t          j        ||          }t	          ||           t          j        g d          }|dz  }t          |          \  }}d}t          j        ||          }t	          ||           dS )z9Test newton_cotes with points that are not evenly spaced.)        g      ?       @r!   gUUUUUU@)r   gffffff?g @r         "@N)r7   r   r   dotr   )r.   r%   r   r   r   exact_integralnumeric_integrals          r'   test_newton_cotes2z!TestQuadrature.test_newton_cotes2   s     H___%%qD#AW6#q>>,n===H)))**qD#AW6#q>>,n=====r)   zignore::DeprecationWarningc           
      "   t          j        d          }t          t          |          d           t          t          |d          d           t          t          |t          j        ddd                    d	           t          j        d          }d
|z  }t          t          ||d          d           t          t          ||d          d           t          t          ||d          d           t          j        ddd          }d }t          t           ||          |d          d           t          t           ||          |d          d           t          j        ddd          }t          t           ||          dd          d           t          t           ||          dd          d           t          j        d                              dd          }t          j        d                              ddd          } ||          }t          d          D ]}t          ||d|          }t          j        |d g!          }|D ]}t          |j
                  }	|	                    |t          d                      |t          |	                   d"         dz  dz  |t          |	                   d         dz  dz  z
  }
t          ||j
                 |
           t          j        d                              d#d
          } ||          }d$D ][}t          |||d"          }d|d d df         |d d df         z   z  |d d df         |d d df         z
  z  }
t          ||
           \t          j        d%                              d&d&          }t          j        d'                              d&d&d&          } ||          }t          d          D ]}t          |||(          }t          j        |d g!          }|D ]}t          |j
                  }	|	                    |t          d                      |t          |	                   d"         dz  dz  |t          |	                   d         dz  dz  z
  }
t          ||j
                 |
           t          j        dg          }t          j        |d
          }t          t          ||d(          d)           t          t          ||d"(          d)           t          j        g d*          }t          j        |d
          }t          t          ||d(          d)           t          t          ||d"(          d)           t          j        g d+g d+g d+g          }t          j        |d
          }g d,}d-gdz  }t          t          ||d(          |           t          t          ||d"(          |           t          j        g d+g d+g d.g          }t          j        |d
          }g d/}g d0}t          t          ||d(          |           t          t          ||d"(          |           d S )1Nro   rp   r   dx@   r   r   rw       r!   avgr%   eveng     +@firstg     +@last   r    c                     | dz  S )Nr!   r#   rw   s    r'   fz&TestQuadrature.test_simpson.<locals>.f   s    a4Kr)   r         5@g*5@rM   r   )r   r   r   gUUUUU\@         P@r   )r%   r   axismulti_index)flags   )r   r   r   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@)r7   r8   r   r   linspacer	   reshaperangenditerlistr   insertslicetupler   power)r.   r   r%   r   rA   iritr1   idxintegralr   	zero_axisdefault_axiss                 r'   test_simpsonzTestQuadrature.test_simpson   sn   IbMMWQZZ%%%WQ3''',,,WQ"+aB"7"7888"===IaLLqDWQ!%000&999WQ!'222E:::WQ!&1112666 K1a  	 	 	 	!	:::DAAA!666AAA K1a  !9===sCCC!59999EEE IbMM!!!Q''IcNN""1a++AaDDq 	= 	=AQYQ777A1]O444B = =2>**

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

mA6F6IA6MM". 18<<<<	= IbMM!!!Q''AaDD7 	) 	)DQT333Aa1g!!!Q$/0AaaadGa1g4EFHAx(((( IbMM!!!Q''IcNN""1a++AaDDq 	= 	=AQQ'''A1]O444B = =2>**

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

mA6F6IA6MM". 18<<<<	= HaSMMHQNNQQ///555QR000#666H\\\""HQNNQQ///555QR000#666HlllLLL,,,?@@HQNN(((	!{QQQ///;;;QR000,???HlllLLL...ABBHQNN000	>>>QQ///;;;QR000,?????r)   c                     t          j        ddd          }|dz  }t          j                    5  t	          ||d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r!   r   r   )r7   r   pytestdeprecated_callr   r.   r%   r   s      r'   test_simpson_even_is_deprecatedz.TestQuadrature.test_simpson_even_is_deprecated   s    K1a  qD#%% 	* 	*A))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   AAAdroplastFTc                     t          j        g dg dg          }|r|d d d df         }t          |d          }t          t          j        |t           j                  d          }t	          ||           d S )N)r!   r!   r   r   r   r   r^   )r   r   r!   r   
      r   r   )r   )dtype)r7   r   r   float64r   )r.   r   r   resultr/   s        r'   test_simpson_2d_integer_no_xz+TestQuadrature.test_simpson_2d_integer_no_x   s     H///3335 6 6 	!!!SbS&	A$$$28ARZ888rBBBVX&&&&&r)   c                     t          j        d          }d|z  }t          t          ||d          t	          ||d                     d S )Nr^   r!   r   r%   r   )r7   r8   r	   r   r   r.   r   r%   s      r'   
test_simpszTestQuadrature.test_simps   sX    IaLLqDAs###!qS!!!	
 	
 	
 	
 	
r)   N)r:   r;   r<   r   rT   r[   rb   rf   rj   rm   rq   r   r   r   r   r   markfilterwarningsr   r   parametrizer   r   r#   r)   r'   r>   r>      sL       " " "7 7 74 4 4  4 4 47 7 74 4 4/ / /7 7 7> > >6 6 6,> > >$ [ <==U@ U@ >=U@n* * * [Z%77	' 	' 87	'
 
 
 
 
r)   r>   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestCumulative_trapezoidc                     t          j        ddd          }|}t          ||d          }g d}t          ||           t          ||d           }t          ||dd                     d S )	Nr   r!   r^   numr   initial)r                r   r   r    r7   r   r   r	   )r.   r%   r   y_int
y_expecteds        r'   test_1dz TestCumulative_trapezoid.test_1d  s~    KA1%%%$Q1555...
z***$Q4888z!""~.....r)   c                    t          j        d                              ddd          }|}t          ||d          }t          j        g dg dgg d	g d
gg dg dgg          }t          ||           g d}t          g d|          D ]U\  }}t          ||d|          }t          |j        d           t          ||d |          }t          |j        |           Vd S )N   r   r!   r   r   r   )r   r   r         @)r   r         $@     0@)r         !@      2@g     <@)r         )@g      :@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!   g@)r   r   )r   r!   r   )	r7   r8   r   r   r   r	   zipr   shape)r.   r%   r   r   r   shapesr   r   s           r'   test_y_nd_x_ndz'TestCumulative_trapezoid.test_y_nd_x_nd  s4   Ii  ((Aq11$Q1555X 2 2 2 4 4 4 6 4 4 4 5 5 5 7 5 5 5 5 5 5 7	8 9 9
 	z*** 322yyy&11 	- 	-KD%(At$GGGEi000(At$GGGEe,,,,		- 	-r)   c           	         t          j        d                              ddd          }t          j        d          dz  }t          j        g dg dgg dg dgg          t          j        g d	gg d
gg dgg          t          j        g dg dgg dg dgg dg dgg          f}t	          g d|          D ];\  }}t          ||d |j        |                  |d           }t          ||           <d S )Nr   r   r!   r   )r         @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   g      *@)r   g      3@g      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   )r7   r8   r   r   r   r   r   r	   )r.   r   r%   ys_expectedr   r   r   s          r'   test_y_nd_x_1dz'TestCumulative_trapezoid.test_y_nd_x_1d&  s~   Ii  ((Aq11IaLL!O H''')))+++++++-. / / H'''(+++,+++,. / / H''')''')))+))))))+	, - -. !$III{ ; ; 	/ 	/D*(a.?d157 7 7EE:....	/ 	/r)   c                 Z   t          j        ddd          }t          |          }g d}t          ||           t          |d          }g d}t          ||           t          |d	
          }g d}t          ||           t          |d	d          }g d}t          ||           d S )Nr   r!   r^   r   )r   r   r   r   Gz?r   )r   r   r   r   r   r   r   )            r  r   )r   r   )r   r  r  r  r   r   )r.   r   r   r   s       r'   test_x_nonez$TestCumulative_trapezoid.test_x_none>  s    KA1%%%$Q''***
z***$Q555000
z***$Q1---***
z***$Q1d;;;000
z*****r)   c           
          t          j        d                              ddd          }|}t          t	          ||ddd          t          ||ddd          d	           d S )
Nr   r   r!   r   r   r   )r   r   r   +=r,   )r7   r8   r   r	   r   r   r   s      r'   test_cumtrapzz&TestCumulative_trapezoid.test_cumtrapzQ  sx    Ii  ((Aq11,Qc1MMM A#AqAAA"	$ 	$ 	$ 	$ 	$ 	$r)   N)r:   r;   r<   r   r   r   r  r  r#   r)   r'   r   r     s_        / / /- - -*/ / /0+ + +&$ $ $ $ $r)   r   c                       e Zd ZdZd Zd ZdS )TestTrapezoidz[This function is tested in NumPy more extensive, just do some
    basic due diligence here.c           
      ~   t          j        d          }t          t          |          d           t          t          |d          d           t          t          |t          j        ddd                    d	           t          j        d          }d
|z  }t          t          ||d          d           d S )Nro   rp   r   r   r   r   r   rw   r   r!   g?r   g      +@)r7   r8   r   r   r   r   s      r'   test_trapezoidzTestTrapezoid.test_trapezoid]  s    IbMMYq\\3'''YqS)))2...YqBK1b$9$9:::B???IaLLqDYqA#...55555r)   c           	          t          j        d          }d|z  }t          t          ||dd          t	          ||dd                     d S )Nr   r!   r   r   )r%   r   r   )r7   r8   r   r   r   r   s      r'   
test_trapzzTestTrapezoid.test_trapzg  s[    IaLLqDYqA#A6661c222	4 	4 	4 	4 	4r)   N)r:   r;   r<   __doc__r
  r  r#   r)   r'   r  r  Z  s<        ! !6 6 64 4 4 4 4r)   r  c                      e Zd Zd Zdd ej        d          fdZej        	                    dddg          ej        	                    ddd	g          d
                         Z
ej        	                    dddgddgddgddgg          d             Zej        	                    dddg          d             Zd ZdS )TestQMCQuadc           	         d}t          j        t          |          5  t          dddgddg           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d ddgddg           d d d            n# 1 swxY w Y   d }d	}t          j        t          |          5  t          |ddgddg           d d d            n# 1 swxY w Y   d
}t          j        t          |          5  t          d ddgddgd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d ddgddgd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d ddgddgd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d ddgddgt          j        	                    d                     d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d ddgddgd           d d d            d S # 1 swxY w Y   d S )Nz`func` must be callable.matchza duckr   r    z/`func` must evaluate the integrand at points...c                      dS Nr    r#   r#   r)   r'   r(   z3TestQMCQuad.test_input_validation.<locals>.<lambda>w  s    Q r)   c                 D    | j         dk    sJ t          j        |           S r  )ndimr7   sumrw   s    r'   funcz/TestQMCQuad.test_input_validation.<locals>.funcy  s    6Q;;;;6!99r)   z8Exception encountered when attempting vectorized call...z`n_points` must be an integer.c                     dS r  r#   rw   s    r'   r(   z3TestQMCQuad.test_input_validation.<locals>.<lambda>      q r)   g     @)n_pointsz!`n_estimates` must be an integer.c                     dS r  r#   rw   s    r'   r(   z3TestQMCQuad.test_input_validation.<locals>.<lambda>  r  r)   r   )n_estimatesz8`qrng` must be an instance of scipy.stats.qmc.QMCEngine.c                     dS r  r#   rw   s    r'   r(   z3TestQMCQuad.test_input_validation.<locals>.<lambda>  r  r)   )qrngz8`qrng` must be initialized with dimensionality equal to c                     dS r  r#   rw   s    r'   r(   z3TestQMCQuad.test_input_validation.<locals>.<lambda>  r  r)   z,`log` must be boolean \(`True` or `False`\).c                     dS r  r#   rw   s    r'   r(   z3TestQMCQuad.test_input_validation.<locals>.<lambda>  r  r)   r   log)
r   raises	TypeErrorr   
ValueErrorwarnsUserWarningr   qmcSobol)r.   messager  s      r'   test_input_validationz!TestQMCQuad.test_input_validationp  s   ,]9G444 	/ 	/X1v1v...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ D]:W555 	0 	0YYAA///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0	 	 	 M\+W555 	+ 	+TAq6Aq6***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 3]9G444 	C 	C[[1a&1a&6BBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 6]9G444 	C 	C[[1a&1a&cBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C M]9G444 	A 	A[[1a&1a&x@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A M]:W555 	K 	K[[1a&1a&uyq7I7IJJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K B]9G444 	: 	:[[1a&1a&b9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   A  AA(BBB6CCC D%%D),D)E22E69E6F??GG'6H))H-0H-I77I;>I;   r   r!   c           	      V   d}t          j        |          t          j        |          fdt           j                            d          }t
          j                            ||          }t          j        |          }t          j        |          |z  }t          |||||          }	t
          j
                            ||          }
t          j        |dz
  d          |	j        z  }t          |	j        |
|	           t          j        |          |	j        z  d
k    sJ t           j                            d          }t
          j                            ||          }t          fd||||d|          }t          t          j        |j                  |	j        d           t          j        |j                  t          j        |          d
k     rt           j        nd
k    sJ t          t          j        |j                  |	j        dd           d S )Nr!   c                 P    t           j                            | j                  S r5   )r   multivariate_normalpdfT)r%   covmeans    r'   r  z$TestQMCQuad.basic_test.<locals>.func  s     ,00dC@@@r)   l   ^^@E9? )seed)r  r  r  )lower_limitr    gףp=
?)ry   r   c                  2    t          j         |            S r5   )r7   r#  )rC   r  s    r'   r(   z(TestQMCQuad.basic_test.<locals>.<lambda>  s    ttT{(;(; r)   T)r  r  r#  r  r  r,   gؗҜ<rx   )r7   zeroseyerandomdefault_rngr   r)  r*  onesr   r0  cdfscstdtritstandard_errorr	   r   prodexpimagr   )r.   r  r  signsr  rngr  rA   rB   resrefry   logresr3  r  r4  s                @@@r'   
basic_testzTestQMCQuad.basic_test  s   x~~fTll	A 	A 	A 	A 	A 	A i##$788yt#..HTNNGDMME!tQH#.T; ; ;'++AtSa+HHz+a-//#2DDc5555wu~~cl*Q....i##$788yt#..;;;;Q#+"/ / / 	v//EJJJJwv''RWU^^a5G5GBEEQOOOOv455*U	D 	D 	D 	D 	D 	Dr)   r  i   r  r   c                 2    |                      ||           d S r5   rI  )r.   r  r  s      r'   
test_basiczTestQMCQuad.test_basic  s     	+.....r)   rD  r    r   c                 2    |                      |           d S )N)rD  rK  )r.   rD  s     r'   	test_signzTestQMCQuad.test_sign  s    e$$$$$r)   r#  FTc                     d}t          j        t          |          5  t          d ddgddg|          }d d d            n# 1 swxY w Y   |j        |rt
          j         ndk    sJ |j        dk    sJ d S )Nz-A lower limit was equal to an upper limit, sor  c                     dS r  r#   rw   s    r'   r(   z'TestQMCQuad.test_zero.<locals>.<lambda>  s    Q r)   r   r    r"  )r   r'  r(  r   r   r7   infr@  )r.   r#  r+  rF  s       r'   	test_zerozTestQMCQuad.test_zero  s    A\+W555 	A 	A;;AAC@@@C	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A|3 5A6666!Q&&&&&&s   AA
Ac                     d }t          |dd          }t          j                            dd          t          j                            dd          z
  }t	          |j        |d           d S )Nc                 D    t           j                            | d          S )Nr!   scale)r   normr1  rw   s    r'   r  z-TestQMCQuad.test_flexible_input.<locals>.func  s    :>>!1>---r)   r   r    r!   rU  g{Gz?)r   r   rW  r=  r	   r   )r.   r  rF  rG  s       r'   test_flexible_inputzTestQMCQuad.test_flexible_input  sl    	. 	. 	. tQ""jnnQan((5:>>!1>+E+EEc400000r)   N)r:   r;   r<   r,  r7   r<  rI  r   r   r   rL  rN  rR  rX  r#   r)   r'   r  r  o  s+       ": ": ":H #'AWRWQZZ D D D D< [Z$77[]QG44/ / 54 87/ [W1vBx"a1b'&JKK% % LK% [UUDM22' ' 32'1 1 1 1 1r)   r  )$r   numpyr7   r   r   r   numpy.testingr   r   r	   r
   r   scipy.integrater   r   r   r   r   r   r   r   r   r   r   r   r   r   scipyr   r   r>  r   r>   r   r  r  r#   r)   r'   <module>r]     s&                 7 7 7 7 7 7 7 7 7 7 7 7 7 7' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' & & & & & & &3 3 3 3 3 3 3 3 e
 e
 e
 e
 e
 e
 e
 e
PQ$ Q$ Q$ Q$ Q$ Q$ Q$ Q$h4 4 4 4 4 4 4 4*\1 \1 \1 \1 \1 \1 \1 \1 \1 \1r)   