a
    Re                  	   @   s
  d dl Z d dlZd dlmZ d dlmZ d dlmZ e j	
dg dZedd Zed	d
 Zdd Zdd Zdd Zdd Ze j	
dddge j	
dddgdd Zedd Zdd Zdd  Ze j	
d!d"d ejfejd fej ejfejej fgd#d$ ZdS )%    N)assert_allclose)quad_vec)Pool
quadrature)Ngk15Zgk21	trapezoidc                    s  t d  fdd}dD ]}| dkr0|dk r0qt|| d}d d	   d	  }t|d
dfddi|\}}t||d
|d t|d
dfddi|\}}t j|| |k sJ t|d
dfddd|\}}t||d
|d t|d
dfddddd|^}}}t||d
|d qd S )N
   c                    s   |   S N xnr
   X/var/www/sunrise/env/lib/python3.9/site-packages/scipy/integrate/tests/test__quad_vec.pyf   s    ztest_quad_vec_simple.<locals>.f皙?gMbP?gư>r   -C6?)epsabsr         r   normmaxZrtolZatol2)      ?      ?)r   pointsg:0yE>Ti'  )r   Zepsrelfull_outputlimit)nparangedictr   r   Zlinalgr   )r   r   r   kwargsexactreserrrestr
   r   r   test_quad_vec_simple   s*    
r(   c              
   C   s  dd }dD ]}| dkr$|dk r$qt d|| d}t|dtjfi |\}}t|tjd	 dt||d
 t|dtj fi |\}}t|tj d	 dt||d
 t|tj dfi |\}}t|tjd	 dt||d
 t|tjdfi |\}}t|tj d	 dt||d
 t|tj tjfi |\}}t|tjdt||d
 t|tjtj fi |\}}t|tj dt||d
 t|tjtjfi |\}}t|ddt||d
 t|tj tj fi |\}}t|ddt||d
 t|dtjfddi|\}}t|tjd	 dt||d
 qdd }tjtj td	 }d}t|tj tjdd|| dd\}}}|j	dkszJ t||dt|d| d
 d S )Nc                 S   s   ddt | d   S Nr   r   )r    float64r   r
   r
   r   r   0   s    z#test_quad_vec_simple_inf.<locals>.fr   r   r   r   )r   r   r   r   r   r   r   )r   g       @c                 S   s   t | d d| d   S )Nr   r   )r    sinr   r
   r
   r   r   U   s    gh㈵>i  T)r   r   r   r   r   r   g      ?)
r"   r   r    infr   pir   er+   status)r   r   r   r#   r%   r&   r$   infor
   r
   r   test_quad_vec_simple_inf.   s>    
 r1   c                  C   sD   dd } d}t g d}t| dd|fd\}}t||ddd	 d S )
Nc                 S   s   | | |  t d S N   r    r!   r   ar
   r
   r   r   a   s    ztest_quad_vec_args.<locals>.fr   r   gUUUUUU?gUUUUUU@r   r   )argsr   r   )r    arrayr   r   )r   r6   r$   r%   r&   r
   r
   r   test_quad_vec_args`   s
    r:   c                 C   s   dd| d   S r)   r
   r   r
   r
   r   
_lorenzianj   s    r;   c               	   C   s   t } t| tj tjdddd\}}t|tjddd tdJ}dd	 } t| tj tjdd|jd\}}t|tjddd W d    n1 s0    Y  d S )
Nr   r      )r   r   workersr   r   r   c                 S   s   dd| d   S r)   r
   r   r
   r
   r   r   t   s    ztest_quad_vec_pool.<locals>.f)r;   r   r    r,   r   r-   r   map)r   r%   r&   poolr
   r
   r   test_quad_vec_pooln   s    
 r@   c                 C   s   | | |  t d S r2   r4   r5   r
   r
   r   _func_with_argsz   s    rA   
extra_argsr   )r   r=   r   r   c                 C   s   t }tg d}t|dd| |d\}}t||ddd t|8}t|dd| |jd\}}t||ddd W d    n1 s~0    Y  d S )Nr7   r   r   )r8   r=   r   r   )rA   r    r9   r   r   r   r>   )rB   r=   r   r$   r%   r&   r?   r
   r
   r   test_quad_vec_pool_args~   s    
rC   c                    s@    fdd}dg t |dddd| d}|d j d ks<J d S )	Nc                    s    d  d7  < | d S )Nr   r      r
   r   countr
   r   r      s    ztest_num_eval.<locals>.fr   r   r   T)r   r   r   r   )r   neval)r   r   r%   r
   rE   r   test_num_eval   s    rH   c                  C   s   dd } t | ddddd\}}}|jdu s.J |jdks<J |jdksJJ |jdksXJ |jjd d	kslJ |jj|jjd d
d	dfksJ |jj|jjd fksJ d S )Nc                 S   s
   t dS )N)r3   r   r   )r    Zonesr   r
   r
   r   r      s    ztest_info.<locals>.fr   r   r   T)r   r   zTarget precision reached.r   r3   )	r   successr/   messagerG   Z	intervalsshapeZ	integralserrors)r   r%   r&   r0   r
   r
   r   	test_info   s     rM   c                  C   s\   dd } dd }t | dddd\}}}|jd	ks4J t |dddd\}}}|jd	ksXJ d S )
Nc                 S   s   t jS r	   )r    nanr   r
   r
   r   f_nan   s    ztest_nan_inf.<locals>.f_nanc                 S   s   | dk rt jS d|  S )Nr   r   )r    r,   r   r
   r
   r   f_inf   s    ztest_nan_inf.<locals>.f_infr   r   T)r   r3   )r   r/   )rO   rP   r%   r&   r0   r
   r
   r   test_nan_inf   s    rQ   za,b)r   r   c                    s   d}|t dd |D 7 }dg d  fdd}t|| ||ddd	 D ].}tt|t |}t||d ksNJ qNd S )
N)r   g      ?r   g      ?r   c                 s   s   | ]}| V  qd S r	   r
   ).0r   r
   r
   r   	<genexpr>       ztest_points.<locals>.<genexpr>   r   c                    s6     dkr t   d7  d t|  dS )Nr   r   g        )appendsetaddfloatr   rF   Zinterval_setsZquadrature_pointsr
   r   r      s
    ztest_points.<locals>.fr   )r   r   r   )tupler   r    Zsearchsortedsortedall)r6   br   r   pjr
   r[   r   test_points   s    
rb   )Zpytestnumpyr    Znumpy.testingr   Zscipy.integrater   Zmultiprocessing.dummyr   markZparametrizeZquadrature_paramsr(   r1   r:   r;   r@   rA   rC   rH   rM   rQ   r,   rb   r
   r
   r
   r   <module>   s4   

1


