U
    »mœdK  ã                	   @   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ddddg¡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Ú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 s°t‚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
   ú]/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/integrate/tests/test__quad_vec.pyÚ<lambda>   ó    z&test_quad_vec_simple.<locals>.<lambda>©çš™™™™™¹?gü©ñÒMbP?g�íµ ÷Æ°>r   ç-Cëâ6?)Úepsabsr   é   é   r   ÚnormÚmax©ZrtolZatolÚ2)ç      à?ç      ð?)r   Úpointsg:Œ0âŽyE>Ti'  )r   ZepsrelÚfull_outputÚlimit)ÚnpÚarangeÚdictr   r   Zlinalgr   ÚAssertionError)r   Úfr   ÚkwargsÚexactÚresÚerrÚrestr
   r   r   Útest_quad_vec_simple   s*    
ýür+   c              
   C   sx  dd„ }dD �]ô}| dkr$|dk r$qt d|| d�}t|dtjf|Ž\}}t|tjd	 dt||ƒd
� t|dtj f|Ž\}}t|tj d	 dt||ƒd
� t|tj df|Ž\}}t|tjd	 dt||ƒd
� t|tjdf|Ž\}}t|tj d	 dt||ƒd
� t|tj tjf|Ž\}}t|tjdt||ƒd
� t|tjtj f|Ž\}}t|tj dt||ƒd
� t|tjtjf|Ž\}}t|ddt||ƒd
� t|tj tj f|Ž\}}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�sZt
‚t||dt|d| ƒd
� d S )Nc                 S   s   ddt  | ¡d   S ©Nr   r   )r!   Zfloat64r   r
   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   r   gñhãˆµøä>iè  T)r    r   r   r   r   r   g      ø?)r#   r   r!   Úinfr   Úpir   Úer-   Ústatusr$   )r   r%   r   r&   r(   r)   r'   Úinfor
   r
   r   Útest_quad_vec_simple_inf-   s@    
 ÿr3   c                  C   sF   dd„ } d}t  dddg¡}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   ^   r   z$test_quad_vec_args.<locals>.<lambda>r   r   çUUUUUUõ?çUUUUUU@r   )Úargsr   r   )r!   Úarrayr   r   )r%   r8   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   Ú
_lorenzianf   s    r>   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 5 Q R X d S )
Nr   r   é   )r   r   Úworkersr   r   r   c                 S   s   dd| d   S r,   r
   r   r
   r
   r   r   p   r   z$test_quad_vec_pool.<locals>.<lambda>)r>   r   r!   r.   r   r/   r   Úmap)r%   r(   r)   Úpoolr
   r
   r   Útest_quad_vec_poolj   s    
 rC   c                 C   s   | | |  t  d¡ S r4   r6   r7   r
   r
   r   Ú_func_with_argsu   s    rD   Ú
extra_argsr   )r   r@   r   r   c              	   C   sz   t }t dddg¡}t|dd| |d�\}}t||ddd� t|ƒ�.}t|dd| |jd�\}}t||ddd� W 5 Q R X d S )Nr   r9   r:   r   )r;   r@   r   r   )rD   r!   r<   r   r   r   rA   )rE   r@   r%   r'   r(   r)   rB   r
   r
   r   Útest_quad_vec_pool_argsy   s    
rF   c                    s@   ‡ fdd„}dg‰ t |dddd| d�}|d jˆ d ks<t‚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   Únevalr$   )r   r%   r(   r
   rH   r   Útest_num_eval‡   s    rK   c                  C   sª   dd„ } t | ddddd�\}}}|jdks.t‚|jdks<t‚|jdksJt‚|jdksXt‚|jjd d	kslt‚|jj|jjd d
d	dfksŒt‚|j	j|jjd fks¦t‚d S )Nc                 S   s
   t  d¡S )N)r5   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   r5   )
r   Úsuccessr$   r1   ÚmessagerJ   Z	intervalsÚshapeZ	integralsÚerrors)r%   r(   r)   r2   r
   r
   r   Ú	test_info’   s     rP   c                  C   s\   dd„ } dd„ }t | dddd�\}}}|jd	ks4t‚t |dddd�\}}}|jd	ksXt‚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   r5   )r   r1   r$   )rR   rS   r(   r)   r2   r
   r
   r   Útest_nan_inf¡   s    rT   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¡sNt‚qNd 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   ©rI   Zinterval_setsZquadrature_pointsr
   r   r%   ½   s
    ztest_points.<locals>.fr   )r   r   r    )Útupler   r!   ZsearchsortedÚsortedÚallr$   )r8   Úbr   r%   ÚpÚjr
   r]   r   Útest_points¯   s    
rd   )ZpytestÚnumpyr!   Znumpy.testingr   Zscipy.integrater   Zmultiprocessing.dummyr   ÚmarkZparametrizeZquadrature_paramsr+   r3   r=   r>   rC   rD   rF   rK   rP   rT   r.   rd   r
   r
   r
   r   Ú<module>   s8    
ÿ

/	

 ÿ