a
    BCCf                     @   s   d dl Z d dlZd dlmZmZ d dlm  mZ	 d dl
mZmZ d dlmZ d dlmZmZmZ d dlmZ G dd dZG d	d
 d
ZdS )    N)assert_allcloseassert_equal)specialstats)quad_vec)	_tanhsinh_pair_cache_nsum)_gen_harmonic_gt1c                   @   s  e Zd Zdd Zde_de_dd Zejd de	d  d e_de_d	d
 Z
eejd d d e
_ejd e
_dd Zdejd  d e_de_dd Zde_de_dd Zejd e_de_dd Zdeej ed ed e_de_dd Zde_de_dd Zej e	d d e_ejd e_dd Zejed d e_ejd e_dd Zejd e_eje_d d! Zeeje_eje_d"d# Zeejd e_eje_d$d% Zd&e_eje_d'd( Zejd e_eje_dgd*d+Zd,d- Zej d.d/ejfd&gej d/fd&gej ejfdgejej fd0gd1e!j"#d0e!j"#d ggd2d3 Z$ej d4e%dd5d6d7 Z&ej d8d&d9d:gfej d;e!j'j(d<d= Z)ej d>e* d?d@dAgdBdC Z+dDdE Z,dFdG Z-dHdI Z.dJdK Z/dLdM Z0ej dNdOdPgdQdR Z1dSdT Z2ej dUe%ddVdW Z3dXdY Z4ej dZd[ej d/gd\d\gffej d]ej5ej6fd^d_ Z7d`da Z8dbdc Z9ddde Z:dfS )hTestTanhSinhc                 C   s   |t d|  S N   nplogselft r   _/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/integrate/tests/test_tanhsinh.pyf1   s    zTestTanhSinh.f1g      ?r   c                 C   s   |d t | S N   )r   arctanr   r   r   r   f2   s    zTestTanhSinh.f2r      c                 C   s   t |t | S Nr   expcosr   r   r   r   f3   s    zTestTanhSinh.f3c                 C   s,   t d|d  }t |d|d  |  S )Nr   r   )r   sqrtr   )r   r   ar   r   r   f4"   s    zTestTanhSinh.f4   `   c                 C   s   t |t | S r   )r   r!   r   r   r   r   r   f5)   s    zTestTanhSinh.f5gqqܿc                 C   s   t d|d  S Nr   r   r   r!   r   r   r   r   f6/   s    zTestTanhSinh.f6   c                 C   s   t |t d|d   S r'   r(   r   r   r   r   f75   s    zTestTanhSinh.f7g      ?c                 C   s   t |d S r   r   r   r   r   r   f8;   s    zTestTanhSinh.f8c                 C   s   t t |S r   )r   r   r   r   r   r   r   f9A   s    zTestTanhSinh.f9c                 C   s   t t |S r   )r   r!   tanr   r   r   r   f10G   s    zTestTanhSinh.f10c                 C   s   dd|d   S r'   r   r   r   r   r   f11M   s    zTestTanhSinh.f11c                 C   s   t | t | S r   )r   r   r!   r   r   r   r   f12S   s    zTestTanhSinh.f12c                 C   s   t |d  d S r   r   r   r   r   r   r   f13Y   s    zTestTanhSinh.f13c                 C   s   t | t | S r   r   r   r   r   r   f14_   s    zTestTanhSinh.f14      ?c                 C   s   t || S r   )r   sinr   r   r   r   f15e   s    zTestTanhSinh.f15Fc                 C   sN   t || }|s|S tjdd t|W  d    S 1 s@0    Y  d S )Nignoredivide)absr   errstatelog10)r   resrefr   errr   r   r   errork   s
    zTestTanhSinh.errorc                 C   s  | j }d}tjt|d tdd|j W d    n1 s<0    Y  d}tjt|d" t|d|jdd W d    n1 s0    Y  d}tjt|d t|d	|j W d    n1 s0    Y  tjt|d" t|d|jd
d W d    n1 s0    Y  tjt|d" t|d|jtd W d    n1 sD0    Y  d}tjt|d" t|d|jdd W d    n1 s0    Y  tjt|d$ t|d|jtjd W d    n1 s0    Y  d}tjt|d& t|d|jtjdd W d    n1 s0    Y  tjt|d& t|d|jtjdd W d    n1 s^0    Y  d}tjt|d$ t|d|jt d W d    n1 s0    Y  tjt|d" t|d|jd	d W d    n1 s0    Y  tjt|d" t|d|jdd W d    n1 s*0    Y  d}tjt|d" t|d|jdd W d    n1 sp0    Y  tjt|d" t|d|jdd W d    n1 s0    Y  tjt|d" t|d|jdd W d    n1 s0    Y  d}tjt|d" t|d|jdd W d    n1 s:0    Y  d}tjt|d" t|d|jdd W d    n1 s0    Y  d S )N`f` must be callable.match*   r   ...must be True or False.r   r   ...must be real numbers.      ?      ?ekkiatolrtol#...must be non-negative and finite. ...may not be positive infinity.TrN   r   rL   r   z...must be integers.maxlevel)Zmaxfunzmigratory coconut)minlevelz...must be non-negative.preserve_shapez...must be callable.Z
elderberrycallback)	r   pytestraises
ValueErrorr   br   infobject)r   fmessager   r   r   test_input_validationt   sX    ,0,2224664222222z"TestTanhSinh.test_input_validationzlimits, refr   rP   )r   rP   c                 C   s   t  }t|jg|R  }t|j| t|jg|R ddi}tt|j| |dkrlt	|jj
tjsnt	|jj
tjsJ tt|j|jdd d S )Nr   Tr   缉ؗҜ<rK   )r   normr   pdfr   integrallogpdfr   r   
issubdtypedtypefloatingZcomplexfloatingrA   )r   limitsr?   distr>   logresr   r   r   test_integral_transforms   s    
z%TestTanhSinh.test_integral_transformsf_number   c                 C   s   t | d| }d}t|d|j|d}t|j|j|d |dvrht| |j|j|j }||jk shJ |dv rtd S |js~J |j	dksJ d S )Nra   g:0yU>r   rM   >      >   
   r      )
getattrr   r^   r   rg   r?   r;   rA   successstatus)r   rp   ra   rN   r>   Z
true_errorr   r   r   
test_basic   s    
zTestTanhSinh.test_basicr?   g?g333333?casec                 C   sT   |\}}|dv rt d tt|| }||}t|jg|R  }t|j| d S )N>   ZkstwoZlaplaceZdweibullZdgammaz0tanh-sinh is not great for non-smooth integrands)	r[   skipru   r   intervalr   rf   r   rg   )r   r?   ry   distnameparamsrm   xr>   r   r   r   test_accuracy   s    

zTestTanhSinh.test_accuracyshaper      r*   r   r   r   c                    sh  t jd}||}||}||}t |fddd_d_t jdd }t|||fd}|||| }g d}	|	D ]>  fd	d
|D }
t	| }t
| |
dd t|j| qt |jjt jsJ t |jjt jsJ t |jjt jsJ t |jjt js&J tt |jj t |jdksPJ tt |jj d S )N   F*BG c                    sB     j d7  _   j| jks(| jdkr,dn| jd 7  _| | S Nr   rP   )ncallfevalsizendimr   r~   pra   nr   r   ra      s    ,z*TestTanhSinh.test_vectorization.<locals>.fr   c                    s   t  fdd| |S )Nc                    s   |   S r   r   r~   r   r   r   <lambda>       zKTestTanhSinh.test_vectorization.<locals>._tanhsinh_single.<locals>.<lambda>)r   )r"   r^   r   r   r   r   _tanhsinh_single   s    z9TestTanhSinh.test_vectorization.<locals>._tanhsinh_singleargsrg   rA   rv   rw   nfevrU   c                    s   g | ]}t | qS r   ru   .0r?   attrr   r   
<listcomp>   r   z3TestTanhSinh.test_vectorization.<locals>.<listcomp>V瞯<rM   r   )r   randomdefault_rngprodr   r   	vectorizer   ravelru   r   r   r   ri   rv   rj   bool_rw   integerr   rU   max)r   r   rngr"   r^   r   r   r>   refsattrsref_attrres_attrr   r   ra   r   r   test_vectorization   s2    





zTestTanhSinh.test_vectorizationc                    sf    fdd d _ tjdtjdf}t tjgd tj gd d|d}tg d}t|j| d S )	Nc                    sD    j d7  _ dd dd dd g  fddt| | D }|S )Nr   c                 S   s   t | d  S r   r2   r   r   r   r   r     r   z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>c                 S   s
   t | S r   r2   r   r   r   r   r     r   c                 S   s   t | t jd S )Nr   )r   	full_likenanr   r   r   r   r     r   c                    s   g | ]\}} | |qS r   r   )r   r~   jfuncsr   r   r     r   z6TestTanhSinh.test_flags.<locals>.f.<locals>.<listcomp>)nitzipr   )Zxsjsr>   ra   r   r   ra   
  s    z"TestTanhSinh.test_flags.<locals>.fr   r   rj   r$   )rU   r   r   )	r   r   arangeZint64r   r_   arrayr   rw   )r   r   r>   	ref_flagsr   r   r   
test_flags  s    $zTestTanhSinh.test_flagsc                 C   sJ   dd }t |tjgd tj gd ddd}tg d}t|j| d S )Nc                 S   s6   t | d d  t | d t | d t jd gS )Nr   r   r   r   )r   r   r   r   r   r   r   r   ra     s    z1TestTanhSinh.test_flags_preserve_shape.<locals>.fr   r$   T)rU   rX   r   )r   r   r_   r   r   rw   )r   ra   r>   r   r   r   r   test_flags_preserve_shape  s    $z&TestTanhSinh.test_flags_preserve_shapec                 C   s8   dd }t |dd}t|dddd}t|j|d  d S )Nc              	   S   s8   t | t d|  gt d|  | t d|   ggS )Nrs      d   )r   asarrayr6   r   r   r   r   r   ra   %  s    z+TestTanhSinh.test_preserve_shape.<locals>.fr   r   TrW   )r   r   r   rg   )r   ra   r?   r>   r   r   r   test_preserve_shape#  s    z TestTanhSinh.test_preserve_shapec                 C   s`   | j }d}tdD ]H}t|d|jd|d}| j|j|jdd}||d k sV|dk sVJ |}qd S )Nr   r*   rV   rU   TrG   r   g      /)r   ranger   r^   rA   rg   r?   )r   ra   Zlast_logerrir>   Zlogerrr   r   r   test_convergence-  s    zTestTanhSinh.test_convergencec                    s`   fdd j j _j j _d} j| }d\ _ _t d j}|j j|j  k rl|k srn J |j jksJ  j|_|j	sJ |j
dksJ d\ _ _|j}t d j|d} j|_||ksJ d\ _ _|d8 }|dksJ t d j|d}|j j|j  k r2|ks8n J |j j  krV|jk s\n J  j|jd ksrJ |j	r~J |j
tjksJ |} j|_d\ _ _t|jtj}t d jd|d	}|j|jksJ |j|jksJ |j j  kr|jksn J  j|jks&J |j	s2J |j
dksBJ d\ _ _t|jtj }t d jd|d	}|j j|j  k r|k sn J |j j  kr|jksn J  j|jksJ |j	sJ |j
dksJ d\ _ _t|j|j tj}t d j|d
}|j|jks8J |j|jksJJ |j j  krh|jksnn J  j|jksJ |j	sJ |j
dksJ d\ _ _t|j|j tj }t d j|d
}|j j j |j|j   k r|k s
n J |j j  kr(|jks.n J  j|jks@J |j	sLJ |j
dks\J d S )Nc                    s,     j d7  _   jt| 7  _| S r   )callsr   r   r   r   r   ra   r   r   r   ra   :  s    z:TestTanhSinh.test_options_and_result_attributes.<locals>.f-q=)r   r   r   rT   r   r   rN   rL   rM   )r   r?   r^   r   r   r   rA   rg   r   rv   rw   rU   eimZ	_ECONVERRr   	nextafterr_   )r   Zdefault_rtolZdefault_atolr?   rU   r>   rL   rN   r   r   r   "test_options_and_result_attributes7  s|    


(
,$$,$$8$z/TestTanhSinh.test_options_and_result_attributesrN   g-C6?g+=c                    sD  t   tddd}t jdddt|d}t jdd|d}tt	|j
|j
fi | tt	|j|jfi | |j|jksJ  fd	d
} fdd}t|tj tjdd}t|tj tj}tjddH tt	|j
|j
fi | tt	|j|jfi | W d    n1 s$0    Y  |j|jks@J d S )NgC]r2<r   )rL   rN   rP   r   T)r   rN   rM   c                    s     |   |  S r   )rh   rf   r   rm   r   r   ra     s    z TestTanhSinh.test_log.<locals>.fc                    s(   t  | d  |  t jd  S )Ny                              ?)r   r   rh   pir   r   r   r   logf  s    z#TestTanhSinh.test_log.<locals>.logfrG   r8   all)r   re   dictr   rh   r   r   rf   r   r   rg   rA   r   r_   r<   )r   rN   Z	test_tolsr>   r?   ra   r   r   r   r   test_log  s    <zTestTanhSinh.test_logc                    s   dd }t |dtjd }tdd dtdd  d  }t|j| tjdd tjdd fd	d}t |tjtj }t|jd
 d S )Nc                 S   s   t d|  S Nr   r2   r   r   r   r   ra     s    z$TestTanhSinh.test_complex.<locals>.fr   r*   r   r   r   )scalec                    s     | d |   S r   )rf   r   Zdist1Zdist2r   r   ra     s    y            )	r   r   r   r!   r   rg   r   re   r_   )r   ra   r>   r?   r   r   r   test_complex  s    $zTestTanhSinh.test_complexrU   c                    s2   fdd ddt g    _ _ _t djjd|d}t  j}t	d|d D ]}ddt g    _ _ _t
||d}t djjfi |}t|j|jdd t|j|jd|j d |j j  krt jksn J  j|| d d ksJ |j|jksJ t|t  j qZd S )	Nc                    sB     j d7  _   jt| 7  _t j|  f _| S r   )r   r   r   r   Zconcatenater~   r   r   r   r   r   r   ra     s    z%TestTanhSinh.test_minlevel.<locals>.fr   r   r   gؗҼ<rM   rK   )r   r   r   r   r~   r   r   r^   sortr   r   r   rg   rA   r   lenrw   r   )r   rU   r?   Zref_xrV   optionsr>   r   r   r   test_minlevel  s    $zTestTanhSinh.test_minlevelc              	   C   s   dd }t j dt j t jdt j dg}t jt jdt j ddt jg}t t j}t|||}t|j||d |d | |||g d S )Nc                 S   s    t j| t | < t | d  S r   )r   r   isinfr   r   r   r   r   ra     s    z/TestTanhSinh.test_improper_integrals.<locals>.fr   i   r   )r   r_   r!   r   r   r   rg   )r   ra   r"   r^   r?   r>   r   r   r   test_improper_integrals  s     z$TestTanhSinh.test_improper_integralsrl   r   r   r   rj   c                    s   t j| dd \}} fdd} t jkr0dnd}t||||d}|jj ksTJ |jj ksdJ t |jstJ t	|jt 
|t 
| |d d S )Nr   r   c                    s   | j  ksJ t| S r   )rj   r   r   r   r   r   r   ra     s    z"TestTanhSinh.test_dtype.<locals>.fr   gh㈵>rM   )r   r   float64r   rg   rj   rA   r   rv   r   r   )r   rl   rj   r"   r^   ra   rN   r>   r   r   r   
test_dtype  s    zTestTanhSinh.test_dtypec           
         s  t j t j }}dd }d\}}|| d t||dd}t|||fi |}|jrXJ |j|ksfJ  fdd d	 _d  _|d
= t|||fi |d i}| D ]j}	|	dkr j|	 dksJ ||	 dksJ ||	 dksJ q||	  j|	   kr||	 ksn J qd S )Nc                 S   s   t |  |  S r   r2   r   r   r   r   ra     s    z-TestTanhSinh.test_maxiter_callback.<locals>.f)r   r   r   r   )rV   rU   rN   c                    sB     j d7  _ |  _t| ds"J | jdks0J  j kr>td S )Nr   rg   )iterr>   hasattrrw   StopIterationr>   rZ   maxiterr   r   rZ     s    
z4TestTanhSinh.test_maxiter_callback.<locals>.callbackrP   rU   rZ   rw   r   )	r   r_   r   r   rv   rU   r   r>   keys)
r   r"   r^   ra   rV   rU   kwargsr>   Zres2keyr   r   r   test_maxiter_callback  s&    
z"TestTanhSinh.test_maxiter_callbackc           	         s   t j t j }}dd } fdd g  _g  _d}t|||d| d g }g }t|d D ].}t|||||d	}||j ||j q\t	 jdd  |d
d t	 jdd  |d
dd d S )Nc                 S   s   t |  |  S r   r2   r   r   r   r   ra   5  s    z&TestTanhSinh.test_jumpstart.<locals>.fc                    s     j | j  j| j d S r   )	integralsappendrg   errorsrA   r   rY   r   r   rZ   8  s    z-TestTanhSinh.test_jumpstart.<locals>.callbackr*   r   )rV   rU   rZ   r   r   r   rM   rd   r   )
r   r_   r   r   r   r   r   rg   rA   r   )	r   r"   r^   ra   rU   r   r   r   r>   r   rY   r   test_jumpstart1  s    zTestTanhSinh.test_jumpstartc           	      C   s  dd }t |dd}|jsJ t|jd t |dddd}|jdksHJ t|jtj t |dddd}|jdkstJ t|jtj t |dd}|jsJ |jdksJ t|jd dd }t |ddd	d
}t|jd tjdddg}dtjddg}ddtjdg}t ||||fd
}t|jtjtjtjdg t|jd d tj t|j	g d t|jg d t|j
d d d tdt_tdt_dgt_d t_t dd dd}t|jd t dd dd}t|jd d}t dd dt|}g d}|D ]}t|| j| qd S )Nc                 S   s   t | jt jsJ | d S )Nc   )r   ri   rj   rk   r   r   r   r   ra   P  s    z*TestTanhSinh.test_special_cases.<locals>.fr   r   g{Gz?rT   rP   c                 S   s   | | S r   r   )r~   cr   r   r   ra   g  s    r   r   r5   r   )r   r   r   r   FFFTc                 S   s   | d S r   r   r   r   r   r   r     r   z1TestTanhSinh.test_special_cases.<locals>.<lambda>y              ?c                 S   s   | S r   r   r   r   r   r   r     r   r   c                 S   s   | S r   r   r   r   r   r   r     r   r   )r   rv   r   rg   r   rA   r   r   rU   rw   r   emptyr   ZxjcZwjindicesZh0Zzerosr   )	r   ra   r>   r"   r^   r   r   r   r   r   r   r   test_special_casesK  sN    

zTestTanhSinh.test_special_casesN)F);__name__
__module____qualname__r   r?   r^   r   r   r   r   r    r   r#   r&   r)   r+   r!   r   gammar,   r-   r/   r0   r_   r1   r3   r4   r7   rA   rc   r[   markparametrizer   re   Zcdfro   r   rx   Z_distr_paramsZdistcontr   tupler   r   r   r   r   r   r   r   r   r   float32r   r   r   r   r   r   r   r   r   r      s   &
	7



'

m

 #r   c                   @   sT  e Zd ZejdZejddddZdd Z	ej
d d e	_de	_eje	_e e	_d	d
 Zeede_de_eje_efe_dd Zde_ejdddde_eejee_efe_dd Zejdedddd Zejdg ddd Zejde dddgdd Zd d! Zd"d# Z d$d% Z!d&d' Z"ejd(ej#ej$gd)d* Z%d+S ),TestNSuml   Q [ r   rs   r   c                 C   s   |d S Nr   r   )r   kr   r   r   r     s    zTestNSum.f1r      c                 C   s   d||  S r   r   r   r  r   r   r   r   r     s    zTestNSum.f2c                 C   s   d||  S r   r   r  r   r   r   r      s    zTestNSum.f3r$   rq   )r   r   c              
   C   s  | j }d}tjt|d  td|j|j W d    n1 s>0    Y  d}tjt|d$ t||j|jdd W d    n1 s0    Y  d}tjt|d t|d|j W d    n1 s0    Y  tjt|d t||jd  W d    n1 s0    Y  tjt|d& t||j|jt d	 W d    n1 sH0    Y  tjt|d$ t||j|jd
d W d    n1 s0    Y  tjt|d$ t||j|jtd W d    n1 s0    Y  tj	dd t|tj
tj tjgd}t|jdkt|j@ t|j@ |j @ |j@ dksDJ t|dtj
dg}t|jdkt|j@ t|j@ |j @ |j@ dksJ t|ddtj
tj tjddgd	}t|jdkt|j@ t|j@ |j @ |j@ dksJ W d    n1 s0    Y  d}tjt|d$ t||j|jdd W d    n1 sV0    Y  tjt|d& t||j|jtjd W d    n1 s0    Y  d}tjt|d( t||j|jtjdd W d    n1 s0    Y  tjt|d( t||j|jtjdd W d    n1 s00    Y  d}tjt|d$ t||j|jdd W d    n1 sx0    Y  tjt|d$ t||j|jdd W d    n1 s0    Y  d S )NrB   rC   rE   rF   r   rG   rH   rI   )steprJ   rK   rM   r8   r   r   rP   rs   r   rO   rQ   TrR   rS   z"...must be a non-negative integer.g      @maxtermsr   )r   r[   r\   r]   r	   r"   r^   r`   r   r<   r   r_   r   rw   isnansumrA   rv   r   )r   ra   rb   r>   r   r   r   rc     s    .2,.644

"
,46884zTestNSum.test_input_validationrp   r*   c                    s   t | d|  t  j j jd}t|j j t|j	d t|j
d tjdd0 t fdd j jd jd	}W d    n1 s0    Y  tt|j|j tt|j|j t|j	d t|j
d d S )
Nra   r   r   Tr8   r9   c                     s   t  |  S r   r   r   r   r   r   r     r   z%TestNSum.test_basic.<locals>.<lambda>)r   r   )ru   r	   r"   r^   r   r   r  r?   r   rw   rv   r   r<   r   rA   )r   rp   r>   rn   r   r   r   rx     s    $zTestNSum.test_basicr
  )r   r   rs   r   r   c              	   C   s  | j }dd }dd }tddgd d tjf }tddtjgd d tjtjf }tg d	d
}t|| | }|}	|||  }|||  }
||t||  jddd}||||
 | }|| || }|| ||
 }|| d }|| d }t	|||\}}}t
|jD ]n}|| || ||   }}}|| | d |kr$|t||| | }|||< |t|j ||< q$d}t|||	|||d}t|j|d| d t|j|d| d t|jd t|jd |	| | d |k}t|j| || dd t|j| || dd t|||	|dt||d}tt|j|j tt|j|j t|jd t|jd d S )Nc                 S   s   dt |  S r  r   r   r   r   r   r     s    z$TestNSum.test_integral.<locals>.logfc                 S   s   d|  S )NrP   r   r   r   r   r   F  s    z!TestNSum.test_integral.<locals>.Fr   r$   r   r   )r5   r   r   )rP   r   r   r   rP   T)ZaxisZkeepdimsr   r   )r  r
  rN   rs   rM   r   r   )r  r   rN   r
  )r   r   r   Znewaxisr_   Zreshapefloorr   r  Zbroadcast_arraysZndindexr   ZfinfoZepsr	   r   rA   r   rw   rv   r   r   )r   r
  ra   r   r  r"   r^   r  ZnstepsZ
b_originalr  directrg   lowhighZref_sumZref_errr   ZaiZbiZstepirN   r>   rn   r   r   r   test_integral  sN    $ 
zTestNSum.test_integralr   r   r   r   c                    s,  t jd}|jdd|d}t j}||d }t |fddd_t jdd	 }t||d
|fd}||||d
d	 }g d}	|	D ]>  fdd|D }
t
| }t|	 |
dd t|j| qt |jjt jsJ t |jjt jsJ t |jjt jsJ tt |jj d S )Nr   r   rs   r  c                    s8     j | jks| jdkrdn| jd 7  _ d| |  S r   )r   r   r   r   r   r   r   r   ra   3  s    ,z&TestNSum.test_vectorization.<locals>.fr   c                    s   t  fdd| ||dS )Nc                    s   d|    S r   r   r   r   r   r   r   ;  r   zCTestNSum.test_vectorization.<locals>._nsum_single.<locals>.<lambda>r	  )r	   )r"   r^   r   r
  r   r   r   _nsum_single9  s    z1TestNSum.test_vectorization.<locals>._nsum_singlei  )r
  r   r	  )r  rA   rv   rw   r   c                    s   g | ]}t | qS r   r   r   r   r   r   r   B  r   z/TestNSum.test_vectorization.<locals>.<listcomp>r   rM   )r   r   r   integersr_   r   r   r   r	   r   ru   r   r   r   ri   rv   rj   r   rw   r   r   r   )r   r   r   r"   r^   r   r  r>   r   r   r   r   r   r   r   r   &  s*    


zTestNSum.test_vectorizationc                 C   s   | j }g d}g d}dtjtjtjg}t|d}tjdd" t||||fd}W d    n1 sh0    Y  t|jg d t|j	g d	 t
|j|j ||j  d S )
N)r   r   g?g?)r   r   r   r   rs   r   r8   r9   r   r   )r   r   r   r   )r   r   r_   r   zetar<   r	   r   rv   rw   r   r  )r   ra   r   r"   r^   r?   r>   r   r   r   test_statusL  s    0zTestNSum.test_statusc                    sV    fdd d _ t dd}t|j  j  d _ t dtjdd}t|j  j  d S )Nc                    s      j t| 7  _ d| d  S r'   )r   r   r   r   r   r   r   ra   \  s    zTestNSum.test_nfev.<locals>.fr   r   rs   ư>rK   )r   r	   r   r   r_   )r   r>   r   r   r   	test_nfev[  s    zTestNSum.test_nfevc                 C   sn   t dd ddgtjddd}t dd ddgtj}t|j|j|j ksNJ t|j|j|j k sjJ d S )	Nc                 S   s   d| d  S r'   r   r  r   r   r   r   k  r   z)TestNSum.test_inclusive.<locals>.<lambda>r   r*   i  g?)r
  rL   c                 S   s   d| d  S r'   r   r  r   r   r   r   l  r   )r	   r   r_   r   r  rA   )r   r>   r?   r   r   r   test_inclusiveh  s    zTestNSum.test_inclusivec                 C   s   | j }d }}t|||}t|j|| t| jdtjdd}t|j| j j t	d}t	d}t	d}t
|j|j|j}t| j|||fd}|jj|ksJ |jj|ksJ |jj|ksJ dd }t|d	d
d	d}t|jsJ t|jsJ |jdksJ t|d	d
dd}t|js.J t|js@J |jdksPJ tjdddg}tjtjtjtjg}ddtjdg}t| j|||fd}t|jtjtjtj| j jg t|jd d tj t|jg d t|jg d t|jd d d d S )Nr   r   r   )r   r   r   )r   r   r*   c                 S   s8   t jdd d|  W  d    S 1 s*0    Y  d S )Nr8   r9   r   )r   r<   r   r   r   r   ra     s    z%TestNSum.test_special_case.<locals>.fr   rs   r	  r   r   r   )rP   rP   r   r   r   )r   r	   r   r  r   r   r_   r   r?   r   Zbroadcast_shapesr   rw   r   r  rA   r   rv   )r   ra   r"   r^   r>   r   r   r   r   r   test_special_casep  s@    


zTestNSum.test_special_caserj   c                    s    fdd}t jd d}t jdt jg d}t|||}|jj ksJJ |jj ksZJ  t jkrhdnd}t|d}t	|j||d	 d S )
Nc                    s(   | j  ksJ d| tjd dd   S )Nr   r   r   r   )rj   r   r   r  r   r   r   ra     s    zTestNSum.test_dtype.<locals>.fr   r   rs   r   r  r   rM   )
r   r   r_   r	   r  rj   rA   r   r
   r   )r   rj   ra   r"   r^   r>   rN   r?   r   r   r   r     s    
zTestNSum.test_dtypeN)&r   r   r   r   r   r   r   uniformr   r   r   r?   r"   r_   r^   r   r   r   r   r  r    r  r
   rc   r[   r   r   r   rx   r  r   r  r  r  r  r  r   r   r   r   r   r   r    s<   4

5
%1r  )r[   numpyr   Znumpy.testingr   r   Z(scipy._lib._elementwise_iterative_methodZ_libZ_elementwise_iterative_methodr   Zscipyr   r   Zscipy.integrater   Zscipy.integrate._tanhsinhr   r   r	   Zscipy.stats._discrete_distnsr
   r   r  r   r   r   r   <module>   s        