U
    »mœd*m  ã                   @   s  d dl Z d dlZd dlZd dlmZmZmZmZmZm	Z	m
Z
mZ d dlmZmZmZmZ d dlZd dlmZmZmZmZ d dlmZmZ d dlmZ d dlZd dlZd dlmZ d dl m!  m"Z# dd	d
„Z$dd„ Z%G dd„ dƒZ&G dd„ dƒZ'G dd„ dƒZ(G dd„ dƒZ)dS )é    N)ÚsqrtÚcosÚsinÚarctanÚexpÚlogÚpiÚInf)Úassert_Úassert_allcloseÚassert_array_lessÚassert_almost_equal)ÚquadÚdblquadÚtplquadÚnquad)ÚerfÚerfc)ÚLowLevelCallable)Úsine_ctypesç+i¤)+P>c                 C   s.   | \}}t |||dd� |d k	r*t||ƒ d S )Nr   )ÚatolZrtol)r   r   )Zvalue_and_errZtabled_valueÚerror_toleranceÚvalueÚerr© r   ú\/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/integrate/tests/test_quadpack.pyÚassert_quad   s    r   c                 G   s"   t t| ƒ}t |tj|f|žŽ ¡S ©N)ÚgetattrÚ	clib_testÚctypesÚcastZ	CFUNCTYPE)ÚnameÚrestypeÚargtypesZptrr   r   r   Úget_clib_test_routine   s    
r&   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestCtypesQuadc              	   C   s    t jdkrdg}nt jdkr$dg}nddg}|D ]0}zt |¡| _W  qlW q0 tk
r^   Y q0X q0t d¡ tj}tjf}dD ]}t	| j|ƒ}||_
||_q~d S )	NÚwin32zapi-ms-win-crt-math-l1-1-0.dllÚdarwinz
libm.dylibzlibm.soz	libm.so.6zCtypes can't import libm.so)r   r   Útan)ÚsysÚplatformr!   ÚCDLLÚlibÚOSErrorÚpytestÚskipÚc_doubler   r$   r%   )ÚselfÚfilesÚfiler$   r%   r#   Úfuncr   r   r   Úsetup_method!   s$    



zTestCtypesQuad.setup_methodc                 C   sp   t t| jjddƒttjddƒd ƒ t t| jjddƒttjddƒd ƒ t t| jjddƒttjddƒd ƒ d S )Nr   é   é   )r   r   r.   r   Úmathr   r*   ©r3   r   r   r   Útest_typical;   s    $$zTestCtypesQuad.test_typicalc                 C   s   t ttƒddƒ d S ©Nr   r9   )r   r   r   r;   r   r   r   Útest_ctypes_sine@   s    zTestCtypesQuad.test_ctypes_sinec                 C   s"  t dtjtjtjƒ}t dtjtjt tj¡tjƒ}t dtjtjƒ}t dtjtjt tj¡ƒ}t dtjtjtjƒ}|||||g}||g}|g}t|ƒD ]B\}	}
t|
ƒ}|
|krÀt 	t
t|dt¡ q”tt|dtƒd dƒ q”t|ƒD ]<\}	}
|
|k�r
tt|
dtƒd dƒ qàt 	t
t|
dt¡ qàd S )NZ_sin_0Z_sin_1Z_sin_2Z_sin_3r   ç       @)r&   r!   r2   Zc_void_pÚc_intZPOINTERÚ	enumerater   r0   ZraisesÚ
ValueErrorr   r   r   )r3   Zsin_0Zsin_1Zsin_2Zsin_3Zsin_4Zall_sigsZlegacy_sigsZlegacy_only_sigsÚjr6   Úcallbackr   r   r   Útest_ctypes_variantsC   s@     ÿ 
þÿ 
ÿ ÿ
z#TestCtypesQuad.test_ctypes_variantsN)Ú__name__Ú
__module__Ú__qualname__r7   r<   r>   rE   r   r   r   r   r'       s   r'   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestMultivariateCtypesQuadc                 C   s<   t j}t jt jf}dD ] }t||f|žŽ }t| ||ƒ qd S )N)Ú_multivariate_typicalÚ_multivariate_indefiniteÚ_multivariate_sin)r!   r2   r@   r&   Úsetattr)r3   r$   r%   r#   r6   r   r   r   r7   i   s
    z'TestMultivariateCtypesQuad.setup_methodc                 C   s   t t| jdtdƒdƒ d S )Nr   ©é   gÍÌÌÌÌÌü?çì®Û—Ó?)r   r   rJ   r   r;   r   r   r   r<   q   s    ÿz'TestMultivariateCtypesQuad.test_typicalc                 C   s   t t| jdtƒdƒ d S )Nr   ç¶oüŒxâ?)r   r   rK   r	   r;   r   r   r   Útest_indefinitev   s    ÿz*TestMultivariateCtypesQuad.test_indefinitec                    s"   ‡ fdd„}t t|ddƒdƒ d S )Nc                    s   | t ˆ jddƒd  S r=   )r   rL   )Úyr;   r   r   Úthreadsafety}   s    zBTestMultivariateCtypesQuad.test_threadsafety.<locals>.threadsafetyr   r9   gtùJð×µî?)r   r   )r3   rT   r   r;   r   Útest_threadsafety{   s    z,TestMultivariateCtypesQuad.test_threadsafetyN)rF   rG   rH   r7   r<   rR   rU   r   r   r   r   rI   h   s   rI   c                6   @   sÀ  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej dej d ej d ejd! fej d"ej d ejd! ed#ƒ fej d ej d"ejd! ed#ƒ fej d"ej d"ejd! ed#ƒd$  fej d#ej d ejd! ed#ƒd#  fej d ej d#ejd! ed#ƒd#  fej d#ej d#ejd! ed#ƒd# d$  fej d"ej d#ejd! ed#ƒd# ed#ƒ  fej d#ej d"ejd! ed#ƒd# ed#ƒ  fd ejd ejejd! fd#ejd ejejd! ed#ƒ fd ejd#ejejd! ed#ƒ fd#ejd#ejejd! ed#ƒd$  fd"ejd ejejd! ed#ƒd#  fd ejd"ejejd! ed#ƒd#  fd"ejd"ejejd! ed#ƒd# d$  fd"ejd#ejejd! ed#ƒd# ed#ƒ  fd#ejd"ejejd! ed#ƒd# ed#ƒ  fej ejej ejejfg¡d%d&„ ƒZd'd(„ Zej d)ej d ej d ej d ejd* d+ fej d"ej d ej d ejd* d+ ed#ƒ fej d ej d"ej d ejd* d+ ed#ƒ fej d ej d ej d"ejd* d+ ed#ƒ fej d"ej d"ej d ejd* d+ ed#ƒd$  fej d"ej d ej d"ejd* d+ ed#ƒd$  fej d ej d"ej d"ejd* d+ ed#ƒd$  fej d"ej d"ej d"ejd* d+ ed#ƒd,  fej d"ej d#ej d#ejd* d+ ed#ƒd# d$ ed#ƒ  fej d"ej d"ej d#ejd* d+ ed#ƒd# ed#ƒd$   fej d"ej d#ej d"ejd* d+ ed#ƒd# ed#ƒd$   fej d#ej d"ej d"ejd* d+ ed#ƒd# ed#ƒd$   fej d#ej d#ej d"ejd* d+ ed#ƒd# d$ ed#ƒ  fej d#ej d"ej d#ejd* d+ ed#ƒd# d$ ed#ƒ  fej d#ej d ej d ejd* d+ ed#ƒd#  fej d ej d#ej d ejd* d+ ed#ƒd#  fej d ej d ej d#ejd* d+ ed#ƒd#  fej d#ej d#ej d ejd* d+ ed#ƒd# d$  fej d#ej d ej d#ejd* d+ ed#ƒd# d$  fej d ej d#ej d#ejd* d+ ed#ƒd# d$  fej d#ej d#ej d#ejd* d+ ed#ƒd# d,  fd ejd ejd ejejd* d+ fd#ejd ejd ejejd* d+ ed#ƒ fd ejd#ejd ejejd* d+ ed#ƒ fd ejd ejd#ejejd* d+ ed#ƒ fd#ejd#ejd ejejd* d+ ed#ƒd$  fd#ejd ejd#ejejd* d+ ed#ƒd$  fd ejd#ejd#ejejd* d+ ed#ƒd$  fd#ejd#ejd#ejejd* d+ ed#ƒd,  fd"ejd ejd ejejd* d+ ed#ƒd#  fd ejd"ejd ejejd* d+ ed#ƒd#  fd ejd ejd"ejejd* d+ ed#ƒd#  fd"ejd"ejd ejejd* d+ ed#ƒd# d$  fd"ejd ejd"ejejd* d+ ed#ƒd# d$  fd ejd"ejd"ejejd* d+ ed#ƒd# d$  fd"ejd"ejd"ejejd* d+ ed#ƒd# d,  fd#ejd"ejd"ejejd* d+ ed#ƒd# d$ ed#ƒ  fd#ejd#ejd"ejejd* d+ ed#ƒd# ed#ƒd$   fd#ejd"ejd#ejejd* d+ ed#ƒd# ed#ƒd$   fd"ejd#ejd#ejejd* d+ ed#ƒd# ed#ƒd$   fd"ejd"ejd#ejejd* d+ ed#ƒd# d$ ed#ƒ  fd"ejd#ejd"ejejd* d+ ed#ƒd# d$ ed#ƒ  fej ejej ejej ejejd* fg+¡d-d.„ ƒZd/d0„ Zd1S )2ÚTestQuadc                 C   s    dd„ }t t|dtdƒdƒ d S )Nc                 S   s   t ||  |t| ƒ  ƒt S r   )r   r   r   )ÚxÚnÚzr   r   r   Úmyfunc…   s    z%TestQuad.test_typical.<locals>.myfuncr   rN   rP   )r   r   r   ©r3   rZ   r   r   r   r<   ƒ   s    zTestQuad.test_typicalc                 C   s   dd„ }t t|dtƒdƒ d S )Nc                 S   s   t |  ƒ t| ƒ S r   )r   r   ©rW   r   r   r   rZ   ‹   s    z(TestQuad.test_indefinite.<locals>.myfuncr   rQ   ©r   r   r	   r[   r   r   r   rR   ‰   s    zTestQuad.test_indefinitec                 C   s>   dd„ }t t|ddddgd�dtdƒ td	ƒ td
ƒ ƒ d S )Nc                 S   sJ   d|   k rdk r n nt | ƒS d|   kr4dkrBn n
t|  ƒS dS d S )Nr   ç      @ç      @g        )r   r   r\   r   r   r   rZ   ‘   s
    
z&TestQuad.test_singular.<locals>.myfuncr   é
   r^   r_   )Úpointsr9   g      Àg      À)r   r   r   r   r[   r   r   r   Útest_singular�   s    ÿzTestQuad.test_singularc              	   C   sV   dd„ }d}t t|dddd|d�dt|ƒ |t|ƒ  |td	ƒ  d
|d   ƒ d S )Nc                 S   s   t || d  ƒS ©Nr9   ©r   ©rW   Úar   r   r   rZ   ž   s    z2TestQuad.test_sine_weighted_finite.<locals>.myfuncglS¹S´%@r   r9   é   r   ©ÚargsÚweightÚwvariìÿÿÿi�  rO   )r   r   r   r   r   )r3   rZ   Úomer   r   r   Útest_sine_weighted_finiteœ   s
    .ÿz"TestQuad.test_sine_weighted_finitec              	   C   s>   dd„ }d}d}t t|dt|d|d�||d |d   ƒ d S )	Nc                 S   s   t |  | ƒS r   rd   re   r   r   r   rZ   §   s    z4TestQuad.test_sine_weighted_infinite.<locals>.myfuncç      @ç      @r   r   rh   rO   r]   ©r3   rZ   rf   rl   r   r   r   Útest_sine_weighted_infinite¥   s    ÿz$TestQuad.test_sine_weighted_infinitec              	   C   s@   dd„ }d}d}t t|t d|d|d�||d |d   ƒ d S )	Nc                 S   s   t | | ƒS r   rd   re   r   r   r   rZ   ±   s    z6TestQuad.test_cosine_weighted_infinite.<locals>.myfuncr^   gffffff@r   r   rh   rO   r]   rp   r   r   r   Útest_cosine_weighted_infinite¯   s    ÿz&TestQuad.test_cosine_weighted_infinitec              	   C   sD   dd„ }d}t t|dd|ddd�ttdd	|   d	 d ƒ ƒ d S )
Nc                 S   s   dd|  d|    S ©Nr9   rO   r   re   r   r   r   rZ   »   s    z2TestQuad.test_algebraic_log_weight.<locals>.myfuncç      ø?éÿÿÿÿr9   Úalg)ç      à¿rw   rh   rO   )r   r   r   r   )r3   rZ   rf   r   r   r   Útest_algebraic_log_weight¹   s    ÿþz"TestQuad.test_algebraic_log_weightc              	   C   sˆ   dd„ }d}dt dƒ dt d|  d d|  d	  ƒ  td
|d  ƒ td
| ƒ d|  d	  }tt|ddddd
d�|dd� d S )Nc                 S   s    d|  | d d d|    S )Nr?   r9   rO   rn   r   re   r   r   r   rZ   Å   s    z-TestQuad.test_cauchypv_weight.<locals>.myfuncgš™™™™™Ù?g\®²`@è?rt   g]®²`@Ø?rn   é   r9   r?   rO   r   r8   Zcauchyrh   gÑ®#®fT>©r   )r   r   r   r   )r3   rZ   rf   ZtabledValuer   r   r   Útest_cauchypv_weightÃ   s    
"ÿþ
ýü ÿzTestQuad.test_cauchypv_weightc                 C   sN   dd„ }t |dtjdd�\}}t |tjddd�\}}t|| t||ƒd� d S )Nc                 S   s   |t  | |  ¡ S r   ©Únpr   )rW   ÚpÚqr   r   r   ÚfÒ   s    z&TestQuad.test_b_less_than_a.<locals>.fr   ©rO   é   ©ri   ©r   ©r   r}   Úinfr   Úmax©r3   r€   Zval_1Zerr_1Zval_2Zerr_2r   r   r   Útest_b_less_than_aÑ   s    zTestQuad.test_b_less_than_ac                 C   sV   dd„ }t |tj tjdd�\}}t |tjtj dd�\}}t|| t||ƒd� d S )Nc                 S   s&   t  | d  d | ¡t  d| ¡ S )NrO   r?   )r}   r   r   )rW   Úsr   r   r   r€   Ú   s    z(TestQuad.test_b_less_than_a_2.<locals>.f)rO   rƒ   r„   r…   rˆ   r   r   r   Útest_b_less_than_a_2Ù   s    zTestQuad.test_b_less_than_a_2c                 C   sN   dd„ }t |ddddd�\}}t |ddddd�\}}t|| t||ƒd� d S )	Nc                 S   s   dS ©Nç      ð?r   r\   r   r   r   r€   â   s    z(TestQuad.test_b_less_than_a_3.<locals>.fr   r9   rv   ©r   r   )rj   rk   r„   )r   r   r‡   rˆ   r   r   r   Útest_b_less_than_a_3á   s    zTestQuad.test_b_less_than_a_3c                 C   s^   dd„ }t |dddddd�}t |dddddd�}t|d |d ƒ}t|d |d  |d	� d S )
Nc                 S   s   dS rŒ   r   r\   r   r   r   r€   ê   s    z2TestQuad.test_b_less_than_a_full_output.<locals>.fr   r9   rv   rŽ   T)rj   rk   Úfull_outputr„   )r   r‡   r   )r3   r€   Zres_1Zres_2r   r   r   r   Útest_b_less_than_a_full_outputé   s
    z'TestQuad.test_b_less_than_a_full_outputc                 C   sB   dd„ }d\}}t t|||dd„ dd„ ƒd|d |d   ƒ d S )	Nc                 S   s   ||  S r   r   ©rS   rW   r   r   r   Úsimpfuncô   s    z/TestQuad.test_double_integral.<locals>.simpfunc©r�   r?   c                 S   s   | S r   r   r\   r   r   r   Ú<lambda>ø   ó    z/TestQuad.test_double_integral.<locals>.<lambda>c                 S   s   d|  S ©NrO   r   r\   r   r   r   r•   ø   r–   g«ªªªªªê?ro   ©r   r   ©r3   r“   rf   Úbr   r   r   Útest_double_integralò   s
    ÿzTestQuad.test_double_integralc              	   C   s:   dd„ }dd„ }dd„ }d}t t|dd|||d	�d
ƒ d S )Nc                 S   s   | | | | S r   r   )Úx0Úx1Út0Út1r   r   r   r6   ü   s    z,TestQuad.test_double_integral2.<locals>.funcc                 S   s   | S r   r   r\   r   r   r   r•   þ   r–   z0TestQuad.test_double_integral2.<locals>.<lambda>c                 S   s   d|  S r—   r   r\   r   r   r   r•   ÿ   r–   )r9   rO   r9   rO   rƒ   gªªªªªª$@r˜   )r3   r6   ÚgÚhri   r   r   r   Útest_double_integral2û   s
    zTestQuad.test_double_integral2c                 C   s"   dd„ }t t|ddddƒdƒ d S )Nc                 S   s   | | d d S rs   r   ©rœ   r�   r   r   r   r6     s    z,TestQuad.test_double_integral3.<locals>.funcr9   rO   g      @r˜   )r3   r6   r   r   r   Útest_double_integral3  s    zTestQuad.test_double_integral3z,x_lower, x_upper, y_lower, y_upper, expectedr   é   ru   r9   rO   c                 C   s&   dd„ }t t|||||ƒ|dd� d S )Nc                 S   s   t  | d  |d  ¡S r—   r|   ©rW   rS   r   r   r   r€   B  s    z1TestQuad.test_double_integral_improper.<locals>.fg+i¤)+`>rz   r˜   )r3   Úx_lowerÚx_upperÚy_lowerÚy_upperÚexpectedr€   r   r   r   Útest_double_integral_improper  s    :ýz&TestQuad.test_double_integral_improperc              
   C   sP   dd„ }d\}}t t|||dd„ dd„ dd„ dd„ d	ƒd
|d |d   ƒ d S )Nc                 S   s   || |  | S r   r   )rY   rS   rW   Útr   r   r   r“   M  s    z/TestQuad.test_triple_integral.<locals>.simpfuncr”   c                 S   s   | S r   r   r\   r   r   r   r•   R  r–   z/TestQuad.test_triple_integral.<locals>.<lambda>c                 S   s   d|  S r—   r   r\   r   r   r   r•   R  r–   c                 S   s   | | S r   r   r¦   r   r   r   r•   S  r–   c                 S   s   | | S r   r   r¦   r   r   r   r•   S  r–   )r?   gUUUUUU@rn   ©r   r   r™   r   r   r   Útest_triple_integralK  s    
  ýüzTestQuad.test_triple_integralz>x_lower, x_upper, y_lower, y_upper, z_lower, z_upper, expectedrt   é   r‚   c           	   	   C   s*   dd„ }t t|||||||ƒ|dd� d S )Nc                 S   s    t  | d  |d  |d  ¡S r—   r|   )rW   rS   rY   r   r   r   r€   ñ  s    z1TestQuad.test_triple_integral_improper.<locals>.fg+i¤)+p>rz   r®   )	r3   r§   r¨   r©   rª   Zz_lowerZz_upperr«   r€   r   r   r   Útest_triple_integral_improperW  s     ýz&TestQuad.test_triple_integral_improperc                 C   s¼  dd„ }t  t|dt jd dd�d d¡s.t‚dt jddd	d
œ}t|fddi|—Ž}tdd„ fddi|—Ž}tdd„ fddi|—Ž}t j |d |d d|d   ¡ t j |d	 |d	 d|d	   ¡ t|d d ƒt|dd … ƒ  krôdksún t‚|d d d |d k�st‚|d d d	 |d k�s6t‚|d d d d |d d k�s\t‚t|d d ƒt|dd … ƒ  k�rŒd	k�s’n t‚|d d d d |d d k�s¸t‚d S )Nc                 S   s   t  d|  ¡S ©Nù              ð?r|   r\   r   r   r   Útfuncû  s    z$TestQuad.test_complex.<locals>.tfuncr   rO   T)Úcomplex_funcy      ð?      ð?r   r9   )rf   rš   r�   rj   rk   rµ   c                 S   s   t  t  d|  ¡¡S r²   )r}   Úrealr   r\   r   r   r   r•   	  r–   z'TestQuad.test_complex.<locals>.<lambda>Fc                 S   s   t  t  d|  ¡¡S r²   )r}   Úimagr   r\   r   r   r   r•     r–   r³   r¶   r‚   r¥   Úlstr·   )	r}   Zallcloser   r   ÚAssertionErrorr†   ÚtestingZassert_equalÚlen)r3   r´   ÚkwargsZres_cZres_rZres_ir   r   r   Útest_complexú  s8    þ ÿÿþÿþ""2&6zTestQuad.test_complexN)rF   rG   rH   r<   rR   rb   rm   rq   rr   rx   r{   r‰   r‹   r�   r‘   r›   r¢   r¤   r0   ÚmarkZparametrizer}   r†   r   r   r   r¬   r¯   r±   r½   r   r   r   r   rV   ‚   sZ  	


		""&&&*.."""&**Ïþ6
&ÿÿÿÿÿÿÿ$ÿ$ÿ$ÿ$ÿ$ÿ$ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿ$ÿ$ÿ$ÿ$ÿ$ÿÿ€ ÷þ 
rV   c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )Ú	TestNQuadc                 C   sz   dd„ }dd„ }t |ddgddgdd	gd
dgg|i i i gdd�}t|d d… dƒ t|d d dkor|d d dk ƒ d S )Nc                 S   sJ   | d ||  |d  t  | ¡ | d|  d d|  dkr@dnd }|S )NrO   r‚   çš™™™™™É?ç      à?ç      Ð?r   r9   ©r}   r   )rœ   r�   Úx2Úx3Úvalr   r   r   Úfunc1  s     "ÿz*TestNQuad.test_fixed_limits.<locals>.func1c                  W   s"   dd| d  d d| d   giS )Nra   rÀ   rO   rÁ   rÂ   r   r   rƒ   r   r   r   Ú
opts_basic#  s    z/TestNQuad.test_fixed_limits.<locals>.opts_basicr   r9   ru   g¤p=
×£À?gš™™™™™é?g333333Ã¿T)Úoptsr�   g5‹—Œmø?Znevalg     jA)r   r   r
   )r3   rÇ   rÈ   Úresr   r   r   Útest_fixed_limits  s    
 ÿzTestNQuad.test_fixed_limitsc                    sŠ   d‰ dd„ }‡ fdd„}‡ fdd„}‡ fdd	„}‡ fd
d„}dd„ }dd„ }dd„ }dd„ }	t |||||gd||||	gd�}
t|
dƒ d S )Ngš™™™™™¹?c                 S   s>   | | |d  t  |¡ d | ||  | dkr4dnd }|S )NrO   r9   r   rÃ   )rœ   r�   rÄ   rÅ   rž   rŸ   rÆ   r   r   r   Úfunc2.  s    ÿz-TestNQuad.test_variable_limits.<locals>.func2c                    sT   ˆ | d | t  |¡| |  d  d ˆ | d | t  |¡| |  d  d gS ©NrO   r9   )r}   r   ©r�   rÄ   rÅ   rž   rŸ   ©Úscaler   r   Úlim03  s    ((ÿz,TestNQuad.test_variable_limits.<locals>.lim0c                    s0   ˆ ||  ||   d ˆ ||  ||   d gS rc   r   ©rÄ   rÅ   rž   rŸ   rÏ   r   r   Úlim17  s    ÿz,TestNQuad.test_variable_limits.<locals>.lim1c                    s8   ˆ | |d |d    d ˆ | |d |d    d gS ©NrO   r‚   r9   r   ©rÅ   rž   rŸ   rÏ   r   r   Úlim2;  s    ÿz,TestNQuad.test_variable_limits.<locals>.lim2c                    s    ˆ | |  d ˆ | |  d gS rc   r   ©rž   rŸ   rÏ   r   r   Úlim3?  s    z,TestNQuad.test_variable_limits.<locals>.lim3c                 S   s   d|||   giS )Nra   r   rÎ   r   r   r   Úopts0B  s    z-TestNQuad.test_variable_limits.<locals>.opts0c                 S   s   i S r   r   rÒ   r   r   r   Úopts1E  s    z-TestNQuad.test_variable_limits.<locals>.opts1c                 S   s   i S r   r   rÕ   r   r   r   Úopts2H  s    z-TestNQuad.test_variable_limits.<locals>.opts2c                 S   s   i S r   r   r×   r   r   r   Úopts3K  s    z-TestNQuad.test_variable_limits.<locals>.opts3rŽ   )ri   rÉ   g9@)r   r   )r3   rÌ   rÑ   rÓ   rÖ   rØ   rÙ   rÚ   rÛ   rÜ   rÊ   r   rÏ   r   Útest_variable_limits+  s    
ÿzTestNQuad.test_variable_limitsc                 C   s0   dd„ }t t|ddgddggi i gd�dƒ d S )Nc                 S   s   dS rŒ   r   r’   r   r   r   r€   S  s    z9TestNQuad.test_square_separate_ranges_and_opts.<locals>.fru   r9   ©rÉ   rn   ©r   r   )r3   r€   r   r   r   Ú$test_square_separate_ranges_and_optsR  s    z.TestNQuad.test_square_separate_ranges_and_optsc                 C   s4   dd„ }ddg}i }t t|||g||gd�dƒ d S )Nc                 S   s   dS rŒ   r   r’   r   r   r   r€   Y  s    z8TestNQuad.test_square_aliased_ranges_and_opts.<locals>.fru   r9   rÞ   rn   rß   )r3   r€   ÚrÚoptr   r   r   Ú#test_square_aliased_ranges_and_optsX  s    z-TestNQuad.test_square_aliased_ranges_and_optsc                 C   sP   dd„ }dd„ }dd„ }dd„ }d	d
„ }||g}||g}t t|||d�dƒ d S )Nc                 S   s   dS rŒ   r   r’   r   r   r   r€   a  s    z<TestNQuad.test_square_separate_fn_ranges_and_opts.<locals>.fc                  W   s   dS ©N)ru   r9   r   rƒ   r   r   r   Ú	fn_range0d  s    zDTestNQuad.test_square_separate_fn_ranges_and_opts.<locals>.fn_range0c                  W   s   dS rä   r   rƒ   r   r   r   Ú	fn_range1g  s    zDTestNQuad.test_square_separate_fn_ranges_and_opts.<locals>.fn_range1c                  W   s   i S r   r   rƒ   r   r   r   Úfn_opt0j  s    zBTestNQuad.test_square_separate_fn_ranges_and_opts.<locals>.fn_opt0c                  W   s   i S r   r   rƒ   r   r   r   Úfn_opt1m  s    zBTestNQuad.test_square_separate_fn_ranges_and_opts.<locals>.fn_opt1rÞ   rn   rß   )r3   r€   rå   ræ   rç   rè   ÚrangesrÉ   r   r   r   Ú'test_square_separate_fn_ranges_and_opts`  s    z1TestNQuad.test_square_separate_fn_ranges_and_optsc                 C   s@   dd„ }dd„ }dd„ }||g}||g}t t|||d�dƒ d S )	Nc                 S   s   dS rŒ   r   r’   r   r   r   r€   u  s    z;TestNQuad.test_square_aliased_fn_ranges_and_opts.<locals>.fc                  W   s   dS rä   r   rƒ   r   r   r   Úfn_rangex  s    zBTestNQuad.test_square_aliased_fn_ranges_and_opts.<locals>.fn_rangec                  W   s   i S r   r   rƒ   r   r   r   Úfn_opt{  s    z@TestNQuad.test_square_aliased_fn_ranges_and_opts.<locals>.fn_optrÞ   rn   rß   )r3   r€   rë   rì   ré   rÉ   r   r   r   Ú&test_square_aliased_fn_ranges_and_optst  s    z0TestNQuad.test_square_aliased_fn_ranges_and_optsc                 C   sF   dd„ }t |ddƒ\}}t|ddggd�\}}t||ƒ t||ƒ d S )Nc                 S   s   | d d S rÍ   r   r\   r   r   r   r6   ƒ  s    z*TestNQuad.test_matching_quad.<locals>.funcr   r¥   )ré   )r   r   r   )r3   r6   rÊ   ÚreserrÚres2Úreserr2r   r   r   Útest_matching_quad‚  s
    
zTestNQuad.test_matching_quadc                 C   sR   dd„ }t |dddd„ dd„ ƒ\}}t|dd	gd
gƒ\}}t||ƒ t||ƒ d S )Nc                 S   s   | d |d  | |  d S rÔ   r   r£   r   r   r   Úfunc2dŒ  s    z/TestNQuad.test_matching_dblquad.<locals>.func2déþÿÿÿrO   c                 S   s   dS )Néýÿÿÿr   r\   r   r   r   r•   �  r–   z1TestNQuad.test_matching_dblquad.<locals>.<lambda>c                 S   s   dS )Nr‚   r   r\   r   r   r   r•   �  r–   rô   r‚   )ró   rO   )r   r   r   )r3   rò   rÊ   rî   rï   rð   r   r   r   Útest_matching_dblquad‹  s
    
zTestNQuad.test_matching_dblquadc              
   C   s`   dd„ }t |dddd„ dd„ dd„ d	d„ d
d�}t|tj tjgddgdgd
d�}t||ƒ d S )Nc                 S   s.   | d ||d   | |  d |t  |¡  S rÔ   rÃ   )rœ   r�   rÄ   Zc0Úc1r   r   r   Úfunc3d•  s    z/TestNQuad.test_matching_tplquad.<locals>.func3dru   rO   c                 S   s   dS )Nró   r   r\   r   r   r   r•   ˜  r–   z1TestNQuad.test_matching_tplquad.<locals>.<lambda>c                 S   s   dS r—   r   r\   r   r   r   r•   ˜  r–   c                 S   s   t j S r   ©r}   r   r¦   r   r   r   r•   ™  r–   c                 S   s   t jS r   rø   r¦   r   r   r   r•   ™  r–   r�   rƒ   ró   )ru   rO   )r   r   r}   r   r   )r3   r÷   rÊ   rï   r   r   r   Útest_matching_tplquad”  s     þ"zTestNQuad.test_matching_tplquadc                 C   sH   z&t dd„ ddgddggddid� W n tk
rB   ds>t‚Y nX d S )	Nc                 S   s   | | S r   r   r¦   r   r   r   r•      r–   z-TestNQuad.test_dict_as_opts.<locals>.<lambda>r   r9   Zepsrelg-Cëâ6?rÞ   F)r   Ú	TypeErrorr¹   r;   r   r   r   Útest_dict_as_optsž  s    &zTestNQuad.test_dict_as_optsN)rF   rG   rH   rË   rÝ   rà   rã   rê   rí   rñ   rõ   rù   rû   r   r   r   r   r¿     s   '		
r¿   )r   )*r+   r:   Únumpyr}   r   r   r   r   r   r   r   r	   Znumpy.testingr
   r   r   r   r0   Zscipy.integrater   r   r   r   Zscipy.specialr   r   Zscipy._lib._ccallbackr   r!   Úctypes.utilZscipy._lib._ccallback_cr   Z"scipy.integrate._test_multivariateZ	integrateZ_test_multivariater    r   r&   r'   rI   rV   r¿   r   r   r   r   Ú<module>   s*   (
H   