o
    Ö­j ¯  ã                   @   sN  d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
  mZ d dlmZmZ d dlmZmZmZmZmZ d dlmZmZ d dlmZmZmZ d dlmZ d d	l m!Z! dd
d„Z"ddd„Z#dd„ Z$eej% &d¡ej%j'ddd�ej%j'ddd�G dd„ dƒƒƒƒƒZ(eej% &d¡ej%j'ddd�ej%j'ddd�G dd„ dƒƒƒƒƒZ)dS )é    N)Úassert_allclose)Úarray_api_compatible)Úxp_assert_closeÚxp_assert_equal)Úarray_namespaceÚxp_sizeÚxp_ravelÚxp_copyÚis_numpy)ÚspecialÚstats)Úquad_vecÚnsumÚtanhsinh)Ú_pair_cache)Ú_gen_harmonic_gt1c                 C   s:   |d u rt | ƒn|}dd|j d  | | d  d ¡ S )Né   é   ç      à?)r   ÚpiÚexp©ÚxÚxp© r   ú`/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/integrate/tests/test_tanhsinh.pyÚnorm_pdf   s   &r   c                 C   s4   |d u rt | ƒn|}dt d|j ¡ | d d  S )Ng      à¿r   )r   ÚmathÚlogr   r   r   r   r   Únorm_logpdf   s    r   c                 C   s   dd„ }|S )Nc                    s   ‡ fdd„}|S )Nc                     sT   | d j }dd„ | D ƒ} g }tt |¡ƒD ]‰ ‡ fdd„| D ƒ}| ˆ|Ž ¡ q|S )Nr   c                 S   s   g | ]}t |ƒ‘qS r   )r   ©Ú.0Ú	arg_arrayr   r   r   Ú
<listcomp>"   ó    zB_vectorize.<locals>.decorator.<locals>.wrapped.<locals>.<listcomp>c                    s   g | ]}|ˆ  ‘qS r   r   r    ©Úir   r   r#   %   r$   )ÚshapeÚranger   ÚprodÚappend)Ú
arg_arraysr'   ÚresÚarg_scalars©Úfr%   r   Úwrapped    s   
z._vectorize.<locals>.decorator.<locals>.wrappedr   )r/   r0   r   r.   r   Ú	decorator   s   	z_vectorize.<locals>.decoratorr   )r   r1   r   r   r   Ú
_vectorize   s   r2   Úskip_xp_backendsÚarray_api_strictz)Currently uses fancy indexing assignment.©Úreasonz	jax.numpyz*JAX arrays do not support item assignment.c                   @   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_dud+d,„Zd-d.„ Zej  d/d0e!jfd&ge!j d0fd&ge!j e!jfd1ge!je!j fd2gd3e"j# $d2¡e"j# $d1¡ gg¡d4d5„ ƒZ%ejj&d6d7d8�ej  d9e'dd:ƒ¡d;d<„ ƒƒZ(ejj&d6d=d8�ej  d>d&d?d@gf¡ej  dAe"j)j*¡dBdC„ ƒƒƒZ+ej  dDe,ƒ dEdFdGg¡dHdI„ ƒZ-dJdK„ Z.dLdM„ Z/dNdO„ Z0dPdQ„ Z1dRdS„ Z2ejj&dTdUdV�ej  dWdXdYg¡dZd[„ ƒƒZ3d\d]„ Z4ej  d^e'dƒ¡d_d`„ ƒZ5dadb„ Z6ej  dcdde!j d0gdedegff¡ej  dfdg¡dhdi„ ƒƒZ7djdk„ Z8dldm„ Z9dndo„ Z:ejj&d6dp�dqdr„ ƒZ;dsdt„ Z<d*S )vÚTestTanhSinhc                 C   s   |t  d| ¡ S ©Nr   ©Únpr   ©ÚselfÚtr   r   r   Úf19   ó   zTestTanhSinh.f1ç      Ð?r   c                 C   s   |d t  |¡ S ©Nr   )r:   Úarctanr;   r   r   r   Úf2?   r?   zTestTanhSinh.f2r   é   c                 C   ó   t  |¡t  |¡ S ©N©r:   r   Úcosr;   r   r   r   Úf3E   ó   zTestTanhSinh.f3c                 C   s,   t  d|d  ¡}t  |¡d|d  |  S )Nr   r   )r:   ÚsqrtrB   )r<   r=   Úar   r   r   Úf4K   s   zTestTanhSinh.f4é   é`   c                 C   rE   rF   )r:   rK   r   r;   r   r   r   Úf5R   rJ   zTestTanhSinh.f5gÇqÇqÜ¿c                 C   s   t  d|d  ¡S ©Nr   r   ©r:   rK   r;   r   r   r   Úf6X   r?   zTestTanhSinh.f6é   c                 C   s   t  |¡t  d|d  ¡ S rQ   rR   r;   r   r   r   Úf7^   s   zTestTanhSinh.f7g      è?c                 C   s   t  |¡d S rA   r9   r;   r   r   r   Úf8d   ó   zTestTanhSinh.f8c                 C   ó   t  t  |¡¡S rF   )r:   r   rH   r;   r   r   r   Úf9j   ó   zTestTanhSinh.f9c                 C   rX   rF   )r:   rK   Útanr;   r   r   r   Úf10p   rZ   zTestTanhSinh.f10c                 C   s   dd|d   S rQ   r   r;   r   r   r   Úf11v   rZ   zTestTanhSinh.f11c                 C   s   t  | ¡t  |¡ S rF   )r:   r   rK   r;   r   r   r   Úf12|   ó   zTestTanhSinh.f12c                 C   s   t  |d  d ¡S rA   )r:   r   r;   r   r   r   Úf13‚   rJ   zTestTanhSinh.f13c                 C   s   t  | ¡t  |¡ S rF   rG   r;   r   r   r   Úf14ˆ   r_   zTestTanhSinh.f14r   c                 C   s   t  |¡| S rF   )r:   Úsinr;   r   r   r   Úf15Ž   rW   zTestTanhSinh.f15FNc                 C   sd   |d u r	t ||ƒn|}t|| ƒ}|s|S tjdd�� | |¡W  d   ƒ S 1 s+w   Y  d S )NÚignore©Údivide)r   Úabsr:   ÚerrstateÚlog10)r<   r,   Úrefr   r   Úerrr   r   r   Úerror”   s   $ÿzTestTanhSinh.errorc                 C   s  | j }| d¡}| |j¡}d}tjt|d�� td||ƒ W d   ƒ n1 s(w   Y  d}tjt|d�� t|||dd� W d   ƒ n1 sIw   Y  d}tjt|d�� t|| d	¡|ƒ W d   ƒ n1 skw   Y  tjt|d�� t|||d
d� W d   ƒ n1 sŠw   Y  tjt|d�� t|||td� W d   ƒ n1 s©w   Y  d}tjt|d�� t|||dd� W d   ƒ n1 sÊw   Y  tjt|d�� t||||jd� W d   ƒ n1 sêw   Y  d}tjt|d�� t||||jdd� W d   ƒ n	1 �sw   Y  tjt|d�� t||||jdd� W d   ƒ n	1 �s0w   Y  d}tjt|d�� t|||tƒ d� W d   ƒ n	1 �sSw   Y  tjt|d�� t|||dd� W d   ƒ n	1 �ssw   Y  d}tjt|d�� t|||dd� W d   ƒ n	1 �s•w   Y  tjt|d�� t|||dd� W d   ƒ n	1 �sµw   Y  d}tjt|d�� t|||dd� W d   ƒ n	1 �s×w   Y  d}tjt|d�� t|||dd� W d   ƒ d S 1 �súw   Y  d S )Nr   ú`f` must be callable.©Úmatché*   ú...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)ry   r   )rw   r   z...must be integers.©Úmaxlevelzmigratory coconut)Úminlevelz...must be non-negative.©Úpreserve_shapez...must be callable.Ú
elderberry©Úcallback)	r>   ÚasarrayÚbÚpytestÚraisesÚ
ValueErrorÚ	_tanhsinhÚinfÚobject)r<   r   r/   ÚzeroÚf_bÚmessager   r   r   Útest_input_validationž   sr   
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿz"TestTanhSinh.test_input_validationzlimits, refr   ç      ð?ç      ð¿)r   r{   c                    sÒ   ‡ fdd„|D ƒ}ˆ   t|d ƒ¡j}ˆ j ||d�}ttg|¢R Ž }t|j|ƒ ttg|¢R ddiŽ}tˆ  |j¡|dd� t	|Ž }|dkrP| 
|jjd	¡sZJ ‚| 
|jjd
¡sZJ ‚tˆ  |j¡|jddd� d S )Nc                    s   g | ]}ˆ   |¡‘qS r   ©r…   )r!   Úlimit©r   r   r   r#   â   ó    z9TestTanhSinh.test_integral_transforms.<locals>.<listcomp>r   ©Údtyper   TF)Úcheck_dtypeúreal floatingzcomplex floatingç¼‰Ø—²Òœ<)rw   r™   )r…   Úfloatr˜   rŠ   r   r   Úintegralr   r   r   Úisdtyperl   )r<   Úlimitsrj   r   r˜   r,   ÚlogresÚxp_testr   r•   r   Útest_integral_transformsØ   s   
ÿz%TestTanhSinh.test_integral_transformsTz!Cumbersome to convert everything.©Únp_onlyr6   Ú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 )Nr/   g:Œ0âŽyU>r   rx   >   é   >   é   é
   rD   )
ÚgetattrrŠ   r†   r   r�   rj   rg   rl   ÚsuccessÚstatus)r<   r¥   r   r/   ry   r,   Ú
true_errorr   r   r   Ú
test_basicó   s   
zTestTanhSinh.test_basicz#Distributions aren't xp-compatible.rj   gš™™™™™Ù?g333333ã?Úcasec           	      C   sv   |\}}|dv rt  d¡ |dv rtt dd¡ƒs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>   Úlevy_stableÚstudentized_rangeÚSCIPY_XSLOWr   z%This case passes, but it is too slow.)r‡   ÚskipÚintÚosÚgetenvrª   r   ÚintervalrŠ   Úpdfr   r�   )	r<   rj   r¯   r   ÚdistnameÚparamsÚdistr   r,   r   r   r   Útest_accuracy  s   
ÿ

zTestTanhSinh.test_accuracyr'   ©rD   ©é   rT   ©rÃ   r   r   c                    s„  t j d¡}| | |¡¡}| | |¡¡}| | |¡¡}t |¡‰‡‡fdd„‰dˆ_dˆ_t|ƒdd„ ƒ}t	ˆ|||fd�}||||ƒ}	t
|ƒ}
g d¢}|D ]&‰ |
 ‡ fd	d
„|	D ƒ¡}tt|ˆ ƒƒ}t||dd� t|ˆ ƒj|kswJ ‚qQ|
 |jjd¡s‚J ‚|
 |jjd¡sŒJ ‚|
 |jjd¡s–J ‚|
 |jjd¡s J ‚| |j¡ˆjks«J ‚| |j¡dksµJ ‚| |j¡ˆjksÀJ ‚d S )Nì   F»*ŒBG c                    sD   ˆ  j d7  _ ˆ  jt| ƒˆks| jdkrdn| jd 7  _| | S ©Nr   r{   )ÚncallÚfevalr   Úndimr'   ©r   Úp©r/   Únr   r   r/      s   .z*TestTanhSinh.test_vectorization.<locals>.fr   c                    s   t ‡ fdd„| |ƒS )Nc                    s   | ˆ  S rF   r   ©r   ©rË   r   r   Ú<lambda>)  s    zKTestTanhSinh.test_vectorization.<locals>._tanhsinh_single.<locals>.<lambda>)rŠ   )rL   r†   rË   r   rÏ   r   Ú_tanhsinh_single'  s   z9TestTanhSinh.test_vectorization.<locals>._tanhsinh_single©Úargs©r�   rl   r«   r¬   Únfevr~   c                    s   g | ]}t |ˆ ƒ‘qS r   )rª   ©r!   rj   )Úattrr   r   r#   1  r–   z3TestTanhSinh.test_vectorization.<locals>.<listcomp>çVçž¯Ò<rx   Úboolr�   r   )r:   ÚrandomÚdefault_rngr…   r   r)   rÇ   rÈ   r2   rŠ   r   Ústackr   rª   r   r'   rž   r«   r˜   r¬   rÕ   r~   Úmax)r<   r'   r   ÚrngrL   r†   rË   rÑ   r,   Úrefsr¡   ÚattrsÚref_attrÚres_attrr   )r×   r/   rÍ   r   Útest_vectorization  s4   

zTestTanhSinh.test_vectorizationc                    s‚   ‡ ‡fdd„‰ dˆ _ ˆjdˆjd�f}ˆ ˆjgd ¡}ˆ ˆj gd ¡}tˆ ||d|d�}ˆjg d¢ˆjd�}t|j|ƒ d S )	Nc                    s~   ˆ  j d7  _ ‡fdd„‡fdd„‡fdd„g}g }tt|ƒƒD ]}| |df }tt|ƒ| ƒ}| || |ƒ¡ q ˆ |¡S )Nr   c                    ó   ˆ   | d  ¡S rA   ©r   rÎ   r•   r   r   rÐ   D  s    z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>c                    s
   ˆ   | ¡S rF   rå   rÎ   r•   r   r   rÐ   E  ó   
 c                    s   ˆ   | ˆ j¡S rF   )Ú	full_likeÚnanrÎ   r•   r   r   rÐ   F  ó    .)Únitr(   r   r¸   r   r*   rÜ   )ÚxsÚjsÚfuncsr,   r&   r   Új©r/   r   r   r   r/   B  s   


þ
z"TestTanhSinh.test_flags.<locals>.fr   rÃ   r—   rN   )r~   rÓ   ©r   éþÿÿÿéýÿÿÿ)	rê   ÚarangeÚint64r…   r‹   rŠ   Úint32r   r¬   )r<   r   rÓ   rL   r†   r,   Ú	ref_flagsr   rï   r   Ú
test_flags?  s   zTestTanhSinh.test_flagsc                    sh   ‡ fdd„}ˆ   ˆ jgd ¡}ˆ   ˆ j gd ¡}t|||ddd�}ˆ j g d¢ˆ jd�}t|j|ƒ d S )	Nc                    s<   ˆ   | d d  ¡ˆ   | d ¡ˆ  | d ˆ j¡g}ˆ  |¡S )Nr   r   r   )r   rç   rè   rÜ   )r   r,   r•   r   r   r/   X  s
   þ
z1TestTanhSinh.test_flags_preserve_shape.<locals>.frÃ   rN   T)r~   r�   rð   r—   )r…   r‹   rŠ   rõ   r   r¬   )r<   r   r/   rL   r†   r,   rö   r   r•   r   Útest_flags_preserve_shapeV  s   z&TestTanhSinh.test_flags_preserve_shapec                    sl   dd„ ‰ t ‡ fdd„ddƒ}t‡ ‡fdd„ˆ d¡ˆ d¡dd	�}ˆ d
¡j}t|jˆj|d |d�ƒ d S )Nc                 S   sD   |  |  | | d|  ¡g¡|  | d|  ¡| | d|  ¡ g¡g¡S )Nr©   é   éd   )rÜ   rb   rH   r   r   r   r   r/   f  s   $ÿz+TestTanhSinh.test_preserve_shape.<locals>.fc                    s
   ˆ | t ƒS rF   )r:   rÎ   r.   r   r   rÐ   j  ræ   z2TestTanhSinh.test_preserve_shape.<locals>.<lambda>r   r   c                    s
   ˆ | ˆƒS rF   r   rÎ   rï   r   r   rÐ   k  ræ   Tr€   ç        r—   )r   rŠ   r…   r˜   r   r�   )r<   r   rj   r,   r˜   r   rï   r   Útest_preserve_shaped  s   ÿz TestTanhSinh.test_preserve_shapec                    s–   ˆ j }‡ fdd„}ˆ jd|d�}ˆ jd|d�ˆ jd|d�}}d}tdƒD ]#}t|||d|d	�}	| j|	j|d
ˆ d�}
|
|d k sF|
dk sFJ ‚|
}q%d S )Nc                    s   | ˆ   d|  ¡ S r8   rr   ©r=   r•   r   r   r/   s  r?   z(TestTanhSinh.test_convergence.<locals>.fr@   r—   rû   r‘   r   rT   ©r   r~   T©r   r   r   g      /À)Úfloat64r…   r(   rŠ   rl   r�   )r<   r   r˜   r/   rj   rL   r†   Úlast_logerrr&   r,   Úlogerrr   r•   r   Útest_convergencep  s   üzTestTanhSinh.test_convergencec                    s°  t ˆ d¡ƒ‰‡ ‡‡fdd„‰ ˆjtjd dt d¡  d ˆjd�ˆ _d}ˆ j| }ˆjdˆjd�}ˆjdˆjd�}d	\ˆ _ˆ _t	ˆ ||ƒ}|  
|jˆ j¡|j
  k rY|k s\J ‚ J ‚|jˆ jksdJ ‚ˆ j|_|jsmJ ‚|jd
kstJ ‚d	\ˆ _ˆ _t|jƒ}t	ˆ |||d�}ˆ j|_||ks‘J ‚d	\ˆ _ˆ _|d8 }|dks¡J ‚t	ˆ |||d�}|  
|jˆ j¡|j
  k r»|ks¾J ‚ J ‚|jˆ j  krÌ|jk sÏJ ‚ J ‚ˆ j|jd ksÙJ ‚|jrÞJ ‚|jtjksæJ ‚|}ˆ j|_d	\ˆ _ˆ _t t|j
ƒtj¡}	t	ˆ ||d
|	d�}|j|jk�sJ ‚|j
|j
k�sJ ‚|jˆ j  k�r'|jk�s*J ‚ J ‚ˆ j|jk�s3J ‚|j�s9J ‚|jd
k�sAJ ‚d	\ˆ _ˆ _t t|j
ƒtj ¡}	t	ˆ ||d
|	d�}|  
|jˆ j¡|j
  k �ro|	k �srJ ‚ J ‚|jˆ j  k�r‚|jk�s…J ‚ J ‚ˆ j|jk�sŽJ ‚|j�s”J ‚|jd
k�sœJ ‚d	\ˆ _ˆ _t t|j
|j ƒtj¡}
t	ˆ |||
d�}|j|jk�sÀJ ‚|j
|j
k�sÉJ ‚|jˆ j  k�rÙ|jk�sÜJ ‚ J ‚ˆ j|jk�såJ ‚|j�sëJ ‚|jd
k�sóJ ‚d	\ˆ _ˆ _t t|j
|j ƒtj ¡}
t	ˆ |||
d�}|  
|jˆ j¡ˆ j |j
|j   k �r)|
k �s,J ‚ J ‚|jˆ j  k�r<|jk�s?J ‚ J ‚ˆ j|jk�sHJ ‚|j�sNJ ‚|jd
k�sVJ ‚d S )Nr‘   c                    s8   ˆ  j d7  _ ˆ  jtˆ | ¡ƒ7  _| d ˆ | ¡ S rQ   )ÚcallsrÈ   r   r…   ÚatanrÎ   ©r/   r   r¡   r   r   r/   „  s   z:TestTanhSinh.test_options_and_result_attributes.<locals>.fr   rD   r—   çê-�™—q=rû   )r   r   r   r}   r   ©ry   rw   rx   )r   r…   r   r   r   r   rj   rÈ   r  rŠ   rl   r�   rÕ   r«   r¬   r¸   r~   ÚeimÚ	_ECONVERRr:   Ú	nextafterrœ   r‹   )r<   r   Údefault_rtolÚdefault_atolrL   r†   rj   r~   r,   rw   ry   r   r  r   Ú"test_options_and_result_attributes  s€   *
*

*"
&.&&:&z/TestTanhSinh.test_options_and_result_attributesÚtorchzAhttps://github.com/scipy/scipy/pull/21149#issuecomment-2330477359r5   ry   g-Cëâ6?g›+¡†›„=c           
         sz  t ddd�}ˆ jdˆ jd�}ˆ jdˆ jd�}tt||dt |¡d�}tt|||d	�}tˆ  	|j
¡|j
fi |¤Ž tˆ  	|j¡|jfi |¤Ž |j|jksNJ ‚d
d„ }‡ fdd„}	ˆ jˆ j ˆ jd�}ˆ jˆ jˆ jd�}t|	||dd�}t|||ƒ}tjdd��, tˆ  	|j
¡|j
fi |¤ddi¤Ž tˆ  	|j¡|jfi |¤ddi¤Ž W d   ƒ n1 s®w   Y  |j|jks»J ‚d S )Ng¬CÒÑ]r2<rØ   )rw   ry   r’   r—   g       @T)r   ry   rx   c                 S   s   t | ƒ t| ƒ S rF   )r   r   rÎ   r   r   r   r/     r?   z TestTanhSinh.test_log.<locals>.fc                    s$   ˆ   t| ƒd ¡t| ƒ ˆ jd  S )Ny                ù              ð?)r   r   r   rÎ   r•   r   r   Úlogf	  s   $z#TestTanhSinh.test_log.<locals>.logfrr   rd   ©Úallr™   F)Údictr…   r   rŠ   r   r   r   r   r   r   r�   rl   rÕ   r‹   r:   rh   )
r<   ry   r   Ú	test_tolsrL   r†   r,   rj   r/   r  r   r•   r   Útest_logô  s.   ÿ
ÿýzTestTanhSinh.test_logc                    s°   ‡ fdd„}ˆ   d¡ˆ   ˆ jd ¡}}t|||ƒ}t d¡d dt d¡d  d  }t|jˆ   |¡ƒ dd„ }ˆ   ˆ j¡ˆ   ˆ j ¡}}t|||ƒ}t|jˆ   d	¡ƒ d S )
Nc                    s   ˆ   d|  ¡S ©Nr  rå   rÎ   r•   r   r   r/     rW   z$TestTanhSinh.test_complex.<locals>.frû   rT   r   r   r  c                 S   s   t | ƒdt | d ƒ  S )Nù              à?r   )r   rÎ   r   r   r   r/   &  s   y      ð¿      ð¿)r…   r   rŠ   r   rK   r   r�   r‹   ©r<   r   r/   rL   r†   r,   rj   r   r•   r   Útest_complex  s   $zTestTanhSinh.test_complexr~   c           
         sZ  t ˆ d¡ƒ‰‡ ‡‡fdd„‰ ddˆ g ¡ˆ _ˆ _ˆ _ˆjdˆjd�}ˆjdˆjd�}tˆ ||d|d�}ˆ ˆ j¡}td|d ƒD ]g}ddˆ g ¡ˆ _ˆ _ˆ _t	||d�}tˆ ||fi |¤Ž}	t
|	j|jdd	� t
|	j|jd|j d
� |	jˆ j  kr‰ˆ jjd ksŒJ ‚ J ‚ˆ j|| d d ks™J ‚|	j|jks¡J ‚t|ˆ ˆ j¡ƒ qCd S )Nr‘   c                    sN   ˆ  j d7  _ ˆ  jtˆ | ¡ƒ7  _ˆ ˆ jt| ƒf¡ˆ _| d ˆ | ¡ S rQ   )r  rÈ   r   r…   Úconcatr   r   r  rÎ   r  r   r   r/   6  s   z%TestTanhSinh.test_minlevel.<locals>.fr   r—   r   rþ   g¼‰Ø—²Ò¼<rx   rv   )r   r…   rÈ   r  r   r   rŠ   Úsortr(   r  r   r�   rl   rÕ   r'   r¬   r   )
r<   r~   r   rL   r†   rj   Úref_xr   Úoptionsr,   r   r  r   Útest_minlevel-  s$   (õzTestTanhSinh.test_minlevelc              	      sž   ‡ fdd„}ˆ   ˆ j dˆ j ˆ jdˆ j dg¡}ˆ   ˆ jˆ jdˆ j ddˆ jg¡}t tj¡}ˆ   ||d |d | |||g¡}t|||ƒ}t|j|ƒ d S )Nc                    s    ˆ j | ˆ  | ¡< ˆ  | d  ¡S rA   )rè   Úisinfr   rÎ   r•   r   r   r/   R  s   z/TestTanhSinh.test_improper_integrals.<locals>.fr   iìÿÿÿé   r   )r…   r‹   r   rK   r   rŠ   r   r�   )r<   r   r/   rL   r†   rj   r,   r   r•   r   Útest_improper_integralsP  s   &""z$TestTanhSinh.test_improper_integralsrŸ   ©r   rÃ   rÃ   r˜   )Úfloat32r   c           	         sœ   t ˆˆ ƒ‰ ˆj|ˆ d�\}}‡ ‡fdd„}ˆ ˆjkrdnd}t||||d�}|jjˆ ks.J ‚|jjˆ ks6J ‚ˆ |j¡s>J ‚t	|jˆ 
|¡ˆ 
|¡ ƒ d S )Nr—   c                    s   | j ˆ ksJ ‚ˆ | ¡S rF   )r˜   r   rÎ   ©r˜   r   r   r   r/   c  s   
z"TestTanhSinh.test_dtype.<locals>.fr  çñhãˆµøä>rx   )rª   r…   r   rŠ   r�   r˜   rl   r  r«   r   r   )	r<   rŸ   r˜   r   rL   r†   r/   ry   r,   r   r%  r   Ú
test_dtype\  s   
 zTestTanhSinh.test_dtypec                    s  ˆ  ˆj ¡ˆ  ˆj¡}}‡fdd„}d\}}|| d ‰t||dd�}t|||fi |¤Ž}|jr4J ‚|j|ks;J ‚‡ ‡fdd„‰ d	ˆ _d ˆ _|d
= t|||fi |¤dˆ i¤Ž}	| ¡ D ],}
|
dkrt||
 dkskJ ‚|	|
 dkssJ ‚q]|	|
 ˆ j|
   kr†||
 ks‰J ‚ J ‚q]d S )Nc                    ó   ˆ   |  |  ¡S rF   rå   rÎ   r•   r   r   r/   q  rZ   z-TestTanhSinh.test_maxiter_callback.<locals>.f)r   r   r   rØ   )r   r~   ry   c                    sB   ˆ  j d7  _ | ˆ _t| dƒsJ ‚| jdksJ ‚ˆ j ˆkrt‚d S )Nr   r�   )Úiterr,   Úhasattrr¬   ÚStopIteration©r,   )r„   Úmaxiterr   r   r„   {  s   
ÿz4TestTanhSinh.test_maxiter_callback.<locals>.callbackr{   r~   r„   r¬   rñ   éüÿÿÿ)	r…   r‹   r  rŠ   r«   r~   r)  r,   Úkeys)r<   r   rL   r†   r/   r   r~   Úkwargsr,   Úres2Úkeyr   )r„   r-  r   r   Útest_maxiter_callbackn  s&   
,ûz"TestTanhSinh.test_maxiter_callbackc                    sÀ   ˆj ˆj ˆjd�}ˆj ˆjˆjd�}‡fdd„}‡ fdd„‰ g ˆ _g ˆ _d}t|||d|ˆ d� t|d	 ƒD ]&}t|||||d
�}tˆ jd	|  |jdd� tˆ jd	|  |j	ddd� q7d S )Nr—   c                    r(  rF   rå   rÎ   r•   r   r   r/   –  rZ   z&TestTanhSinh.test_jumpstart.<locals>.fc                    s0   ˆ j  t| jƒd ¡ ˆ j t| jƒd ¡ d S )Nr   )Ú	integralsr*   r	   r�   Úerrorsrl   r,  rƒ   r   r   r„   ™  s   z-TestTanhSinh.test_jumpstart.<locals>.callbackrT   r   )r   r~   r„   r   rþ   rØ   rx   r›   r  )
r…   r‹   r   r4  r5  rŠ   r(   r   r�   rl   )r<   r   rL   r†   r/   r~   r&   r,   r   )r„   r   r   Útest_jumpstart�  s   ýzTestTanhSinh.test_jumpstartc           
         sÈ  ˆ   d¡ˆ   d¡}}t||ƒ‰‡fdd„}t|||ƒ}|js!J ‚t|jˆ   d¡ƒ t|||dd�}|jdks9J ‚t|jˆ   ˆ j¡ƒ t|||dd�}|jdksRJ ‚t|jˆ   ˆ j¡ƒ t|||ƒ}|jsgJ ‚|j	dksnJ ‚t|jˆ   d¡ƒ d	d„ }t|||d
d�}t|jˆ   d¡ƒ ˆ   ˆ jdddg¡}ˆ   dˆ jddg¡}ˆ   ddˆ jdg¡}t||||fd�}t|jˆ   ˆ jˆ jˆ jdg¡ƒ t|jd d… ˆ  
dˆ j¡ƒ t|jˆ j g d¢ˆ jd�ƒ t|jˆ   g d¢¡ƒ t|jd d… ˆ j
ddˆ jd�ƒ ˆ  d¡t_ˆ  d¡t_dgt_d t_ˆ   d¡ˆ   d¡}}t‡ fdd„||ƒ}t|jˆ   d¡ƒ tdd„ ||ƒ}t|jˆ   d¡ƒ d}tdd„ ˆ   d¡ˆ  |¡ƒ}g d¢}|D ]}	||	 j|k�s`J ‚�qTd S )Nr   r   c                    s   ˆ   | jd¡s	J ‚| S )Nrš   )rž   r˜   rÎ   )r¡   r   r   r/   ¬  s   z*TestTanhSinh.test_special_cases.<locals>.fr   r}   r{   rû   c                 S   s   | | S rF   r   ©r   Úcr   r   r   r/   Ã  ó   é   rÒ   g¡?rÃ   ©rÃ   )rò   rò   rò   r   r—   ©FFFTc                    s   ˆ   | d ¡S r  r“   rÎ   r•   r   r   rÐ   Þ  ré   z1TestTanhSinh.test_special_cases.<locals>.<lambda>r  c                 S   ó   | S rF   r   rÎ   r   r   r   rÐ   à  ó    r#  c                 S   r=  rF   r   rÎ   r   r   r   rÐ   å  r>  rÔ   )r…   r   rŠ   r«   r   r�   r   rl   rè   r~   Úfullr¬   rõ   rÕ   Úemptyr   ÚxjcÚwjÚindicesÚh0Úzerosr'   )
r<   r   rL   r†   r/   r,   r8  r'   rà   r×   r   )r   r¡   r   Útest_special_cases§  sV   


 "ÿzTestTanhSinh.test_special_cases)r¤   c                 C   s&   t  dd¡}d|d< tt jd|ƒ d S )NéA   rÃ   éè  r{   r   )r:   r?  rŠ   rb   )r<   r   r   r   r   r   Ú#test_compress_nodes_weights_gh21496ê  s   z0TestTanhSinh.test_compress_nodes_weights_gh21496c                    sX   t ddƒ‰ t ddƒ‰‡ ‡‡fdd„}t|ˆ d¡ˆ d¡ddd	d
�}ˆ |j¡s*J ‚d S )NrD   iöÿÿÿé'   c                    s   ˆ  ˆ d|   ˆ|   ¡S r8   )rb   rý   ©rL   r†   r   r   r   r/   ù  s   z2TestTanhSinh.test_gh_22681_finite_error.<locals>.frû   r‘   r   r©   )rw   ry   r~   )ÚcomplexrŠ   r…   Úisfiniterl   )r<   r   r/   r,   r   rK  r   Útest_gh_22681_finite_errorô  s
   

 z'TestTanhSinh.test_gh_22681_finite_error)FN)=Ú__name__Ú
__module__Ú__qualname__r>   rj   r†   rC   r:   r   r   rI   r   rM   rP   rS   rU   rK   r   ÚgammarV   rY   r\   r]   r‹   r^   r`   ra   rc   rl   r�   r‡   ÚmarkÚparametrizer   r   ÚnormÚcdfr¢   r3   r(   r®   Ú_distr_paramsÚdistcontrÀ   Útuplerã   r÷   rø   rü   r  r  r  r  r  r"  r'  r3  r6  rF  rI  rN  r   r   r   r   r7   .   s¸    &

:û
ÿÿ
(uÿ"
" "C
	r7   zNo fancy indexing.zNo mutation.c                   @   s¨  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"ej d'd(d)g¡d*d+„ ƒZ#d,d-„ Z$d.d/„ Z%ej d0d1d2g¡d3d4„ ƒZ&ej d5d6d7g¡d8d9„ ƒZ'ejj(d(d:d;�d<d=„ ƒZ)d>S )?ÚTestNSuml   ºQ º[† r   r©   ©Úsizec                 C   s   |d S ©Nrñ   r   )r<   Úkr   r   r   r>     s   zTestNSum.f1r   é   c                 C   ó   d||  S r8   r   ©r<   r^  rË   r   r   r   rC     ó   zTestNSum.f2r‘   c                 C   r`  r8   r   ra  r   r   r   rI     rb  zTestNSum.f3rN   r¦   )rÃ   r   c                 C   s  | j }| |j¡| |j¡}}d}tjt|d�� td||ƒ W d   ƒ n1 s*w   Y  d}tjt|d�� t|||dd� W d   ƒ n1 sKw   Y  d}tjt|d�� t|| d¡|ƒ W d   ƒ n1 smw   Y  tjt|d�� t||| d¡ƒ W d   ƒ n1 s�w   Y  tjt|d�� t|||| d¡d	� W d   ƒ n1 s¯w   Y  tjt|d�� t|||td
d�d� W d   ƒ n1 sÑw   Y  tjt|d�� t|||ttd�d� W d   ƒ n1 sów   Y  t	j
dd��¡ t|| t	jt	jg¡| d¡ƒ}| |jdk| |j¡@ | |j¡@ |j @ |j@ dk¡�s/J ‚t|| d¡| t	jdg¡ƒ}| |jdk| |j¡@ | |j¡@ |j @ |j@ dk¡�s^J ‚t|| d¡| d¡| |j|j |jddg¡d	�}| |jdk| |j¡@ | |j¡@ |j @ |j@ dk¡�s˜J ‚W d   ƒ n	1 �s£w   Y  d}tjt|d�� t|||tdd�d� W d   ƒ n	1 �sÈw   Y  tjt|d�� t|||tt	jd�d� W d   ƒ n	1 �sìw   Y  d}tjt|d�� t|||tt	jd�dd� W d   ƒ n	1 �sw   Y  tjt|d�� t|||tt	jd�dd� W d   ƒ n	1 �s8w   Y  d}tjt|d�� t|||dd� W d   ƒ n	1 �sZw   Y  tjt|d�� t|||dd� W d   ƒ d S 1 �s{w   Y  d S )Nrm   rn   rp   rq   r   rr   rs   rt   )Ústepru   rv   ©Ú
tolerancesrx   rd   r  r‘   r{   r   g      $@r   rz   r|   T)re  r   z"...must be a non-negative integer.g      @©Úmaxtermsrñ   )r>   r…   rL   r†   r‡   rˆ   r‰   r   r  r:   rh   rè   r‹   r  r¬   ÚisnanÚsumrl   r«   rÕ   )r<   r   r/   rL   r†   r�   r,   r   r   r   r�   !  s¢   ÿÿÿÿÿÿÿ 
ÿÿÿÿ
ÿÿÿÿÿ
ÿÿÿÿ÷ÿÿÿÿÿ$ÿzTestNSum.test_input_validationr¥   rT   c                    sJ  ˆ  d¡j}t| d|› �ƒ‰ ˆ  ˆ j¡ˆ  ˆ j¡}}t‡fdd„ˆ jD ƒƒ}ˆj ˆ j|d�}tˆ |||d�}t	|j
|ƒ t|jˆj|jˆjd�ƒ t|ƒ}	t|jˆj|j|	jd�ƒ tjdd�� t‡ ‡fd	d
„||d|d�}
W d   ƒ n1 szw   Y  t	ˆ |
j
¡|j
ƒ t	ˆ |
j¡|jdd� t|
j|jƒ t|
j|jƒ d S )Nr‘   r/   c                 3   s   � | ]}ˆ   |¡V  qd S rF   r“   )r!   Úargr•   r   r   Ú	<genexpr>\  s   € z&TestNSum.test_basic.<locals>.<genexpr>r—   rÒ   rd   re   c                     s   ˆ  ˆ | Ž ¡S rF   rr   rÒ   rï   r   r   rÐ   e  ré   z%TestNSum.test_basic.<locals>.<lambda>T)r   rÓ   rØ   rv   )r…   r˜   rª   rL   r†   rY  rÓ   rj   r   r   ri  r   r¬   rE  r'   rõ   r   r«   ÚonesrÙ   r:   rh   r   rl   )r<   r¥   r   r˜   rL   r†   rÓ   rj   r,   r¡   r    r   rï   r   r®   W  s&   ÿÿzTestNSum.test_basicrg  )r   r   r©   r!  rú   c              
      sž  | j }‡ fdd„}dd„ }ˆ jddgˆ jd�d d …ˆ jf }ˆ jdd	ˆ jgˆ jd�d d …ˆ jˆ jf }ˆ jg d
¢ˆ jd� d¡}ˆ  || | ¡}	|}
||	|  }|||  }ˆ j||ˆ  |¡|  ƒddd�}||ƒ||ƒ | }|| ||ƒ }|| ||ƒ }|| d }|| d }t	|ƒ}| 
|||¡\}}}t |j¡D ]@}t|| ƒt|| ƒt|| ƒ}}}|| | d |krâˆ  |ˆ j||| |ˆ jd�ƒ¡}|||< |ˆ  |j¡j ||< q¢d}t|||
||t|d�d�}t|j|d| d� t|j|d	| d� |
| | d |k}t|j| || dd� t|j| || dd� t|||
|dtt |¡d�|d�}tˆ  |j¡|jƒ tˆ  |j¡|jƒ d S )Nc                    s   dˆ   | ¡ S r]  rr   rÎ   r•   r   r   r  q  rW   z$TestNSum.test_integral.<locals>.logfc                 S   s   d|  S )Nr{   r   rÎ   r   r   r   ÚFt  r9  z!TestNSum.test_integral.<locals>.Fr   rN   r—   r!  rú   )r   r   r   )r{   r   r   r   r{   T)ÚaxisÚkeepdimsr   r  rx   )rc  rg  re  r©   rØ   )rc  r   re  rg  )r>   r…   r   Únewaxisr‹   ÚreshapeÚfloorri  ró   r   Úbroadcast_arraysr:   Úndindexr'   rœ   Úfinfor˜   Úepsr   r  r   rl   r   r   r   )r<   rg  r   r/   r  rm  rL   r†   rc  ÚnstepsÚ
b_originalr^  Údirectr�   ÚlowÚhighÚref_sumÚref_errr¡   r&   ÚaiÚbiÚstepiry   r,   r    r   r•   r   Útest_integrall  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t|ƒˆ 
|¡dd� |j|ksuJ ‚qQtˆ 
d¡ƒ}| |jjd¡s‡J ‚| |jjd¡s‘J ‚| |jjd¡s›J ‚tˆƒr¬tˆ |j¡ƒˆjks®J ‚d S 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   r/   ­  s   ,z&TestNSum.test_vectorization.<locals>.fr   c                    s   t ‡ fdd„| ||d�S )Nc                    s   d| ˆ   S r8   r   rÎ   rÏ   r   r   rÐ   µ  ó    zBTestNSum.test_vectorization.<locals>.nsum_single.<locals>.<lambda>rf  )r   )rL   r†   rË   rg  r   rÏ   r   Únsum_single³  s   z0TestNSum.test_vectorization.<locals>.nsum_singlerH  )rg  rÓ   rf  )ri  rl   r«   r¬   rÕ   c                    s   g | ]
}ˆ  t|ˆ ƒ¡‘qS r   )r…   rª   rÖ   )r×   r   r   r   r#   ½  s    z/TestNSum.test_vectorization.<locals>.<listcomp>rØ   rx   r‘   rÙ   r�   )r:   rÚ   rÛ   Úintegersr‹   r   r)   rÈ   Ú	vectorizer   r…   Úravelrª   r   r   r'   r   rž   r«   r˜   r¬   rÕ   r
   r¸   rÝ   )r<   r'   r   rÞ   rL   r†   rË   rƒ  r,   rß   rà   rá   râ   r¡   r   )r×   r/   rÍ   r   r   rã      s6   


ÿ
ÿzTestNSum.test_vectorizationc           
      C   s  | j }g d¢}|jdddddtjg|jd�}|jdtjtjtjtjtjg|jd�}t |d¡}|j||jd�}tjdd�� t	||||fd�}W d   ƒ n1 sQw   Y  | g d	¢¡}|jg d
¢|j
d�}	t|j|ƒ t|j|	ƒ t|j|j | |¡|j ƒ d S )N)r   r   gÍÌÌÌÌÌì?gš™™™™™ñ?r   r   r   r   r—   r©   rd   re   rÒ   )FFFFTF)rò   rò   rñ   r.  r   r{   )rC   r…   r:   rè   r   r‹   r   Úzetarh   r   rõ   r   r«   r¬   r   ri  )
r<   r   r/   rË   rL   r†   rj   r,   Úref_successÚ
ref_statusr   r   r   Útest_statusÉ  s   &ÿ"zTestNSum.test_statusc                    sx   ‡ fdd„‰ dˆ _ tˆ | d¡| d¡ƒ}|j ˆ j ksJ ‚dˆ _ tˆ | d¡| |j¡tdd�d�}|j ˆ j ks:J ‚d S )	Nc                    s   ˆ  j t| ƒ7  _ d| d  S rQ   )rÕ   r   rÎ   r.   r   r   r/   Ü  s   zTestNSum.test_nfev.<locals>.fr   r   r©   ç�íµ ÷Æ°>rv   rd  )rÕ   r   r…   r‹   r  )r<   r   r,   r   r.   r   Ú	test_nfevÛ  s   $zTestNSum.test_nfevc                 C   s‚   |  ddg¡}|  |j¡}tdd„ ||dtdd�d�}td	d„ ||ƒ}| |j|j|j k¡s1J ‚| |j|j|j k ¡s?J ‚d S )
Nr   rT   c                 S   ó   d| d  S rQ   r   ©r^  r   r   r   rÐ   í  r‚  z)TestNSum.test_inclusive.<locals>.<lambda>iô  gš™™™™™¹?rv   )rg  re  c                 S   r�  rQ   r   rŽ  r   r   r   rÐ   ï  r‚  )r…   r‹   r   r  r  ri  rl   )r<   r   rL   r†   r,   rj   r   r   r   Útest_inclusiveè  s   
ÿ zTestNSum.test_inclusiver   TFc                    sZ  ˆ  dtj tj g¡}ˆ  tjdtjg¡}ˆ  g d¢¡}‡ ‡fdd„}t||||fˆ d�}ˆ  tj dd¡tj dd¡dg¡}ˆ rGˆ |¡n|}ˆ rU|jˆj	krSd	nd
nd}	t
|jˆj ||jd�|	d� ‡ ‡fdd„}ˆ  dtj g¡}ˆ  tjdg¡}ˆ  ddg¡}
t||||
fˆ d�}ˆ r˜t t d¡¡nt d¡}t
|jˆj|j||jd�ƒ d S )Nr   r{   )r   r   rÃ   c                    sJ   ˆ rˆ  ˆ |d ¡¡|ˆ | ¡  S ˆ |d ¡ˆ | ˆ | ¡ ¡ S rA   )r   Útanhrg   r   )r   rL   rÿ   r   r   r/   ù  s   &"ÿz(TestNSum.test_infinite_bounds.<locals>.f)rÓ   r   r   r   g»½×Ùß|Û=r&  r—   rv   c                    s&   ˆ rdˆ  ||  ¡ S d||  d  S )Nrò   r   rÃ   rr   r7  rÿ   r   r   r/     s   &rÃ   )r…   r:   r‹   r   r   ÚdlaplaceÚsfr   r˜   r   r   ri  r   r‡  r?  r'   )r<   r   r   rL   r†   r8  r/   r,   rj   rw   rj  r   rÿ   r   Útest_infinite_boundsó  s    $ zTestNSum.test_infinite_boundsc                    s`   ‡ fdd„}ˆ j dˆ jd�ˆ j tjˆ jd�}}t|||ƒ}ˆ j dˆ jd�}t|j|dd� d S )Nc                    rä   rA   rå   rÎ   r•   r   r   r/     rZ   z)TestNSum.test_decreasing_check.<locals>.fiçÿÿÿr—   gtfÔ¸\ü?rØ   rx   )r…   r   r:   r‹   r   r   ri  r  r   r•   r   Útest_decreasing_check  s
   $zTestNSum.test_decreasing_checkc                 C   st  | j }| d¡ }}t|||ƒ}t|j| |dƒ¡ƒ t| j| d¡| tj¡| d¡d�}t|j| | j j	¡ƒ | 
d¡}| 
d¡}| 
d¡}t |j|j|j¡}t| j|||fd�}|jj|ksdJ ‚|jj|kslJ ‚|jj|kstJ ‚dd„ }t|| d	¡| d
¡d	d�}| |j¡sŽJ ‚| |j¡s–J ‚|jdks�J ‚t|| d	¡| d
¡dd�}| |j¡s³J ‚| |j¡s»J ‚|jdksÂJ ‚| |jdddg¡}| |j|j|j|jg¡}| dd|jdg¡}t| j|||fd�}t|j| |j|j|j| j j	g¡ƒ t|jd d… | d|j¡ƒ t|j|jg d¢|jd�ƒ t|j| g d¢¡ƒ t|jd d… |jdd|jd�ƒ d S )Nr   r   rÒ   )rÃ   r   r   )r   r   rT   c                 S   s8   t jdd�� d|  W  d   ƒ S 1 sw   Y  d S )Nrd   re   r   )r:   rh   rÎ   r   r   r   r/   :  s   $ÿz%TestNSum.test_special_case.<locals>.fr   r©   rf  rñ   rò   rÃ   r;  )r{   r{   rò   r   r—   r<  )r   )r>   r…   r   r   ri  rC   r:   r‹   r   rj   r@  Úbroadcast_shapesr'   r¬   rÕ   rh  rl   rè   r?  rõ   r«   )r<   r   r/   rL   r†   r,   rË   r'   r   r   r   Útest_special_case$  s@   &


$&zTestNSum.test_special_caser˜   r$  r   c           	         s¬   t ˆˆ ƒ‰ ‡ ‡fdd„}ˆjdˆ d�}ˆjdˆjgˆ d�}t|||ƒ}|jjˆ ks+J ‚|jjˆ ks3J ‚ˆ ˆjkr:dnd}tt	 dˆjg¡dƒ}t
|jˆj|ˆ d�|d	� d S )
Nc                    s$   | j ˆ ksJ ‚d| ˆjdˆ d�  S )Nr   r   r—   )r˜   r…   rŽ  r%  r   r   r/   Y  s   zTestNSum.test_dtype.<locals>.fr   r—   r©   r  r‹  r   rx   )rª   r…   r‹   r   ri  r˜   rl   r   r   r:   r   )	r<   r˜   r   r/   rL   r†   r,   ry   rj   r   r%  r   r'  U  s   
zTestNSum.test_dtyper¯   )r©   rú   )rú   r©   c                 C   s  |\}}dd„ }t j}d}|||  }t  dd¡}	||	t  |¡  }
t  |
| | ¡}tt|ƒƒdks5J ‚|j||jd�|j|
|jd�}}
|j||jd�|j||jd�}}t	|||
||d�}t
| |¡d	k| |j¡d	kƒ t|jd
 |jd	 ||ƒ ƒ d S )Nc                 S   r�  rQ   r   rŽ  r   r   r   r/   n  rb  z.TestNSum.test_nondivisible_interval.<locals>.fgUUUUUUÕ?rñ   rÃ   r   r—   )rc  rg  r   r{   )r:   Úeró   Úspacingrr  ÚlenÚsetr…   r   r   r   Údiffri  r   )r<   r¯   r   rÍ   rg  r/   rL   rc  Úb0r&   r†   Únsr,   r   r   r   Útest_nondivisible_intervalg  s   "" "z#TestNSum.test_nondivisible_intervalzNeeds beta function.r£   c                 C   st   t j dd¡}dd„ }tjdd�� t |tjƒ¡sJ ‚W d   ƒ n1 s&w   Y  t|dtjƒ}t|j	|ƒ d S )NrT   rN   c                 S   s   t j | d¡| d  S )NrN   rT   )r   Ú	yulesimonÚ_pmfrÎ   r   r   r   r/   „  r_   z0TestNSum.test_logser_kurtosis_gh20648.<locals>.frd   )Úinvalidr   )
r   rŸ  Úmomentr:   rh   rh  r‹   r   r   ri  )r<   r   rj   r/   r,   r   r   r   Útest_logser_kurtosis_gh20648  s   ÿz%TestNSum.test_logser_kurtosis_gh20648N)*rO  rP  rQ  r:   rÚ   rÛ   rÞ   ÚuniformÚtolistrË   r>   r   rj   rL   r‹   r†   rY  rÓ   rC   r   r‡  rI   r„  r   r�   r‡   rS  rT  r(   r®   r�  rã   rŠ  rŒ  r�  r“  r”  r–  r'  rž  r3   r£  r   r   r   r   rZ  ÿ  sL    6

3
(
1

rZ  rF   )*r¹   r‡   r   Únumpyr:   Únumpy.testingr   Úscipy.conftestr   Ú(scipy._lib._elementwise_iterative_methodÚ_libÚ_elementwise_iterative_methodr	  Úscipy._lib._array_api_no_0dr   r   Úscipy._lib._array_apir   r   r   r	   r
   Úscipyr   r   Úscipy.integrater   r   r   rŠ   Úscipy.integrate._tanhsinhr   Úscipy.stats._discrete_distnsr   r   r   r2   rS  Úusefixturesr3   r7   rZ  r   r   r   r   Ú<module>   sF   


ÿÿ     N
