a
    <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J d S )Nr   
         )r   r    r   r   k/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/mpmath/tests/test_gammazeta.pytest_zeta_int_bug   s    r
   c                  C   s  t ddksJ t ddks J t ddks0J t ddks@J t d	d
ksPJ t ddks`J t ddkspJ t dd
ksJ t ddksJ t ddksJ t ddksJ t d\} }| d dksJ |dksJ t d\} }| d dksJ |dksJ dt_tddksJ tddks,J tdds@J tddksRJ td	dsfJ tddksxJ tdd sJ ttdd!ksJ ttd"d#ksJ ttd$d%ksJ ttd&d'ksJ d(t_ttdd)ks J ttd"d*ksJ ttd$d+ks,J ttd&d,ksBJ dt_tdtdd- sdJ d.t_tdtdd- sJ dt_d S )/Nr   )   r   r   )   r   )r         )r   r      )r         r   )r   *      r   )r   B      )iMi
     )i[  i         d(	 is	i	   l   kL3 iq   r   gUUUUUU?ggaa?z0.0757575757575758   z7.62772793964344e+267順 z-5.82229431461335e+376755iz1.19570355039953e+6767525842   z50.075757575757575757575757575757575757575757575757576z87.6277279396434392486994969020496121553385863373331e+267z<-5.8222943146133508236497045360612887555320691004308e+376755z>1.1957035503995297272263047884604346914602088317782e+676752584r   iP  )ZbernfracmpdpsZ	bernoulliaestrmpf)pqr   r   r	   test_bernoulli   sN    r&   c                   C   st  dt _tdddsJ tddds.J tdddsBJ tdddsVJ tdddsjJ tddds~J tdddsJ tddd	sJ tdddsJ tddd
sJ tdddsJ tdddsJ tdddsJ tddds"J tddds8J tdddsNJ tdddsdJ tdddszJ tdddsJ tdddsJ tdddsJ tdddsJ tdddsJ tdddsJ tdddsJ tddds*J tddds@J tdddsVJ tdddslJ tdddsJ tdddsJ tdddsJ tdddsJ tdddsJ tdddsJ tdddsJ tdddsJ tddds2J tdddsHJ tddds^J tdddstJ tdddsJ td dd!sJ td ddsJ td ddsJ td dd"sJ td ddsJ td dd sJ tddds$J tddds:J tdddsPJ tdddsfJ tddds|J tdddsJ tdddsJ tddd	sJ tdddsJ tddd
sJ tddds J tdddsJ tddds,J tdddsBJ tddd#sXJ tddd$snJ tdddsJ tdddsJ tddd%sJ tddd
sJ tdddsJ tddd&sJ tddd#sJ tddd'sJ tddds4J tdddsJJ tddd(s`J tddd)svJ tdddsJ tdddsJ tdddsJ tddd	sJ tdddsJ tddd*sJ tdddsJ tddds&J tddds<J tdddsRJ tddd+shJ tddd,s~J tdddsJ tdddsJ td dd-sJ td dd.sJ td ddsJ td dd/sJ td dd0sJ td dd1s.J td2d2d3sDJ td4d5d6sZJ td4d5d7spJ 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   z-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/4'  z5.8196915936323387117e+39999   g     1@gJrg,Qr%)r   r    Zbernpolyr!   Z	eulerpolyr   r   r   r	   test_bernpoly_eulerpoly4   s    r-   c                  C   s  dt _tddsJ tdds*J tdds<J tdd	sNJ td
ds`J tddsrJ tddsJ tddsJ d} tddD ]}t|| ksJ | |9 } qdD ]6}d} |t _tddD ]}t|| ksJ | |9 } qqdt _tdttsJ dt _tdtd  krBdksHn J tddksZJ t	tt
slJ tddsJ tddksJ tddksJ tddksJ tddksJ td d!sJ td"d#sJ td$td%d#s
J d S )&Nr         ?g~?@-C6?g	!@i,  z1.0201917073881354535e612r   gkﴑ[gQgf<9b1?y      ?      ?y}?'މ^eÿy      {Gz?yT})ۿOf[X@y      4@      >@y<lsfsuWAr   r   )   iX  i   d         ?r   r   r   L  z4.8579168073569433667e2866r   r   g      ?y       @       @yaaJ
!z¶%@Z1e10000z 2.302485092994045684017991e10004Z1e10000jz!-1.570796326794896619231322e10000)r   r    gammar!   rangesqrtpi	factorialZfacisnannanZrgammaZloggammampc)Zfactir    r   r   r	   
test_gamma   sB    
&r>   c                   C   s   dt _dd tdD g dks$J tdds6J tdd	sHJ td
dsZJ tddslJ tttks|J ttt sJ d S )Nr   c                 S   s   g | ]}t |qS r   )fac2.0nr   r   r	   
<listcomp>       ztest_fac2.<locals>.<listcomp>r   )
r   r   r   r   r   r   0   r1   i  i  r(   gUUUUUU?r*   ggjVQr   g!a?@Fy      ?      ?yHO?j6.Vֿ)r   r    r6   r?   r!   infr:   r   r   r   r	   	test_fac2   s    rG   c                  C   s  dt _d} d}t}tdgddgdks*J tddgdgtksBJ ttdgd	g|d|  |d	|    dk stJ ttddgd	dg|d|  |d|   |d	|   |d|    dk sJ td
ddksJ tdddksJ tdddksJ ttttdt tt sJ tddds4J t	d	ddksHJ t	d	dd	ks\J t	dd
dkspJ t	d
ddksJ t
dddksJ t
dddksJ t
dddksJ t
d
dd
ksJ t
dddksJ t
dd
dksJ t
dddksJ t
dddks$J t
d	dd
ks8J t
dddksLJ t
dddks`J t
dddkstJ tdddksJ tddtksJ td
dtksJ tddtksJ tdddsJ tddtd sJ dtdd dsJ tttdks"J ttt ts8J ttdtsLJ ttdts`J ttd td t  krdksn J ttd!tksJ ttd"t ksJ td#dtd  d$sJ td"d dksJ tdd
d%sJ tddd&sJ d S )'Nr   g:0yE>r/   r   r'   r   r(   r   r   g      @r      z-255.5815971722918z-0.5119253100282322z-0.1952720278805729485r      r   r   g      @      ?g     @@r4   i"9	 gUUUUUU?   l     I5 r2   grP@r3         r         ?       @y+5?\K9ʵ?gUUUUUUտz18.157330562703710339)r   r    r5   Z	gammaprodrF   absrfjr!   ffZbinomialbetar8   r:   )hepGr   r   r	   test_gamma_quotients   s^    2N&*rX   c                  C   sR  dt _tdtd d s J tdtd d s:J ttdtd d sXJ tddsjJ tdds|J td	d
sJ tdtd d sJ tddksJ tdtdd sJ tddksJ tddksJ tttsJ tddsJ tdds.J ttd	ddsHJ ttd	ddsbJ ttd	dds|J ttdddsJ ttdddsJ dt _d} ttd	| ddsJ dt _tddd  dsJ tdd	dksJ tddd	ks J tdd	dds8J td d!d"sNJ d S )#Nr   r   r   g       @r2   r   r   r   r3   gs~]r   r   rI   r'   x   rH   KH9KHg"fD,@gOc5@g9@Ww'&l7r   z8236.5242296658162058024755079556629786895294952121891237gaU,$Db6y      N      @r   "   y9A!@.@g9B.ֿrN   y              ?yN*i6?)	r   r    zetar!   r8   r<   r#   r:   r;   )Zimr   r   r	   	test_zeta   s:    r`   c                  C   s0  dt _tddksJ tddks&J tddks6J tddksFJ tddksVJ td	d
ksfJ tddksvJ tddksJ tdtdsJ tdtd d sJ tddtd  d sJ tddk sJ tddddk sJ tddddksJ tddddk s$J tddddks:J tdtdksPJ d} t| ddd|    t|  s|J d} t| ddd|    t|  sJ tddsJ td d!sJ td"dsJ td#dsJ ttd"d$dsJ ttd#d$ds,J d S )%Nr   rI   r   rH   rZ   r3   r   r.   r'   g      r(   ig  z\Ar   r   r   r   I   i jh r   <   droundingur+         @        r         @      @y            @      Yg@o.>Vg?g^s?r[   r\   r]   )r   r    altzetar!   logr8   r_   r<   )sr   r   r	   test_altzeta   s8    ((rm   c                  C   s   dt _ttdksJ dt _tdds.J tdt dsDJ dt _td	} dt _t| d d
kslJ ttd tddksJ tdtddksJ ttd dksJ tddksJ d S )Nr   r   r   r2   z61.0000000000000000000000000000007888609052210118073522(   z61.0000000000000000000000000000000000000148407238666182r+   i  z1.02363019598118e-9934r   rd   i  )r   r    r_   rF   r!   r8   r"   r   )vr   r   r	   test_zeta_huge>  s    rp   c                  C   sR   dt _t dd  } dt _tt| dks.J dt _tt| dksHJ dt _d S )N   r   rn   r   z=2.55880492708712e+1233536161668617575553892558646631323374078r   z`2.5588049270871154960875033337384432038436330847333e+1233536161668617575553892558646631323374078)r   r    r8   r"   r_   ar   r   r	   test_zeta_negativeM  s    rt   c                  C   s>  dt _dd } dd }| dtdd  kr8tdks>n J | tdsPJ | t dsdJ | t d	 d
s|J | tt dsJ | t t dsJ t| d	dsJ | ddsJ | ddsJ | ddsJ | ddsJ | ttksJ |tdks,J tdtdks@J |tdsTJ |t dsjJ |tt dsJ |t t dsJ dtdd	dt t   dsJ | d	dt t  dsJ t	| t
sJ t	| t sJ | d d!sJ | d"| ds4J | d#d$sHJ t	tdtdtsbJ t	tdtdt
s|J t	tdtdt sJ t	tdtd	tsJ t	tdtd	t
sJ t	tdtd	t sJ t	tdtttsJ t	tdtt
t
sJ t	tdtt t s:J d S )%Nr   c                 S   s
   t d| S Nr   psizr   r   r	   <lambda>X  rD   z test_polygamma.<locals>.<lambda>c                 S   s
   t d| S Nr   rv   rx   r   r   r	   rz   Y  rD   r   r   guTE?g,$7@r   gdGDE@y)\Z[?ÕޛD?ybabJr?N<g?Vcb?绽|=g& _r]   g\)c=y|=|=yF<	 _    _AyWw'&l7Ww'&l7y\)c-ȥ\)c-Hr   ga#?g^jJ@yY/?Iyϐ=ӿ{?i@B r   r   yhVKٿy_%F@@K?ri   g69u@rg   y      Y      @y]vCq@˼@)r   r    rw   Zdigammar8   r!   rR   ZfindrootrF   r:   r;   r<   )psi0psi1r   r   r	   test_polygammaV  sJ    (& r   c                   C   s6   dt _ttdtdksJ ttdtdks2J d S )Nr2   r   zf0.9772133079420067332920694864061823436408346099943256380095232865318105924777141317302075654362928734r   zf-12.98876181434889529310283769414222588307175962213707170773803550518307617769657562747174101900659238)r   r    r"   rw   r8   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>J | dt sRJ |ddtd  slJ |dtd d	 sJ |d
td dt  sJ |ddt sJ dt _dt dtd td   }dt _t	dd|sJ t	ddtd sJ d S )Nr   c                 S   s
   t d| S ru   rv   rx   r   r   r	   rz     rD   z+test_polygamma_identities.<locals>.<lambda>c                 S   s
   t d| S r{   rv   rx   r   r   r	   rz     rD   c                 S   s
   t d| S )Nr   rv   rx   r   r   r	   rz     rD   r3   r   r   r   r.   r   rI   rJ   iJr   r   g?)
r   r    r!   eulerrk   r8   catalanZaperyr7   rw   )r}   r~   Zpsi2rf   r   r   r	   test_polygamma_identities  s     r   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  }||sJ d
t _d S )Nc                 S   s
   t d| S ru   rv   rx   r   r   r	   rz     rD   z'test_foxtrot_identity.<locals>.<lambda>r   r   r   r   r   r3   r   r   )r   r    fractionr8   Zsechr7   r!   )r}   rs   bxyr   r   r	   test_foxtrot_identity  s    :r   c                   C   s   dt _ttdtdksJ ttdtdt  dks:J ttdtdt t  dks\J dt _ttdtdksxJ ttdtdt  d	ksJ ttdtdt t  d
ksJ d S )Nr2   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"   rw   r8   erR   r   r   r   r	   test_polygamma_high_order  s    "r   c                   C   s   dt _tddksJ tddks&J tddks6J tddsHJ tdd	sZJ td
d dspJ tdddtd  sJ tttksJ tddksJ tddsJ d S )Nr   r   r   r   rL   r   gUUUUUU?r   g_b7@r   r   gS@r3   y       @        y      ?        rO   yk4q?@w?)r   r    Zharmonicr!   rk   rF   r   r   r   r	   test_harmonic  s    r   c                  C   sP   dt _tdd } dt _tt| dks,J dt _tt| dksFJ dt _d S )N  r      r   z6.26075321389519e+12458010678r   z@6.2607532138951929201303779291707455874010420783933e+12458010678r   r    r#   r"   r5   r   r   r   r	   test_gamma_huge_1  s    r   c                  C   sN   dt _tdd d } dt _tt| dks0J dt _tt| dksJJ d S )	Nr   r   r2      r   zw1.82341134776679e+51729974693233641689901335581750771368291828240422018860515119656908623426021308685461258226190190661r   z1.82341134776678875374414910350027596939980412984e+51729974693233641689901335581750771368291828240422018860515119656908623426021308685461258226190190661r   r   r   r   r	   test_gamma_huge_2  s    

r   c                  C   s   dt _dd d dd t d  } dt _t| }t|jdksBJ t|jd	ksTJ d
t _t| }t|jdkstJ t|jdksJ d S )Nr   r   P   r   F   r   r   ze-6.82925203918106e+2636286142112569524501781477865238132302397236429627932441916056964386399485392600zd8.54647143678418e+2636286142112569524501781477865238132302397236429627932441916056964386399485392600r   z-6.8292520391810548460682736226799637356016538421817e+2636286142112569524501781477865238132302397236429627932441916056964386399485392600z8.5464714367841748507479306948130687511711420234015e+2636286142112569524501781477865238132302397236429627932441916056964386399485392600r   r    rR   r5   r"   realimagr   r   r   r   r	   test_gamma_huge_3  s$    r   c                  C   sB   d} dt _tt| dksJ dt _tt| dks8J 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"   r5   r   r   r   r	   test_gamma_huge_4  s    

r   c                  C   s   dt _dd t d } dt _t| }t|jdks6J t|jdksHJ dt _t| }t|jd	kshJ t|jd
kszJ dt _d S )Nr   r   rb   r   r   zO-3.27753899634941e-227396058973640224580963937571892628368354580620654233316839zN-7.1519888950416e-227396058973640224580963937571892628368354580620654233316841r   zr-3.2775389963494132168950056995974690946983219123935e-227396058973640224580963937571892628368354580620654233316839zr-7.1519888950415979749736749222530209713136588885897e-227396058973640224580963937571892628368354580620654233316841r   r   r   r   r	   test_gamma_huge_5  s    r   c                  C   s   dt _dttdd   } dt _t| }t|jdks:J t|jdksLJ dt _t| }t|jdkslJ t|jd	ks~J d S )
Nr2   r   r   r   r   z2.0z1.84556867019693e-1000r   z91.8455686701969342787869758198351951379156813281202e-1000)r   r    rR   r#   r5   r"   r   r   )rs   r   r   r   r	   test_gamma_huge_7  s    r   c                   C   s   dt _tdt
 sJ dt _tdds2J tddsDJ tdd	sVJ td
dshJ dt _tddsJ tddsJ tddsJ td
dsJ 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	   test_stieltjes  s    r   c                  C   s|  dt _tdtd  kr"dks(n J dd tdD g dksFJ ttdd	ksZJ tttsjJ tttszJ tttsJ tt	t	ksJ tt	t	ksJ tt	t	ksJ ttt	 sJ td

dsJ td
dsJ dd tdD g dksJ dd tdddD g dks4J td} | dkrRt| tsVJ td} | dkrtt| tsxJ d S )Nr   r   r   c                 S   s   g | ]}t |qS r   )superfac)rA   r=   r   r   r	   rC   !  rD   z test_barnesg.<locals>.<listcomp>r   )r   r   r   r   i   i   i {l     2ft r   z3.24570818422368e+1177245gffffff?gd?y       @      @ygƿ1?c                 S   s   g | ]}t |qS r   hyperfacr@   r   r   r	   rC   ,  rD   r   )r   r   r   l    l  i \&l     c                 S   s   g | ]}t |qS r   r   r@   r   r   r	   rC   -  rD   )r   r   r   rH   r   r   i y              rH   )r   r    Zbarnesgr6   r"   r   r:   r;   r   rF   r!   
isinstancer<   rr   r   r   r	   test_barnesg  s&    " $r   c                  C   s  dt _dd dD } | D ]"}td|td|  sJ q| D ] }td||d|  s@J q@| D ]$}td||d| d  sfJ qf| D ],}td	||d|  d| d
  sJ q| D ]8}td||dd|  |d   d| d  sJ qtd
ddsJ td
dds(J tddds>J tdddsTJ tdddsjJ tdddsJ tdddsJ tddtt dsJ td	ddsJ td	ddsJ td
ddsJ tdddsJ tdd d!s"J td"td
  d"td  d#sHJ td$dtd$sbJ td$dtd$ s~J td%d&d'sJ td%d(d)sJ d S )*Nr   c                 S   s   g | ]}t |qS r   )Z	mpmathify)rA   ry   r   r   r	   rC   5  rD   z test_polylog.<locals>.<listcomp>)r   r3   gGz?r   r   rH   y              ?rh   r   r   r   r   rI   r   r'   r   r   y[-F@U޴r   g!fG?gV?ggy        ?y#]ſ`j?g?y8n+Yd?^n)ӿggᾁyp/M?[]?i  g jߊg=.g?i2  rH   g-C6zr3   yB8$P?g ?rh   rL   gtHgWcFr,   yQ K1Q )	r   r    Zpolylogr!   rk   r7   rR   r_   rj   )Zzsry   r   r   r	   test_polylog3  s2    (&*2>&r   c                   C   s8  dt _tddd dsJ tddd ds6J tdd	d
sJJ tddds^J tdddkspJ tdddksJ tdddksJ tdtdksJ tdt dksJ ttdtsJ tdddksJ tdddksJ tdttksJ tdt t ksJ ttdts0J tdddksDJ tdddksXJ tddksjJ tdddks~J tdddksJ tdddksJ tdddsJ dt _tdddksJ tdddksJ tddksJ dt _tdddksJ td dtt	d  s4J d S )!Nr   r   r|   r   go   ?r   g8   ?r   y              @y)fɳ?@r   g      @g*
0(@r   r   r   i ii ii0r   z3.4746902914629720259e74r   l   vreh@3 VBFv'r.y	UR|s&T rn   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 (3VjwBr3   )
r   r    Zpolyexpr!   ZbellrF   r:   r;   Zsincr8   r   r   r   r	   test_bell_polyexpO  s<    r   c                   C   s^   dt _tddsJ tdds*J tdtks:J ttdksJJ tttsZJ d S )Nr   r   y2k?-DT!	@r   gMҵ?r   r   )r   r    Z	primezetar!   rF   r:   r;   r   r   r   r	   test_primezetau  s    r   c                  C   s  dt _tddsJ tdds*J tdddd	s@J td
dddsVJ td
dddslJ tddddsJ d$dd} | tddsJ | tddsJ | tddsJ | tjddddsJ | td
dsJ | tjd
dddsJ | tjdddds(J | tjddddsBJ | tjdddds\J | tjddddsvJ | tjdddd sJ | tjdddd!sJ | tjdddd"sJ | tjdddd#sJ d S )%Nr   y      ?     j@y& 6#+?@y      ?     j@y5g?7-m^I?y      ?    .Ar   Z
derivativey@V%<y      ?    .AyˇD@-2r   yV!V1y      ?    .y.F'@	p 1@ư>c                 S   s   t | | |t | k S )N)rP   )r   r   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    r_   r!   fp)r!   r   r   r	   test_rs_zeta}  s,    
r   c                   C   sb   dt _tddsJ tdddds.J tddddsDJ tdt d	dd
s^J d S )Nr   r   g1/[㳄@r   r   gKKr   gFhnqr   yQ1@a߻w)r   r    Zsiegelzr!   rR   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sBJ t|d	sTJ t|}|jd
slJ |jds|J dt _tdddd} tdddd}tdddd}t| dsJ t|dsJ t|}|jdsJ |jdsJ 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faddr_   r!   r   r   )s1s2Zs3ry   r   r   r	   test_zeta_near_1  s$    r   N)#ZmpmathZmpmath.libmpr   r   r   r
   r&   r-   r>   rG   rX   r`   rm   rp   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   <module>   s>   -g'
1#	)	&	