
    e!h                         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
c 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
Z"ddZ#d Z$eejJ                  jM                  d      ejJ                  jO                  dd      ejJ                  jO                  dd       G d d                                  Z(eejJ                  jM                  d      ejJ                  jO                  dd      ejJ                  jO                  dd       G d d                                  Z)y)    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                 |    |t        |       n|}dd|j                  z  dz  z  |j                  | dz   dz        z  S )N            ?)r   piexpxxps     k/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/integrate/tests/test_tanhsinh.pynorm_pdfr      s@    !z	rBag^bffadU1Wo--    c                 |    |t        |       n|}dt        j                  d|j                  z        z  | dz  dz  z
  S )Ng      r   )r   mathlogr   r   s     r   norm_logpdfr"      s;    !z	rB255!!AqDF**r   c                     d }|S )Nc                       fd}|S )Nc                      | d   j                   }| D cg c]  }t        |       } }g }t        t        j                  |            D ](  }| D cg c]  }||   	 }}|j                   |        * |S c c}w c c}w )Nr   )shaper	   ranger    prodappend)
arg_arraysr&   	arg_arrayresiarg_scalarsfs         r   wrappedz._vectorize.<locals>.decorator.<locals>.wrapped    s    qM''E?IJ)(9-JJJC499U+, ,=GH	y|HH

1k?+, J K Is   A6A; )r/   r0   s   ` r   	decoratorz_vectorize.<locals>.decorator   s    	 r   r1   )r   r2   s     r   
_vectorizer3      s    
 r   skip_xp_backendsarray_api_strictz)Currently uses fancy indexing assignment.reasonz	jax.numpyz*JAX arrays do not support item assignment.c                   
   e Zd Zd Zde_        de_        d Zej                  dz
  d ej                  d      z  z   dz  e_        de_        d Z
 ej                  ej                  dz        dz
  dz  e
_        ej                  dz  e
_        d Zd	ej                  dz  z  d
z  e_        de_        d Zde_        de_        d Zej                  dz  e_        de_        d Zd ej                   ej                        z   ej$                  d      z   ej$                  d      z  e_        de_        d Zde_        de_        d Zej                    ej                  d      z  dz  e_        ej                  dz  e_        d Zej                   ej                   d      z  dz  e_        ej                  dz  e_        d Zej                  dz  e_        ej.                  e_        d Z ej                   ej                        e_        ej.                  e_        d Z ej                   ej                  dz        e_        ej.                  e_        d Zde_        ej.                  e_        d Zej                  dz  e_        ej.                  e_        dPdZd Zej>                  jA                  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d gd!e"jF                  jI                  d       e"jF                  jI                  d      z
  gg      d"        Z%ej>                  jM                  d#d$%      ej>                  jA                  d& e'dd'            d(               Z(ej>                  jM                  d#d)%      ej>                  jA                  d*dd+d,gf      ej>                  jA                  d-e"jR                  jT                        d.                      Z+ej>                  jA                  d/ e,       d0d1d2g      d3        Z-d4 Z.d5 Z/d6 Z0d7 Z1d8 Z2ej>                  jM                  d9d:;      ej>                  jA                  d<d=d>g      d?               Z3d@ Z4ej>                  jA                  dA e'd            dB        Z5dC Z6ej>                  jA                  dDdEe!j.                   dgdFdFgff      ej>                  jA                  dGdH      dI               Z7dJ Z8dK Z9dL Z:ej>                  jM                  d#M      dN        Z;dO Z<y)QTestTanhSinhc                 8    |t        j                  d|z         z  S Nr   npr!   selfts     r   f1zTestTanhSinh.f19   s    266!a%=  r         ?r   c                 8    |dz  t        j                  |      z  S Nr   )r=   arctanr>   s     r   f2zTestTanhSinh.f2?   s    Av		!$$r   r      c                 X    t        j                  |      t        j                  |      z  S Nr=   r   cosr>   s     r   f3zTestTanhSinh.f3E   s    vvay266!9$$r   c                 z    t        j                  d|dz  z         }t        j                  |      d|dz  z   |z  z  S )Nr   r   )r=   sqrtrE   )r?   r@   as      r   f4zTestTanhSinh.f4K   s8    GGAQJyy|AF
a/00r      `   c                 X    t        j                  |      t        j                  |      z  S rI   )r=   rN   r!   r>   s     r   f5zTestTanhSinh.f5R   s    wwqzBFF1I%%r   gqqܿc                 8    t        j                  d|dz  z
        S Nr   r   r=   rN   r>   s     r   f6zTestTanhSinh.f6X   s    wwq16z""r      c                 d    t        j                  |      t        j                  d|dz  z
        z  S rV   rW   r>   s     r   f7zTestTanhSinh.f7^   s&    wwqzBGGAQJ///r   g      ?c                 2    t        j                  |      dz  S rD   r<   r>   s     r   f8zTestTanhSinh.f8d   s    vvayA~r   c                 R    t        j                  t        j                  |            S rI   )r=   r!   rK   r>   s     r   f9zTestTanhSinh.f9j   s    vvbffQi  r   c                 R    t        j                  t        j                  |            S rI   )r=   rN   tanr>   s     r   f10zTestTanhSinh.f10p   s    wwrvvay!!r   c                     dd|dz  z   z  S rV   r1   r>   s     r   f11zTestTanhSinh.f11v   s    AQJr   c                 Z    t        j                  |       t        j                  |      z  S rI   )r=   r   rN   r>   s     r   f12zTestTanhSinh.f12|   s    vvqbzBGGAJ&&r   c                 :    t        j                  |dz   dz        S rD   )r=   r   r>   s     r   f13zTestTanhSinh.f13   s    vvqAvgk""r   c                 Z    t        j                  |       t        j                  |      z  S rI   rJ   r>   s     r   f14zTestTanhSinh.f14   s    vvqbzBFF1I%%r   r   c                 2    t        j                  |      |z  S rI   )r=   sinr>   s     r   f15zTestTanhSinh.f15   s    vvay1}r   Nc                     |t        ||      n|}t        ||z
        }|s|S t        j                  d      5  |j	                  |      cd d d        S # 1 sw Y   y xY w)Nignoredivide)r   absr=   errstatelog10)r?   r,   refr!   r   errs         r   errorzTestTanhSinh.error   sU    *,*_S#&"#)nJ[[) 	!88C=	! 	! 	!s   AAc                    | j                   }|j                  d      }|j                  |j                        }d}t        j                  t
        |      5  t        d||       d d d        d}t        j                  t
        |      5  t        |||d       d d d        d}t        j                  t
        |      5  t        ||j                  d	      |       d d d        t        j                  t
        |      5  t        |||d
       d d d        t        j                  t
        |      5  t        |||t               d d d        d}t        j                  t
        |      5  t        |||d       d d d        t        j                  t
        |      5  t        ||||j                         d d d        d}t        j                  t
        |      5  t        ||||j                  d       d d d        t        j                  t
        |      5  t        ||||j                  d       d d d        d}t        j                  t
        |      5  t        |||t                      d d d        t        j                  t
        |      5  t        |||d       d d d        d}t        j                  t
        |      5  t        |||d       d d d        t        j                  t
        |      5  t        |||d       d d d        d}t        j                  t
        |      5  t        |||d       d d d        d}t        j                  t
        |      5  t        |||d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   IxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   _xY w# 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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)r   r!   )r   r!   z...must be integers.maxlevelzmigratory coconut)minlevelz...must be non-negative.preserve_shapez...must be callable.
elderberry)callback)	rA   asarraybpytestraises
ValueError	_tanhsinhinfobject)r?   r   r/   zerof_bmessages         r   test_input_validationz"TestTanhSinh.test_input_validation   sk   GGzz!}jjo)]]:W5 	%b$$	% .]]:W5 	+as*	+ -]]:W5 	0aD)3/	0]]:W5 	1as0	1]]:W5 	1as0	1 8]]:W5 	-as,	-]]:W5 	1as0	1 5]]:W5 	;asT:	;]]:W5 	;asT:	; )]]:W5 	7asVX6	7 ]]:W5 	Bas-@A	B -]]:W5 	1asR0	1 ]]:W5 	1asR0	1 .]]:W5 	6as15	6 )]]:W5 	;as\:	; 	;a	% 	%	+ 	+	0 	0	1 	1	1 	1	- 	-	1 	1	; 	;	; 	;	7 	7	B 	B	1 	1	1 	1	6 	6	; 	;s   N 	N>N>N'1N4*OOOO(O5P
P=P2P)'P5 N
NN$'N14N>OOO%(O25O?PPP&)P25P>zlimits, refr         ?      )r   r   c                    |D cg c]  }|j                  |       }}|j                  t        |d               j                  }|j                  ||      }t        t        g| }t        |j                  |       t        t        g|ddi}t        |j                  |j                        |d       t        | }|dkD  r(|j                  |j                  j                  d      s*J |j                  |j                  j                  d      sJ t        |j                  |j                        |j                  d	d
       y c c}w )Nr   dtyper!   TF)check_dtypereal floatingzcomplex floating缉ؗҜ<)r   r   )r   floatr   r   r   r   integralr"   r   r   isdtyperw   )	r?   limitsru   r   limitr   r,   logresxp_tests	            r   test_integral_transformsz%TestTanhSinh.test_integral_transforms   s    288"**U#88

5+,22jjEj**6*c*;::T:v/%H!6*KNQR7 5 5G 	Q P__V__%:%:<NO	Q P 	v||,ciieQVW 9s   E	Tz!Cumbersome to convert everything.np_onlyr7   f_number   c                    t        | d|       }d}t        |d|j                  |      }t        |j                  |j
                  |       |dvrMt        | j                  |j                  |j
                        |j                  z        }||j                  k  sJ |dv ry |j                  sJ |j                  dk(  sJ y )Nr/   g:0yU>r   r   >      >      
   rG   )
getattrr   r   r   r   ru   rr   rw   successstatus)r?   r   r   r/   r   r,   
true_errors          r   
test_basiczTestTanhSinh.test_basic   s     DAhZ.)1acc-aee$74TZZaee<S\\IJJ		))){"{{{zzQr   z#Distributions aren't xp-compatible.ru   g?g333333?casec                 P   |\  }}|dv rt        j                  d       |dv r4t        t        j                  dd            st        j                  d        t        t        |      | }|j                  |      }t        |j                  g| }t        |j                  |       y )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?   ru   r   r   distnameparamsdistr   r,   s	            r   test_accuracyzTestTanhSinh.test_accuracy  s    
  &AAKKJK<<BIImQ78KK?@'wuh'0MM#%1%c*r   r&   rG      rY   r   r   r   c           
         t         j                  j                  d      }|j                  |j                  |            }|j                  |j                  |            }|j                  |j                  |            }t	        j
                  |      fdd_        d_        t        |      d        }t        |||f      } ||||      }	t        |      }
g d}|D ]i  }|
j                  |	D cg c]  }t        ||       c}      }t        t        ||            }t        ||d       t        ||      j                  |k(  riJ  |
j!                  |j"                  j$                  d	      sJ |
j!                  |j&                  j$                  d
      sJ |
j!                  |j(                  j$                  d
      sJ |
j!                  |j*                  j$                  d
      sJ |j-                  |j(                        j                  k(  sJ |j-                  |j*                        dk\  sJ |j-                  |j*                        j                  k(  sJ y c c}w )N   F*BG c                     xj                   dz  c_         xj                  t        |       k(  s| j                  dk  rdn| j                  d   z  c_        | |z  S Nr   r   )ncallfevalr   ndimr&   r   pr/   ns     r   r/   z*TestTanhSinh.test_vectorization.<locals>.f   sE    GGqLGGGWQZ1_!q!''"+MGa4Kr   r   c                 $    t        fd| |      S )Nc                     | z  S rI   r1   r   r   s    r   <lambda>zKTestTanhSinh.test_vectorization.<locals>._tanhsinh_single.<locals>.<lambda>)  s    q!t r   )r   )rO   r   r   s     `r   _tanhsinh_singlez9TestTanhSinh.test_vectorization.<locals>._tanhsinh_single'  s    ^Q22r   argsr   rw   r   r   nfevr   V瞯<r   boolr   r   )r=   randomdefault_rngr   r    r(   r   r   r3   r   r   stackr   r	   r   r&   r   r   r   r   r   r   max)r?   r&   r   rngrO   r   r   r   r,   refsr   attrsattrru   ref_attrres_attrr/   r   s                   @@r   test_vectorizationzTestTanhSinh.test_vectorization  s    ii##$89JJszz%()JJszz%()JJszz%()IIe	 	B	3 
	3 1aqd+1a(!!$N 	5D}}D%ISgc4&8%IJHT 23HHhU;3%++u444		5 s{{00&999szz//<<<sxx~~z:::s||11:>>>vvchh177***vvcll#q(((vvcll#qww... &Js   9I(
c                 f   fdd_         j                  dj                        f}j                  j                  gdz        }j                  j                   gdz        }t        ||d|      }j                  g dj                        }t        |j                  |       y )Nc                    xj                   dz  c_         fdfdfdg}g }t        t        |            D ]:  }| |df   }t        t	        |      |         }|j                   ||   |             < j                  |      S )Nr   c                 .    j                  | dz         S rD   r   r   s    r   r   z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>D  s    rvvq!te} r   c                 &    j                  |       S rI   r   r   s    r   r   z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>E  s    rvvay r   c                 <    j                  | j                        S rI   )	full_likenanr   s    r   r   z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>F  s    r||Arvv6 r   .)nitr'   r   r   r	   r)   r   )	xsjsfuncsr,   r-   r   jr/   r   s	          r   r/   z"TestTanhSinh.test_flags.<locals>.fB  s    EEQJE,(68E C72;' (q#vJQ(

858A;'( 88C= r   r   r   r   rQ   )r   r   r   )	r   arangeint64r   r   r   int32r   r   )r?   r   r   rO   r   r,   	ref_flagsr/   s    `     @r   
test_flagszTestTanhSinh.test_flags?  s    
	! 		!288	,.JJxz"JJy1}%1a!$7JJ{"((J;	

I.r   c                    fd}j                  j                  gdz        }j                  j                   gdz        }t        |||dd      }j                  g dj                        }t	        |j
                  |       y )Nc                     j                  | d   dz         j                  | d         j                  | d   j                        g}j                  |      S )Nr   r   r   )r   r   r   r   )r   r,   r   s     r   r/   z1TestTanhSinh.test_flags_preserve_shape.<locals>.fX  sU    661Q47(#66!A$<<<!bff-/C 88C= r   r   rQ   T)r   r   r   r   )r   r   r   r  r   r   )r?   r   r/   rO   r   r,   r  s    `     r   test_flags_preserve_shapez&TestTanhSinh.test_flags_preserve_shapeV  sr    	! JJx!|$JJy1}%1a!DAJJ{"((J;	

I.r   c                    d t        fddd      }t        fdj                  d      j                  d      d      }j                  d      j                  }t	        |j
                  j                  |d   |	             y )
Nc                     |j                  |j                  | |j                  d| z        g      |j                  |j                  d| z        | |j                  d| z        z  g      g      S )Nr      d   )r   rl   rK   r   s     r   r/   z+TestTanhSinh.test_preserve_shape.<locals>.ff  se    88RXXq"&&a.&9:XXrvvb1f~q266#'?7J&KLN O Or   c                      | t               S rI   )r=   r   r/   s    r   r   z2TestTanhSinh.test_preserve_shape.<locals>.<lambda>j  s    1b r   r   r   c                      |       S rI   r1   )r   r/   r   s    r   r   z2TestTanhSinh.test_preserve_shape.<locals>.<lambda>k  s    !Ar( r   Tr           r   )r   r   r   r   r   r   )r?   r   ru   r,   r   r/   s    `   @r   test_preserve_shapez TestTanhSinh.test_preserve_shaped  sp    	O )1a0*BJJqM2::a='+-

2$$bjjQuj&EFr   c                 >   j                   }fd}j                  d|      }j                  d|      j                  d|      }}d}t        d      D ]B  }t        |||d|      }	| j	                  |	j
                  |d	
      }
|
|dz  k  s|
dk  sJ |
}D y )Nc                 2    | j                  d| z         z  S r;   r~   )r@   r   s    r   r/   z(TestTanhSinh.test_convergence.<locals>.fs  s    rvva!e}$$r   rB   r   r  r   r   rY   r   r   T)r!   r   r   g      /)float64r   r'   r   rw   r   )r?   r   r   r/   ru   rO   r   last_logerrr-   r,   logerrs    `         r   test_convergencezTestTanhSinh.test_convergencep  s    

	%jjUj+zz"Ez*BJJrJ,G1q 	!AAq!a!<CZZctZCF[1_,?> K		!r   c                 p   t        j                  d            fdj                  t        j                  dz
  dt        j                  d      z  z   dz  j
                        _        d}j                  |z  }j                  dj
                        }j                  dj
                        }d\  _        _        t        ||      }| j                  |j                  j                        |j                  cxk  r|k  sJ  J |j                  j                  k(  sJ j                  |_        |j                  sJ |j                  d	k(  sJ d\  _        _        t        |j                         }t        |||
      }j                  |_        ||k(  sJ d\  _        _        |dz  }|dk\  sJ t        |||
      }| j                  |j                  j                        |j                  cxk  r|kD  sJ  J |j                  j                  cxk(  r|j                  k  sJ  J j                  |j                  dz
  k(  sJ |j                  rJ |j                  t"        j$                  k(  sJ |}j                  |_        d\  _        _        t'        j(                  t+        |j                        t&        j,                        }	t        ||d	|	      }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  j                  cx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&        j,                         }	t        ||d	|	      }| j                  |j                  j                        |j                  cxk  r|	k  sJ  J |j                  j                  cxk(  r|j                  kD  sJ  J j                  |j                  kD  sJ |j                  sJ |j                  d	k(  sJ d\  _        _        t'        j(                  t+        |j                  |j                  z        t&        j,                        }
t        |||
      }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  j                  cx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                  |j                  z        t&        j,                         }
t        |||
      }| j                  |j                  j                        j                  z  |j                  |j                  z  cxk  r|
k  sJ  J |j                  j                  cxk(  r|j                  kD  sJ  J j                  |j                  kD  sJ |j                  sJ |j                  d	k(  sJ y )Nr   c                     xj                   dz  c_         xj                  t        j                  |             z  c_        | dz  j	                  |       z  S rV   )callsr   r   r   atanr   r/   r   r   s    r   r/   z:TestTanhSinh.test_options_and_result_attributes.<locals>.f  sB    GGqLGGGwrzz!}--Ga4',,q/))r   r   rG   r   -q=r  )r   r   r   r   r   r   r   r   )r   r   r    r   r!   r  ru   r   r  r   rw   r   r   r   r   r   r   eim	_ECONVERRr=   	nextafterr   r   )r?   r   default_rtoldefault_atolrO   r   ru   r   r,   r   r   r/   r   s    `         @@r   "test_options_and_result_attributesz/TestTanhSinh.test_options_and_result_attributes  sn    ""**R.1	*
 

DGGaK!dhhqk/9R?rzz
Ruu|+ JJrJ,JJrJ,  1a zz#,,.I\IIIIIxx177"""GG	{{{zzQ  s||$1a(3GG	czz  A1}}1a(3zz#,,.I\IIIIIxx177-SXX-----ww#))a-''';;zzS]]***, GG	  ||E#)),bff51aad3||s||+++yyCII%%%xx177.chh.....ww#))###{{{zzQ||E#)),rvvg61aad3zz#,,.ATAAAAAxx177-SXX-----ww"""{{{zzQ  ||E#))CLL"89266B1ad+||s||+++yyCII%%%xx177.chh.....ww#))###{{{zzQ||E#))CLL"89BFF7C1ad+zz#,,.quu4syy7MTPTTTTTTxx177-SXX-----ww"""{{{zzQr   torchzAhttps://github.com/scipy/scipy/pull/21149#issuecomment-2330477359r6   r   g-C6?g+=c           	      @   t        dd      }j                  dj                        }j                  dj                        }t        t        ||dt        j                  |            }t        t        |||	      }t        j                  |j                        |j                  fi | t        j                  |j                        |j                  fi | |j                  |j                  k(  sJ d
 }fd}	j                  j                   j                        }j                  j                  j                        }t        |	||d      }t        |||      }t        j                  d      5  t        j                  |j                        |j                  fi |ddi t        j                  |j                        |j                  fi |ddi d d d        |j                  |j                  k(  sJ y # 1 sw Y   %xY w)NgC]r2<r   )r   r   r   r   g       @T)r!   r   r   c                 2    t        |        t        |       z  S rI   )r"   r   r   s    r   r/   z TestTanhSinh.test_log.<locals>.f  s    N?8A;..r   c                 v    j                  t        |       dz         t        |       z   j                  dz  z   S )Ny                              ?)r!   r"   r   r   s    r   logfz#TestTanhSinh.test_log.<locals>.logf	  s1    66+a.2-.Q?"%%"*LLr   r~   ro   allr   F)dictr   r  r   r"   r    r!   r   r   r   r   rw   r   r   r=   rs   )
r?   r   r   	test_tolsrO   r   r,   ru   r/   r+  s
     `       r   test_logzTestTanhSinh.test_log  s    e%0	 JJs"**J-JJrJ,Qt$((4.I!QT2s||,cllHiHsyy)399B	Bxx388###	/	M JJwbjjJ1JJrvvRZZJ0a-1a  [[X& 	/BFF3<<0#,, /) /(-/BFF399-syy /I /(-/	/
 xx388###	/ 	/s   A)HHc                    fd}j                  d      j                  j                  dz        }}t        |||      }t        j                  d      dz  dt        j                  d      dz  z
  dz  z   }t        |j                  j                  |             d }j                  j                        j                  j                         }}t        |||      }t        |j                  j                  d             y )	Nc                 ,    j                  d| z        S Nr*  r   r   s    r   r/   z$TestTanhSinh.test_complex.<locals>.f  s    66"q&>!r   r  rY   r   r   r*  c                 <    t        |       dt        | dz        z  z   S )N              ?r   )r   r(  s    r   r/   z$TestTanhSinh.test_complex.<locals>.f&  s    A;hqsm!333r   y            )r   r   r   r    rN   r   r   r   r?   r   r/   rO   r   r,   ru   s    `     r   test_complexzTestTanhSinh.test_complex  s    	" zz"~rzz"%%'211a iil1n$))A,q. 0"44bjjo6	4 zz"&&!2::rvvg#611a bjj&9:r   r   c                   
 t        j                  d            
fd
ddj                  g       c
_        
_        
_        j                  dj
                        }j                  dj
                        }t        
||d|      }j                  
j                        }t        d|dz         D ])  }ddj                  g       c
_        
_        
_        t        ||      }t        
||fi |}	t        |	j                  |j                  d       t        |	j                  |j                  d|j                  z  	       |	j                  
j                  cxk(  r
j                  j                  d   k(  sJ  J 
j                  ||z
  dz   dz   k(  sJ |	j                  |j                  k(  sJ t!        |j                  
j                               , y )
Nr   c                    xj                   dz  c_         xj                  t        j                  |             z  c_        j	                  j
                  t        |       f      _        | dz  j                  |       z  S rV   )r  r   r   r   concatr   r	   r  r  s    r   r/   z%TestTanhSinh.test_minlevel.<locals>.f6  s_    GGqLGGGwrzz!}--G..!##x{!34ACa4',,q/))r   r   r   r   r  gؗҼ<r   r   )r   r   r   r  r   r  r   sortr'   r.  r   r   rw   r   r&   r   r   )r?   r   r   rO   r   ru   ref_xr   optionsr,   r/   r   s     `       @@r   test_minlevelzTestTanhSinh.test_minlevel-  s    ""**R.1	* !"1bjjn!#JJq

J+JJq

J+1a!h?QSS!aA. 	6H$%q"**R.!AGQWacHx@GAq!/w/CCLL#,,UCCIIsyyus||7KL88qww6!##))A,6666677h1A59999::+++E7<<#45	6r   c           	         fd}j                  j                   dj                   j                  dj                   dg      }j                  j                  j                  dj                   ddj                  g      }t        j                  t        j                        }j                  ||dz  |dz  | |||g      }t        |||      }t        |j                  |       y )Nc                 j    j                   | j                  |       <   j                  | dz         S rD   )r   isinfr   r   s    r   r/   z/TestTanhSinh.test_improper_integrals.<locals>.fR  s,    VVAbhhqkN661a4%= r   r   i   r   )r   r   r    rN   r   r   r   r   )r?   r   r/   rO   r   ru   r,   s    `     r   test_improper_integralsz$TestTanhSinh.test_improper_integralsP  s    	! JJRVVGRVVS266'3GHJJBFF7BBFFCDii jj#s1uc!ecT3SAB1a c*r   r   r   r   r   r   )float32r  c                    t              j                  |      \  }}fd}j                  k(  rdnd}t        ||||      }|j                  j
                  k(  sJ |j                  j
                  k(  sJ j                  |j                        sJ t        |j                  j                  |      j                  |      z
         y )Nr   c                 H    | j                   k(  sJ j                  |       S rI   )r   r   )r   r   r   s    r   r/   z"TestTanhSinh.test_dtype.<locals>.fc  s#    77e###66!9r   r  h㈵>r   )r   r   r  r   r   r   rw   r-  r   r   r   )	r?   r   r   r   rO   r   r/   r   r,   s	     ``     r   
test_dtypezTestTanhSinh.test_dtype\  s     E"zz&z.1	 +u1ad+||!!U***yy%'''vvckk"""bffQiq	&9:r   c                    j                  j                         j                  j                        }}fd}d\  }}||z
  dz   t        ||d      }t        |||fi |}|j                  rJ |j
                  |k(  sJ fdd_        d _        |d= t        |||fi |d	i}	|j                         D ]?  }
|
d
k(  r||
   dk(  sJ |	|
   dk(  rJ |	|
   j                  |
   cxk(  r
||
   k(  r<J  J  y )Nc                 .    j                  |  | z        S rI   r   r   s    r   r/   z-TestTanhSinh.test_maxiter_callback.<locals>.fq      661"Q$<r   )r   r   r   r   )r   r   r   c                     xj                   dz  c_         | _        t        | d      sJ | j                  dk(  sJ j                   k(  rt        y )Nr   r   )iterr,   hasattrr   StopIteration)r,   r   maxiters    r   r   z4TestTanhSinh.test_maxiter_callback.<locals>.callback{  sO    MMQMHL3
+++::?"?}}'## (r   r   r   r   r   r   )	r   r   r.  r   r   r   rN  r,   keys)r?   r   rO   r   r/   r   r   kwargsr,   res2keyr   rQ  s    `         @@r   test_maxiter_callbackz"TestTanhSinh.test_maxiter_callbackn  s&   zz266'"BJJrvv$61	  "(X%)x(G1a*6*;;||x'''	$ :Aq>F>X> 88: 	BCh3x2~%~CyB&CyHLL$5ASAAAAA	Br   c                    j                  j                   j                        }j                  j                  j                        }fd}fdg _        g _        d}t        |||d|       t        |dz         D ]c  }t        |||||      }t        j                  d|z      |j                  d	
       t        j                  d|z      |j                  d	d       e y )Nr   c                 .    j                  |  | z        S rI   r   r   s    r   r/   z&TestTanhSinh.test_jumpstart.<locals>.f  rL  r   c                     j                   j                  t        | j                        d          j                  j                  t        | j
                        d          y )Nr1   )	integralsr)   r
   r   errorsrw   )r,   r   s    r   r   z-TestTanhSinh.test_jumpstart.<locals>.callback  sE    %%gcll&;B&?@OO""7399#5b#9:r   rY   r   )r   r   r   r   r  r   r   r   r  )
r   r   r  r[  r\  r   r'   r   r   rw   )	r?   r   rO   r   r/   r   r-   r,   r   s	    `      @r   test_jumpstartzTestTanhSinh.test_jumpstart  s     JJwbjjJ1JJrvvRZZJ0	 	;  !QA8Lx!|$ 	UAAq!a!<CH..qs3S\\NHOOAaC0#))%eT	Ur   c           	      j  
 j                  d      j                  d      }}t        ||      

fd}t        |||      }|j                  sJ t	        |j
                  j                  d             t        |||d      }|j
                  dkD  sJ t        |j                  j                  j                               t        |||d      }|j
                  dkD  sJ t        |j                  j                  j                               t        |||      }|j                  sJ |j                  dk(  sJ t	        |j
                  j                  d             d }t        |||d	
      }t	        |j
                  j                  d             j                  j                  dddg      }j                  dj                  ddg      }j                  ddj                  dg      }t        ||||f
      }t	        |j
                  j                  j                  j                  j                  dg             t        |j                  d d j                  dj                               t        |j                  j                  g dj                               t        |j                  j                  g d             t        |j                  d d j                  ddj                               j                  d      t        _        j                  d      t        _        dgt        _        d t        _        j                  d      j                  d      }}t        fd||      }t	        |j
                  j                  d             t        d ||      }t	        |j
                  j                  d             d}t        d j                  d      j)                  |            }g d}|D ]  }	||	   j*                  |k(  rJ  y )Nr   r   c                 D    j                  | j                  d      sJ | S )Nr   )r   r   )r   r   s    r   r/   z*TestTanhSinh.test_special_cases.<locals>.f  s     ??177O<<<Hr   r   r   r   r  c                     | |z  S rI   r1   )r   cs     r   r/   z*TestTanhSinh.test_special_cases.<locals>.f  s    a4Kr      r   g?r   r   )r   r   r   r   r   FFFTc                 ,    j                  | dz        S r3  r   r   s    r   r   z1TestTanhSinh.test_special_cases.<locals>.<lambda>  s    "**QrT"2 r   r5  c                     | S rI   r1   r(  s    r   r   z1TestTanhSinh.test_special_cases.<locals>.<lambda>      ! r   rD  c                     | S rI   r1   r(  s    r   r   z1TestTanhSinh.test_special_cases.<locals>.<lambda>  rh  r   r   )r   r   r   r   r   r   r   rw   r   r   fullr   r  r   emptyr   xjcwjindicesh0zerosr&   )r?   r   rO   r   r/   r,   ra  r&   r   r   r   s    `        @r   test_special_caseszTestTanhSinh.test_special_cases  sB   zz!}bjjm1!!Q'	 1a {{{bjjo6 1a!,||a		2::bff#561a!,||a		2::bff#56 1a {{{||r!!!bjjn5	 1ab)bjj&67 JJ1a()JJ2661a()JJ1bffa()1aqd+bjj"&&"&&"&&#1N&OP		"1rwwtRVV'<=

BJJbhhJ$OPRZZ0K%LM!bggdARXXg&FG ((1+! czz!}bjjm12Aq9bjj&89Q*bjjo6 RZZ]BHHUODN 	,Dt9??e+++	,r   )r   c                 p    t        j                  dd      }d|d<   t        t         j                  d|       y )NA   r     r   r   )r=   rj  r   rl   )r?   r   r   s      r   #test_compress_nodes_weights_gh21496z0TestTanhSinh.test_compress_nodes_weights_gh21496  s,     GGBN""&&!Qr   c                     t        dd      t        dd      fd}t        |j                  d      j                  d      ddd	      }j                  |j                        sJ y )
NrG   i'   c                 >    j                  d| z
  z  | z  z         S r;   )rl   )r@   rO   r   r   s    r   r/   z2TestTanhSinh.test_gh_22681_finite_error.<locals>.f  s#    66!q1u+A-..r   r  r   r   r   )r   r   r   )complexr   r   isfiniterw   )r?   r   r/   r,   rO   r   s    `  @@r   test_gh_22681_finite_errorz'TestTanhSinh.test_gh_22681_finite_error  s\     BBO	/2::b>2::b>TVW{{399%%%r   )FN)=__name__
__module____qualname__rA   ru   r   rF   r=   r   r!   rL   r   rP   rT   rX   r[   rN   r   gammar]   r_   rb   rd   r   rf   rh   rj   rm   rw   r   r   markparametrizer    r   normcdfr   r4   r'   r   _distr_paramsdistcontr   tupler   r  r  r  r  r$  r0  r7  r>  rC  rI  rW  r]  rq  ru  r{  r1   r   r   r9   r9   .   s.   ! BFBD% eeai!fbffQi-'2-BFBD% bffRUUQY!#q(BF5519BD1 !^b BFBD& BFBD# UUQYBFBD0 -'--"66u9MMBFBD BFBD! eeVfbffQi!#BF5519BD" eegbggaj 1$CGEEAICE  eeaiCGFFCE' bggbeenCGFFCE# bggbeeai CGFFCE& CGFFCE eeaiCGFFCE!8;t [[]
TXX88)Q88)TXX	#
((TXXI	$	%**..%);;<- XX( [[!!$)L " N[[Zq"6 7N [[!!$)N " P[[US3*$56[[VU%8%8%A%AB+ C 7P+ [[Wuwvy&IJ&/ K&/P/./
G!sj [[!!'O "  [[VdE]3 $ 4 $D;& [[Zq2 6 3 6D
+ [[X488)Q!Q0H'IJ[[W&<=; > K;  BDU.A,F [[!!$!/  0 &r   r9   zNo fancy indexing.zNo mutation.c                   0   e Zd Zej                  j                  d      Zej                  ddd      j                         Z	d Z
ej                  dz  dz  e
_        de
_        ej                  e
_         e       e
_        d Z ej(                  e	d      e_        d	e_        ej                  e_        e	fe_        d
 Zde_        ej-                  ddd      e_         eej                  e	      e_        e	fe_        d Zej4                  j7                  d edd            d        Zej4                  j7                  dg d      d        Zej4                  j7                  d e       dddg      d        Zd Z d Z!d Z"ej4                  j7                  dddg      d         Z#d! Z$d" Z%ej4                  j7                  d#d$d%g      d&        Z&ej4                  j7                  d'd(d)g      d*        Z'ej4                  jQ                  dd+,      d-        Z)y.)/TestNSuml   Q [ r   r   sizec                     |dz  S Nr   r1   )r?   ks     r   rA   zTestNSum.f1  s     2wr   r      c                     d||z  z  S r;   r1   r?   r  r   s      r   rF   zTestNSum.f2      1a4xr   r   c                     d||z  z  S r;   r1   r  s      r   rL   zTestNSum.f3  r  r   rQ   r   )r   r   c                 (   | j                   }|j                  |j                        |j                  |j                        }}d}t	        j
                  t        |      5  t        d||       d d d        d}t	        j
                  t        |      5  t        |||d       d d d        d}t	        j
                  t        |      5  t        ||j                  d      |       d d d        t	        j
                  t        |      5  t        |||j                  d             d d d        t	        j
                  t        |      5  t        ||||j                  d      	       d d d        t	        j
                  t        |      5  t        |||t        d
             d d d        t	        j
                  t        |      5  t        |||t        t                     d d d        t        j                  d      5  t        ||j                  t        j                  t        j                  g      |j                  d            }|j                  |j                  dk(  |j                  |j                         z  |j                  |j"                        z  |j$                   z  |j&                  z  dk(        sJ t        ||j                  d      |j                  t        j                  dg            }|j                  |j                  dk(  |j                  |j                         z  |j                  |j"                        z  |j$                   z  |j&                  z  dk(        sJ t        ||j                  d      |j                  d      |j                  |j                  |j                   |j                  ddg      	      }|j                  |j                  dk(  |j                  |j                         z  |j                  |j"                        z  |j$                   z  |j&                  z  dk(        sJ 	 d d d        d}t	        j
                  t        |      5  t        |||t        d             d d d        t	        j
                  t        |      5  t        |||t        t        j                               d d d        d}t	        j
                  t        |      5  t        |||t        t        j                        d       d d d        t	        j
                  t        |      5  t        |||t        t        j                        d       d d d        d}t	        j
                  t        |      5  t        |||d       d d d        t	        j
                  t        |      5  t        |||d       d d d        y # 1 sw Y   txY w# 1 sw Y   LxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   KxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   AxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nry   rz   r|   r}   r   r~   r   r   )stepr   r   
tolerancesr   ro   r,  r   r   r   g      $@r   r   r   T)r  r!   z"...must be a non-negative integer.g      @maxtermsr   )rA   r   rO   r   r   r   r   r   r.  r=   rs   r   r   r-  r   isnansumrw   r   r   )r?   r   r/   rO   r   r   r,   s          r   r   zTestNSum.test_input_validation!  s-   GGzz!##

1331)]]:W5 	QN	 .]]:W5 	!Aqa 	! -]]:W5 	)BJJt$a(	)]]:W5 	)Arzz$'(	)]]:W5 	1Aqrzz$/0	1]]:W5 	8AqTv%67	8]]:W5 	8AqTv%67	8 [[X& 
	Pq"**bffbff%56

2GC663::+rxx/@@HHSYY/036;;,?ADJMNO P P Pq"**S/2::rvvqk+BCC663::+rxx/@@HHSYY/036;;,?ADJMNO P P Pq"**R."**S/JJQ'GHJC663::+rxx/@@HHSYY/036;;,?ADJMNO P P P
	P 8]]:W5 	4AqTr]3	4]]:W5 	8AqTrvv%67	8 5]]:W5 	BAqTrvv%6DA	B]]:W5 	BAqTrvv%6DA	B 7]]:W5 	(Aq3'	(]]:W5 	'Aq2&	' 	']	 		! 	!	) 	)	) 	)	1 	1	8 	8	8 	8
	P 
	P	4 	4	8 	8	B 	B	B 	B	( 	(	' 	's    W W-W:XX
X!X.IX;0Y-(Y:)Y")Y/Y<Z W*-W7:XXX!X+.X8;YYY"Y,/Y9<ZZr   rY   c                 H   j                  d      j                  }t        | d|       j                  j                        j                  j                        }}t        fdj                  D              }j                  j                  |      }t        |||      }t        |j                  |       t        |j                  j                  |j                  j                               t!        |      }	t        |j"                  j%                  |j                  |	j&                               t)        j*                  d      5  t        fd||d	|
      }
d d d        t        j-                  
j                        |j                         t        j-                  |
j.                        |j.                  d       t        |
j                  |j                         t        |
j"                  |j"                         y # 1 sw Y   xY w)Nr   r/   c              3   @   K   | ]  }j                  |        y wrI   rf  ).0argr   s     r   	<genexpr>z&TestNSum.test_basic.<locals>.<genexpr>\  s     7RZZ_7s   r   r   ro   rp   c                  ,    j                   |        S rI   r~   )r   r/   r   s    r   r   z%TestNSum.test_basic.<locals>.<lambda>e  s    q$x(8 r   T)r!   r   r   r   )r   r   r   rO   r   r  r   ru   r   r   r  r   r   rp  r&   r  r   r   onesr   r=   rs   r   rw   )r?   r   r   r   rO   r   r   ru   r,   r   r   r/   s     `        @r   r   zTestNSum.test_basicW  sv   

2$$DAhZ.)zz!##

1331777jjej,1a&%

BHHSYYbhhH$GH!!$RWWSYYgllW%KL[[) 	68aT6F	6 	vzz*CGG4v||,ciieDszz24	6 	6s   HH!r  )r   r   r   rB  r  c                    | j                   }fd}d }j                  ddgj                        d d j                  f   }j                  ddj                  gj                        d d j                  j                  f   }j                  g dj                        j                  d	      }j                  ||z
  |z        }	|}
||	|z  z   }|||z  z   }j                   ||j                  |      |z  z         d
d      } ||       ||      z
  |z  }||z    ||      z   }||z    ||      z   }||z   dz  }||z
  dz  }t        |      }|j                  |||      \  }}}t        j                  |j                        D ]  }t        ||         t        ||         t        ||         }}}||z
  |z  dz   |k  s<j                   |j                  |||z   |j                                    }|||<   |j                  |j                         j"                  z  ||<    d}t%        |||
||t'        |            }t)        |j                  |d|z         t)        |j*                  |d|z         |
|z
  |z  dz   |k  }t)        |j                  |   ||   d       t)        |j*                  |   ||   d       t%        |||
|dt'        t-        j.                  |            |      }t)        j1                  |j                        |j                         t)        j1                  |j*                        |j*                         y )Nc                 ,    dj                  |       z  S r  r~   r   s    r   r+  z$TestNSum.test_integral.<locals>.logfq  s    bffQi<r   c                     d| z  S )Nr   r1   r(  s    r   Fz!TestNSum.test_integral.<locals>.Ft  s    6Mr   r   rQ   r   rB  r  )r   r   r   )r   r   r   r   r   T)axiskeepdimsr   r  r   )r  r  r  r   r   )r  r!   r  r  )rA   r   r  newaxisr   reshapefloorr  r   r   broadcast_arraysr=   ndindexr&   r   finfor   epsr   r.  r   rw   r    r!   r   )r?   r  r   r/   r+  r  rO   r   r  nsteps
b_originalr  directr   lowhighref_sumref_errr   r-   aibistepir   r,   r   s     `                       r   test_integralzTestNSum.test_integrall  s    GG	 	 JJ1vRZZJ0BJJ?JJC(

J;Arzz2::<UVzz+RZZz8@@O1q5$,'
tO!bii1$667b4PaD1Q4K%x!A$& 1Q4':q.#:q. "!$--aD9
1dAGG$ 	AA!!A$KqteDGnEBR"h."))B5%rzz)"R ST#
#bhhv||&<&@&@@
	A 1a$"o/r$w7		7T:1nd"Q&(2
GAJU;		!gaju=dAz$!%488D>!:XOvzz*CGG4v||,cii8r   r&   r   r   r   c           
      n   t         j                  j                  d      }|j                  dd|      }t         j                  }|j                  |      dz   }t        j                  |      fdd_        t         j                  d        }t        |j                  |      |j                  |      d|j                  |      f	      } ||||d
      j                         }	g d}
|
D ]m  }|	D cg c]  }|j                  t        ||             }}t        ||      }t        t        |      |j                  |      d       |j                  |k(  rmJ  t!        |j                  d            }|j#                  |j$                  j&                  d      sJ |j#                  |j(                  j&                  d      sJ |j#                  |j*                  j&                  d      sJ t-        |      r4t/        |j1                  |j*                              j                  k(  sJ y y c c}w )Nr   r   r   r  c                     xj                   | j                  k(  s| j                  dk  rdn| j                  d   z  c_         d| |z  z  S r   )r   r  r   r&   r   s     r   r/   z&TestNSum.test_vectorization.<locals>.f  s=    GGQVVq[AFFaKqaggbkIGqAv:r   r   c                 (    t        fd| ||      S )Nc                     d| z  z  S r;   r1   r   s    r   r   zBTestNSum.test_vectorization.<locals>.nsum_single.<locals>.<lambda>  s    !ad( r   r  )r   )rO   r   r   r  s     ` r   nsum_singlez0TestNSum.test_vectorization.<locals>.nsum_single  s    *Aq8DDr   rt  )r  r   r  )r  rw   r   r   r   r   r   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   rO   r   r   r  r,   r   r   r   ru   r   r   r   r/   r   s                   @@r   r   zTestNSum.test_vectorization  s    ii##$89LLBUL+ FFJJu!IIe	 		E 
	E 1bjjmRZZ]TA(*1aT288:= 	+DBFG3

73#56GHGsD)HHX.

80D5Q>>U***		+ ""**R.1s{{00&999szz//<<<sxx~~z:::B<rvvchh'(AGG333  Hs   7"H2c                 n   | j                   }g d}|j                  dddddt        j                  g|j                        }|j                  dt        j
                  t        j
                  t        j
                  t        j
                  t        j
                  g|j                        }t        j                  |d      }|j                  ||j                        }t        j                  d      5  t        ||||f      }d d d        |j                  g d	      }|j                  g d
|j                        }	t        j                  |       t        |j                  |	       t        |j                  |j                     |j                  |      |j                            y # 1 sw Y   xY w)N)r   r   g?g?r   r   r   r   r   r   ro   rp   r   )FFFFTF)r   r   r   rR  r   r   )rF   r   r=   r   r  r   r   zetars   r   r  r   r   r   r   r  )
r?   r   r/   r   rO   r   ru   r,   ref_success
ref_statuss
             r   test_statuszTestNSum.test_status  s3   GG"JJ1aArvv.bjjJAJJBFFBFFBFFBFFBFFC2::JVll1a JJq

J+[[) 	+q!QaT*C	+ jj!JKZZ 7rxxZH
[1

J/,bjjockk.JK	+ 	+s   4F++F4c                 p   fdd_         t        |j                  d      |j                  d            }|j                   j                   k(  sJ d_         t        |j                  d      |j                  |j                        t	        d            }|j                   j                   k(  sJ y )Nc                 P    xj                   t        |       z  c_         d| dz  z  S rV   )r   r   r  s    r   r/   zTestNSum.test_nfev.<locals>.f  s"    FFgaj Fq!t8Or   r   r   r   ư>r   r  )r   r   r   r   r.  )r?   r   r,   r/   s      @r   	test_nfevzTestNSum.test_nfev  s    	 1bjjmRZZ^4xx166!!!1bjjmRZZ%7DdOTxx166!!!r   c           	         |j                  ddg      }|j                  |j                        }t        d ||dt        d            }t        d ||      }|j	                  |j
                  |j
                  |j                  z
  kD        sJ |j	                  |j
                  |j
                  |j                  z   k        sJ y )	Nr   rY   c                     d| dz  z  S rV   r1   r  s    r   r   z)TestNSum.test_inclusive.<locals>.<lambda>      QaZ r   i  g?r   )r  r  c                     d| dz  z  S rV   r1   r  s    r   r   z)TestNSum.test_inclusive.<locals>.<lambda>  r  r   )r   r   r   r.  r-  r  rw   )r?   r   rO   r   r,   ru   s         r   test_inclusivezTestNSum.test_inclusive  s     JJ1vJJrvv'ADcN<'A.vvcgg399!45666vvcgg399!45666r   r!   TFc                 b   j                  dt        j                   t        j                   g      }j                  t        j                  dt        j                  g      }j                  g d      }fd}t        ||||f      }j                  t        j
                  j                  dd      t        j
                  j                  dd      dg      }rj                  |      n|}r|j                  j                  k(  rdnd	nd}	t        |j                  j                  ||j                  
      |	       fd}j                  dt        j                   g      }j                  t        j                  dg      }j                  ddg      }
t        ||||
f      }r(t        j                  t        j                  d            nt        j                  d      }t        |j                  j                  |j                  ||j                  
             y )Nr   r   )r   r   r   c                     r8j                  j                  |dz              |j                  |       z  z
  S j                  |dz        j                  | j                  |       z        z  S rD   )r!   tanhrr   r   )r   rO   r!   r   s     r   r/   z(TestNSum.test_infinite_bounds.<locals>.f  sc    <?BFF2771q5>*Qrvvay[8 >1r"&&)|(<<>r   )r   r!   r   r   g|=rH  r   r   c                 L    rdj                  || z        z  S d|| z  dz  z  S )Nr   r   r   r~   )r   ra  r!   r   s     r   r/   z(TestNSum.test_infinite_bounds.<locals>.f  s,    %(2bffQqSk>:a1Q3(l:r   r   )r   r=   r   r   r   dlaplacesfr!   r   r  r   r  r   r  rj  r&   )r?   r!   r   rO   r   ra  r/   r,   ru   r   r  s    ``        r   test_infinite_boundszTestNSum.test_infinite_bounds  s   JJBFF7RVVG,-JJBFF+,JJy!	> 1a!3/jj%..++Aq15>>3D3DQ3JANO bffSkc;>"**,$ACqww!?dK	; JJBFF7|$JJ|$jj!R!1a#S1),bffW\\!_%',,q/#QWW!EFr   c                 $   fd}j                  dj                        j                  t        j                  j                        }}t	        |||      }j                  dj                        }t        |j                  |d       y )Nc                 .    j                  | dz         S rD   r   r   s    r   r/   z)TestNSum.test_decreasing_check.<locals>.f  s    6616'?"r   ir   gtfԸ\?r   r   )r   r  r=   r   r   r   r  r6  s    `     r   test_decreasing_checkzTestNSum.test_decreasing_check  so    	# zz#RZZz0"**RVV2::*2V11am jj*"**j=51r   c           	         | j                   }|j                  d      x}}t        |||      }t        |j                  |j                   |d                   t        | j
                  |j                  d      |j                  t        j                        |j                  d            }t        |j                  |j                  | j                   j                               |j                  d      }|j                  d      }|j                  d      }t        j                  |j                  |j                  |j                        }t        | j
                  |||f      }|j                  j                  |k(  sJ |j                  j                  |k(  sJ |j                  j                  |k(  sJ d }t        ||j                  d      |j                  d	      d
      }|j                  |j                        sJ |j                  |j                         sJ |j                  dk(  sJ t        ||j                  d      |j                  d	      d
      }|j                  |j                        sJ |j                  |j                         sJ |j                  dk(  sJ |j                  |j"                  dddg      }|j                  |j                  |j"                  |j                  |j                  g      }|j                  dd|j"                  dg      }t        | j
                  |||f      }t        |j                  |j                  |j"                  |j"                  |j"                  | j                   j                  g             t        |j                   d d |j%                  d|j"                               t        |j                  |j                  g d|j&                               t        |j(                  |j                  g d             t        |j                  d d |j%                  dd|j&                               y )Nr   r   r   )r   r   r   )r   r   rY   c                 d    t        j                  d      5  d| z  cd d d        S # 1 sw Y   y xY w)Nro   rp   r   )r=   rs   r(  s    r   r/   z%TestNSum.test_special_case.<locals>.f:  s*    H- 1u  s   &/r   r   r  r   r   r   rc  )r   r   r   r   r   rd  )r   )rA   r   r   r   r  rF   r=   r   r   ru   rk  broadcast_shapesr&   r   r   r  rw   r   rj  r  r   )r?   r   r/   rO   r   r,   r   r&   s           r   test_special_casezTestNSum.test_special_case$  s)   GG

1A1amAaD!12 477BJJqM2::bff+=BJJqMRDGGKK!89 HHYHHVHHQK##AGGQWWagg>477Aqt,ww}}%%%zz5(((xx~~&&&	 1bjjmRZZ^a@xx   xx		"""zzR1bjjmRZZ^a@xx   xx		"""zzR JJ1a()JJ78JJ1bffa()477Aqt,RVVRVVRVVTWW[[,Q!RS		"1rwwtRVV'<=

BJJbhhJ$OPRZZ0K%LM!bggdARXXg&FGr   r   rE  r  c                    t              fd}j                  d      }j                  dj                  g      }t        |||      }|j                  j
                  k(  sJ |j                  j
                  k(  sJ j                  k(  rdnd}t        t        j                  dj                  g      d      }t        |j                  j                  |      |       y )	Nc                 X    | j                   k(  sJ d| j                  d      z  z  S )Nr   r   r   )r   r   )r  r   r   s    r   r/   zTestNSum.test_dtype.<locals>.fY  s2    77e###qBJJqJ6666r   r   r   r   r  r  r   r   )r   r   r   r   r  r   rw   r  r   r=   r   )	r?   r   r   r/   rO   r   r,   r   ru   s	    ``      r   rI  zTestNSum.test_dtypeU  s    E"	7 JJqJ&JJBFF|5J11amww}}%%%yy%'''+u

B< 8!<Cu!=DIr   r   )r   r  )r  r   c                    |\  }}d }t         j                  }d}|||z  z   }t        j                  dd      }	||	t        j                  |      z  z   }
t        j                  |
|z
  |z        }t        t        |            dk(  sJ |j                  ||j                        |j                  |
|j                        }
}|j                  ||j                        |j                  ||j                        }}t        |||
||      }t        |j                  |      dkD  |j                  |j                        dkD         t        |j                  d	   |j                  d    ||      z          y )
Nc                     d| dz  z  S rV   r1   r  s    r   r/   z.TestNSum.test_nondivisible_interval.<locals>.fn  s    qAv:r   gUUUUUU?r   r   r   r   )r  r  r   r   )r=   er   spacingr  lensetr   r  r   r   diffr  r   )r?   r   r   r   r  r/   rO   r  b0r-   r   nsr,   s                r   test_nondivisible_intervalz#TestNSum.test_nondivisible_intervalg  s5   
 8	 DDT\IIb!RZZ^##XXq1un%3r7|q   zz!2::z.

1BJJ
0O1::d"**:5rzz"BJJz7Wb1a9a)9A)=>SWWQZ!B%%78r   zNeeds beta function.r   c                 Z   t         j                  j                  dd      }d }t        j                  d      5  t        j
                   |t        j                              sJ 	 d d d        t        |dt        j                        }t        |j                  |       y # 1 sw Y   ;xY w)NrY   rQ   c                 N    t         j                  j                  | d      | dz  z  S )NrQ   rY   )r   	yulesimon_pmfr(  s    r   r/   z0TestNSum.test_logser_kurtosis_gh20648.<locals>.f  s"    ??''1-144r   ro   )invalidr   )
r   r  momentr=   rs   r  r   r   r   r  )r?   r   ru   r/   r,   s        r   test_logser_kurtosis_gh20648z%TestNSum.test_logser_kurtosis_gh20648  s~     oo$$Q*	5 [[* 	'88AbffI&&&	' 1a %		' 	's   ,B!!B*N)*r|  r}  r~  r=   r   r   r   uniformtolistr   rA   r   ru   rO   r   r   r  r   rF   r   r  rL   r  r   r   r   r  r  r'   r   r  r   r  r  r  r  r  r  rI  r  r4   r  r1   r   r   r  r    s1   
 ))

 3
4CAr#**,A
 UUAXaZBFBD66BDgBG W\\!QBFBD66BDdBG BD<<2F<+BDrttQ'BFdBG4'l [[Zq!55 65( [[Z)<=19 >19f [[Wuwvy&IJ&4 K&4PL$"	7 [[UT5M2G 3G42,/Hb [[Wy)&<=J >J" [[Vi%;<9 =9. [[!!$7M!N& O&r   r  rI   )*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"   r3   r  usefixturesr4   r9   r  r1   r   r   <module>r     s/   	    ) / 6 6 H W W   A A 1 :.+
$ +,J   D  F& F& - F&R +,09MNk.AH& H& B O - H&r   