
    bi                         d dl Z d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 e j                  j                  dg d      Zd Zd	 Z ee       G d
 d             Zy)    N)assert_allclose)quad_vec)make_xp_test_case)Pool
quadrature)Ngk15gk21	trapezoidc                     dd| dz  z   z  S N       xs    _/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/integrate/tests/test__quad_vec.py
_lorenzianr      s    AqD>    c                 >    | | |z   z  t        j                  d      z  S N   nparanger   as     r   _func_with_argsr      s    A;1%%r   c                      e Zd Zed        Zed        Zd Zej                  j                  d      d        Z
ej                  j                  d      ej                  j                  dddg      ej                  j                  d	d
 ej                  dej                  j                  d            g      d                      Zed        Zd Zd Zej                  j                  dddej&                  fej&                  dfej&                   ej&                  fej&                  ej&                   fg      d        Zy)TestQuadVecc           	        	 t        j                  d      		fd}dD ]  }|dk(  r|dk  rt        ||      }d	dz   z  	dz   z  }t        |d	dfd
di|\  }}t	        ||d	|       t        |d	dfd
di|\  }}t         j
                  j                  ||z
        |k  sJ t        |d	dfddd|\  }}t	        ||d	|       t        |d	dfddddd|^}}}t	        ||d	|        y )N
   c                     | z  S Nr   )r   ns    r   fz+TestQuadVec.test_quad_vec_simple.<locals>.f   s    6Mr   皙?gMbP?gư>r
   -C6?)epsabsr   r   r   r   normmaxrtolatol2)      ?      ?)r*   pointsg:0yE>Ti'  )r*   epsrelfull_outputlimit)r   r   dictr   r   linalgr*   )
selfr   r%   r)   kwargsexactreserrrestr$   s
            @r   test_quad_vec_simplez TestQuadVec.test_quad_vec_simple   s(   IIbM	' 	=F[(Vd]J?F!Ha!e$E1a>e>v>HCCQV<1a<c<V<HC99>>#+.7771aQeJQ&QHCCQV<&q!Q .U+/04*/. '-	.OCt
 CQV</	=r   c           
         d }dD ]  }|dk(  r|dk  rt        d||      }t        |dt        j                  fi |\  }}t	        |t        j
                  dz  dt        ||      	       t        |dt        j                   fi |\  }}t	        |t        j
                   dz  dt        ||      	       t        |t        j                   dfi |\  }}t	        |t        j
                  dz  dt        ||      	       t        |t        j                  dfi |\  }}t	        |t        j
                   dz  dt        ||      	       t        |t        j                   t        j                  fi |\  }}t	        |t        j
                  dt        ||      	       t        |t        j                  t        j                   fi |\  }}t	        |t        j
                   dt        ||      	       t        |t        j                  t        j                  fi |\  }}t	        |ddt        ||      	       t        |t        j                   t        j                   fi |\  }}t	        |ddt        ||      	       t        |dt        j                  fd
di|\  }}t	        |t        j
                  dz  dt        ||      	        d }t        j
                  t        j                  z  t        j                  d      z  }d}t        |t        j                   t        j                  dd||d      \  }}}|j                  dk(  sJ t	        ||dt        |d|z        	       y )Nc                 >    ddt        j                  |       dz  z   z  S r   )r   float64r   s    r   r%   z/TestQuadVec.test_quad_vec_simple_inf.<locals>.f9   s    BJJqMQ..//r   r&   r
   r(   r+   )r*   r)   r   r   r   r,   r2   )r1   g       @c                 D    t        j                  | dz         d| dz  z   z  S )Nr   r   )r   sinr   s    r   r%   z/TestQuadVec.test_quad_vec_simple_inf.<locals>.f^   s!    66!a%=AQJ//r   gh㈵>i  T)r5   r*   r)   r   r4   r   g      ?)
r6   r   r   infr   pir+   erC   status)	r8   r   r%   r)   r9   r;   r<   r:   infos	            r   test_quad_vec_simple_infz$TestQuadVec.test_quad_vec_simple_inf7   s   	0 (  	IF[(Vd]uV
KF1bff77HCCqqs637GH1rvvg88HCC"%%FC8HIBFF7A88HCCqqs637GH266177HCC"%%FC8HIBFF7BFF=f=HCCQS5EF266BFF7=f=HCC"%%ac&#6FG266266<V<HCCVS1ABBFF7RVVG>v>HCCVS1AB1bffJZJ6JHCCqqs637GHA 	ID	0rvvay(!!bffWbffDu)/J.24S$ {{aUVS3Y1GHr   c                     d }d}t        j                  g d      }t        |dd|f      \  }}t        ||dd       y )	Nc                 >    | | |z   z  t        j                  d      z  S r   r   r   s     r   r%   z)TestQuadVec.test_quad_vec_args.<locals>.fk   s    A;1--r   r   r   gUUUUUU?gUUUUUU@r   r   )argsr(   r,   )r   arrayr   r   )r8   r%   r   r:   r;   r<   s         r   test_quad_vec_argszTestQuadVec.test_quad_vec_argsj   s>    	.'Aq!1$/SU6r   r!   c           	         t         }t        |t        j                   t        j                  ddd      \  }}t	        |t        j
                  dd       t        d      5 }d }t        |t        j                   t        j                  dd|j                        \  }}t	        |t        j
                  dd       d d d        y # 1 sw Y   y xY w)	Nr+   r(      )r*   r)   workersr   r,   r!   c                     dd| dz  z   z  S r   r   r   s    r   r%   z)TestQuadVec.test_quad_vec_pool.<locals>.fz   s    AQJ''r   )r   r   r   rD   r   rE   r   map)r8   r%   r;   r<   pool_s         r   test_quad_vec_poolzTestQuadVec.test_quad_vec_pools   s    AwU4QRSSRUU6"X 	;(a"&&"&&uT&*hh0FCCQT:	; 	; 	;s    ACC
extra_argsr   )r   rR   r   rQ   )marksc                    t         }t        j                  g d      }t        |dd||      \  }}t	        ||dd       t        |      5 }t        |dd||j                        \  }}t	        ||dd       d d d        y # 1 sw Y   y xY w)NrL   r   r   )rM   rR   r(   r,   )r   r   rN   r   r   r   rT   )r8   rX   rR   r%   r:   r;   r<   rU   s           r   test_quad_vec_pool_argsz#TestQuadVec.test_quad_vec_pool_args   s     'Aq!*gFSU6'] 	;d1aj$((KHCCQT:	; 	; 	;s   -BB
c                 f    fd}dgt        |dddd|      }|d   j                  d   k(  sJ y )Nc                 (    dxx   dz  cc<   | dz  S )Nr   r      r   )r   counts    r   r%   z$TestQuadVec.test_num_eval.<locals>.f   s    !HMHa4Kr   r   r   r+   T)r*   r4   r   r   )r   neval)r8   r   r%   r;   r_   s       @r   test_num_evalzTestQuadVec.test_num_eval   s?    	 q!QUT1v||uQx'''r   c                    d }t        |dddd      \  }}}|j                  du sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dkD  sJ |j
                  j                  d   dk(  sJ |j                  j                  |j
                  j                  d   d	ddfk(  sJ |j                  j                  |j
                  j                  d   fk(  sJ y )
Nc                 ,    t        j                  d      S )N)r   r   r   )r   onesr   s    r   r%   z TestQuadVec.test_info.<locals>.f   s    779%%r   r   r   r+   T)r*   r4   zTarget precision reached.r   r   )	r   successrG   messager`   	intervalsshape	integralserrors)r8   r%   r;   r<   rH   s        r   	test_infozTestQuadVec.test_info   s    	& "!Q4HS$||t###{{a||::::zzA~~~~##A&!+++~~##(<(<Q(?Aq'IIII{{  T^^%9%9!%<$>>>>r   c                     d }d }t        |ddd      \  }}}|j                  dk(  sJ t        |ddd      \  }}}|j                  dk(  sJ y )Nc                 "    t         j                  S r#   )r   nanr   s    r   f_nanz'TestQuadVec.test_nan_inf.<locals>.f_nan   s    66Mr   c                 6    | dk  rt         j                  S d| z  S )Nr'   r   )r   rD   r   s    r   f_infz'TestQuadVec.test_nan_inf.<locals>.f_inf   s    W266-!A#-r   r   r   T)r4   r   )r   rG   )r8   ro   rq   r;   r<   rH   s         r   test_nan_infzTestQuadVec.test_nan_inf   s^    		. "%A4@S${{a!%A4@S${{ar   za,b)r   r   r   c                   	 d}|t        d |D              z  }d	g d	fd}t        ||||dd       D ]G  }t        j                  t	        |      t        |            }t        j
                  ||d   k(        rGJ  y )N)r   g      ?r0   g      ?r1   c              3   "   K   | ]  }|  	 y wr#   r   ).0r   s     r   	<genexpr>z*TestQuadVec.test_points.<locals>.<genexpr>   s     +q+s      r   c                     z  dk(  rj                  t                      dz  d   j                  t        |              y)Nr   r   g        )appendsetaddfloat)r   r_   interval_setsquadrature_pointss    r   r%   z"TestQuadVec.test_points.<locals>.f   sF     ((A-$$SU+QJE"!!%(+r   r   )r2   r   r5   )tupler   r   searchsortedsortedall)
r8   r   br2   r%   pjr_   r~   r   s
          @@@r   test_pointszTestQuadVec.test_points   s     +%+F+++	 	AqF!D  	%Ava9A66!qt)$$$	%r   N)__name__
__module____qualname__quadrature_paramsr>   rI   rO   pytestmark	fail_slowrW   parametrizeparamparallel_threads_limitr[   ra   rk   rr   r   rD   r   r   r   r   r   r      sU   = =< /I /Id7 [[2
; 
; [[2[[\At95[[	
LFLL6;;#E#Ea#HIJ	;	 6 	; ( (?  [[UVa[2661+&(ffWbff$57H%J K%K%r   r   )r   numpyr   numpy.testingr   scipy.integrater   scipy._lib._array_apir   multiprocessing.dummyr   r   r   r   r   r   r   r   r   r   <module>r      s_      ) $ 3 & KK++57 & 8}% }% }%r   