B
    \l                 @   s  d dl T d dlmZmZmZ dd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Z d;d< Z!d=d> Z"d?S )@    )*)round_up
from_floatmpf_zeta_intc               C   s   t ddtdkstd S )Nr   
   g      )r   r   AssertionError r   r   :lib/python3.7/site-packages/mpmath/tests/test_gammazeta.pytest_zeta_int_bug   s    r
   c              C   s  t ddkstt ddks tt ddks0tt ddks@tt d	d
ksPtt ddks`tt ddksptt dd
kstt ddkstt ddkstt ddkstt d\} }| d dkst|dkstt d\} }| d dkst|dkstdt_tddksttddks,ttdds@ttddksRttd	dsfttddksxttdd stttdd!kstttd"d#kstttd$d%kstttd&d'kstd(t_ttdd)ks tttd"d*kstttd$d+ks,tttd&d,ksBtdt_tdtdd- sdtd.t_tdtdd- stdt_d S )/Nr   )   r   r   )   r   )r         )r   r      )r         r   )r   *      r   )r   B      )iMi
     )i[  i     l    d(	 is	i	 i  l   kL3 iq   g      gUUUUUU?ggaa?z0.0757575757575758   z7.62772793964344e+267i z-5.82229431461335e+376755iz1.19570355039953e+6767525842   z50.075757575757575757575757575757575757575757575757576z87.6277279396434392486994969020496121553385863373331e+267z<-5.8222943146133508236497045360612887555320691004308e+376755z>1.1957035503995297272263047884604346914602088317782e+676752584r   iP  )Zbernfracr   mpdpsZ	bernoulliaestrmpf)pqr   r   r	   test_bernoulli   sN    r#   c               C   st  dt _tdddsttddds.ttdddsBttdddsVttdddsjttddds~ttdddsttddd	sttdddsttddd
sttdddsttdddsttdddsttddds"ttddds8ttdddsNttdddsdttdddszttdddsttdddsttdddsttdddsttdddsttdddsttdddsttddds*ttddds@ttdddsVttdddslttdddsttdddsttdddsttdddsttdddsttdddsttdddsttdddsttddds2ttdddsHttddds^ttdddstttdddsttd dd!sttd ddsttd ddsttd dd"sttd ddsttd dd sttddds$ttddds:ttdddsPttdddsfttddds|ttdddsttdddsttddd	sttdddsttddd
sttddds ttdddsttddds,ttdddsBttddd#sXttddd$snttdddsttdddsttddd%sttddd
sttdddsttddd&sttddd#sttddd'sttddds4ttdddsJttddd(s`ttddd)svttdddsttdddsttdddsttddd	sttdddsttddd*sttdddsttddds&ttddds<ttdddsRttddd+shttddd,s~ttdddsttdddsttd dd-sttd dd.sttd ddsttd dd/sttd dd0sttd dd1s.ttd2d2d3sDttd4d5d6sZttd4d5d7sptd S )8Nr   r   r   r   z1/2z3/4r   z-3/2z-1/2z1/4z3/2z13/6z1/6z-1/12z-1/48r   z-3/64r   z119/30z-1/30z7/240z7/3840r   z25/1024r   z665/66z5/66z-2555/33792z-2555/34603008   iz-555731/4194304z-1/4z-3/16z-9/4z-11/64z9/4z5/16z57/256z361/1024z-50521/1024z-36581523/1048576z-699/4z691/4z-512343611/4194304z-691/4z699/4i'  z5.8196915936323387117e+39999   g     1@gJrg,Qr%)r   r   Zbernpolyr   r   Z	eulerpolyr   r   r   r	   test_bernpoly_eulerpoly4   s    r(   c              C   s  dt _tddsttdds*ttdds<ttdd	sNttd
ds`ttddsrttddsttddstd} x*tddD ]}t|| kst| |9 } qW xBdD ]:}d} |t _x*tddD ]}t|| kst| |9 } qW qW dt _tdtts(tdt _tdt	d  krNdksTn ttddksftt
ttsxttddsttddksttddksttddksttddksttd d!sttd"d#sttd$td%d#std S )&Nr   g      ?g~?@g-C6?g	!@i,  z1.0201917073881354535e612g      gkﴑ[gQgf<9b1?y      ?      ?y}?'މ^eÿy      {Gz?yT})ۿOf[X@y      4@      >@y<lsfsuWAr   r   )   iX  i   d   g      ?r   r   r   iL  z4.8579168073569433667e2866r   r   g      ?y       @       @yaaJ
!z¶%@Z1e10000z 2.302485092994045684017991e10004Z1e10000jz!-1.570796326794896619231322e10000)r   r   gammar   r   rangesqrtpiZ	factorialZfacisnannanZrgammaZloggammampc)Zfactir   r   r   r	   
test_gamma   sB    
&r4   c               C   s   dt _dd tdD ddddddd	d
ddg
ks4ttddsFttddsXttddsjttdds|ttttkstttt std S )Nr   c             S   s   g | ]}t |qS r   )fac2).0nr   r   r	   
<listcomp>   s    ztest_fac2.<locals>.<listcomp>r   r   r   r   r   0   r*   i  i  r%   gUUUUUU?iggjVQr   g!a?@Fy      ?      ?yHO?j6.Vֿ)r   r   r-   r   r5   r   infr0   r   r   r   r	   	test_fac2   s    .r;   c              C   s  dt _d} d}t}tdgddgdks*ttddgdgtksBtttdgd	g|d|  |d	|    dk sttttddgd	dg|d|  |d|   |d	|   |d|    dk sttd
ddksttdddksttdddkstttt	tdt tt sttdd	ds4tt
d	ddksHtt
d	dd	ks\tt
dd
dksptt
d
ddksttdddksttdddksttdddksttd
dd
ksttdddksttdd
dksttdddksttdddks$ttd	dd
ks8ttdddksLttdddks`ttdddkstttdddksttddtksttd
dtksttddtksttdd	dsttdd	td stdtdd 	dsttttdks"tttt ts8tttdtsLtttdts`tttd td t  krdksn tttd!tkstttd"t ksttd#dtd  	d$sttd"d dksttdd
	d%sttdd	d&std S )'Nr   g:0yE>g-C6?r   r$   r   r%   r   r   g      @r      z-255.5815971722918z-0.5119253100282322z-0.1952720278805729485r      r   r   g      @g      ?g     @@iL  i"9	 gUUUUUU?   l     I5 r+   grP@g      ?g      g      y      ?       @y+5?\K9ʵ?gUUUUUUտz18.157330562703710339)r   r   r,   Z	gammaprodr   r:   absZrfjr   ZffZbinomialZbetar/   r0   )hZepGr   r   r	   test_gamma_quotients   s^    2N&*rE   c              C   sR  dt _tdtd d s ttdtd d s:tttdtd d sXttddsjttdds|ttd	d
sttdtd d sttddksttdtdd sttddksttddkstttt	sttddsttdds.tttd	ddsHtttd	ddsbtttd	dds|tttdddstttdddstdt _d} ttd	| ddstdt _tddd  dsttdd	dksttddd	ks ttdd	dds8ttd d!d"sNtd S )#Nr   r   r   g       @r+   r   r   g      g      ?gs~]r   r   r=   r$   x   r<   igKH9gKHg"fD,@gOc5@g9@gWw'&l7r   z8236.5242296658162058024755079556629786895294952121891237gaU,$Db6y      N      @r   "   y9A!@.@g9B.ֿg      y              ?yN*i6?)
r   r   zetar   r/   r   r2   r    r0   r1   )Zimr   r   r	   	test_zeta   s:    rI   c              C   s0  dt _tddksttddks&ttddks6ttddksFttddksVttd	d
ksfttddksvttddksttdtdsttdtd d sttddtd  d sttddk sttddddk sttddddksttddddk s$ttddddks:ttdtdksPtd} t| ddd|    t|  s|td} t| ddd|    t|  sttddsttd d!sttd"dsttd#dstttd"d$dstttd#d$ds,td S )%Nr   r=   r   r<   ig      ?r   g      ?r$   g      r%   ig  z\Ar   r   r   r   I   i jh r   <   d)roundingui'  y      @        r   y      @      @y            @g      Yg@o.>Vg?g^s?gKH9gKHgWw'&l7)	r   r   altzetar   r   logr/   rH   r2   )sr   r   r	   test_altzeta   s8    ((rR   c              C   s   dt _ttdkstdt _tdds.ttdt dsDtdt _td	} dt _t| d d
ksltttd tddksttdtddkstttd dksttddkstd S )Nr   r   r   r+   z61.0000000000000000000000000000007888609052210118073522(   z61.0000000000000000000000000000000000000148407238666182i'  i  z1.02363019598118e-9934i  )rM   i  )	r   r   rH   r:   r   r   r/   r   r   )vr   r   r	   test_zeta_huge>  s    rU   c              C   sR   dt _t dd  } dt _tt| dks.tdt _tt| dksHtdt _d S )N   r   rS   r   z=2.55880492708712e+1233536161668617575553892558646631323374078r   z`2.5588049270871154960875033337384432038436330847333e+1233536161668617575553892558646631323374078)r   r   r/   r   rH   r   )ar   r   r	   test_zeta_negativeM  s    rX   c              C   s>  dt _dd } dd }| dtdd  kr8tdks>n t| tdsPt| t dsdt| t d	 d
s|t| tt dst| t t dstt| d	dst| ddst| ddst| ddst| ddst| t	t	kst|t	dks,ttdt	dks@t|tdsTt|t dsjt|tt dst|t t dstdtdd	dt t   dst| d	dt t  dstt
| tstt
| t	 st| d d!st| d"| ds4t| d#d$sHtt
tdtdt	sbtt
tdtdts|tt
tdtdt	 stt
tdtd	t	stt
tdtd	tstt
tdtd	t	 stt
tdtt	t	stt
tdtttstt
tdtt	 t	 s:td S )%Nr   c             S   s
   t d| S )Nr   )psi)zr   r   r	   <lambda>X  s    z test_polygamma.<locals>.<lambda>c             S   s
   t d| S )Nr   )rY   )rZ   r   r   r	   r[   Y  s    r   r   guTE?g,$7@r   gdGDE@y)\Z[?ÕޛD?ybabJr?N<g?Vcb?g|=g& _gWw'&l7g\)c=y|=|=yF<	 _    _AyWw'&l7Ww'&l7y\)c-ȥ\)c-Hr   ga#?g^jJ@yY/?Iyϐ=ӿ{?i@B r   r   yhVKٿy_%F@@K?g      Yg69u@y      @        y      Y      @y]vCq@˼@)r   r   rY   Zdigammar   r/   r   rB   Zfindrootr:   r0   r1   r2   )psi0psi1r   r   r	   test_polygammaV  sJ    (& r^   c               C   s6   dt _ttdtdkstttdtdks2td S )Nr+   r   zf0.9772133079420067332920694864061823436408346099943256380095232865318105924777141317302075654362928734r   zf-12.98876181434889529310283769414222588307175962213707170773803550518307617769657562747174101900659238)r   r   r   rY   r/   r   r   r   r   r	   test_polygamma_high_prec  s    r_   c              C   s  dt _dd } dd }dd }| dt dtd  s>t| dt sRt|ddtd  slt|dtd d	 st|d
td dt  st|ddt stdt _dt dt	d td   }dt _t
dd|stt
ddtd std S )Nr   c             S   s
   t d| S )Nr   )rY   )rZ   r   r   r	   r[     s    z+test_polygamma_identities.<locals>.<lambda>c             S   s
   t d| S )Nr   )rY   )rZ   r   r   r	   r[     s    c             S   s
   t d| S )Nr   )rY   )rZ   r   r   r	   r[     s    g      ?r   r   r   g      ?r   r=   r>   iJr   r   g?)r   r   r   eulerrP   r   r/   ZcatalanZaperyr.   rY   )r\   r]   Zpsi2rN   r   r   r	   test_polygamma_identities  s     ra   c              C   s   dd } dt _dtdd }dtdd }| d|  | d	|  | dd|   | dd|   }dt tdtd t  }||std
t _d S )Nc             S   s
   t d| S )Nr   )rY   )rZ   r   r   r	   r[     s    z'test_foxtrot_identity.<locals>.<lambda>r   r   r   r   r   g      ?g      r   )r   r   Zfractionr/   Zsechr.   r   r   )r\   rW   bxyr   r   r	   test_foxtrot_identity  s    :re   c               C   s   dt _ttdtdkstttdtdt  dks:tttdtdt t  dks\tdt _ttdtdksxtttdtdt  d	kstttdtdt t  d
kstd S )Nr+   r   zf-1344100348958402765749252447726432491812.641985273160531055707095989227897753035823152397679626136483   zw-0.00000000000000000189793739550804321623512073101895801993019919886375952881053090844591920308111549337295143780341396z(-0.00000000000000005225169411521692489752254721556835657523758895106315132447859377385233700094871256507814151956624433 - 0.00000000000000001813157041407010184702414110218205348527862196327980417757665282244728963891298080199341480881811613j)r   z-1.34410034895841e+39z-1.89793739550804e-18z.(-5.2251694115217e-17 - 1.81315704140701e-17j))r   r   r   rY   r/   r   erB   r   r   r   r	   test_polygamma_high_order  s    "rh   c               C   s   dt _tddksttddks&ttddks6ttddsHttdd	sZttd
d dspttdddtd  sttttksttddksttddstd S )Nr   r   r   r   g      ?r   gUUUUUU?l    d(	 g_b7@r   i  gS@g      ?y       @        y      ?        y      ?       @yk4q?@w?)r   r   Zharmonicr   r   rP   r:   r   r   r   r	   test_harmonic  s    ri   c              C   sP   dt _tdd } dt _tt| dks,tdt _tt| dksFtdt _d S )Ni  l    d(	    r   z6.26075321389519e+12458010678r   z@6.2607532138951929201303779291707455874010420783933e+12458010678)r   r   r    r   r,   r   )rc   r   r   r	   test_gamma_huge_1  s    rk   c              C   sN   dt _tdd d } dt _tt| dks0tdt _tt| dksJtd S )	Ni  r   r+      r   zw1.82341134776679e+51729974693233641689901335581750771368291828240422018860515119656908623426021308685461258226190190661r   z1.82341134776678875374414910350027596939980412984e+51729974693233641689901335581750771368291828240422018860515119656908623426021308685461258226190190661)r   r   r    r   r,   r   )rc   r   r   r	   test_gamma_huge_2  s    


rm   c              C   s   dt _dd d dd t d  } dt _t| }t|jdksBtt|jd	ksTtd
t _t| }t|jdksttt|jdkstd S )Ni  r   P   r   F   rj   r   ze-6.82925203918106e+2636286142112569524501781477865238132302397236429627932441916056964386399485392600zd8.54647143678418e+2636286142112569524501781477865238132302397236429627932441916056964386399485392600r   z-6.8292520391810548460682736226799637356016538421817e+2636286142112569524501781477865238132302397236429627932441916056964386399485392600z8.5464714367841748507479306948130687511711420234015e+2636286142112569524501781477865238132302397236429627932441916056964386399485392600)r   r   rB   r,   r   realr   imag)rc   rd   r   r   r	   test_gamma_huge_3  s    


rr   c              C   sB   d} dt _tt| dkstdt _tt| dks8tdt _d S )Ny      @     v@r   z2(8.95783268539713e+5164 - 1.94678798329735e+5164j)r   zx(8.9578326853971339570292952697675570822206567327092e+5164 - 1.9467879832973509568895402139429643650329524144794e+5164j))r   r   r   r,   r   )rc   r   r   r	   test_gamma_huge_4  s    



rs   c              C   s   dt _dd t d } dt _t| }t|jdks6tt|jdksHtdt _t| }t|jd	kshtt|jd
ksztdt _d S )Ni  r   rK   r   r   zO-3.27753899634941e-227396058973640224580963937571892628368354580620654233316839zN-7.1519888950416e-227396058973640224580963937571892628368354580620654233316841r   zr-3.2775389963494132168950056995974690946983219123935e-227396058973640224580963937571892628368354580620654233316839zr-7.1519888950415979749736749222530209713136588885897e-227396058973640224580963937571892628368354580620654233316841)r   r   rB   r,   r   rp   r   rq   )rc   rd   r   r   r	   test_gamma_huge_5  s    

rt   c              C   s   dt _dttdd   } dt _t| }t|jdks:tt|jdksLtdt _t| }t|jdksltt|jd	ks~td S )
Nr+   r   r   i  r   z2.0z1.84556867019693e-1000r   z91.8455686701969342787869758198351951379156813281202e-1000)	r   r   rB   r    r,   r   rp   r   rq   )rW   rd   r   r   r	   test_gamma_huge_7  s    ru   c               C   s   dt _tdt
 stdt _tdds2ttddsDttdd	sVttd
dshtdt _tddsttddsttddsttd
dstd S )Nr   r      r   z -0.07281584548367672486058637587r   z!-0.009690363192872318484530386035r   z 0.002053834420303345866160046543r   z 0.002325370065467300057468170178g*gF|؃gT3`?g;c?)r   r   Z	stieltjesr   r`   r   r   r   r   r	   test_stieltjes  s    rw   c           	   C   s  dt _tdtd  kr"dks(n tdd tdD dddd	d
dddgksRtttddksfttttsvttttsttt	tsttt
t
ksttt
t
kstt	t
t
kstttt
 sttddsttddstdd tdD dddddddgks&tdd tdddD dddddddgksTttd} | dkrrt| tsvtt	d} | dkrt| tstd S ) Nr   r   r   c             S   s   g | ]}t |qS r   )superfac)r6   r3   r   r   r	   r8   !  s    z test_barnesg.<locals>.<listcomp>r   r   r   r   i   i   i {l     2ft i  z3.24570818422368e+1177245gffffff?gd?y       @      @ygƿ1?c             S   s   g | ]}t |qS r   )hyperfac)r6   r7   r   r   r	   r8   ,  s    rj   r   l   i l  i \&l     c             S   s   g | ]}t |qS r   )ry   )r6   r7   r   r   r	   r8   -  s    ir<   i y              )r   r   Zbarnesgr   r-   r   rx   r0   r1   ry   r:   r   
isinstancer2   )rW   r   r   r	   test_barnesg  s&    "**.r|   c              C   s  dt _dd dD } x*| D ]"}td|td|  stqW x(| D ] }td||d|  sFtqFW x,| D ]$}td||d| d  sptqpW x4| D ],}td	||d|  d| d
  stqW x@| D ]8}td||dd|  |d   d| d  stqW td
dds&ttd
dds<ttdddsRttdddshttddds~ttdddsttdddsttddtt dsttd	ddsttd	ddsttd
dds
ttddds ttdd d!s6ttd"td
  d"td  d#s\ttd$dtd$svttd$dt	d$ sttd%d&d'sttd%d(d)std S )*Nr   c             S   s   g | ]}t |qS r   )Z	mpmathify)r6   rZ   r   r   r	   r8   5  s    z test_polylog.<locals>.<listcomp>)r   g      ?gGz?r   g      r<   y              ?y      @      @r   r   r   r   r=   r   r$   r   rj   y[-F@U޴ig!fGg?gV?ggy        ?y#]ſ`j?g?y8n+Yd?^n)ӿggᾁyp/M?[]?i  g jߊg=.g?i2  r<   g-C6zg      ?yB8$P?g ?y      @      @g      ?gtHgWcFr'   yQ K1Q )
r   r   Zpolylogr   rP   r   r.   rB   rH   rO   )ZzsrZ   r   r   r	   test_polylog3  s<    
 "
  
 $
 ,
 8&r}   c               C   s8  dt _tddd dsttddd ds6ttdd	d
sJttddds^ttdddkspttdddksttdddksttdtdksttdt dkstttdtsttdddksttdddksttdttksttdt t kstttdts0ttdddksDttdddksXttddksjttdddks~ttdddksttdddksttdddstdt _tdddksttdddksttddkstdt _tdddksttd dt	t
d  s4td S )!Nr   r   g|=l    d(	 go   ?r   g8   ?r   y              @y)fɳ?@r   g      @g*
0(@r   r   r   i ii ii0r   z3.4746902914629720259e74rn   l   vreh@3 VBFv'r.y	UR|s&T rS   l   .e0u&Y:j+I<1 |6vJb J   l   rw_3dtL#m,`3	.v(*A=V y              4@y @j#MB (3VjwBg      ?)r   r   Zpolyexpr   r   Zbellr:   r0   r1   Zsincr/   r   r   r   r	   test_bell_polyexpO  s<    r   c               C   s^   dt _tddsttdds*ttdtks:tttdksJttttsZtd S )Nr   g?y2k?-DT!	@r   gMҵ?r   r   )r   r   Z	primezetar   r   r:   r0   r1   r   r   r   r	   test_primezetau  s    r   c              C   s  dt _tddsttdds*ttdddd	s@ttd
dddsVttd
dddslttddddstd$dd} | tddst| tddst| tddst| tjddddst| td
dst| tjd
dddst| tjdddds(t| tjddddsBt| tjdddds\t| tjddddsvt| tjdddd st| tjdddd!st| tjdddd"st| tjdddd#std S )%Nr   y      ?     j@y& 6#+?@y      ?     j@y5g?7-m^I?y      ?    .Ar   )
derivativey@V%<y      ?    .AyˇD@-2r   yV!V1y      ?    .y.F'@	p 1@ư>c             S   s   t | | |t | k S )N)rA   )rc   rd   Ztolr   r   r	   r     s    ztest_rs_zeta.<locals>.aey      ?     jy& 6#+?y      ?     jy5g?7-m^Iyz?ی^p@y.F'@	p 1y$P??y,ς?%@lUS>r   yԂ]5MԺ$k@y!&@\_Ur   y(1Sg@y-6ڿ+~y"虺m"'=UA@yِ@[@MomykLVy"DЫ@)r   )r   r   rH   r   r   fp)r   r   r   r	   test_rs_zeta}  s,    
r   c               C   sb   dt _tddsttdddds.ttddddsDttdt d	dd
s^td S )Nr   i g1/[㳄@r   )r   gKKr   gFhnqr   yQ1@a߻w)r   r   Zsiegelzr   r   rB   r   r   r   r	   test_siegelz  s
    r   c              C   s   dt _tdddd} tdddd}tdddd}t| dsBtt|d	sTtt|}|jd
slt|jds|tdt _tdddd} tdddd}tdddd}t| dstt|dstt|}|jdst|jdstd S )Nr   r   z1e-10T)exactz-1e-10z1e-10jg# _Bga_gox?g    _r   z1e-50z-1e-50z1e-50jZ1e50z-1e50z40.57721566490153286060651209008240243104215933593992)r   r   ZfaddrH   r   r   rp   rq   )s1s2Zs3rZ   r   r   r	   test_zeta_near_1  s$    r   N)#ZmpmathZmpmath.libmpr   r   r   r
   r#   r(   r4   r;   rE   rI   rR   rU   rX   r^   r_   ra   re   rh   ri   rk   rm   rr   rs   rt   ru   rw   r|   r}   r   r   r   r   r   r   r   r   r	   <module>   s>   -g'
1#	)	&	