
    tKgV                         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y)    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_        dDd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!jD                  jG                  d      e!jD                  jG                  d      z
  gg      d         Z$ej>                  jA                  d! e%dd"            d#        Z&ej>                  jA                  d$dd%d&gf      ej>                  jA                  d'e!jN                  jP                        d(               Z)ej>                  jA                  d) e*       d*d+d,g      d-        Z+d. Z,d/ Z-d0 Z.d1 Z/d2 Z0ej>                  jA                  d3d4d5g      d6        Z1d7 Z2ej>                  jA                  d8 e%d            d9        Z3d: Z4ej>                  jA                  d;d<ej.                   dgd=d=gff      ej>                  jA                  d>ejj                  ejl                  f      d?               Z7d@ Z8dA Z9dB Z:yC)ETestTanhSinhc                 8    |t        j                  d|z         z  S N   nplogselfts     g/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/integrate/tests/test_tanhsinh.pyf1zTestTanhSinh.f1   s    266!a%=      g      ?r   c                 8    |dz  t        j                  |      z  S N   )r   arctanr   s     r   f2zTestTanhSinh.f2   s    Av		!$$r   r      c                 X    t        j                  |      t        j                  |      z  S Nr   expcosr   s     r   f3zTestTanhSinh.f3   s    vvay266!9$$r   c                 z    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#   s8    GGAQJyy|AF
a/00r      `   c                 X    t        j                  |      t        j                  |      z  S r!   )r   r'   r   r   s     r   f5zTestTanhSinh.f5*   s    wwqzBFF1I%%r   gqqܿc                 8    t        j                  d|dz  z
        S Nr   r   r   r'   r   s     r   f6zTestTanhSinh.f60   s    wwq16z""r      c                 d    t        j                  |      t        j                  d|dz  z
        z  S r/   r0   r   s     r   f7zTestTanhSinh.f76   s&    wwqzBGGAQJ///r   g      ?c                 2    t        j                  |      dz  S r   r   r   s     r   f8zTestTanhSinh.f8<   s    vvayA~r   c                 R    t        j                  t        j                  |            S r!   )r   r   r$   r   s     r   f9zTestTanhSinh.f9B   s    vvbffQi  r   c                 R    t        j                  t        j                  |            S r!   )r   r'   tanr   s     r   f10zTestTanhSinh.f10H   s    wwrvvay!!r   c                     dd|dz  z   z  S r/    r   s     r   f11zTestTanhSinh.f11N   s    AQJr   c                 Z    t        j                  |       t        j                  |      z  S r!   )r   r#   r'   r   s     r   f12zTestTanhSinh.f12T   s    vvqbzBGGAJ&&r   c                 :    t        j                  |dz   dz        S r   r   r#   r   s     r   f13zTestTanhSinh.f13Z   s    vvqAvgk""r   c                 Z    t        j                  |       t        j                  |      z  S r!   r"   r   s     r   f14zTestTanhSinh.f14`   s    vvqbzBFF1I%%r         ?c                 2    t        j                  |      |z  S r!   )r   sinr   s     r   f15zTestTanhSinh.f15f   s    vvay1}r   c                     t        ||z
        }|s|S t        j                  d      5  t        j                  |      cd d d        S # 1 sw Y   y xY w)Nignoredivide)absr   errstatelog10)r   resrefr   errs        r   errorzTestTanhSinh.errorl   s:    #)nJ[[)88C= *))s   AAc                 z
   | j                   }d}t        j                  t        |      5  t	        dd|j
                         d d d        d}t        j                  t        |      5  t	        |d|j
                  d       d d d        d}t        j                  t        |      5  t	        |d	|j
                         d d d        t        j                  t        |      5  t	        |d|j
                  d
       d d d        t        j                  t        |      5  t	        |d|j
                  t               d d d        d}t        j                  t        |      5  t	        |d|j
                  d       d d d        t        j                  t        |      5  t	        |d|j
                  t        j                         d d d        d}t        j                  t        |      5  t	        |d|j
                  t        j                  d       d d d        t        j                  t        |      5  t	        |d|j
                  t        j                  d       d d d        d}t        j                  t        |      5  t	        |d|j
                  t                      d d d        t        j                  t        |      5  t	        |d|j
                  d	       d d d        t        j                  t        |      5  t	        |d|j
                  d       d d d        d}t        j                  t        |      5  t	        |d|j
                  d       d d d        t        j                  t        |      5  t	        |d|j
                  d       d d d        t        j                  t        |      5  t	        |d|j
                  d       d d d        d}t        j                  t        |      5  t	        |d|j
                  d       d d d        d}t        j                  t        |      5  t	        |d|j
                  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   [xY w# 1 sw Y   )xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   1x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   oxY w# 1 sw Y   ?xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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   sY   GG)]]:W5b!QSS! 6 .]]:W5aACCQ' 6 -]]:W5aqss# 6]]:W5aACCf- 6]]:W5aACCf- 6 8]]:W5aACCb) 6]]:W5aACCbff- 6 5]]:W5aACCbff$7 6]]:W5aACCbff$7 6 )]]:W5aACC&(3 6]]:W5aACC- 6]]:W5aACC*=> 6 -]]:W5aACC"- 6]]:W5aACC+ 6]]:W5aACC"- 6 .]]:W5aACC2 6 )]]:W5aACC,7 65a 65 65 655555 6555 6555 655555 655555 65 65s   Q!'Q.&Q;!RR!R"(R/+)R<7)S	"S
S#S0S=T
 T?T$>T1!Q+.Q8;RRR"R,/R9<S	SS #S-0S:=T
TT!$T.1T:zlimits, refr   rd   )r   rd   c                 d   t        j                         }t        |j                  g| }t	        |j
                  |       t        |j                  g|ddi}t	        t        j                  |j
                        |       |dkD  r:t        j                  |j
                  j                  t        j                        s<J t        j                  |j
                  j                  t        j                        sJ t	        t        j                  |j                        |j                  d       y )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     zz|*6*c*4;;::T:v/5EH1Wfoo33R[[A 	O N]]6??#8#8":L:LM	O N 	v||,ciieDr   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 )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    DAhZ.)1acc-aee$74TZZaee<S\\IJJ		))){"{{{zzQr   rR   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.)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KKJK<<BIImQ78KK?@'wuh'0MM#%1%c*r   shaper      r2   r   r   r   c                 ,   t         j                  j                  d      }|j                  |      }|j                  |      }|j                  |      }t        j                  |      fdd_        d_        t         j                  d        }t        |||f      } ||||      j                         }g d}	|	D ]Y  }
|D cg c]  }t        ||
       }}t        ||
      }t        |j                         |d       t        |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        j                  |j(                  j                  t         j$                        sJ t        t        j*                  |j&                        j
                         t        j*                  |j(                        d	k\  sJ t        t        j*                  |j(                        j                         y c c}w )
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   sE    GGqLGGGQVVq[AFFQJqQWWR[HG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!tr   )r   )r(   rs   r   s     `r   _tanhsinh_singlez9TestTanhSinh.test_vectorization.<locals>._tanhsinh_single   s    ^Q22r   argsr}   rT   r   r   nfevri   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attrrR   ref_attrres_attrrv   r   s                 @@r   test_vectorizationzTestTanhSinh.test_vectorization   s    ii##$89JJuJJuJJuGGEN	 		3 
	3 1aqd+1a(..0ND6:;dsT*dH;sD)HHNN,hUC/	  }}S[[..999}}SZZ--rzz:::}}SXX^^RZZ888}}S\\//<<<RVVCHH%qww/vvcll#q(((RVVCLL)1773 <s   	J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                  |       y )Nc                     xj                   dz  c_         d d d g}t        | |j                               D cg c]  \  }} ||   |       }}}|S c c}}w )Nr   c                 4    t        j                  | dz         S r   rB   r   s    r   r   z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>  s    rvvq!te}r   c                 ,    t        j                  |       S r!   rB   r   s    r   r   z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>  s    rvvayr   c                 P    t        j                  | t         j                        d   S )Nr=   )r   	full_likenanr   s    r   r   z4TestTanhSinh.test_flags.<locals>.f.<locals>.<lambda>  s    r||Arvv6r:r   )nitzipr   )xsjsfuncsr   jrQ   rv   s         r   rv   z"TestTanhSinh.test_flags.<locals>.f  s^    EEQJE,(:<E ,/r288:+>?+>41a858A;+>C?J @s   A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  sl    	 		!288,.BFF8A:y{QTJHH[)	SZZ+r   c                     d }t        |t        j                  gdz  t        j                   gdz  dd      }t        j                  g d      }t	        |j
                  |       y )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    FFAaD!G8$FF1Q4LLL1rvv.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  sM    	4
 BFF8A:y{QtTHH[)	SZZ+r   c                 t    d }t        |dd      }t        |ddd      }t        |j                  |d          y )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)  sS    ::266"q&>2 "rAvBFF37O0CDF G Gr   r   r   Trl   )r   r   r   r}   )r   rv   rR   rQ   s       r   test_preserve_shapez TestTanhSinh.test_preserve_shape'  s:    	G q!Q1a5c!f-r   c                     | j                   }d}t        d      D ]U  }t        |d|j                  d|      }| j	                  |j
                  |j                  d      }||dz  k  s|dk  sJ |}W y )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  sm    GGqAAq!##A>CZZaeeZ>F[1_,?> K	 r   c                      fd j                   j                  _         j                   j                  _        d}j                  |z  }d\  _        _        t        dj                        } 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\  _        _        |j                  }t        dj                  |      }j                  |_        ||k(  sJ d\  _        _        |dz  }|dk\  sJ t        dj                  |      } 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                  |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J  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                        |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                  |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J  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                        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_        j	                  |       S r   )callsr   r   r   r   r   rv   r   s    r   rv   z:TestTanhSinh.test_options_and_result_attributes.<locals>.f>  s4    GGqLGGGrwwqz!G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;  s   	 ggiiuu|+  1acc"zz#,,.I\IIIIIxx177"""GG	{{{zzQ  <<1accH5GG	czz  A1}}1accH5zz#,,.I\IIIIIxx177-SXX-----ww#))a-''';;zzS]]***, GG	  ||CIIrvv.1acc5||s||+++yyCII%%%xx177.chh.....ww#))###{{{zzQ||CIIw/1acc5zz#,,.ATAAAAAxx177-SXX-----ww"""{{{zzQ  ||CIIcll2BFF;1acc-||s||+++yyCII%%%xx177.chh.....ww#))###{{{zzQ||CIIcll2RVVG<1acc-zz#,,.quu4syy7MTPTTTTTTxx177-SXX-----ww"""{{{zzQr   rb   g-C6?g+=c           	         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        |j                  |j                  k(  sJ y # 1 sw Y   %xY w)NgC]r2<r   )r`   rb   rd   r   T)r   rb   ra   c                 L    j                  |        j                  |       z  S r!   )r~   r|   r   r   s    r   rv   z TestTanhSinh.test_log.<locals>.f  s     KKN?488A;..r   c                     t        j                  j                  |       dz         j                  |       z   t         j                  dz  z   S )Ny                              ?)r   r   r~   pir  s    r   logfz#TestTanhSinh.test_log.<locals>.logf  s9    66$++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  sY    zz|e%0	 R266$<H"ad3s||,cllHiHsyy)399B	Bxx388###	/	M rvvgrvv48BFF7BFF+ [[X&BFF3<<0#,,L)LBFF399-syyFIF ' xx388### '&s   "A)G//G8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	       y )
Nc                 2    t        j                  d| z        S Nr  rB   r   s    r   rv   z$TestTanhSinh.test_complex.<locals>.f  s    66"q&>!r   r   r2   r   r   r  )scalec                 P    j                  |       dj                  |       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    	" 1beeAg&ggajla
1nb00c* 

#

#	2 266BFF7+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 ]A  }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J  J j                  ||z
  dz   dz   k(  sJ |j                   |j                   k(  sJ t#        |t        j                  j                               D y )Nc                    xj                   dz  c_         xj                  t        j                  |       z  c_        t        j                  j
                  | j                         f      _        j                  |       S r   )r   r   r   r   concatenater   r   r   r   s    r   rv   z%TestTanhSinh.test_minlevel.<locals>.f  sS    GGqLGGGrwwqz!G..!##qwwy!1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  sT   
	
 !"1bhhrl!#1dggii!hGaA.H$%q"((2,!AGQWacHx@GAq$''))7w7CCLL#,,UCCIIsyyus||7KL88qww2#acc(2222277h1A5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       y )Nc                     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+    VVAbhhqkN661a4%= 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    	! ffWa"&&"&&#w<VVRVVQR8ggbeen1a sCE3q53$S#&N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
  |       y )Nr   r=   c                 P    | j                   k(  sJ t        j                  |       S r!   )r   r   r#   )r   r   s    r   rv   z"TestTanhSinh.test_dtype.<locals>.f  s#    77e###66!9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     zz&.r21	 +u1ad+||!!U***yy%'''vvckk"""bffQiq	&9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}|j                         D ]S  }	|	d
k(  r)
j                  |	   dk(  sJ ||	   dk(  sJ ||	   dk(  r/J ||	   
j                  |	   cxk(  r
||	   k(  rPJ  J  y )Nc                 4    t        j                  |  | z        S r!   rB   r   s    r   rv   z-TestTanhSinh.test_maxiter_callback.<locals>.f      661"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        y )Nr   r}   )iterrQ   hasattrr   StopIteration)rQ   ro   maxiters    r   ro   z4TestTanhSinh.test_maxiter_callback.<locals>.callback  sO    MMQMHL3
+++::?"?}}'## (r   rd   ri   ro   r   r   )	r   rt   r	  r   r   ri   r*  rQ   keys)r   r(   rs   rv   rk   ri   kwargsrQ   res2keyro   r-  s             @@r   test_maxiter_callbackz"TestTanhSinh.test_maxiter_callback  s$   w1	  "(X%)x(G1a*6*;;||x'''	$ :Aq>F>X> 88:Ch||C(A---3x2~%~CyB&CyHLL$5ASAAAAA r   c                   	 t         j                   t         j                  }}d }	fd	g 	_        g 	_        d}t	        |||d|	       g }g }t        |dz         D ]H  }t	        |||||      }|j                  |j                         |j                  |j                         J t        	j                  dd  |d	       t        	j                  dd  |dd
       y )Nc                 4    t        j                  |  | z        S r!   rB   r   s    r   rv   z&TestTanhSinh.test_jumpstart.<locals>.f9  r(  r   c                     j                   j                  | j                         j                  j                  | j                         y r!   )	integralsappendr}   errorsrT   )rQ   ro   s    r   ro   z-TestTanhSinh.test_jumpstart.<locals>.callback<  s1    %%cll3OO""399-r   r2   r   )rk   ri   ro   r   r   r   ra   rz   r   )
r   rt   r7  r9  r   r   r8  r}   rT   r   )
r   r(   rs   rv   ri   r7  r9  r   rQ   ro   s
            @r   test_jumpstartzTestTanhSinh.test_jumpstart5  s     w1	 	.  !QA8L	x!|$AAq!a!<CS\\*MM#))$ %
 	**12.	F+V%eLr   c                    d }t        |dd      }|j                  sJ t        |j                  d       t        |ddd      }|j                  dkD  sJ t	        |j
                  t        j                         t        |ddd      }|j                  dkD  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$                  |        y )Nc                 l    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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   r=  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>  rC  r   r   )r   r   r   r}   r   rT   r   r   ri   r   r   emptyr	   xjcwjindicesh0zerosr   )	r   rv   rQ   r(   rs   r?  r   r   r   s	            r   test_special_caseszTestTanhSinh.test_special_casesO  sY   
	 1a {{{e, 1a!,||aSYY'1a!,||aSYY' 1a {{{||r!!!a(	 1ab)e, VVQ1126611aqd+rvvrvvrvvs&CD		"1rvv.SZZ1S[["=>SXXbq\1% ((1+! c1-f-Q*c* Q8NDT%0 r   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%  r3  r:  rK  r=   r   r   r   r      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!58n [[]
RVVc66'1s66'266	A
&&266'	B	%**..$

q(99:- EE" [[Zq"6 7 [[US3*$56[[VU%8%8%A%AB+ C 7+ [[Wuwvy&IJ%4 K%4N,"	,.!kZ [[VdE]3$ 4$</& [[Zq2. 3.6	P [[X266'11v0F'GH[[Wrzz2::&>?F @ IF!BFM4@1r   r   c                   `   e Zd Zej                  j                  d      Zej                  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j+                  d
dd      e_         eej                  e      e_        efe_        d Zej2                  j5                  d edd            d        Zej2                  j5                  dg d      d        Zej2                  j5                  d e       dddg      d        Zd Zd Z d Z!d Z"ej2                  j5                  dejF                  ejH                  g      d        Z%y) 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   r\  r   s      r   r   zTestNSum.f2      1a4xr   c                     d||z  z  S r   r=   r_  s      r   r%   zTestNSum.f3  r`  r   r*   r   )r   r   c                    | j                   }d}t        j                  t        |      5  t	        d|j
                  |j                         d d d        d}t        j                  t        |      5  t	        ||j
                  |j                  d       d d d        d}t        j                  t        |      5  t	        |d|j                         d d d        t        j                  t        |      5  t	        ||j
                  d        d d d        t        j                  t        |      5  t	        ||j
                  |j                  t               	       d d d        t        j                  t        |      5  t	        ||j
                  |j                  d
       d d d        t        j                  t        |      5  t	        ||j
                  |j                  t               d d d        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        d}t        j                  t        |      5  t	        ||j
                  |j                  d       d d d        t        j                  t        |      5  t	        ||j
                  |j                  t        j                         d d d        d}t        j                  t        |      5  t	        ||j
                  |j                  t        j                  d       d d d        t        j                  t        |      5  t	        ||j
                  |j                  t        j                  d       d d d        d}t        j                  t        |      5  t	        ||j
                  |j                  d       d d d        t        j                  t        |      5  t	        ||j
                  |j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   Zx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   rxY w# 1 sw Y   Bx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   y xY w)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  s   GG)]]:W5"acc133 6 .]]:W5!QSS!##1% 6 -]]:W5!T133 6]]:W5!QSS$ 6]]:W5!QSS!##FH- 6]]:W5!QSS!##F+ 6]]:W5!QSS!##F+ 6 [[X&BFFRVVGRVV4a8C663::+rxx/@@HHSYY/036;;,?ADJMNO P P P2{+C663::+rxx/@@HHSYY/036;;,?ADJMNO P P P1bQ'GHC663::+rxx/@@HHSYY/036;;,?ADJMNO P P P ' 8]]:W5!QSS!##B' 6]]:W5!QSS!##BFF+ 6 5]]:W5!QSS!##BFF5 6]]:W5!QSS!##BFF5 6 7]]:W5!QSS!##, 6]]:W5!QSS!##+ 65[ 65 65 6555555555 '& 6555 6555 6555s   "X1$X:X*5X70,Y?$Y(YHY+$Y82Z.3Z3Z$Z,#$Z8XX'*X47YYYY(+Y58ZZZZ),Z58[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        t        t        j                  j                        |j                         t        t        j                  |j                        |j                         t        |j                  d       t        |j                  d       y # 1 sw Y   xY w)	Nrv   r   r   TrK   rL   c                  4    t        j                   |        S r!   r   )r   rv   s    r   r   z%TestNSum.test_basic.<locals>.<lambda>  s    4)9r   )r   r   )r   r
   r(   rs   r   r   rg  rR   r   r   r   r   rO   r#   rT   )r   r   rQ   r   rv   s       @r   r   zTestNSum.test_basic  s    DAhZ.)AqssACCaff-'SZZ#S[[$'[[)933AFF<F * 	vzz*CGG4v||,cii8V]]A&V^^T* *)s    2E--E6re  )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      j                  d      }t        j                  ||z
  |z        }|}	|||z  z   }|||z  z   }
 ||t        j                  |      |z  z         j                  d	d
      } ||       ||
      z
  |z  }||z    ||      z   }||z    ||
      z   }||z   dz  }||z
  dz  }t        j                  |||      \  }}}t        j                  |j                        D ]x  }||   ||   ||   }}}||z
  |z  dz   |k  s! |t        j                  |||z   |            j                         }|||<   |t        j                  |      j                  z  ||<   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
       y )Nc                 2    dt        j                  |       z  S r[  r   r   s    r   r  z$TestNSum.test_integral.<locals>.logf  s    bffQi<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   )rc  re  rb   r   ra   r   r   )rc  r   rb   re  )r   r   r   newaxisrt   reshapefloorr   rg  broadcast_arraysndindexr   finfoepsr
   r   rT   r   r   r   r   r#   )r   re  rv   r  rm  r(   rs   rc  nsteps
b_originalr\  directr}   lowhighref_sumref_errr   aibistepirb   rQ   r   s                           r   test_integralzTestNSum.test_integral  s    GG	 	 JJ1vq"**}-JJC()!RZZ*CDzz+&..}=1q5$,'
tO1ryy*4//044"t4LaD1Q4K%x!A$& 1Q4':q.#:q. ((At4
1dAGG$AaD!A$QEBR"h.299RE59:>>@#
#bhhv&6&:&::
 % Aq*4(Nr$w7		7T:SZZ#S[[$'1nd"Q&(2
GAJU;		!gaju=tQ
4FF4L8=vzz*CGG4v||,cii8V]]A&V^^T*r   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        ||d|f	      } ||||d
      j                         }g d}	|	D ]Y  }
|D cg c]  }t        ||
       }}t        ||
      }t        |j                         |d       t        |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                         y c c}w )Nr   r   r   rY  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   rv   z&TestNSum.test_vectorization.<locals>.f7  s=    GGQVVq[AFFaKqaggbkIGqAv:r   r   c                 (    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!t8r   rd  )r
   )r(   rs   r   re  s     ` r   _nsum_singlez1TestNSum.test_vectorization.<locals>._nsum_single=  s    +QHEEr   i  )re  r   rd  )rg  rT   r   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   rR   r   r   rv   r   s                 @@r   r   zTestNSum.test_vectorization*  s    ii##$89LLBUL+ FFJJu!GGEN	 		F 
	F Aq!d!6Aq!d399;=D6:;dsT*dH;sD)HHNN,hUC/	  }}S[[..999}}SZZ--rzz:::}}SXX^^RZZ888RVVCHH%qww/ <s   
H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        t        j                  g d       t        |j                  g d	       t        |j                  |j                     ||j                            y # 1 sw Y   jxY w)
N)r   r   g?g?)r   r   r   r   r   r   rK   rL   r   r@  )r   r   r   r   )r   r   rt   r   zetarO   r
   r   r   r   r   rg  )r   rv   r   r(   rs   rR   rQ   s          r   test_statuszTestNSum.test_statusP  s    GG(ll1a [[)1aqd+C * 	S[["=>SZZ1,c#++.>? *)s   1C++C4c                     fdd_         t        dd      }t        |j                   j                          d_         t        dt        j                  d      }t        |j                   j                          y )Nc                 d    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&    FFbggaj Fq!t8Or   r   r   r   ư>r_   )r   r
   r   r   rt   )r   rQ   rv   s     @r   	test_nfevzTestNSum.test_nfev_  s]    	 Aq"oSXXqvv&Aq"&&t,SXXqvv&r   c                 n   t        d ddgt        j                  dd      }t        d ddgt        j                        }t        j                  |j                  |j                  |j
                  z
  kD        sJ t        j                  |j                  |j                  |j
                  z   k        sJ y )Nc                     d| dz  z  S r/   r=   r\  s    r   r   z)TestNSum.test_inclusive.<locals>.<lambda>o      a!q&jr   r   r2   i  g?)re  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  rg  rT   )r   rQ   rR   s      r   test_inclusivezTestNSum.test_inclusivel  s     (1a&"&&3SQ(1a&"&&9vvcgg399!45666vvcgg399!45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       y )Nr   r   r   )r   r   r   )r   r   r2   c                 d    t        j                  d      5  d| z  cd d d        S # 1 sw Y   y xY w)NrK   rL   r   )r   rO   r   s    r   rv   z%TestNSum.test_special_case.<locals>.f  s!    H-1u .--s   &/r   r   rd  r   r   r   )rd   rd   r   r   r@  )r   r
   r   rg  r   r   rt   r   rR   rE  broadcast_shapesr   r   r   rf  rT   r   r   )r   rv   r(   rs   rQ   r   r   s          r   test_special_casezTestNSum.test_special_caset  sy   GG	AAq!nSWWad# DGGQQ/- HHYHHVHHQK##AGGQWWagg>DGGQ-ww}}%%%zz5(((xx~~&&&	 Aq"q)xx   xx		"""zzRAq"q)xx   xx		"""zzR VVQ1VVRVVRVVRVV,2661DGGQ-"&&"&&"&&$''++!FG		"1rvv.SZZ1S[["=>SXXbq\1%r   r   c                    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                  ||       y )	Nc                 f    | j                   k(  sJ d| t        j                  d      d   z  z  S )Nr   r   r   r=   )r   r   r   )r\  r   s    r   rv   zTestNSum.test_dtype.<locals>.f  s5    77e###qBJJq6r::::r   r   r   r   r   r  r   ra   )
r   r   rt   r
   rg  r   rT   r$  r   r   )r   r   rv   r(   rs   rQ   rb   rR   s    `      r   r%  zTestNSum.test_dtype  s    	; JJq&JJBFF|51Aq!nww}}%%%yy%'''+u1%40r   N)&rL  rM  rN  r   r   r   r   uniformr   r   r  rR   r(   rt   rs   rU  r   r   r   r  r%   r  r   rx   rp   rP  rQ  r   r   r  r   r  r  r  r  rV  r$  r%  r=   r   r   rX  rX    s   
))

 3
4CAr#A
 UUAXaZBFBD66BDgBG W\\!QBFBD66BDdBG BD<<2F<+BDrttQ'BFdBG2,h [[Zq!5+ 6+ [[Z)<=3+ >3+j [[Wuwvy&IJ#0 K#0J@'7/&b [[Wrzz2::&>?1 @1r   rX  )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   rX  r=   r   r   <module>r     s?    	   7 6 6   $ C C :A
1 A
1Ha1 a1r   