o
    gK                  	   @   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gk15gk21	trapezoidc                    s  t d  fdd}dD ]|}| dkr|dk rq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 sXJ 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   b/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/scipy/integrate/tests/test__quad_vec.py<lambda>   s    z&test_quad_vec_simple.<locals>.<lambda>皙?gMbP?gư>r   -C6?)epsabsr         r   normmaxrtolatol2)      ?      ?)r   pointsg:0yE>Ti'  )r   epsrelfull_outputlimit)nparangedictr   r   linalgr   )r   fr   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s=J t||dt|d| d
 d S )Nc                 S   s   ddt | d   S Nr   r   )r$   float64r   r   r   r   r   /       z*test_quad_vec_simple_inf.<locals>.<lambda>r   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   S   s    gh㈵>i  T)r#   r   r   r   r"   r   g      ?)
r&   r   r$   infr   pir   er2   status)r   r(   r   r)   r+   r,   r*   infor   r   r   test_quad_vec_simple_inf-   s>   
 r8   c                  C   sD   dd } d}t g d}t| dd|fd\}}t||ddd	 d S )
Nc                 S      | | |  t d S N   r$   r%   r   ar   r   r   r   ^   r1   z$test_quad_vec_args.<locals>.<lambda>r   r   gUUUUUU?gUUUUUU@r   r   )argsr   r   )r$   arrayr   r   )r(   r>   r*   r+   r,   r   r   r   test_quad_vec_args]   s
   rB   c                 C      dd| d   S r/   r   r   r   r   r   
_lorenzianf   s   rD   c               	   C   s   t } t| tj tjdddd\}}t|tjddd td&}dd	 } t| tj tjdd|jd\}}t|tjddd W d    d S 1 sGw   Y  d S )
Nr   r      )r   r   workersr   r   r	   c                 S   rC   r/   r   r   r   r   r   r   p   s    z$test_quad_vec_pool.<locals>.<lambda>)rD   r   r$   r3   r   r4   r   map)r(   r+   r,   poolr   r   r   test_quad_vec_poolj   s   
 "rI   c                 C   r9   r:   r<   r=   r   r   r   _func_with_argsu      rJ   
extra_argsr   )r   rF   r   r	   c                 C   s   t }tg d}t|dd| |d\}}t||ddd t|}t|dd| |jd\}}t||ddd W d    d S 1 s@w   Y  d S )Nr?   r   r   )r@   rF   r   r   )rJ   r$   rA   r   r   r   rG   )rL   rF   r(   r*   r+   r,   rH   r   r   r   test_quad_vec_pool_argsy   s   
"rM   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   rO   r   test_num_eval   s   rR   c                  C   s   dd } t | ddddd\}}}|jdksJ |jdksJ |jdks%J |jdks,J |jjd d	ks6J |jj|jjd d
d	dfksFJ |jj|jjd fksSJ d S )Nc                 S   s
   t dS )N)r;   r   r   )r$   onesr   r   r   r   r(      s   
ztest_info.<locals>.fr   r   r   T)r   r"   zTarget precision reached.r   r;   )	r   successr6   messagerQ   	intervalsshape	integralserrors)r(   r+   r,   r7   r   r   r   	test_info   s    rZ   c                  C   s\   dd } dd }t | dddd\}}}|jd	ksJ t |dddd\}}}|jd	ks,J 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$   r3   r   r   r   r   f_inf   rK   ztest_nan_inf.<locals>.f_infr   r   T)r"   r;   )r   r6   )r\   r]   r+   r,   r7   r   r   r   test_nan_inf   s   r^   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s>J q'd S )
N)r   g      ?r   g      ?r   c                 s   s    | ]}| V  qd S r
   r   ).0r   r   r   r   	<genexpr>   s    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   rP   interval_setsquadrature_pointsr   r   r(      s
   ztest_points.<locals>.fr   )r    r   r#   )tupler   r$   searchsortedsortedall)r>   br    r(   pjr   rg   r   test_points   s   
rq   )pytestnumpyr$   numpy.testingr   scipy.integrater   multiprocessing.dummyr   markparametrizequadrature_paramsr.   r8   rB   rD   rI   rJ   rM   rR   rZ   r^   r3   rq   r   r   r   r   <module>   s6    

/	

