
    UgV                         d dl Z d dlZd dlZd dlmZmZ d dlmc m	Z
 d dlmZmZ d dlmZ d dlmZmZmZ d dlmZ  G d d          Z G d	 d
          ZdS )    N)assert_allcloseassert_equal)specialstats)quad_vec)	_tanhsinh_pair_cache_nsum)_gen_harmonic_gt1c                      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_        dEdZd Zej                             ddej        fdgej         dfdgej         ej        fdgej        ej         fdgd e!j"        #                    d          e!j"        #                    d          z
  gg          d!             Z$ej                             d" e%dd#                    d$             Z&ej                             d%dd&d'gf          ej                             d(e!j'        j(                  d)                         Z)ej                             d* e*            d+d,d-g          d.             Z+d/ Z,d0 Z-d1 Z.d2 Z/d3 Z0ej                             d4d5d6g          d7             Z1d8 Z2ej                             d9 e%d                    d:             Z3d; Z4ej                             d<d=ej         dgd>d>gff          ej                             d?ej5        ej6        f          d@                         Z7dA Z8dB Z9dC Z:dDS )FTestTanhSinhc                 6    |t          j        d|z             z  S N   nplogselfts     b/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/integrate/tests/test_tanhsinh.pyf1zTestTanhSinh.f1   s    26!a%==      g      ?r   c                 6    |dz  t          j        |          z  S N   )r   arctanr   s     r   f2zTestTanhSinh.f2   s    Av	!$$r   r      c                 T    t          j        |          t          j        |          z  S Nr   expcosr   s     r   f3zTestTanhSinh.f3   s    vayy26!99$$r   c                 v    t          j        d|dz  z             }t          j        |          d|dz  z   |z  z  S )Nr   r   )r   sqrtr   )r   r   as      r   f4zTestTanhSinh.f4#   s9    GAQJy||AF
a/00r      `   c                 T    t          j        |          t          j        |          z  S r!   )r   r'   r   r   s     r   f5zTestTanhSinh.f5*   s    wqzzBF1II%%r   gqqܿc                 6    t          j        d|dz  z
            S Nr   r   r   r'   r   s     r   f6zTestTanhSinh.f60   s    wq16z"""r      c                 `    t          j        |          t          j        d|dz  z
            z  S r/   r0   r   s     r   f7zTestTanhSinh.f76   s'    wqzzBGAQJ////r   g      ?c                 0    t          j        |          dz  S r   r   r   s     r   f8zTestTanhSinh.f8<   s    vayyA~r   c                 N    t          j        t          j        |                    S r!   )r   r   r$   r   s     r   f9zTestTanhSinh.f9B   s    vbfQii   r   c                 N    t          j        t          j        |                    S r!   )r   r'   tanr   s     r   f10zTestTanhSinh.f10H   s    wrvayy!!!r   c                     dd|dz  z   z  S r/    r   s     r   f11zTestTanhSinh.f11N   s    AQJr   c                 V    t          j        |           t          j        |          z  S r!   )r   r#   r'   r   s     r   f12zTestTanhSinh.f12T   s    vqbzzBGAJJ&&r   c                 8    t          j        |dz   dz            S r   r   r#   r   s     r   f13zTestTanhSinh.f13Z   s    vqAvgk"""r   c                 V    t          j        |           t          j        |          z  S r!   r"   r   s     r   f14zTestTanhSinh.f14`   s    vqbzzBF1II%%r         ?c                 0    t          j        |          |z  S r!   )r   sinr   s     r   f15zTestTanhSinh.f15f   s    vayy1}r   Fc                     t          ||z
            }|s|S t          j        d          5  t          j        |          cd d d            S # 1 swxY w Y   d S )Nignoredivide)absr   errstatelog10)r   resrefr   errs        r   errorzTestTanhSinh.errorl   s    #)nn 	J[))) 	! 	!8C==	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   AAAc                 
   | j         }d}t          j        t          |          5  t	          dd|j                   d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |d|j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |d	|j                   d d d            n# 1 swxY w Y   t          j        t          |          5  t	          |d|j        d
           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          |d|j        t                     d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |d|j        d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          |d|j        t          j                   d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |d|j        t          j        d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          |d|j        t          j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |d|j        t                                 d d d            n# 1 swxY w Y   t          j        t          |          5  t	          |d|j        d	           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          |d|j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |d|j        d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          |d|j        d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          |d|j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |d|j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |d|j        d           d d d            d S # 1 swxY w Y   d S )N`f` must be callable.match*   r   ...must be True or False.r   r   ...must be real numbers.      ?      ?ekkiatolrtol#...must be non-negative and finite. ...may not be positive infinity.Trb   r   r`   r   z...must be integers.maxlevel)maxfunzmigratory coconut)minlevelz...must be non-negative.preserve_shapez...must be callable.
elderberry)callback)	r   pytestraises
ValueErrorr   br   infobject)r   fmessages      r   test_input_validationz"TestTanhSinh.test_input_validationu   s	   G)]:W555 	" 	"b!QS!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" .]:W555 	( 	(aACQ''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( -]:W555 	$ 	$aqs###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$]:W555 	. 	.aACf----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]:W555 	. 	.aACf----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 8]:W555 	* 	*aACb))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*]:W555 	. 	.aACbf----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 5]:W555 	8 	8aACbf$7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8]:W555 	8 	8aACbf$7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 )]:W555 	4 	4aAC&((3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4]:W555 	. 	.aAC----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]:W555 	? 	?aAC*=>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? -]:W555 	. 	.aAC"----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]:W555 	, 	,aAC++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,]:W555 	. 	.aAC"----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. .]:W555 	3 	3aAC2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 )]:W555 	8 	8aAC,7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s1  AAA0BBB=C  C$'C$D++D/2D/E;;E?E?#GGG.#HH!$H!$I55I9<I9$KKK3%L$$L(+L(
M//M36M3N::N>N>"PPP-QQQ8RR!$R!S**S.1S.T88T<?T<zlimits, refr   rd   )r   rd   c                    t          j                    }t          |j        g|R  }t	          |j        |           t          |j        g|R ddi}t	          t          j        |j                  |           |dk    r*t          j	        |j        j
        t          j                  s,n)t          j	        |j        j
        t          j                  sJ t	          t          j        |j                  |j        d           d S )Nr   Tr   缉ؗҜ<r_   )r   normr   pdfr   integrallogpdfr   r#   
issubdtypedtypefloatingcomplexfloatingrT   )r   limitsrR   distrQ   logress         r   test_integral_transformsz%TestTanhSinh.test_integral_transforms   s     z||*6***c***4;::::T::v//555EH1WWfo3R[AAWW]6?#8":LMM FMWW 	v|,,cieDDDDDDr   f_number   c                 \   t          | d|           }d}t          |d|j        |          }t          |j        |j        |           |dvrBt          |                     |j        |j                  |j        z            }||j        k     sJ |dv rd S |j        sJ |j	        dk    sJ d S )Nrv   g:0yU>r   ra   >      >      
   r   )
getattrr   rs   r   r}   rR   rN   rT   successstatus)r   r   rv   rb   rQ   
true_errors         r   
test_basiczTestTanhSinh.test_basic   s    D.h..))1ac---ae$77774TZZae<<S\IJJJ	)))){""F{zQr   rR   g?g333333?casec                 \   |\  }}|dv rt          j        d           |dv r6t          t          j        dd                    st          j        d            t          t          |          | }|                    |          }t          |j	        g|R  }t          |j        |           d S )N>   kstwodgammalaplacedweibullz0tanh-sinh is not great for non-smooth integrands>   levy_stablestudentized_rangeSCIPY_XSLOWr   z%This case passes, but it is too slow.)rp   skipintosgetenvr   r   intervalr   r|   r   r}   )r   rR   r   distnameparamsr   xrQ   s           r   test_accuracyzTestTanhSinh.test_accuracy   s      &AAAKJKKK<<<BImQ7788 =K?@@@'wuh''0MM#%1%%%c*****r   shaper      r2   r   r   r   c                    t           j                            d          }|                    |          }|                    |          }|                    |          }t          j        |          fdd_        d_        t           j        d             }t          |||f          } ||||                                          }g d}	|	D ]Yfd|D             }
t          |          }t          |                                |
d	           t          |j        |           Zt          j        |j        j        t           j                  sJ t          j        |j        j        t           j                  sJ t          j        |j        j        t           j                  sJ t          j        |j        j        t           j                  sJ t          t          j        |j                  j                   t          j        |j                  d
k    sJ t          t          j        |j                  j                   d S )N   F*BG c                     xj         dz  c_         xj        | j        k    s| j        dk    rdn| j        d         z  c_        | |z  S Nr   rd   )ncallfevalsizendimr   r   prv   ns     r   rv   z*TestTanhSinh.test_vectorization.<locals>.f   sI    GGqLGGGGQVq[[AFQJJqqQWR[HGGa4Kr   r   c                 ,    t          fd| |          S )Nc                     | z  S r!   r=   r   r   s    r   <lambda>zKTestTanhSinh.test_vectorization.<locals>._tanhsinh_single.<locals>.<lambda>   s    q!t r   )r   )r(   rs   r   s     `r   _tanhsinh_singlez9TestTanhSinh.test_vectorization.<locals>._tanhsinh_single   s    ^^^^Q222r   argsr}   rT   r   r   nfevri   c                 0    g | ]}t          |          S r=   r   .0rR   attrs     r   
<listcomp>z3TestTanhSinh.test_vectorization.<locals>.<listcomp>   #    ;;;sT**;;;r   V瞯<ra   r   )r   randomdefault_rngprodr   r   	vectorizer   ravelr   r   r   r   r   r   r   bool_r   integerr   ri   max)r   r   rngr(   rs   r   r   rQ   refsattrsref_attrres_attrr   rv   r   s               @@@r   test_vectorizationzTestTanhSinh.test_vectorization   s0    i##$899JJuJJuJJuGENN	 	 	 	 	 	 		3 	3 
	3 1aqd+++1a((..00NNN 	0 	0D;;;;d;;;HsD))HHNN,,hUCCCC////}S[.99999}SZ-rz:::::}SX^RZ88888}S\/<<<<<RVCH%%qw///vcl##q((((RVCL))1733333r   c                    fdd_         t          j        dt          j                  f}t	          t          j        gdz  t          j         gdz  d|          }t          j        g d          }t          |j        |           d S )Nc                     xj         dz  c_         d d d gfdt          | |                                          D             }|S )Nr   c                 2    t          j        | dz             S r   rB   r   s    r   r   z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>  s    rvq!te}} r   c                 *    t          j        |           S r!   rB   r   s    r   r   z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>  s    rvayy r   c                 L    t          j        | t           j                  d         S )Nr=   )r   	full_likenanr   s    r   r   z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>  s    r|Arv66r: r   c                 8    g | ]\  }} |         |          S r=   r=   )r   r   jfuncss      r   r   z6TestTanhSinh.test_flags.<locals>.f.<locals>.<listcomp>  s)    ???41a858A;;???r   )nitzipr   )xsjsrQ   r   rv   s      @r   rv   z"TestTanhSinh.test_flags.<locals>.f  s_    EEQJEE,,((::<E @???3r288::+>+>???CJr   r   r   r   r*   )ri   r   r   )	r   r   arangeint64r   rt   arrayr   r   )r   r   rQ   	ref_flagsrv   s       @r   
test_flagszTestTanhSinh.test_flags  s    	 	 	 	 	 	!28,,,.BF8A:y{QTJJJH[[[))	SZ+++++r   c                     d }t          |t          j        gdz  t          j         gdz  dd          }t          j        g d          }t	          |j        |           d S )Nc                     t          j        | d         dz             t          j        | d                   t          j        | d         t           j                  d         gS )Nr   r   r   r=   )r   r#   r   r   r   s    r   rv   z1TestTanhSinh.test_flags_preserve_shape.<locals>.f  sL    FAaD!G8$$F1Q4LLL1rv..r24 4r   r   r*   T)ri   rm   r   )r   r   rt   r   r   r   )r   rv   rQ   r   s       r   test_flags_preserve_shapez&TestTanhSinh.test_flags_preserve_shape  sh    	4 	4 	4
 BF8A:y{QtTTTH[[[))	SZ+++++r   c                     d }t          |dd          }t          |ddd          }t          |j        |d                    d S )Nc           	          t          j        | t          j        d| z            gt          j        d| z            | t          j        d| z            z  gg          S )Nr      d   )r   asarrayrH   r$   r   s    r   rv   z+TestTanhSinh.test_preserve_shape.<locals>.f)  sW    :26"q&>>2 "rAvBF37OO0CDF G G Gr   r   r   Trl   )r   r   r   r}   )r   rv   rR   rQ   s       r   test_preserve_shapez TestTanhSinh.test_preserve_shape'  sY    	G 	G 	G q!Q1a555c!f-----r   c                     | j         }d}t          d          D ]P}t          |d|j        d|          }|                     |j        |j        d          }||dz  k     s|dk     sJ |}Qd S )Nr   r2   rk   ri   Tr[   r   g      /)r   ranger   rs   rT   r}   rR   )r   rv   last_logerrirQ   logerrs         r   test_convergencezTestTanhSinh.test_convergence1  s    Gq 	! 	!AAq!#A>>>CZZaeZ>>F[1_,, KK		! 	!r   c                 	     fd j         j        _         j         j        _        d}j        |z  }d\  _        _        t          dj                  }                     |j        j                  |j        cxk     r|k     sn J |j        j        k    sJ j        |_        |j	        sJ |j
        dk    sJ d\  _        _        |j        }t          dj        |          }j        |_        ||k    sJ d\  _        _        |dz  }|dk    sJ t          dj        |          }                     |j        j                  |j        cxk     r|k    sn J |j        j        cxk    r|j        k     sn J j        |j        dz
  k    sJ |j	        rJ |j
        t          j        k    sJ |}j        |_        d\  _        _        t          j        |j        t          j                  }t          dj        d|          }|j        |j        k    sJ |j        |j        k    sJ |j        j        cxk    r|j        k    sn J j        |j        k    sJ |j	        sJ |j
        dk    sJ d\  _        _        t          j        |j        t          j                   }t          dj        d|          }                     |j        j                  |j        cxk     r|k     sn J |j        j        cxk    r|j        k    sn J j        |j        k    sJ |j	        sJ |j
        dk    sJ d\  _        _        t          j        |j        |j        z  t          j                  }t          dj        |	          }|j        |j        k    sJ |j        |j        k    sJ |j        j        cxk    r|j        k    sn J j        |j        k    sJ |j	        sJ |j
        dk    sJ d\  _        _        t          j        |j        |j        z  t          j                   }t          dj        |	          }                     |j        j                  j        z  |j        |j        z  cxk     r|k     sn J |j        j        cxk    r|j        k    sn J j        |j        k    sJ |j	        sJ |j
        dk    sJ d S )
Nc                     xj         dz  c_         xj        t          j        |           z  c_                            |           S r   )callsr   r   r   r   r   rv   r   s    r   rv   z:TestTanhSinh.test_options_and_result_attributes.<locals>.f>  s:    GGqLGGGGrwqzz!GG771::r   -q=)r   r   r   rh   r   r   rb   r`   ra   )r   rR   rs   r   r   r   rT   r}   r   r   r   ri   eim	_ECONVERRr   	nextafterrt   )	r   default_rtoldefault_atolrR   ri   rQ   r`   rb   rv   s	   `       @r   "test_options_and_result_attributesz/TestTanhSinh.test_options_and_result_attributes;  sh   	 	 	 	 	 	 giu|+  1ac""zz#,..IIII\IIIIIIx17""""G	{zQ  <1acH555G	czzzz  A1}}}}1acH555zz#,..IIII\IIIIIIx17----SX------w#)a-'''';zS]****, G	  |CIrv..1ac555|s|++++yCI%%%%x17....ch......w#)####{zQ|CIw//1ac555zz#,..AAAATAAAAAAx17----SX------w""""{zQ  |CIcl2BF;;1ac---|s|++++yCI%%%%x17....ch......w#)####{zQ|CIcl2RVG<<1ac---zz#,..qu4sy7MTTTTPTTTTTTTx17----SX------w""""{zQr   rb   g-C6?g+=c           	      x   t          j                    t          dd          }t          j        dddt          j        |                    }t          j        dd|          }t          t          j	        |j
                  |j
        fi | t          t          j	        |j                  |j        fi | |j        |j        k    sJ fd	}fd
}t          |t
          j         t
          j        d          }t          |t
          j         t
          j                  }t          j        d          5  t          t          j	        |j
                  |j
        fi | t          t          j	        |j                  |j        fi | d d d            n# 1 swxY w Y   |j        |j        k    sJ d S )NgC]r2<r   )r`   rb   rd   r   T)r   rb   ra   c                 \                         |                                |           z  S r!   )r~   r|   r   r   s    r   rv   z TestTanhSinh.test_log.<locals>.f  s$    KKNN?488A;;..r   c                     t          j                            |           dz                                 |           z   t           j        dz  z   S )Ny                              ?)r   r   r~   pir	  s    r   logfz#TestTanhSinh.test_log.<locals>.logf  s<    6$++a..2-..Q?"%"*LLr   r[   rK   all)r   r{   dictr   r~   r   r   r|   r   r#   r}   rT   r   rt   rO   )r   rb   	test_tolsrQ   rR   rv   r  r   s          @r   test_logzTestTanhSinh.test_log  s    z||e%000	 R26$<<HHH"ad333s|,,clHHiHHHsy))39BB	BBBx38####	/ 	/ 	/ 	/ 	/	M 	M 	M 	M 	M rvgrv4888BF7BF++ [X&&& 	G 	GBF3<00#,LL)LLLBF39--syFFIFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G x38######s   <AFF!$F!c                    d }t          |dt          j        dz            }t          j        d          dz  dt          j        d          dz  z
  dz  z   }t	          |j        |           t          j        d          t          j        d          fd}t          |t          j        t          j                   }t	          |j        d	           d S )
Nc                 0    t          j        d| z            S Nr  rB   r   s    r   rv   z$TestTanhSinh.test_complex.<locals>.f  s    6"q&>>!r   r   r2   r   r   r  )scalec                 `                         |           d                     |           z  z   S r  )r|   )r   dist1dist2s    r   rv   z$TestTanhSinh.test_complex.<locals>.f  s&    99Q<<"UYYq\\/11r   y            )	r   r   r  r'   r   r}   r   r{   rt   )r   rv   rQ   rR   r  r  s       @@r   test_complexzTestTanhSinh.test_complex  s    	" 	" 	" 1beAg&&gajjla

1nb00c*** 
###
###	2 	2 	2 	2 	2 	2 26BF7++g.....r   ri   c                       fdddt          j        g           c_        _        _        t          d j        j        d|          }t          j        j                  }t          d|dz             D ]}ddt          j        g           c_        _        _        t          ||          }t          d j        j        fi |}t          |j        |j        d           t          |j        |j        d|j        z             |j        j        cxk    rt          j                  k    sn J j        ||z
  dz   dz   k    sJ |j        |j        k    sJ t#          |t          j        j                             d S )Nc                     xj         dz  c_         xj        t          j        |           z  c_        t          j        j        |                                 f          _                            |           S r   )r   r   r   r   concatenater   r   r   r   s    r   rv   z%TestTanhSinh.test_minlevel.<locals>.f  sZ    GGqLGGGGrwqzz!GG.!#qwwyy!122AC771::r   r   r   r   gؗҼ<ra   r_   )r   r   r   r   r   r   r   rs   sortr   r  r   r}   rT   r   lenr   r   )r   ri   rR   ref_xrk   optionsrQ   rv   s   `      @r   test_minlevelzTestTanhSinh.test_minlevel  s   
	 	 	 	 	 	
 !"1bhrll!#1dgi!hGGGaA.. 	. 	.H$%q"(2,,!AGQWacHx@@@GAq$')77w77CCL#,UCCCCCIsyus|7KLLLL8qw2222#ac((2222227h1A599999:++++----	. 	.r   c           
      |   d }t           j         dt           j         t           j        dt           j         dg}t           j        t           j        dt           j         ddt           j        g}t          j        t           j                  }t	          |||          }t          |j        ||dz  |dz  | |||g           d S )Nc                 t    t           j        | t          j        |           <   t          j        | dz             S r   )r   r   isinfr#   r   s    r   rv   z/TestTanhSinh.test_improper_integrals.<locals>.f  s)    VAbhqkkN61a4%== r   r   i   r   )r   rt   r'   r  r   r   r}   )r   rv   r(   rs   rR   rQ   s         r   test_improper_integralsz$TestTanhSinh.test_improper_integrals  s    	! 	! 	! fWa"&"&#w<VRVQR8gbenn1a  sCE3q53$S#&NOOOOOr   r   r   r   r   r   c                    t          j        |          d         \  }}fd}t           j        k    rdnd}t          ||||          }|j        j        k    sJ |j        j        k    sJ t          j        |j                  sJ t          |j        t          j
        |          t          j
        |          z
  |           d S )Nr   r=   c                 F    | j         k    sJ t          j        |           S r!   )r   r   r#   )r   r   s    r   rv   z"TestTanhSinh.test_dtype.<locals>.f  s$    7e####6!99r   r   gh㈵>ra   )r   r   float64r   r}   r   rT   r  r   r   r#   )r   r   r   r(   rs   rv   rb   rQ   s     `     r   
test_dtypezTestTanhSinh.test_dtype  s     z&...r21	 	 	 	 	 ++uu1ad+++|!U****y%''''vck"""""bfQiiq		&9EEEEEEr   c                   
 t           j         t           j        }}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}|                                D ]`}	|	d
k    r0
j        |	         dk    sJ ||	         dk    sJ ||	         dk    sJ 8||	         
j        |	         cxk    r||	         k    sn J ad S )Nc                 2    t          j        |  | z            S r!   rB   r   s    r   rv   z-TestTanhSinh.test_maxiter_callback.<locals>.f      61"Q$<<r   )r   r   r   r   )rk   ri   rb   c                     xj         dz  c_         | _        t          | d          sJ | j        dk    sJ j         k    rt          d S )Nr   r}   )iterrQ   hasattrr   StopIteration)rQ   ro   maxiters    r   ro   z4TestTanhSinh.test_maxiter_callback.<locals>.callback  sZ    MMQMMHL3
+++++:????}''## ('r   rd   ri   ro   r   r   )	r   rt   r  r   r   ri   r1  rQ   keys)r   r(   rs   rv   rk   ri   kwargsrQ   res2keyro   r4  s             @@r   test_maxiter_callbackz"TestTanhSinh.test_maxiter_callback  s   w1	  	  	  "(X%)x(GGG1a**6**;|x''''	$ 	$ 	$ 	$ 	$ 	$ :Aq>>F>>X>>> 88:: 	B 	BCh|C(A----3x2~~~~CyBCyHL$5AAAASAAAAAAA	B 	Br   c                   	 t           j         t           j        }}d }	fd	g 	_        g 	_        d}t	          |||d|	           g }g }t          |dz             D ]J}t	          |||||          }|                    |j                   |                    |j                   Kt          	j        dd          |d	           t          	j        dd          |dd
           d S )Nc                 2    t          j        |  | z            S r!   rB   r   s    r   rv   z&TestTanhSinh.test_jumpstart.<locals>.f9  r/  r   c                     j                             | j                   j                            | j                   d S r!   )	integralsappendr}   errorsrT   )rQ   ro   s    r   ro   z-TestTanhSinh.test_jumpstart.<locals>.callback<  s:    %%cl333O""39-----r   r2   r   )rk   ri   ro   r   r   r   ra   rz   r   )
r   rt   r>  r@  r   r   r?  r}   rT   r   )
r   r(   rs   rv   ri   r>  r@  r   rQ   ro   s
            @r   test_jumpstartzTestTanhSinh.test_jumpstart5  s     w1	  	  	 	. 	. 	. 	. 	.  !QA8LLLL	x!|$$ 	% 	%AAq!a!<<<CS\***MM#)$$$$*122.	FFFF+V%eLLLLLLr   c                    d }t          |dd          }|j        sJ t          |j        d           t          |ddd          }|j        dk    sJ t	          |j        t          j                   t          |ddd          }|j        dk    sJ t	          |j        t          j                   t          |dd          }|j        sJ |j        dk    sJ t          |j        d           d }t          |ddd	          }t          |j        d           t          j        dddg}dt          j        ddg}ddt          j        dg}t          ||||f	          }t          |j        t          j        t          j        t          j        d
g           t          |j        d d         t          j                   t	          |j	        g d           t	          |j        g d           t	          |j
        d d         d           t          j        d          t          _        t          j        d          t          _        dgt          _        d t          _        t          d dd          }t          |j        d           t          d dd          }t          |j        d
           d}t          d dt          j        |                    }g d}|D ]}t	          ||         j        |           d S )Nc                 X    t          j        | j        t           j                  sJ | dz  S )Nc   )r   r   r   r   r   s    r   rv   z*TestTanhSinh.test_special_cases.<locals>.fT  s'    ="+666667Nr   r   r   g{Gz?rh   rd   c                     | |z  S r!   r=   )r   cs     r   rv   z*TestTanhSinh.test_special_cases.<locals>.fk  s    a4Kr   rD  r   rF   r   )r   r   r   r   FFFTc                     | dz  S r  r=   r   s    r   r   z1TestTanhSinh.test_special_cases.<locals>.<lambda>  s
    !B$ r   y              ?c                     | S r!   r=   r   s    r   r   z1TestTanhSinh.test_special_cases.<locals>.<lambda>      ! r   r(  c                     | S r!   r=   r   s    r   r   z1TestTanhSinh.test_special_cases.<locals>.<lambda>  rJ  r   r   )r   r   r   r}   r   rT   r   r   ri   r   r   emptyr	   xjcwjindicesh0zerosr   )	r   rv   rQ   r(   rs   rF  r   r   r   s	            r   test_special_caseszTestTanhSinh.test_special_casesO  s   
	 	 	 1a  {e,,, 1a!,,,|aSY'''1a!,,,|aSY''' 1a  {|r!!!!a(((	 	 	 1ab)))e,,, VQ112611aqd+++rvrvrvs&CDDD	"1"rv...SZ111S["="="=>>>SXbqb\1%%% (1++! c1--f---Q**c*** Q88NNN 	1 	1DT%0000	1 	1r   N)F);__name__
__module____qualname__r   rR   rs   r   r   r  r   r%   r#   r)   r-   r1   r4   r'   r   gammar6   r8   r;   r>   rt   r@   rC   rE   rI   rT   rx   rp   markparametrizer   r{   cdfr   r   r   _distr_paramsdistcontr   tupler   r   r   r   r   r  r  r  r"  r'  float32r+  r,  r:  rA  rR  r=   r   r   r   r      s       ! ! ! BFBD% % % eai!fbfQii-'2-BFBD% % % bfRUQY!#q(BF519BD1 1 1 !^b BFBD& & & BFBD# # # UQYBFBD0 0 0 -'-"6"66u9M9MMBFBD   BFBD! ! ! eVfbfQii!#BF519BD" " " egbgajj 1$CGEAICE      eaiCGFCE' ' ' bgbennCGFCE# # # bgbeai  CGFCE& & & CGFCE   eaiCGFCE! ! ! !58 58 58n []
RVc6'1s6'26	A
&26'	B	%*..$$
q(9(99:-  E E E" [Zq"66  76 [US3*$566[VU%8%ABB+ + CB 76+ [Wuuwwvy&IJJ%4 %4 KJ%4N, , ,"	, 	, 	,. . .! ! !k k kZ [VdE]33$ $ 43$</ / /& [Zq22. . 32.6	P 	P 	P [X26'11v0F'GHH[Wrz2:&>??F F @? IHF!B !B !BFM M M4@1 @1 @1 @1 @1r   r   c                   X   e Zd Zej                            d          Ze                    ddd          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                    d
dd          e_         eej        e          e_        efe_        d Zej                            d edd                    d             Zej                            dg d          d             Zej                            d e            dddg          d             Zd Zd Z d Z!d Z"ej                            dej#        ej$        g          d             Z%dS ) TestNSuml   Q [ r   r   r   c                     |dz  S Nr   r=   )r   ks     r   r   zTestNSum.f1  s     2wr   r      c                     d||z  z  S r   r=   r   rc  r   s      r   r   zTestNSum.f2      1a4xr   c                     d||z  z  S r   r=   rf  s      r   r%   zTestNSum.f3  rg  r   r*   r   )r   r   c                 j   | j         }d}t          j        t          |          5  t	          d|j        |j                   d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||j        |j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |d|j                   d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||j        d            d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||j        |j        t                      	           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||j        |j        d
           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||j        |j        t                     d d d            n# 1 swxY w Y   t          j	        d          5  t	          |t          j
        t          j         t          j        gd          }t          j        |j        dk    t          j        |j                  z  t          j        |j                  z  |j         z  |j        z  dk              sJ t	          |dt          j
        dg          }t          j        |j        dk    t          j        |j                  z  t          j        |j                  z  |j         z  |j        z  dk              sJ t	          |ddt          j
        t          j         t          j        ddg	          }t          j        |j        dk    t          j        |j                  z  t          j        |j                  z  |j         z  |j        z  dk              sJ 	 d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||j        |j        d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||j        |j        t          j                   d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||j        |j        t          j        d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||j        |j        t          j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||j        |j        d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||j        |j        d           d d d            d S # 1 swxY w Y   d S )NrV   rW   rY   rZ   r   r[   r\   r]   )stepr^   r_   ra   rK   r  r   rd   r   r   rc   re   Trf   rg   z"...must be a non-negative integer.g      @maxtermsr   )r   rp   rq   rr   r
   r(   rs   ru   r   rO   r   rt   r  r   isnansumrT   r   r   )r   rv   rw   rQ   s       r   rx   zTestNSum.test_input_validation  s0	   G)]:W555 	  	 "ac13	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  .]:W555 	& 	&!QS!#1%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& -]:W555 	  	 !T13	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:W555 	  	 !QS$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:W555 	. 	.!QS!#FHH----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]:W555 	, 	,!QS!#F++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,]:W555 	, 	,!QS!#F++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, [X&&& 		P 		PBFRVGRV4a88C63:+rx/@/@@HSY//036;,?ADJMNO P P P P P2{++C63:+rx/@/@@HSY//036;,?ADJMNO P P P P P1bQ'GHHHC63:+rx/@/@@HSY//036;,?ADJMNO P P P P P P		P 		P 		P 		P 		P 		P 		P 		P 		P 		P 		P 		P 		P 		P 		P 8]:W555 	( 	(!QS!#B''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(]:W555 	, 	,!QS!#BF++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 5]:W555 	6 	6!QS!#BF5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6]:W555 	6 	6!QS!#BF5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 7]:W555 	- 	-!QS!#,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-]:W555 	, 	,!QS!#++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   AAA5BB#&B#C**C.1C.D33D7:D7*FFF5GG#&G##H44H8;H8G P!!P%(P%	Q33Q7:Q7(SSS5)T**T.1T.)VV	V	-WWW=X((X,/X,r   r2   c                    t          | d|           t          j        j        j                  }t          |j        j                   t          |j	        d           t          |j
        d           t          j        d          5  t          fdj        j        dj                  }d d d            n# 1 swxY w Y   t          t          j        |j                  |j                   t          t          j        |j                  |j                   t          |j	        d           t          |j
        d           d S )	Nrv   r   r   TrK   rL   c                  2    t          j         |            S r!   r   )r   rv   s    r   r   z%TestNSum.test_basic.<locals>.<lambda>  s    4)9)9 r   )r   r   )r   r
   r(   rs   r   r   rn  rR   r   r   r   r   rO   r#   rT   )r   r   rQ   r   rv   s       @r   r   zTestNSum.test_basic  sk   D.h..))AqsACaf---'''SZ###S[$'''[))) 	< 	<99993AF< < <F	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	vz**CG444v|,,ci888V]A&&&V^T*****s   'CC
Crl  )r   r   r   r&  r   c           
         | j         }d }d }t          j        ddg          d d t          j        f         }t          j        ddt          j        g          d d t          j        t          j        f         }t          j        g d                              d          }t          j        ||z
  |z            }|}	|||z  z   }|||z  z   }
 ||t          j        |          |z  z                                 d	d
          } ||           ||
          z
  |z  }||z    ||          z   }||z    ||
          z   }||z   dz  }||z
  dz  }t          j	        |||          \  }}}t          j
        |j                  D ]}||         ||         ||         }}}||z
  |z  dz   |k    rX |t          j        |||z   |                                                    }|||<   |t          j        |          j        z  ||<   d}t          |||	|||          }t          |j        |d|z             t          |j        |d|z             t#          |j        d           t#          |j        d
           |	|z
  |z  dz   |k    }t          |j        |         ||         d           t          |j        |         ||         d           t          |||	|d
t          j        |          |          }t          t          j        |j                  |j                   t          t          j        |j                  |j                   t#          |j        d           t#          |j        d
           d S )Nc                 0    dt          j        |           z  S rb  r   r   s    r   r  z$TestNSum.test_integral.<locals>.logf  s    bfQii<r   c                     d| z  S )Nrd   r=   r   s    r   Fz!TestNSum.test_integral.<locals>.F  s    6Mr   r   r*   r&  r   )rF   r   r   )rd   r   r   r   rd   T)axiskeepdimsr   r   )rj  rl  rb   r   ra   r   r   )rj  r   rb   rl  )r   r   r   newaxisrt   reshapefloorr   rn  broadcast_arraysndindexr   finfoepsr
   r   rT   r   r   r   r   r#   )r   rl  rv   r  rt  r(   rs   rj  nsteps
b_originalrc  directr}   lowhighref_sumref_errr   aibistepirb   rQ   r   s                           r   test_integralzTestNSum.test_integral  s    G	  	  	 	 	 	 J1vqqq"*}-JC())!!!RZ*CDz+++&&..}==1q5$,''
tO1ry**4//0044"t4LLAaDD11Q44K%x!!A$$& 11Q44':q.#:q. (At44
1dAG$$ 	; 	;AaD!A$QEBR"h..29RE599::>>@@#
#bhv&6&6&::
Aq*4(NNNr$w7777	7T::::SZ###S[$'''1nd"Q&(2
GAJU;;;;	!gaju====tQ
4F4LL8= = =vz**CG444v|,,ci888V]A&&&V^T*****r   r   r   r   r   c                    t           j                            d          }|                    dd|          }t           j        }|                    |          dz   }t          j        |          fdd_        t           j        d             }t          ||d|f	          } ||||d
          	                                }g d}	|	D ]Yfd|D             }
t          |          }t          |	                                |
d           t          |j        |           Zt          j        |j        j        t           j                  sJ t          j        |j        j        t           j                  sJ t          j        |j        j        t           j                  sJ t          t          j        |j                  j                   d S )Nr   r   r   r`  c                 z    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   rv   z&TestNSum.test_vectorization.<locals>.f7  s?    GGQVq[[AFaKKqqagbkIGGqAv:r   r   c                 0    t          fd| ||          S )Nc                     d| z  z  S r   r=   r   s    r   r   zCTestNSum.test_vectorization.<locals>._nsum_single.<locals>.<lambda>?  s    1q!t8 r   rk  )r
   )r(   rs   r   rl  s     ` r   _nsum_singlez1TestNSum.test_vectorization.<locals>._nsum_single=  s$    ++++QHEEEEr   i  )rl  r   rk  )rn  rT   r   r   r   c                 0    g | ]}t          |          S r=   r   r   s     r   r   z/TestNSum.test_vectorization.<locals>.<listcomp>F  r   r   r   ra   )r   r   r   integersrt   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r(   rs   r   r  rQ   r   r   r   r   r   rv   r   s               @@@r   r   zTestNSum.test_vectorization*  s    i##$899LLBUL++ FJJu!GENN	 	 	 	 	 	 		F 	F 
	F Aq!d!666|Aq!d33399;;=== 	0 	0D;;;;d;;;HsD))HHNN,,hUCCCC////}S[.99999}SZ-rz:::::}SX^RZ88888RVCH%%qw/////r   c                    | j         }g d}g d}dt          j        t          j        t          j        g}t          j        |d          }t          j        d          5  t          ||||f          }d d d            n# 1 swxY w Y   t          |j        g d           t          |j	        g d	           t          |j        |j                 ||j                            d S )
N)r   r   g?g?)r   r   r   r   r   r   rK   rL   r   rG  )r   r   r   r   )r   r   rt   r   zetarO   r
   r   r   r   r   rn  )r   rv   r   r(   rs   rR   rQ   s          r   test_statuszTestNSum.test_statusP  s   GLL(l1a  [))) 	, 	,1aqd+++C	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	S["="="=>>>SZ111,c#+.>?????s   A??BBc                     fdd_         t          dd          }t          |j         j                    d_         t          dt          j        d          }t          |j         j                    d S )Nc                 X    xj         t          j        |           z  c_         d| dz  z  S r/   )r   r   r   )r   rv   s    r   rv   zTestNSum.test_nfev.<locals>.f`  s(    FFbgajj FFq!t8Or   r   r   r   ư>r_   )r   r
   r   r   rt   )r   rQ   rv   s     @r   	test_nfevzTestNSum.test_nfev_  s    	 	 	 	 	 Aq"ooSXqv&&&Aq"&t,,,SXqv&&&&&r   c                 4   t          d ddgt          j        dd          }t          d ddgt          j                  }t          j        |j        |j        |j        z
  k              sJ t          j        |j        |j        |j        z   k               sJ d S )Nc                     d| dz  z  S r/   r=   rc  s    r   r   z)TestNSum.test_inclusive.<locals>.<lambda>o      a!q&j r   r   r2   i  g?)rl  r`   c                     d| dz  z  S r/   r=   r  s    r   r   z)TestNSum.test_inclusive.<locals>.<lambda>p  r  r   )r
   r   rt   r  rn  rT   )r   rQ   rR   s      r   test_inclusivezTestNSum.test_inclusivel  s     ((1a&"&3SQQQ((1a&"&99vcg39!4566666vcg39!456666666r   c                    | j         }dx}}t          |||          }t          |j         ||                     t          | j        dt
          j        d          }t          |j        | j         j                   t          j	        d          }t          j	        d          }t          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          |dd	d
          }t          j        |j                  sJ t          j        |j                  sJ |j        dk    sJ t          |dd	d
          }t          j        |j                  sJ t          j        |j                  sJ |j        dk    sJ t
          j        dddg}t
          j        t
          j        t
          j        t
          j        g}ddt
          j        dg}t          | j        |||f          }t          |j        t
          j        t
          j        t
          j        | j         j        g           t          |j        d d         t
          j                   t          |j        g d           t          |j        g d           t          |j        d d         d           d S )Nr   r   r   )r   r   r   )r   r   r2   c                 j    t          j        d          5  d| z  cd d d            S # 1 swxY w Y   d S )NrK   rL   r   )r   rO   r   s    r   rv   z%TestNSum.test_special_case.<locals>.f  s    H---  1u                 s   (,,r   r   rk  r   r   r   )rd   rd   r   r   rG  )r   r
   r   rn  r   r   rt   r   rR   rL  broadcast_shapesr   r   r   rm  rT   r   r   )r   rv   r(   rs   rQ   r   r   s          r   test_special_casezTestNSum.test_special_caset  s   G	AAq!nnSWaadd### DGQQ///--- HYHVHQKK#AGQWag>>DGQ---w}%%%%z5((((x~&&&&	 	 	 Aq"q)))x     x	"""""zRAq"q)))x     x	"""""zR VQ1VRVRVRV,261DGQ---"&"&"&$'+!FGGG	"1"rv...SZ111S["="="=>>>SXbqb\1%%%%%r   r   c                 b   fd}t          j        d          }t          j        dt           j        g          }t          |||          }|j        j        k    sJ |j        j        k    sJ t           j        k    rdnd}t          |d          }t          |j        ||           d S )	Nc                 b    | j         k    sJ d| t          j        d          d         z  z  S )Nr   r   r   r=   )r   r   r   )rc  r   s    r   rv   zTestNSum.test_dtype.<locals>.f  s:    7e####qBJq666r::::r   r   r   r   r   r  r   ra   )
r   r   rt   r
   rn  r   rT   r+  r   r   )r   r   rv   r(   rs   rQ   rb   rR   s    `      r   r,  zTestNSum.test_dtype  s    	; 	; 	; 	; 	; Jq&&&JBF|5111Aq!nnw}%%%%y%''''++uu1%%4000000r   N)&rS  rT  rU  r   r   r   r   uniformr   r   r  rR   r(   rt   rs   r\  r   r   r   r  r%   r  r   rx   rp   rW  rX  r   r   r  r   r  r  r  r  r]  r+  r,  r=   r   r   r_  r_    sD       
)

 3
4
4CAr##A  
 UAXaZBFBD6BDeggBG   W\!QBFBD6BDdBG   BD<<2F<++BDrtQ''BFdBG2, 2, 2,h [Zq!55+ + 65+ [Z)<)<)<==3+ 3+ >=3+j [Wuuwwvy&IJJ#0 #0 KJ#0J@ @ @' ' '7 7 7/& /& /&b [Wrz2:&>??1 1 @?1 1 1r   r_  )r   rp   numpyr   numpy.testingr   r   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodr  scipyr   r   scipy.integrater   scipy.integrate._tanhsinhr   r	   r
   scipy.stats._discrete_distnsr   r   r_  r=   r   r   <module>r     s   				      7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6                 $ $ $ $ $ $ C C C C C C C C C C : : : : : :A
1 A
1 A
1 A
1 A
1 A
1 A
1 A
1Ha1 a1 a1 a1 a1 a1 a1 a1 a1 a1r   