
    ЏkhT                        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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jF                  jI                  dd      ejF                  jI                  dd      ejF                  jI                  dd       G d d                           Z%ejF                  jI                  dd      ejF                  jI                  dd      ejF                  jI                  dd      ejF                  jI                  dd       G d d                                  Z&y)    N)assert_allclose)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     _/var/www/teggl/fontify/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.   r/   s   ` r   	decoratorz_vectorize.<locals>.decorator   s    	 r   r0   )r   r1   s     r   
_vectorizer2      s    
 r   array_api_strictz)Currently uses fancy indexing assignment.reasonz
dask.arrayzboolean indexing assignmentz	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.f1:   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.f3F   s    vvay266!9$$r   c                 z    t        j                  d|dz  z         }t        j                  |      d|dz  z   |z  z  S )Nr   r   )r;   sqrtrC   )r=   r>   as      r   f4zTestTanhSinh.f4L   s8    GGAQJyy|AF
a/00r      `   c                 X    t        j                  |      t        j                  |      z  S rG   )r;   rL   r    r<   s     r   f5zTestTanhSinh.f5S   s    wwqzBFF1I%%r   gqqܿc                 8    t        j                  d|dz  z
        S Nr   r   r;   rL   r<   s     r   f6zTestTanhSinh.f6Y   s    wwq16z""r      c                 d    t        j                  |      t        j                  d|dz  z
        z  S rT   rU   r<   s     r   f7zTestTanhSinh.f7_   s&    wwqzBGGAQJ///r   g      ?c                 2    t        j                  |      dz  S rB   r:   r<   s     r   f8zTestTanhSinh.f8e   s    vvayA~r   c                 R    t        j                  t        j                  |            S rG   )r;   r    rI   r<   s     r   f9zTestTanhSinh.f9k   s    vvbffQi  r   c                 R    t        j                  t        j                  |            S rG   )r;   rL   tanr<   s     r   f10zTestTanhSinh.f10q   s    wwrvvay!!r   c                     dd|dz  z   z  S rT   r0   r<   s     r   f11zTestTanhSinh.f11w   s    AQJr   c                 Z    t        j                  |       t        j                  |      z  S rG   )r;   r   rL   r<   s     r   f12zTestTanhSinh.f12}   s    vvqbzBGGAJ&&r   c                 :    t        j                  |dz   dz        S rB   )r;   r   r<   s     r   f13zTestTanhSinh.f13   s    vvqAvgk""r   c                 Z    t        j                  |       t        j                  |      z  S rG   rH   r<   s     r   f14zTestTanhSinh.f14   s    vvqbzBFF1I%%r   r   c                 2    t        j                  |      |z  S rG   )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)	r?   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       |dkD  r(|j                  |j                  j                  d      s*J |j                  |j                  j                  d      sJ d	|j                  |j                  j                        j                  z  }t        |j                  |j                        |j                  |d
       y c c}w )Nr   dtyper    TF)check_dtypereal floatingzcomplex floatingr   )r   r   )r   floatr   r   r   r   integralr!   r   isdtypefinforu   eps)	r=   limitsrs   r   limitr   r+   logresr   s	            r   test_integral_transformsz%TestTanhSinh.test_integral_transforms   s0    288"**U#88

5+,22jjEj**6*c*;::T:v/%HFIAg

6??00/B 	L KZZ 5 57IJ	L K 288CIIOO,000v||,ciidPUV 9s   E3Tz!Cumbersome to convert everything.np_onlyr5   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   >      rE      >   r   
   rE   )
getattrr   r   r   r   rs   rp   ru   successstatus)r=   r   r   r.   r   r+   
true_errors          r   
test_basiczTestTanhSinh.test_basic   s     DAhZ.)1acc-aee$7;&TZZaee<S\\IJJ		))){"{{{zzQr   z#Distributions aren't xp-compatible.rs   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=   rs   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%   rE      rW   r   r   r   c           
         t         j                  j                  d      }|j                  |j                  |            }|j                  |j                  |            }|j                  |j                  |            }t	        j
                  |      fdd_        d_        t        |      d        }t        |||f      } ||||      }	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 rG   r0   r   r   s    r   <lambda>zKTestTanhSinh.test_vectorization.<locals>._tanhsinh_single.<locals>.<lambda>*  s    q!t r   )r   )rM   r   r   s     `r   _tanhsinh_singlez9TestTanhSinh.test_vectorization.<locals>._tanhsinh_single(  s    ^Q22r   argsr   ru   r   r   nfevr   V瞯<r   boolr   r   )r;   randomdefault_rngr   r   r'   r   r   r2   r   stackr   r   r   r%   r   r   r   r   r   r   max)r=   r%   r   rngrM   r   r   r   r+   refsattrsattrrs   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xxt Dd!3 DEHT 23HHhU;3%++u444		5 zz#++++V444zz#****J777zz#((..*555zz#,,,,j999vvchh177***vvcll#q(((vvcll#qww... !Es   .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 rB   r   r   s    r   r   z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>D  s    rvvq!te} r   c                 &    j                  |       S rG   r   r   s    r   r   z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>E  s    rvvay r   c                 <    j                  | j                        S rG   )	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   rO   )r   r   r   )	r   arangeint64r   r   r   int32r   r   )r=   r   r   rM   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   rO   T)r   r   r   r   )r   r   r   r   r   r   )r=   r   r.   rM   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   rj   rI   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 rG   )r;   r   r.   s    r   r   z2TestTanhSinh.test_preserve_shape.<locals>.<lambda>j  s    1b r   r   r   c                      |       S rG   r0   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   rs   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 r9   r|   )r>   r   s    r   r.   z(TestTanhSinh.test_convergence.<locals>.fs  s    rvva!e}$$r   r@   r   r  r   r   rW   r   r   T)r    r   r   g      /)float64r   r&   r   ru   r   )r=   r   r   r.   rs   rM   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                 8   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 )Nc                     xj                   dz  c_         xj                  t        j                  |             z  c_        | dz  j	                  |       z  S rT   )callsr   r   r   atanr  s    r   r.   z:TestTanhSinh.test_options_and_result_attributes.<locals>.f  sB    GGqLGGGwrzz!}--Ga4"''!*$$r   r   rE   r   -q=r  r   )r   r   r   r   r   r   r   r   )r   r   r   r    r  rs   r   r  r   ru   r   r   r   r   r   r   eim	_ECONVERRr;   	nextafterr   r   )r=   r   default_rtoldefault_atolrM   r   rs   r   r+   r   r   r.   s    `         @r   "test_options_and_result_attributesz/TestTanhSinh.test_options_and_result_attributes  sZ   	%
 

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-2330477359r4   r   g-C6?+=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 rG   )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|   rm   allr   F)dictr   r  r   r!   r   r    r   r   r   r   ru   r   r   r;   rq   )
r=   r   r   	test_tolsrM   r   r+   rs   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  rW   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   rL   r   r   r   r=   r   r.   rM   r   r+   rs   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                   
 
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 )	Nc                    xj                   dz  c_         xj                  t        j                  |             z  c_        j	                  j
                  t        |       f      _        | dz  j                  |       z  S rT   )r  r   r   r   concatr   r   r  r  s    r   r.   z%TestTanhSinh.test_minlevel.<locals>.f1  s_    GGqLGGGwrzz!}--G))QSS(1+./ACa4"''!*$$r   r   r   r   r  gؗҼ<r   r   )r   r   r  r   r  r   sortr&   r-  r   r   ru   r   r%   r   r   )r=   r   r   rM   r   rs   ref_xr   optionsr+   r.   s     `       @r   test_minlevelzTestTanhSinh.test_minlevel+  sy   	% !"1bjjn!#JJq

J+JJq

J+1a!h?aA. 	1H$%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::+++E277133<0	1r   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 rB   )r   isinfr   r   s    r   r.   z/TestTanhSinh.test_improper_integrals.<locals>.fM  s,    VVAbhhqkN661a4%= r   r   i   r   )r   r   r   rL   r   r   r   r   )r=   r   r.   rM   r   rs   r+   s    `     r   test_improper_integralsz$TestTanhSinh.test_improper_integralsK  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 rG   )r   r   )r   r   r   s    r   r.   z"TestTanhSinh.test_dtype.<locals>.f^  s#    77e###66!9r   r  h㈵>r   )r   r   r  r   r   r   ru   r,  r   r   r   )	r=   r   r   r   rM   r   r.   r   r+   s	     ``     r   
test_dtypezTestTanhSinh.test_dtypeW  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 rG   r   r   s    r   r.   z-TestTanhSinh.test_maxiter_callback.<locals>.fl      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>.callbackv  sO    MMQMHL3
+++::?"?}}'## (r   r   r   r   r   r   )	r   r   r-  r   r   r   rM  r+   keys)r=   r   rM   r   r.   r   r   kwargsr+   res2keyr   rP  s    `         @@r   test_maxiter_callbackz"TestTanhSinh.test_maxiter_callbacki  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 rG   r   r   s    r   r.   z&TestTanhSinh.test_jumpstart.<locals>.f  rK  r   c                     j                   j                  t        | j                        d          j                  j                  t        | j
                        d          y )Nr0   )	integralsr(   r	   r   errorsru   )r+   r   s    r   r   z-TestTanhSinh.test_jumpstart.<locals>.callback  sE    %%gcll&;B&?@OO""7399#5b#9:r   rW   r   )r   r   r   r   r  r   r   gؗҜ<r  )
r   r   r  rZ  r[  r   r&   r   r   ru   )	r=   r   rM   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           	      P   j                  d      j                  d      }}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   s    r   r.   z*TestTanhSinh.test_special_cases.<locals>.f  s     ::agg777Hr   r   r   r   r  c                     | |z  S rG   r0   )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 r2  r   r   s    r   r   z1TestTanhSinh.test_special_cases.<locals>.<lambda>  s    "**QrT"2 r   r4  c                     | S rG   r0   r'  s    r   r   z1TestTanhSinh.test_special_cases.<locals>.<lambda>      ! r   rC  c                     | S rG   r0   r'  s    r   r   z1TestTanhSinh.test_special_cases.<locals>.<lambda>  rg  r   r   )r   r   r   r   r   r   ru   r   r   fullr   r   r   emptyr   xjcwjindicesh0zerosr%   )
r=   r   rM   r   r.   r+   r`  r%   r   r   s
    `        r   test_special_caseszTestTanhSinh.test_special_cases  s6   zz!}bjjm1	 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;   ri  r   rj   )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}j                  dj                        j                  dj                        }}t        |||ddd	
      }j	                  |j
                        sJ t        |||d      }|j                  sJ |j                  dk  sJ t        |j                  |j                  d       y )NrE   i'   c                 >    j                  d| z
  z  | z  z         S r9   )rj   )r>   c1c2r   s    r   r.   z2TestTanhSinh.test_gh_22681_finite_error.<locals>.f  s#    66"A,a/00r   r  r   r   r   r   )r   r   r   r$  r   rO   r   )
complexr   r  r   isfiniteru   r   r   r   r   )	r=   r   r.   rM   r   rs   r+   rx  ry  s	    `     @@r   test_gh_22681_finite_errorz'TestTanhSinh.test_gh_22681_finite_error  s     RR_	1zz"BJJz/Bbjj1Q11aaa"={{399%%%1ae,{{{||acll?r   )FN)=__name__
__module____qualname__r?   rs   r   rD   r;   r   r    rJ   r   rN   rR   rV   rY   rL   r   gammar[   r]   r`   rb   r   rd   rf   rh   rk   ru   r   r   markparametrizer   r   normcdfr   skip_xp_backendsr&   r   _distr_paramsdistcontr   tupler   r  r  r  r  r"  r/  r6  r=  rB  rH  rV  r\  rp  rt  r|  r0   r   r   r7   r7   .   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	$	%**..%);;<- WW( [[!!$)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%/N/./
G!qf [[!!'O "  [[VdE]3 $ 4 $D;& [[Zq21 31>
+ [[X488)Q!Q0H'IJ[[W&<=; > K;  BDU.@,D [[!!$!/  0 @r   r7   r#  zdata-apis/array-api-compat#271zNo fancy indexing.zNo mutation.z1Data-dependent shapes in boolean index assignmentc                   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   r0   )r=   ks     r   r?   zTestNSum.f1
  s     2wr   r      c                     d||z  z  S r9   r0   r=   r  r   s      r   rD   zTestNSum.f2      1a4xr   r   c                     d||z  z  S r9   r0   r  s      r   rJ   zTestNSum.f3  r  r   rO   r   )r   r   c                 p   | 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                  d   dk(  r|j                  d   rJ |j                  |j                   d         r|j                  |j"                  d         sJ |j                  d   dk(  r|j                  d   sJ |j                   d   |j"                  d   k(  sJ |j%                  |j&                  d   dk(        sJ t        ||j                  d      |j                  t        j                  dg            }|j                  d   dk(  r|j                  d   rJ |j                  |j                   d         r|j                  |j"                  d         sJ |j                  d   dk(  r|j                  d   sJ |j                   d   |j"                  d   k(  sJ |j%                  |j&                  d   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   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   Sx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   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)Nrw   rx   rz   r{   r   r|   r}   r~   )stepr   r   
tolerancesr   rm   r+  r   r   r   r   g      $@r   r   T)r  r    z"...must be a non-negative integer.g      @maxtermsr   )r?   r   rM   r   r   r   r   r   r-  r;   rq   r   r   r   r   isnansumru   r,  r   )r=   r   r.   rM   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 kkh' 	Pq"**bffbff%56

2GCJJqMR'Q??88CGGAJ'BHHSYYq\,BBBJJqMQ&CKKN::771:1---66#((1+*+++q"**S/2::rvvqk+BCCJJqMR'Q??88CGGAJ'BHHSYYq\,BBBJJqMQ&CKKN::771:1---66#((1+*+++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&	' 	'm	 		! 	!	) 	)	) 	)	1 	1	8 	8	8 	8	P 	P*	4 	4	8 	8	B 	B	B 	B	( 	(	' 	's    ZZZZ+Z8
[[K+[[,([9)\*)\8\ +\,ZZZ(+Z58[[[[),[69\\\ \),\5r   rW   c                 2  
 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        |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rG   re  ).0argr   s     r   	<genexpr>z&TestNSum.test_basic.<locals>.<genexpr>g  s     7RZZ_7s   r   r   rm   rn   c                  ,    j                   |        S rG   r|   )r   r.   r   s    r   r   z%TestNSum.test_basic.<locals>.<lambda>o  s    q$x(8 r   T)r    r   r   r   )r   r   r   rM   r   r  r   rs   r   r   r  r   r   ro  r%   r   r   onesr   r;   rq   r   ru   )r=   r   r   r   rM   r   r   rs   r+   r   r.   s     `       @r   r   zTestNSum.test_basicb  sl   

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

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

BHHSYYbhhH$GHRWWSYYbggW%FG[[) 	68aT6F	6 	vzz*CGG4v||,ciieDszz24	6 	6s   HHr  )r   r   r   rA  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  }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'        j/                  |j                        |j                         t'        j/                  |j(                        |j(                         y )Nc                 ,    dj                  |       z  S r  r|   r   s    r   r*  z$TestNSum.test_integral.<locals>.logf{  s    bffQi<r   c                     d| z  S )Nr   r0   r'  s    r   Fz!TestNSum.test_integral.<locals>.F~  s    6Mr   r   rO   r   rA  r	  )r   r   r   )r   r   r   r   r   T)axiskeepdimsr   r  r   )r  r  r  r   r   )r  r    r  r  )r?   r   r  newaxisr   reshapefloorr  r   broadcast_arraysr;   ndindexr%   r   r   r   r   r   r-  r   ru   r   r    r   )r=   r  r   r.   r*  r  rM   r   r  nsteps
b_originalr  directr   lowhighref_sumref_errr,   aibistepir   r+   r   s     `                      r   test_integralzTestNSum.test_integralv  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. ((At4
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           
      :   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  |j!                  |j"                  j$                  d      sJ |j!                  |j&                  j$                  d      sJ |j!                  |j(                  j$                  d      sJ t+        |      r4t-        |j/                  |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 r9   r0   r   s    r   r   zBTestNSum.test_vectorization.<locals>.nsum_single.<locals>.<lambda>  s    !ad( r   r  )r   )rM   r   r   r  s     ` r   nsum_singlez0TestNSum.test_vectorization.<locals>.nsum_single  s    *Aq8DDr   rs  )r  r   r  )r  ru   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   rM   r   r   r  r+   r   r   r   rs   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***		+ zz#++++V444zz#****J777zz#((..*555B<rvvchh'(AGG333  Hs   7"H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   rm   rn   r   )FFFFTF)r   r   r   rQ  r   r   )rD   r   r;   r   r  r   r   zetarq   r   r   r   r   r   r   r  )
r=   r   r.   r   rM   r   rs   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 rT   )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   rW   c                     d| dz  z  S rT   r0   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 rT   r0   r  s    r   r   z)TestNSum.test_inclusive.<locals>.<lambda>  r  r   )r   r   r   r-  r,  r  ru   )r=   r   rM   r   r+   rs   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 rB   )r    tanhrp   r   )r   rM   r    r   s     r   r.   z(TestNSum.test_infinite_bounds.<locals>.f  sc    <?BFF2771q5>*Qrvvay[8 >1r"&&)|(<<>r   )r   r    r   r   g|=rG  r   r   c                 L    rdj                  || z        z  S d|| z  dz  z  S )Nr   r   r   r|   )r   r`  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  ri  r%   )r=   r    r   rM   r   r`  r.   r+   rs   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 rB   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  r5  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   rW   c                 d    t        j                  d      5  d| z  cd d d        S # 1 sw Y   y xY w)Nrm   rn   r   )r;   rq   r'  s    r   r.   z%TestNSum.test_special_case.<locals>.fB  s*    H- 1u  s   &/r   r   r  r   r   r   rb  )r   r   r   r   r   rc  )r   )r?   r   r   r   r  rD   r;   r   r   rs   rj  broadcast_shapesr%   r   r   r@  ru   r  r   ri  r   r   )r=   r   r.   rM   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   rD  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>.fa  s2    77e###qBJJqJ6666r   r   r   r   r  r  r   r   )r   r   r   r   r  r   ru   r  r   r;   r   )	r=   r   r   r.   rM   r   r+   r   rs   s	    ``      r   rH  zTestNSum.test_dtype]  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 rT   r0   r  s    r   r.   z.TestNSum.test_nondivisible_interval.<locals>.fv  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.   rM   r  b0r,   r   nsr+   s                r   test_nondivisible_intervalz#TestNSum.test_nondivisible_intervalo  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)NrW   rO   c                 N    t         j                  j                  | d      | dz  z  S )NrO   rW   )r   	yulesimon_pmfr'  s    r   r.   z0TestNSum.test_logser_kurtosis_gh20648.<locals>.f  s"    ??''1-144r   rm   )invalidr   )
r   r  momentr;   rq   r  r   r   r   r  )r=   r   rs   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   r?   r   rs   rM   r   r   r  r   rD   r   r  rJ   r  r   r   r   r  r  r&   r   r  r   r  r  r  r  r  r  rH  r  r  r  r0   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<'| [[Zq!55 65& [[Z)<=09 >09d [[Wuwvy&IJ%4 K%4NL$"	7 [[UT5M2G 3G42,/Hb [[Wy)&<=J >J" [[Vi%;<9 =9. [[!!$7M!N& O&r   r  rG   )'r   r   r   numpyr;   numpy.testingr   (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   r  r  r7   r  r0   r   r   <module>r     sS   	    ) 6 6 H W W   A A 1 :.
+
$ J   6   D  E@ E@E@P g.NO09MNk.A>  M& M&	 B O PM&r   