o
    5Bi                     @   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   c/var/www/html/Trade-python/venv/lib/python3.10/site-packages/scipy/integrate/tests/test_tanhsinh.pyf1      zTestTanhSinh.f1g      ?r   c                 C   s   |d t | S N   )r   arctanr   r   r   r   f2   r   zTestTanhSinh.f2r      c                 C      t |t | S Nr   expcosr   r   r   r   f3      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   r   r   )r   r$   r   r   r   r   r   f5)   r#   zTestTanhSinh.f5gqqܿc                 C   s   t d|d  S Nr   r   r   r$   r   r   r   r   f6/   r   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;      zTestTanhSinh.f8c                 C      t t |S r   )r   r   r!   r   r   r   r   f9A      zTestTanhSinh.f9c                 C   r1   r   )r   r$   tanr   r   r   r   f10G   r3   zTestTanhSinh.f10c                 C   s   dd|d   S r*   r   r   r   r   r   f11M   r3   zTestTanhSinh.f11c                 C   s   t | t | S r   )r   r    r$   r   r   r   r   f12S      zTestTanhSinh.f12c                 C   s   t |d  d S r   r   r    r   r   r   r   f13Y   r#   zTestTanhSinh.f13c                 C   s   t | t | S r   r   r   r   r   r   f14_   r8   zTestTanhSinh.f14      ?c                 C   s   t || S r   )r   sinr   r   r   r   f15e   r0   zTestTanhSinh.f15Fc                 C   sN   t || }|s
|S tjdd t|W  d    S 1 s w   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w   Y  d}tjt|d t|d|jdd W d    n1 s@w   Y  d}tjt|d t|d	|j W d    n1 s`w   Y  tjt|d t|d|jd
d W d    n1 sw   Y  tjt|d t|d|jtd W d    n1 sw   Y  d}tjt|d t|d|jdd W d    n1 sw   Y  tjt|d t|d|jtjd W d    n1 sw   Y  d}tjt|d t|d|jtjdd W d    n	1 sw   Y  tjt|d t|d|jtjdd W d    n	1 s+w   Y  d}tjt|d t|d|jt d W d    n	1 sOw   Y  tjt|d t|d|jd	d W d    n	1 spw   Y  tjt|d t|d|jdd W d    n	1 sw   Y  d}tjt|d t|d|jdd W d    n	1 sw   Y  tjt|d t|d|jdd W d    n	1 sw   Y  tjt|d t|d|jdd W d    n	1 sw   Y  d}tjt|d t|d|jdd W d    n	1 sw   Y  d}tjt|d t|d|jdd W d    d S 1 s=w   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rU   r   rS   r   z...must be integers.maxlevel)maxfunzmigratory coconut)minlevelz...must be non-negative.preserve_shapez...must be callable.
elderberrycallback)	r   pytestraises
ValueErrorr   br   infobject)r   fmessager   r   r   test_input_validationt   sz   $z"TestTanhSinh.test_input_validationzlimits, refr   rW   )r   rW   c                 C   s   t  }t|jg|R  }t|j| t|jg|R ddi}tt|j| |dkr7t	|jj
tjsBJ t	|jj
tjsBJ tt|j|jdd d S )Nr   Tr   缉ؗҜ<rR   )r   normr   pdfr   integrallogpdfr   r    
issubdtypedtypefloatingcomplexfloatingrH   )r   limitsrF   distrE   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r4t| |j|j|j }||jk s4J |dv r:d S |js?J |j	dksFJ d S )Nrj   g:0yU>r   rT   >      >      
   r   )
getattrr   rg   r   rp   rF   rB   rH   successstatus)r   rz   rj   rU   rE   
true_errorr   r   r   
test_basic   s   
zTestTanhSinh.test_basicrF   g?g333333?casec                 C   sT   |\}}|dv rt d tt|| }||}t|jg|R  }t|j| d S )N>   kstwodgammalaplacedweibullz0tanh-sinh is not great for non-smooth integrands)	rd   skipr   r   intervalr   ro   r   rp   )r   rF   r   distnameparamsrw   xrE   r   r   r   test_accuracy   s   

zTestTanhSinh.test_accuracyshaper      r-   r   r   r   c                    sb  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| qEt |jjt jspJ t |jjt js{J t |jjt jsJ t |jjt jsJ tt |jj t |jdksJ 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   rW   )ncallfevalsizendimr   r   prj   nr   r   rj      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%   rg   r   r   r   r   _tanhsinh_single   s   z9TestTanhSinh.test_vectorization.<locals>._tanhsinh_singleargsrp   rH   r   r   nfevr\   c                       g | ]}t | qS r   r   .0rF   attrr   r   
<listcomp>       z3TestTanhSinh.test_vectorization.<locals>.<listcomp>V瞯<rT   r   )r   randomdefault_rngprodr   r   	vectorizer   ravelr   r   r   r   rr   r   rs   bool_r   integerr   r\   max)r   r   rngr%   rg   r   r   rE   refsattrsref_attrres_attrr   r   rj   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   r9   r   r   r   r   r     s    z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>c                 S   s
   t | S r   r9   r   r   r   r   r     s   
 c                 S   s   t | t jd S )Nr   )r   	full_likenanr   r   r   r   r     s    c                    s   g | ]
\}} | |qS r   r   )r   r   jfuncsr   r   r     s    z6TestTanhSinh.test_flags.<locals>.f.<locals>.<listcomp>)nitzipr   )xsjsrE   rj   r   r   rj   
  s   z"TestTanhSinh.test_flags.<locals>.fr   r   rs   r'   )r\   r   r   )	r   r   arangeint64r   rh   arrayr   r   )r   r   rE   	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   rj     s   z1TestTanhSinh.test_flags_preserve_shape.<locals>.fr   r'   T)r\   r`   r   )r   r   rh   r   r   r   )r   rj   rE   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 )Nr~      d   )r   asarrayr=   r!   r   r   r   r   rj   %  s   z+TestTanhSinh.test_preserve_shape.<locals>.fr   r   Tr_   )r   r   r   rp   )r   rj   rF   rE   r   r   r   test_preserve_shape#  s   z TestTanhSinh.test_preserve_shapec                 C   s`   | j }d}tdD ]$}t|d|jd|d}| j|j|jdd}||d k s+|dk s+J |}q	d S )Nr   r-   r^   r\   TrN   r   g      /)r   ranger   rg   rH   rp   rF   )r   rj   last_logerrirE   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 r7|k s:J  J |j jksBJ  j|_|j	sKJ |j
dksRJ d\ _ _|j}t d j|d} j|_||ksnJ d\ _ _|d8 }|dks~J t d j|d}|j j|j  k r|ksJ  J |j j  kr|jk sJ  J  j|jd ksJ |j	rJ |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J  J  j|jksJ |j	sJ |j
dksJ d\ _ _t|jtj }t d jd|d	}|j j|j  k rI|k sLJ  J |j j  kr\|jks_J  J  j|jkshJ |j	snJ |j
dksvJ d\ _ _t|j|j tj}t d j|d
}|j|jksJ |j|jksJ |j j  kr|jksJ  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J  J |j j  kr|jksJ  J  j|jks J |j	s&J |j
dks.J d S )Nc                    s,     j d7  _   jt| 7  _| S r   )callsr   r   r   r   r   rj   r   r   r   rj   :  s   
z:TestTanhSinh.test_options_and_result_attributes.<locals>.f-q=)r   r   r   r[   r   r   rU   rS   rT   )r   rF   rg   r   r   r   rH   rp   r   r   r   r\   eim	_ECONVERRr   	nextafterrh   )r   default_rtoldefault_atolrF   r\   rE   rS   rU   r   r   r   "test_options_and_result_attributes7  s|   


*
*"
&.&&:&z/TestTanhSinh.test_options_and_result_attributesrU   g-C6?g+=c                    s@  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sDJ  fd	d
} fdd}t|tj tjdd}t|tj tj}tjdd$ tt	|j
|j
fi | tt	|j|jfi | W d    n1 sw   Y  |j|jksJ d S )NgC]r2<r   )rS   rU   rW   r   T)r   rU   rT   c                    s     |   |  S r   )rq   ro   r   rw   r   r   rj     r8   z TestTanhSinh.test_log.<locals>.fc                    s(   t  | d  |  t jd  S )Ny                              ?)r   r   rq   pir   r   r   r   logf  s   (z#TestTanhSinh.test_log.<locals>.logfrN   r?   all)r   rn   dictr   rq   r   r   ro   r   r    rp   rH   r   rh   rC   )r   rU   	test_tolsrE   rF   rj   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   r9   r   r   r   r   rj     r0   z$TestTanhSinh.test_complex.<locals>.fr   r-   r   r   r   )scalec                    s     | d |   S r   )ro   r   dist1dist2r   r   rj     s   y            )	r   r   r   r$   r   rp   r   rn   rh   )r   rj   rE   rF   r   r   r   test_complex  s   $zTestTanhSinh.test_complexr\   c                    s0   fdd ddt g  _ _ _t djjd|d}t  j}t	d|d D ]h}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rtt jkswJ  J  j|| d d ksJ |j|jksJ t|t  j q-d S )	Nc                    sB     j d7  _   jt| 7  _t j|  f _| S r   )r   r   r   r   concatenater   r   r   r   r   r   r   rj     s   
z%TestTanhSinh.test_minlevel.<locals>.fr   r   r   gؗҼ<rT   rR   )r   r   r   r   r   r   r   rg   sortr   r   r   rp   rH   r   lenr   r   )r   r\   rF   ref_xr^   optionsrE   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   rj     s   z/TestTanhSinh.test_improper_integrals.<locals>.fr   i   r   )r   rh   r$   r   r   r   rp   )r   rj   r%   rg   rF   rE   r   r   r   test_improper_integrals  s    (z$TestTanhSinh.test_improper_integralsrv   r   r   r   rs   c                    s   t j| dd \}} fdd} t jkrdnd}t||||d}|jj ks*J |jj ks2J t |js:J t	|jt 
|t 
| |d d S )Nr   r   c                    s   | j  ksJ t| S r   )rs   r   r    r   r   r   r   rj     s   
z"TestTanhSinh.test_dtype.<locals>.fr   gh㈵>rT   )r   r   float64r   rp   rs   rH   r   r   r   r    )r   rv   rs   r%   rg   rj   rU   rE   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r,J |j|ks3J  fdd d	 _d  _|d
= t|||fi |d i}| D ]5}	|	dkru j|	 dksdJ ||	 dkslJ ||	 dkstJ qU||	  j|	   kr||	 ksJ  J qUd S )Nc                 S      t |  |  S r   r9   r   r   r   r   rj     r3   z-TestTanhSinh.test_maxiter_callback.<locals>.f)r   r   r   r   )r^   r\   rU   c                    sB     j d7  _ |  _t| dsJ | jdksJ  j krtd S )Nr   rp   )iterrE   hasattrr   StopIterationrE   rc   maxiterr   r   rc     s   
z4TestTanhSinh.test_maxiter_callback.<locals>.callbackrW   r\   rc   r   r   )	r   rh   r   r   r   r\   r  rE   keys)
r   r%   rg   rj   r^   r\   kwargsrE   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   r  r   r9   r   r   r   r   rj   5  r3   z&TestTanhSinh.test_jumpstart.<locals>.fc                    s     j | j  j| j d S r   )	integralsappendrp   errorsrH   r  rb   r   r   rc   8  s   z-TestTanhSinh.test_jumpstart.<locals>.callbackr-   r   )r^   r\   rc   r   r   r   rT   rm   r   )
r   rh   r  r  r   r   r  rp   rH   r   )	r   r%   rg   rj   r\   r  r  r   rE   r   rb   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s$J t|jtj t |dddd}|jdks:J t|jtj t |dd}|jsLJ |jdksSJ 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   rr   rs   rt   r   r   r   r   rj   P  s   z*TestTanhSinh.test_special_cases.<locals>.fr   r   g{Gz?r[   rW   c                 S   s   | | S r   r   )r   cr   r   r   rj   g     r  r   r<   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 r   r   r   r   r   r   r         r   c                 S   r  r   r   r   r   r   r   r     r  r   )r   r   r   rp   r   rH   r   r   r\   r   r   emptyr   xjcwjindicesh0zerosr   )	r   rj   rE   r%   rg   r  r   r   r   r   r   r   test_special_casesK  sP   

zTestTanhSinh.test_special_casesN)F);__name__
__module____qualname__r   rF   rg   r   r   r   r   r"   r    r&   r)   r,   r.   r$   r   gammar/   r2   r5   r6   rh   r7   r:   r;   r>   rH   rl   rd   markparametrizer   rn   cdfry   r   r   _distr_params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   r~   r   c                 C   s   |d S Nr   r   )r   kr   r   r   r     s   zTestNSum.f1r      c                 C      d||  S r   r   r   r.  r   r   r   r   r        zTestNSum.f2c                 C   r0  r   r   r1  r   r   r   r"     r2  zTestNSum.f3r'   r{   )r   r   c              
   C   s  | j }d}tjt|d td|j|j W d    n1 sw   Y  d}tjt|d t||j|jdd W d    n1 sBw   Y  d}tjt|d t|d|j W d    n1 sbw   Y  tjt|d t||jd  W d    n1 sw   Y  tjt|d t||j|jt d	 W d    n1 sw   Y  tjt|d t||j|jd
d W d    n1 sw   Y  tjt|d t||j|jtd W d    n1 sw   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sJ t|dtj
dg}t|jdkt|j@ t|j@ |j @ |j@ dksFJ 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swJ W d    n	1 sw   Y  d}tjt|d t||j|jdd W d    n	1 sw   Y  tjt|d t||j|jtjd W d    n	1 sw   Y  d}tjt|d t||j|jtjdd W d    n	1 sw   Y  tjt|d t||j|jtjdd W d    n	1 sw   Y  d}tjt|d t||j|jdd W d    n	1 s7w   Y  tjt|d t||j|jdd W d    d S 1 sZw   Y  d S )NrI   rJ   rL   rM   r   rN   rO   rP   )steprQ   rR   rT   r?   r   r   rW   r~   r   rV   rX   TrY   rZ   z"...must be a non-negative integer.g      @maxtermsr   )r   rd   re   rf   r	   r%   rg   ri   r   rC   r   rh   r   r   isnansumrH   r   r   )r   rj   rk   rE   r   r   r   rl     s   

"
$zTestNSum.test_input_validationrz   r-   c                    s   t | d|  t  j j jd}t|j j t|j	d t|j
d tjdd t fdd j jd jd	}W d    n1 sGw   Y  tt|j|j tt|j|j t|j	d t|j
d d S )
Nrj   r   r   Tr?   r@   c                     s   t  |  S r   r   r   r   r   r   r     s    z%TestNSum.test_basic.<locals>.<lambda>)r   r   )r   r	   r%   rg   r   r   r7  rF   r   r   r   r   rC   r    rH   )r   rz   rE   rx   r   r   r   r     s   zTestNSum.test_basicr5  )r   r   r~   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 ]5}|| || || }}}|| | d |kr|t||| | }|||< |t|j ||< qd}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     r0   z$TestNSum.test_integral.<locals>.logfc                 S   s   d|  S )NrW   r   r   r   r   r   F  r  z!TestNSum.test_integral.<locals>.Fr   r'   r   r   )r<   r   r   )rW   r   r   r   rW   T)axiskeepdimsr   r   )r3  r5  rU   r~   rT   r   r   )r3  r   rU   r5  )r   r   r   newaxisrh   reshapefloorr   r7  broadcast_arraysndindexr   finfoepsr	   r   rH   r   r   r   r   r    )r   r5  rj   r   r8  r%   rg   r3  nsteps
b_originalr.  directrp   lowhighref_sumref_errr   aibistepirU   rE   rx   r   r   r   test_integral  sP   $ 
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| qHt |jjt jssJ t |jjt js~J t |jjt jsJ tt |jj d S )Nr   r   r~   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   rj   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   ;      zCTestNSum.test_vectorization.<locals>._nsum_single.<locals>.<lambda>r4  )r	   )r%   rg   r   r5  r   r   r   _nsum_single9  s   z1TestNSum.test_vectorization.<locals>._nsum_singlei  )r5  r   r4  )r7  rH   r   r   r   c                    r   r   r   r   r   r   r   r   B  r   z/TestNSum.test_vectorization.<locals>.<listcomp>r   rT   )r   r   r   integersrh   r   r   r   r	   r   r   r   r   r   rr   r   rs   r   r   r   r   r   )r   r   r   r%   rg   r   rN  rE   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 s4w   Y  t|jg d t|j	g d	 t
|j|j ||j  d S )
N)r   r   g?g?)r   r   r   r   r~   r   r?   r@   r   r  )r   r   r   r   )r   r   rh   r   zetarC   r	   r   r   r   r   r7  )r   rj   r   r%   rg   rF   rE   r   r   r   test_statusL  s   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   rj   \  s   zTestNSum.test_nfev.<locals>.fr   r   r~   ư>rR   )r   r	   r   r   rh   )r   rE   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s'J t|j|j|j k s5J d S )	Nc                 S      d| d  S r*   r   r.  r   r   r   r   k  rM  z)TestNSum.test_inclusive.<locals>.<lambda>r   r-   i  g?)r5  rS   c                 S   rT  r*   r   rU  r   r   r   r   l  rM  )r	   r   rh   r   r7  rH   )r   rE   rF   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sRJ |jj|ksZJ |jj|ksbJ dd }t|d	d
d	d}t|jsvJ t|js~J |jdksJ t|d	d
dd}t|jsJ t|jsJ |jdksJ 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w   Y  d S )Nr?   r@   r   )r   rC   r   r   r   r   rj     s   $z%TestNSum.test_special_case.<locals>.fr   r~   r4  r   r   r   )rW   rW   r   r   r  )r   r	   r   r7  r   r   rh   r   rF   r  broadcast_shapesr   r   r   r6  rH   r   r   )r   rj   r%   rg   rE   r   r   r   r   r   test_special_casep  s@   


zTestNSum.test_special_casers   c                    s    fdd}t jd d}t jdt jg d}t|||}|jj ks%J |jj ks-J  t jkr4d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   )rs   r   r   rU  r   r   r   rj     s   zTestNSum.test_dtype.<locals>.fr   r   r~   r   rR  r   rT   )
r   r   rh   r	   r7  rs   rH   r   r
   r   )r   rs   rj   r%   rg   rE   rU   rF   r   r   r   r    s   
zTestNSum.test_dtypeN)&r   r!  r"  r   r   r   r   uniformr   r   r   rF   r%   rh   rg   r)  r   r   r   rP  r"   rO  r
   rl   rd   r$  r%  r   r   rL  r   rQ  rS  rV  rX  r*  r   r  r   r   r   r   r+    s>    4

5
%1r+  )rd   numpyr   numpy.testingr   r   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodr   scipyr   r   scipy.integrater   scipy.integrate._tanhsinhr   r   r	   scipy.stats._discrete_distnsr
   r   r+  r   r   r   r   <module>   s        