a
    ‡ù»jôo  ã                   @   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
 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)Ú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 ur*t||ƒ d S )Nr   )ÚatolZrtol)r
   r   )Zvalue_and_errZtabled_valueÚerror_toleranceÚvalueÚerr© r   úIE:\soccer\ml_env\Lib\site-packages\scipy/integrate/tests/test_quadpack.pyÚassert_quad   s    r   c                 G   s$   t t| ƒ}t |tj|g|¢R Ž ¡S ©N)ÚgetattrÚ	clib_testÚctypesÚcastÚ	CFUNCTYPE)ÚnameÚrestypeÚargtypesÚ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 ].}zt |¡| _W  qjW q0 ty\   Y q00 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+   ©r4   r   r   r   Útest_typical;   s    $$zTestCtypesQuad.test_typicalc                 C   s   t ttƒddƒ d S ©Nr   r:   )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|
ƒ}|
|v rÀt 	t
t|dt¡ q”tt|dtƒd dƒ q”t|ƒD ]<\}	}
|
|v �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    r3   Úc_void_pÚc_intÚPOINTERÚ	enumerater   r1   ZraisesÚ
ValueErrorr   r   r
   )r4   Zsin_0Zsin_1Zsin_2Zsin_3Zsin_4Zall_sigsZlegacy_sigsZlegacy_only_sigsÚjr7   Úcallbackr   r   r   Útest_ctypes_variantsC   s8    ÿþÿÿÿ
z#TestCtypesQuad.test_ctypes_variantsN)Ú__name__Ú
__module__Ú__qualname__r8   r=   r?   rH   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||g|¢R Ž }t| ||ƒ qd S )N)Ú_multivariate_typicalÚ_multivariate_indefiniteÚ_multivariate_sin)r    r3   rB   r'   Úsetattr)r4   r$   r%   r#   r7   r   r   r   r8   i   s
    z'TestMultivariateCtypesQuad.setup_methodc                 C   s   t t| jdtdƒdƒ d S )Nr   ©é   gÍÌÌÌÌÌü?çì®Û—Ó?)r   r   rM   r   r<   r   r   r   r=   q   s    ÿz'TestMultivariateCtypesQuad.test_typicalc                 C   s   t t| jdtjƒdƒ d S )Nr   ç¶oüŒxâ?)r   r   rN   ÚnpÚinfr<   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   rO   )Úyr<   r   r   Úthreadsafety}   s    zBTestMultivariateCtypesQuad.test_threadsafety.<locals>.threadsafetyr   r:   gtùJð×µî?)r   r   )r4   rY   r   r<   r   Útest_threadsafety{   s    z,TestMultivariateCtypesQuad.test_threadsafetyN)rI   rJ   rK   r8   r=   rW   rZ   r   r   r   r   rL   h   s   rL   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   rQ   rS   )r   r   r   ©r4   r_   r   r   r   r=   ƒ   s    zTestQuad.test_typicalc                 C   s    dd„ }t t|dtjƒdƒ d S )Nc                 S   s   t |  ƒ t| ƒ S r   )r   r   ©r\   r   r   r   r_   ‹   s    z(TestQuad.test_indefinite.<locals>.myfuncr   rT   ©r   r   rU   rV   r`   r   r   r   rW   ‰   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   ra   r   r   r   r_   ‘   s
    
z&TestQuad.test_singular.<locals>.myfuncr   é
   rc   rd   )Úpointsr:   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 ©Nr:   ©r   ©r\   Úar   r   r   r_   ž   s    z2TestQuad.test_sine_weighted_finite.<locals>.myfuncglS¹S´%@r   r:   é   r   ©ÚargsÚweightÚwvariìÿÿÿi�  rR   )r   r   r   r   r   )r4   r_   Úomer   r   r   Útest_sine_weighted_finiteœ   s
    .ÿz"TestQuad.test_sine_weighted_finitec              	   C   s@   dd„ }d}d}t t|dtj|d|d�||d |d   ƒ d S )	Nc                 S   s   t |  | ƒS r   ri   rj   r   r   r   r_   §   s    z4TestQuad.test_sine_weighted_infinite.<locals>.myfuncç      @ç      @r   r   rm   rR   rb   ©r4   r_   rk   rq   r   r   r   Útest_sine_weighted_infinite¥   s    ÿz$TestQuad.test_sine_weighted_infinitec              	   C   sB   dd„ }d}d}t t|tj d|d|d�||d |d   ƒ d S )	Nc                 S   s   t | | ƒS r   ri   rj   r   r   r   r_   ±   s    z6TestQuad.test_cosine_weighted_infinite.<locals>.myfuncrc   gffffff@r   r   rm   rR   rb   ru   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 ©Nr:   rR   r   rj   r   r   r   r_   »   s    z2TestQuad.test_algebraic_log_weight.<locals>.myfuncç      ø?éÿÿÿÿr:   Úalg)ç      à¿r|   rm   rR   )r   r   r   r   )r4   r_   rk   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@   r:   rR   rs   r   rj   r   r   r   r_   Å   s    z-TestQuad.test_cauchypv_weight.<locals>.myfuncgš™™™™™Ù?g\®²`@è?ry   g]®²`@Ø?rs   é   r:   r@   rR   r   r9   Zcauchyrm   gÑ®#®fT>©r   )r   r   r   r   )r4   r_   rk   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   ©rU   r   )r\   ÚpÚqr   r   r   ÚfÒ   s    z&TestQuad.test_b_less_than_a.<locals>.fr   ©rR   é   ©rn   ©r   ©r   rU   rV   r
   Úmax©r4   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 )NrR   r@   )rU   r   r   )r\   Úsr   r   r   r„   Ú   s    z(TestQuad.test_b_less_than_a_2.<locals>.f)rR   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   ra   r   r   r   r„   â   s    z(TestQuad.test_b_less_than_a_3.<locals>.fr   r:   r{   ©r   r   )ro   rp   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   ra   r   r   r   r„   ê   s    z2TestQuad.test_b_less_than_a_full_output.<locals>.fr   r:   r{   r‘   T)ro   rp   Úfull_outputrˆ   )r   rŠ   r
   )r4   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   ©rX   r\   r   r   r   Úsimpfuncô   s    z/TestQuad.test_double_integral.<locals>.simpfunc©r�   r@   c                 S   s   | S r   r   ra   r   r   r   Ú<lambda>ø   ó    z/TestQuad.test_double_integral.<locals>.<lambda>c                 S   s   d|  S ©NrR   r   ra   r   r   r   r˜   ø   r™   g«ªªªªªê?rt   ©r   r   ©r4   r–   rk   Ú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   r7   ü   s    z,TestQuad.test_double_integral2.<locals>.funcc                 S   s   | S r   r   ra   r   r   r   Úgþ   s    z)TestQuad.test_double_integral2.<locals>.gc                 S   s   d|  S rš   r   ra   r   r   r   Úh   s    z)TestQuad.test_double_integral2.<locals>.h)r:   rR   r:   rR   r‡   gªªªªªª$@r›   )r4   r7   r£   r¤   rn   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 rx   r   ©rŸ   r    r   r   r   r7     s    z,TestQuad.test_double_integral3.<locals>.funcr:   rR   g      @r›   )r4   r7   r   r   r   Útest_double_integral3  s    zTestQuad.test_double_integral3z,x_lower, x_upper, y_lower, y_upper, expectedr   é   rz   r:   rR   c                 C   s&   dd„ }t t|||||ƒ|dd� d S )Nc                 S   s   t  | d  |d  ¡S rš   r�   ©r\   rX   r   r   r   r„   D  s    z1TestQuad.test_double_integral_improper.<locals>.fg+i¤)+`>r   r›   )r4   Ú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   )r^   rX   r\   Útr   r   r   r–   O  s    z/TestQuad.test_triple_integral.<locals>.simpfuncr—   c                 S   s   | S r   r   ra   r   r   r   r˜   T  r™   z/TestQuad.test_triple_integral.<locals>.<lambda>c                 S   s   d|  S rš   r   ra   r   r   r   r˜   T  r™   c                 S   s   | | S r   r   r©   r   r   r   r˜   U  r™   c                 S   s   | | S r   r   r©   r   r   r   r˜   U  r™   )r@   gUUUUUU@rs   ©r   r   rœ   r   r   r   Útest_triple_integralM  s    
ýüzTestQuad.test_triple_integralz>x_lower, x_upper, y_lower, y_upper, z_lower, z_upper, expectedry   é   r†   c           	   	   C   s*   dd„ }t t|||||||ƒ|dd� d S )Nc                 S   s    t  | d  |d  |d  ¡S rš   r�   )r\   rX   r^   r   r   r   r„   ó  s    z1TestQuad.test_triple_integral_improper.<locals>.fg+i¤)+p>r   r±   )	r4   rª   r«   r¬   r­   Zz_lowerZz_upperr®   r„   r   r   r   Útest_triple_integral_improperY  s     ýz&TestQuad.test_triple_integral_improperc                 C   s¼  dd„ }t  t|dt jd dd�d d¡s.J ‚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 J ‚|d d d |d k�sJ ‚|d d d	 |d k�s6J ‚|d d d d |d d k�s\J ‚t|d d ƒt|dd … ƒ  k�rŒd	k�s’n J ‚|d d d d |d d k�s¸J ‚d S )Nc                 S   s   t  d|  ¡S ©Nù              ð?r�   ra   r   r   r   Útfuncý  s    z$TestQuad.test_complex.<locals>.tfuncr   rR   T)Úcomplex_funcy      ð?      ð?r   r:   )rk   r�   r“   ro   rp   r¸   c                 S   s   t  t  d|  ¡¡S rµ   )rU   Úrealr   ra   r   r   r   r˜     r™   z'TestQuad.test_complex.<locals>.<lambda>Fc                 S   s   t  t  d|  ¡¡S rµ   )rU   Úimagr   ra   r   r   r   r˜     r™   r¶   r¹   r†   r¨   Úlstrº   )rU   Zallcloser   r   rV   ZtestingZassert_equalÚlen)r4   r·   ÚkwargsZres_cZres_rZres_ir   r   r   Útest_complexü  s6    þÿÿþÿþ""2&6zTestQuad.test_complexN)rI   rJ   rK   r=   rW   rg   rr   rv   rw   r}   r€   rŒ   rŽ   r’   r”   rž   r¥   r§   r1   ÚmarkZparametrizerU   rV   r   r   r   r¯   r²   r´   r¾   r   r   r   r   r[   ‚   sZ  	


		
""&&&*.."""&**Ïþ6
&ÿÿÿÿÿÿÿ$ÿ$ÿ$ÿ$ÿ$ÿ$ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿ$ÿ$ÿ$ÿ$ÿ$ÿÿ€ ÷þ 
r[   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 )NrR   r†   çš™™™™™É?ç      à?ç      Ð?r   r:   ©rU   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 )Nrf   rÁ   rR   rÂ   rÃ   r   r   r‡   r   r   r   Ú
opts_basic%  s    z/TestNQuad.test_fixed_limits.<locals>.opts_basicr   r:   rz   g¤p=
×£À?gš™™™™™é?g333333Ã¿T)Úoptsr“   g5‹—Œmø?Znevalg     jA)r   r   r	   )r4   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 )NrR   r:   r   rÄ   )rŸ   r    rÅ   rÆ   r¡   r¢   rÇ   r   r   r   Úfunc20  s    ÿz-TestNQuad.test_variable_limits.<locals>.func2c                    sT   ˆ | d | t  |¡| |  d  d ˆ | d | t  |¡| |  d  d gS ©NrR   r:   )rU   r   ©r    rÅ   rÆ   r¡   r¢   ©Úscaler   r   Úlim05  s    ((ÿz,TestNQuad.test_variable_limits.<locals>.lim0c                    s0   ˆ ||  ||   d ˆ ||  ||   d gS rh   r   ©rÅ   rÆ   r¡   r¢   rÐ   r   r   Úlim19  s    ÿz,TestNQuad.test_variable_limits.<locals>.lim1c                    s8   ˆ | |d |d    d ˆ | |d |d    d gS ©NrR   r†   r:   r   ©rÆ   r¡   r¢   rÐ   r   r   Úlim2=  s    ÿz,TestNQuad.test_variable_limits.<locals>.lim2c                    s    ˆ | |  d ˆ | |  d gS rh   r   ©r¡   r¢   rÐ   r   r   Úlim3A  s    z,TestNQuad.test_variable_limits.<locals>.lim3c                 S   s   d|||   giS )Nrf   r   rÏ   r   r   r   Úopts0D  s    z-TestNQuad.test_variable_limits.<locals>.opts0c                 S   s   i S r   r   rÓ   r   r   r   Úopts1G  s    z-TestNQuad.test_variable_limits.<locals>.opts1c                 S   s   i S r   r   rÖ   r   r   r   Úopts2J  s    z-TestNQuad.test_variable_limits.<locals>.opts2c                 S   s   i S r   r   rØ   r   r   r   Úopts3M  s    z-TestNQuad.test_variable_limits.<locals>.opts3r‘   )rn   rÊ   g9@)r   r   )r4   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„   U  s    z9TestNQuad.test_square_separate_ranges_and_opts.<locals>.frz   r:   ©rÊ   rs   ©r   r   )r4   r„   r   r   r   Ú$test_square_separate_ranges_and_optsT  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„   [  s    z8TestNQuad.test_square_aliased_ranges_and_opts.<locals>.frz   r:   rß   rs   rà   )r4   r„   ÚrÚoptr   r   r   Ú#test_square_aliased_ranges_and_optsZ  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„   c  s    z<TestNQuad.test_square_separate_fn_ranges_and_opts.<locals>.fc                  W   s   dS ©N)rz   r:   r   r‡   r   r   r   Ú	fn_range0f  s    zDTestNQuad.test_square_separate_fn_ranges_and_opts.<locals>.fn_range0c                  W   s   dS rå   r   r‡   r   r   r   Ú	fn_range1i  s    zDTestNQuad.test_square_separate_fn_ranges_and_opts.<locals>.fn_range1c                  W   s   i S r   r   r‡   r   r   r   Úfn_opt0l  s    zBTestNQuad.test_square_separate_fn_ranges_and_opts.<locals>.fn_opt0c                  W   s   i S r   r   r‡   r   r   r   Úfn_opt1o  s    zBTestNQuad.test_square_separate_fn_ranges_and_opts.<locals>.fn_opt1rß   rs   rà   )r4   r„   ræ   rç   rè   ré   ÚrangesrÊ   r   r   r   Ú'test_square_separate_fn_ranges_and_optsb  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„   w  s    z;TestNQuad.test_square_aliased_fn_ranges_and_opts.<locals>.fc                  W   s   dS rå   r   r‡   r   r   r   Úfn_rangez  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ß   rs   rà   )r4   r„   rì   rí   rê   rÊ   r   r   r   Ú&test_square_aliased_fn_ranges_and_optsv  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   ra   r   r   r   r7   …  s    z*TestNQuad.test_matching_quad.<locals>.funcr   r¨   )rê   )r   r   r   )r4   r7   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éþÿÿÿrR   c                 S   s   dS )Néýÿÿÿr   ra   r   r   r   r˜   ‘  r™   z1TestNQuad.test_matching_dblquad.<locals>.<lambda>c                 S   s   dS )Nr†   r   ra   r   r   r   r˜   ‘  r™   rõ   r†   )rô   rR   )r   r   r   )r4   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>.func3drz   rR   c                 S   s   dS )Nrô   r   ra   r   r   r   r˜   š  r™   z1TestNQuad.test_matching_tplquad.<locals>.<lambda>c                 S   s   dS rš   r   ra   r   r   r   r˜   š  r™   c                 S   s   t j S r   ©rU   r   r©   r   r   r   r˜   ›  r™   c                 S   s   t jS r   rù   r©   r   r   r   r˜   ›  r™   r…   r‡   rô   )rz   rR   )r   r   rU   r   r   )r4   rø   rË   rð   r   r   r   Útest_matching_tplquad–  s    þ"zTestNQuad.test_matching_tplquadc                 C   sF   z&t dd„ ddgddggddid� W n ty@   ds<J ‚Y n0 d S )	Nc                 S   s   | | S r   r   r©   r   r   r   r˜   ¢  r™   z-TestNQuad.test_dict_as_opts.<locals>.<lambda>r   r:   Zepsrelg-Cëâ6?rß   F)r   Ú	TypeErrorr<   r   r   r   Útest_dict_as_opts   s    &zTestNQuad.test_dict_as_optsN)rI   rJ   rK   rÌ   rÞ   rá   rä   rë   rî   rò   rö   rú   rü   r   r   r   r   rÀ     s   '		
rÀ   )r   ))r,   r;   ÚnumpyrU   r   r   r   r   r   r   r   Znumpy.testingr	   r
   r   r   r1   Zscipy.integrater   r   r   r   Zscipy.specialr   r   Zscipy._lib._ccallbackr   r    Zctypes.utilZscipy._lib._ccallback_cr   Z"scipy.integrate._test_multivariateZ	integrateZ_test_multivariater   r   r'   r(   rL   r[   rÀ   r   r   r   r   Ú<module>   s*   $
H   