+
    i-                       R t ^ RIt^ RIt^RIHt ^RIHtHtHtHtH	t	 ^RI
HtHtHtHt ^RIHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4H5t5H6t6H7t7H8t8H9t9H:t:H;t;H<t< ^RI=H>t>H?t?H@t@HAtAHBtBHCtCHDtDHEtEHFtFHGtGHHtHHItIHJtJHKtKHLtLHMtMHNtNHOtOHPtPHQtQHRtRHStS ^RITHUtUHVtVHWtWHXtXHYtYHZtZH[t[H\t\H]t]H^t^H_t_H`t`HataHbtbHctcHdtdHeteHftfHgtgHhthHitiHjtjHktkHltlHmtmHntn ]>R 4       to]>R	 4       tp]>R
 4       tq]>R 4       tr ]>R 4       ts]>R 4       tt]>R 4       tu]?! ]s4      tv]?! ]r4      tw]?! ]p4      tx]?! ]q4      ty]?! ]o4      tz]?! ]t4      t{]?! ]u4      t|Rt} / t~]!! ^4      t]!! ^4      tR t]! ]}4      tR8R ltR8R ltR t R tR t]3R lt]3R lt]3R lt]3R lt / tR tRt/ t]3R lt]^ 3R lt]^ R3R lt]3R  lt]3R! ltRtR" t. s. s. sR# tR$ t^
tR% tR&t]R'8  g   Q hR(t^t/ t/ t]! ]^,           4       U u. uF  p ]!! ]! V 4      4      NK  	  up tR) tR* tR+ tR, tR- tR. tR9R/ ltR9R0 ltR:R1 ltR:R2 ltR:R3 ltR:R4 ltR:R5 ltR:R6 lt]3R7 ltR# u up i );ao  
-----------------------------------------------------------------------
This module implements gamma- and zeta-related functions:

* Bernoulli numbers
* Factorials
* The gamma function
* Polygamma functions
* Harmonic numbers
* The Riemann zeta function
* Constants related to these functions

-----------------------------------------------------------------------
N)xrange)MPZMPZ_ZEROMPZ_ONE	MPZ_THREEgmpy)list_primesifacifac2moebius)-round_floorround_ceiling
round_downround_upround_nearest
round_fastlshift
sqrt_fixed
isqrt_fastfzerofonefnonefhalfftwofinffninffnanfrom_intto_intto_fixedfrom_man_expfrom_rationalmpf_posmpf_negmpf_absmpf_addmpf_submpf_mulmpf_mul_intmpf_divmpf_sqrtmpf_pow_intmpf_rdiv_intmpf_perturbmpf_lempf_ltmpf_gt	mpf_shiftnegative_rndreciprocal_rndbitcountto_float	mpf_floormpf_signComplexResult)constant_memodef_mpf_constantmpf_pipi_fixed	ln2_fixedlog_int_fixedmpf_ln2mpf_expmpf_logmpf_powmpf_coshmpf_cos_sinmpf_cosh_sinhmpf_cos_sin_pi
mpf_cos_pi
mpf_sin_piln_sqrt2pi_fixedmpf_ln_sqrt2pisqrtpi_fixed
mpf_sqrtpicos_sin_fixed	exp_fixed)mpc_zerompc_onempc_halfmpc_twompc_abs	mpc_shiftmpc_posmpc_negmpc_addmpc_submpc_mulmpc_divmpc_add_mpfmpc_mul_mpfmpc_div_mpfmpc_mpf_divmpc_mul_intmpc_pow_intmpc_logmpc_expmpc_pow
mpc_cos_pi
mpc_sin_pimpc_reciprocal
mpc_squarempc_sub_mpfc                    V ^,           p \         V ,          ;r^ ^^rTpV'       d   V^ V^,          ,          ^V,          ^,
          ,          ,          pV^^V,          ,
          ^V^,          ,          ,           ^,          ,          pVRV^,
          ,          ,          ^(V^,          ,          ^V,          ,
          ^,           ,          V^,          ^V,          ^,
          ,          ,          pW4,          pV^,          pK  V^,	          #    r   )precaonestns   &     v/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/mpmath/libmp/gammazeta.pycatalan_fixedru   H   s    "9DoAA!A
	R!Q$Y!A#a%  	qAvbAg~!!qsOr!Q$wr!t|A~.1a41Q3q5>B		Q=    c                    \        W R ,          ,           ^,           4      p\        p\        ^4      p\        V,          ;rE\	        V4      p\        \        WfV4      ^4      ;rx^p	 \        \        ^V	,          V4      4      p
\        WV4      p
\        WV4      p
\        W4      p
W,
          V,          V	,          V,	          pV^d8  d   MzW+,          pWE^V	,          ^,           ,          V^V	,          ,          ,
          ,          pV	^,          p	\        V^V	,          ^V	,          ^,
          ,          V4      p\        WxV4      pK  W!,          \        V4      ,          p\        \        W!) 4      V4      p\        W4      pV# )      ?)intr   r   r   r;   r1   r'   r$   mpf_bernoullir)   r   r(   r=   r@   r    )rn   wprq   facrr   ONEpipipowtwopi2rs   zeta2ntermKs   &            rt   khinchin_fixedr   m   s?   	T#I"	#BA
1+CmA	Bwrr2A66E	A
qsB/0+b)&%,!#)b0#: 	
		1Q3q5\C!A#J&&	Q#!ac!e}b1r*	
Yr]"AQ$b)AAHrv   c           	         V ^,           p\        RV ,          ^,           4      p\        V,          p\        p\        ^V4       F#  pV\	        WQ4      V^,          ,          ,          pK%  	  \	        W!4      pWCV,           V,          ,          pWFV^,          ^,          ,          ,          pV^,          p^pRp	^p
\        ^4      p^p W,          W,          ,           V,          p\        W) 4      p\        ^V,          V4      p\        WV4      p\        WV4      p\        W4      p\        V4      ^d8  d   MWN,          pWV
,          ,
          V
) V	,          Wr,          V
^,           3w  rrzWV
,          ,
          V
) V	,          Wr,          V
^,           3w  rrzV^,          p\        V^V,          ^V,          ^,
          ,          V4      pEK  \        V4      pV^,          pWA,          V^,          V,	          ,          pV\        V4      ,          pV\        \        \        ^V,          V) 4      V4      V4      ,          pV^,          p\!        \        WA) 4      V4      p\        VV 4      # )   gQ?)ry   r   r   ranger>   r   r    rz   r'   r)   r   absr(   r<   euler_fixedrA   r@   )rn   r{   Nr}   rq   klogNpNro   bjr|   DBr   r~   As   &                rt   glaisher_fixedr      s   	B 	DIMA
R-CA1a[	]1!QT))  D *	A!Q$(	A	
AB	A
A	A
1+C	A
gB&C !A#r"qR t"%!t9s? 	
	!eaRT241,b!eaRT241,b	Q#!ac!e}b1	"BFA	
b!erk"ARA',qtbS126	;;A"HAQ$b)AAtrv   c                    V ^,          p \         V ,          p\        ^M4      V ,          p^p\        pV'       d   WB,          pW^
,          ,          pV^V,          ^,           ^,          ^V,          ^,          ,          ,          pRV,          ^V^,          ,          ^V,          ,           ^M,           ,          V,          pV^,          pK  V^,	          # rj   )r   r   r   )rn   dr   rs   rq   s   &    rt   apery_fixedr      s    BJD4Ar7d?D	AA
			e	1Q
qsQh&'Qw#q!t*s1u,r12Q6	Q=rv   c                 0   ^pW,          p \        \        P                  ! V ^,          \        P                  ! ^4      ,          ^4      4      ^,           p^V,          pV) \        V 4      ,          ;rE\        V ,          ;rg^p Wc^,          ,          V^,          ,          pWC^,          ,          V,          V,           V,          pWT,          pWv,          p\        \        V4      \        V4      4      ^d8  d   MV^,          pK  WPV,
          ,          V,          # )r   )ry   mathlogr=   r   maxr   )	rn   extraprs   r   Ur   Vr   s	   &        rt   r   r     s    EMDDHHd1f+Q/014A	1AByAtOA	A
dFAqDL!tVQY]Q		s1vs1v$	QU
Oarv   c                    V ^,           p^p\        V4      p \        W!4      pV\        8X  d   MM\        WA4      p\	        V\        V4      V4      p\        V\        V4      V4      p\        W44      pV^,          pKe  \        W04      # )rk   )
	mpf_eulermpf_zeta_intr   rA   r(   r   r)   r   r%   r   )rn   r{   mrq   rr   s   &    rt   mertens_fixedr   *  sz    	B	A"A
9AN71:r*Ax{B'AM	QArv   c           	      h   R  p^V ,          ^,           p\         pR Uu. uF  p\        ^WB4      NK  	  ppV Uu. uF  p\        WDV4      NK  	  pp^p \        Wr4      p\	        ^4       F?  p	\        V\        \         Wi,          4      V4      p\        Wi,          WY,          V4      Wi&   KA  	  \        W! V4      ) V4      p\        W^
,           R4      \         8X  d   M\        W8V4      pV^,          pK  \        V\        R4      V4      p\        V\        R4      V4      p\        W04      # u upi u upi )c                 ^   a  \        V 3R  l\        ^S ^,           4       4       4      S ,          # )c              3   x   <"   T F/  pSV,          '       d   K  \        V4      SV,          ,          x  K1  	  R # 5iN)r   ).0r   rs   s   & rt   	<genexpr>-twinprime_fixed.<locals>.I.<locals>.<genexpr>=  s,     H}!AaCC%71:1%%}s   :!:)sumr   rs   s   frt   Itwinprime_fixed.<locals>.I<  s#    Hva!}HH!KKrv   rs   )            i'  i 	  )r   r!   r'   r   r   r&   r+   r"   r   r)   r   )
rn   r   r{   resr   primesppowersrs   ro   is
   &         rt   twinprime_fixedr   :  s   L	
4"B
C-67YmAa#YF7(./1wq2G/	A
qA744b9A VY;GJ  AaD5"%12gs#t+ cb!	Q
#x("
-C
#x("
-CC# 8/s
   D*D/i  c                    \         P                  ! V ^4      p\        RRV,          ,           WR,
          ,          ,           4      # )z5Accurately estimate the size of B_n (even n > 2 only)gS㥛@rx   gK7A`@)r   r   ry   )rs   lgns   & rt   bernoulli_sizer     s/    
((1Q-Cus3w%K011rv   c                6   V ^8  d6   V ^ 8  d   \        R4      hV ^ 8X  d   \        # V ^8X  d   \        \        4      # V ^,          '       d   \        # V\
        8  dF   V\        V 4      R,          R,           8  d(   \        V 4      w  r4\        Y4Y;'       g    \        4      # V \        8  d   \        WV4      # V^,           pV^ V^,          ,
          ,          p\        P                  V4      pV'       dL   Vw  rxW9   d#   V'       g	   Wp,          # \        Wp,          W4      # Vw  rpW	,
          ^
8  d   \        WV4      # M;V ^
8  d   \        WV4      # ^ \        /p^\        ^
4      \         .;w  rrWx3\        V&   W8:  Ed   V	^,          p\        V	4      p^ p\#        ^ V4      V,
          pV	^8  d   \$        pMTp\'        ^V	^,          ^,           4       EF%  pWy^V,          ,
          ,          ;w  pppppV'       d   V) pV\)        VV,          VV,
          4      ,          p^V,          pVV	^,
          V,
          V	^,
          V,
          ,          V	^,
          V,
          ,          V	^,
          V,
          ,          V	^,
          V,
          ,          V	V,
          ,          ,          pV^V,           ^V,           ,          ^V,           ,          ^V,           ,          ^V,           ,          ^	V,           ,          ,          pEK(  	  V^ 8X  d   \+        V	^,           \,        V4      pV^8X  d   \+        V	^,           \,        V4      pV^8X  d   \+        V	) ^,
          \.        V4      p\1        WV4      p\3        \5        XW4      \7        V
4      V4      pVWy&   V	^,          p	W^,           V	^,           ,          ,          W^,
          ,          ,          p
V	^8  d;   V^V	,           ^V	,           ,          ,          V	^,
          V	^,
          ,          ,          pWV.VR&   EK  Wp,          # )z.Computation of Bernoulli numbers (numerically)z)Bernoulli numbers only defined for n >= 0g?  :NNN)
ValueErrorr   r#   r   r   BERNOULLI_PREC_CUTOFFr   bernfracr!   r   MAX_BERNOULLI_CACHEmpf_bernoulli_hugebernoulli_cachegetr"   r   r   r   r   r   r   r,   f3f6r    r)   r&   r   )rs   rn   rndr   qr{   cachednumbersstater   binbin1caseszbmrq   sexpro   r   usignumanuexpubcuj6r   s   &&&                      rt   rz   rz     sh   1uq5HII6K65>!1uu
 ##~a/@/Dt/K(K{Q4););<<!!3//	B"r	
B  $F<z!7:t1152:%as33  r6%as33T( !3r7G44&.
&1u a 1d|r!q5AA1a46"A)01Q37"E4sQu$T	**A1B1Q3r6AaCF#QqSV,ac"f5qs2v>"EFAAbD1R4=!B$'2."5qt<=A # 19,qsB3a19,qsB3a19,r!tR4a"%GAq%x}b9
	QcAaC[!a1g.q5AaC!A#;'QqS1Q3K8DD>a:rv   c                    V^
,           pV\        \        P                  ! V ^4      4      ,           p\        V ^,           V4      p\	        V\        W4      V4      p\	        V\        \        V4      V ) V4      4      p\        V^V ,
          4      pV ^,          '       g   \        V4      p\        YQT;'       g    \        4      # )
   )ry   r   r   mpf_gamma_intr'   r   r+   r;   r1   r#   r"   r   )rs   rn   r   r{   piprecvs   &&&   rt   r   r     s    	B#dhhqm$$Fac2A<&+A;vf~r267A!QqSAq55AJ1C--:..rv   c                   \        V 4      p V ^8  d   . ROV ,          # V ^,          '       d   R# ^p\        V ^,           4       F"  pW^,
          ,          '       d   K  W,          pK$  	  \        V 4      \        \        P                  ! V^4      4      ,           ^,           p\        W4      p\        V\        V4      4      p\        V\        4      pWa3# )a  
Returns a tuple of integers `(p, q)` such that `p/q = B_n` exactly,
where `B_n` denotes the `n`-th Bernoulli number. The fraction is
always reduced to lowest terms. Note that for `n > 1` and `n` odd,
`B_n = 0`, and `(0, 1)` is returned.

**Examples**

The first few Bernoulli numbers are exactly::

    >>> from mpmath import *
    >>> for n in range(15):
    ...     p, q = bernfrac(n)
    ...     print("%s %s/%s" % (n, p, q))
    ...
    0 1/1
    1 -1/2
    2 1/6
    3 0/1
    4 -1/30
    5 0/1
    6 1/42
    7 0/1
    8 -1/30
    9 0/1
    10 5/66
    11 0/1
    12 -691/2730
    13 0/1
    14 7/6

This function works for arbitrarily large `n`::

    >>> p, q = bernfrac(10**4)
    >>> print(q)
    2338224387510
    >>> print(len(str(p)))
    27692
    >>> mp.dps = 15
    >>> print(mpf(p) / q)
    -9.04942396360948e+27677
    >>> print(bernoulli(10**4))
    -9.04942396360948e+27677

.. note ::

    :func:`~mpmath.bernoulli` computes a floating-point approximation
    directly, without computing the exact fraction first.
    This is much faster for large `n`.

**Algorithm**

:func:`~mpmath.bernfrac` works by computing the value of `B_n` numerically
and then using the von Staudt-Clausen theorem [1] to reconstruct
the exact fraction. For large `n`, this is significantly faster than
computing `B_1, B_2, \ldots, B_2` recursively with exact arithmetic.
The implementation has been tested for `n = 10^m` up to `m = 6`.

In practice, :func:`~mpmath.bernfrac` appears to be about three times
slower than the specialized program calcbn.exe [2]

**References**

1. MathWorld, von Staudt-Clausen Theorem:
   http://mathworld.wolfram.com/vonStaudt-ClausenTheorem.html

2. The Bernoulli Number Page:
   http://www.bernoulli.org/

))   r   )rl   r   )r      )    r   )
ry   r   r   r   r   rz   r'   r   r   r   )rs   r   r   rn   r   r   pints   &      rt   r   r     s    N 	AA1u(++1uu	A1qS		FA  !s488Aa=11B6DaA8A;A!]#D9rv   c                     V \         \        \        39   d   V # \        \	        \
        W^,           4      V4      p\	        V\        V^,           V4      W4      # )r   )r   r   r   mpf_psi0r%   r   r   )xrn   r   ro   s   &&& rt   mpf_harmonicr     sG    UD$qq&)40A1iQ,d88rv   c                     V ^,          \         8X  d   \        V ^ ,          W4      \         3# \        \        V \        V^,           4      V4      p\        V\        V^,           V4      W4      # r   )r   r   mpc_psi0r[   r   r   )zrn   r   ro   s   &&& rt   mpc_harmonicr     sV    tu}QqT4-u55Qd1f-t4Aq)DFC0$<<rv   c           
        V w  r4rVV^
,           pV'       g*   V \         8X  d   V # V \        8X  g   V \        8X  d   \        # V \        8X  g   V^ 8  d   V'       d   \	        R4      hWV,           R8  d8   \        \        V \        W4      W4      p\        V\        \        WV4      W4      # V'       da   WV,           ^8  dT   \        W4      w  r\        \        WV4      \        V4      V4      p\        \        \        W4      V4      p\        WW4      # V'       g)   We,           V8  d   \        \        V \        V4      W4      # \        V 4      p\        RV,          4      ^,           p\         p
\#        W4      p \$        V,          pW8  d1   \'        W4       F!  pWV,          V ,          ,          p
W,          p K#  	  W,          p V
\#        \        \)        W) V4      V4      V4      ,          p
WV,          ^V ,          ,          ,          p
W ,          V,	          pTp^ p^p VV,          V,	          p\+        ^V,          V4      w  ppppV^V,          ,           pV^ 8  d    VV,          V^V,          ,          ,          pMVV) ,	          V^V,          ,          ,          pV^,          '       d   V
V,          p
M	V
V,          p
V^8  d	   VV8  d   MTpV^,          pK  \)        W) Wr4      # )zS
Computation of the digamma function (psi function of order 0)
of a real argument.
zpolygamma pole)\(?)r   r   r   r   r   r   r%   r   r&   r)   rF   r'   r;   rA   r   ry   r   r   r   r   r    rz   )r   rn   r   signmanexpbcr{   r   crq   r   r   r   rs   rp   r   x2rr   prevbsignbmanbexpbbcoffsetr   s   &&&                       rt   r   r     s`   
 Ds	B9Qh:d4KEzcQh4)**
v{WQd0$<q'$s3T??
a$GA"%vbz26WT1)2.qT''bhmwq$+T77q	ADGqAAA
R-CuA)!!AHA  HA',q#r2B7	<<A)1	A
#"BAD	A
rTbL!.qsB!7tT32+Q;AqsG< $& 1q!A#w?q55!t)!t)!q5TT\	Q3((rv   c                   V w  r4V\         8X  d   \        W1V4      \         3# V^,           pVw  rgrV'       dj   W,           ^8  d]   \        W4      p
\        W4      p\	        \        WV4      \        V4      V4      p\        \        \        W4      V4      p\        WW4      # V'       g)   W,           V8  d   \        \        V \        V4      W4      # \        V4      p\        RV,          4      ^,           p\        pW8  d:   \        W4       F*  p\        V\        W4      V4      p\!        V \"        V4      p K,  	  \        V \        V4      p \%        V\        W4      V4      p\%        V\        \&        W4      V4      p\)        W4      p\        p\        p\         p^p\+        \"        V) ^,           4      p \-        VVV4      p\/        ^V,          V4      p\1        V\3        V^V,          V4      V4      p\        VVV4      p\5        V^
4      pV^8  d(   \7        VV4      '       g   \7        VV4      '       d    V# TpTpV^,          pK  )zV
Computation of the digamma function (psi function of order 0)
of a complex argument.
r   )r   r   rd   re   r\   rZ   r;   r   rX   rP   ra   r   ry   rO   r   rf   r[   r   rW   rQ   rg   r1   rY   rz   r^   r_   rS   r.   )r   rn   r   reimr{   r   r   r   r   r   rq   r   r   wrs   r   z2rr   r   szprevepsbernr   szterms   &&&                      rt   r   r     s   
 FB	U{3'//	BDs
qqb)6":r:WWa,b1qT''bhmwq'2.::r
ADGqAAuA>!0"5AAtR(A  	7BA71>2&A78Q+R0A	A	BADF	A
D2#a%
 C
Ar2QqS"%4Q!R!8"=AtR r"q5fVS))VFF-C-C H 	Qrv   c                d    V ^ 8X  d   \        W\        R7      # \        W\        3W#4      ^ ,          # )za
Computation of the polygamma function of arbitrary integer order
m >= 0, for a real argument x.
)r   )r   r   mpc_psir   )r   r   rn   r   s   &&&&rt   mpf_psir    s.    
 	AvZ001%j$,Q//rv   c           
        V ^ 8X  d   \        WV4      # Vw  rEV^,           pVw  rxrV^,          '       g#   V\        \        \        39   d   \        \        3# V'       g:   V\        8X  d   V\        8X  d   \        \        3# V\        8X  d   \        \        3# \        V4      p\        RV,          ^V ,          ,           4      p\        pW8  dD   \        W4       F4  p\        W) ^,
          V4      p\        WV4      p\        V\        V4      pK6  	  \        W) V4      p\        VRV4      p\        V\        V 4      V4      p\        VVV4      p\        V\        \!        VW4      \"        V4      V4      pV ^,           p^p^p\%        V^
4      pV^,          V^,          ,           p\'        \        VV,
          ^,           4      p \)        VVV4      p\+        ^V,          V4      p\-        VVV4      p\/        V\        V4      V4      p\        VVV4      p\        VVV4      p\%        V^
4      pV^8  d   \1        VV4      '       d   MjVV ^V,          ,           V ^V,          ,           ^,           ,          ,          pV^V,          ^,           ^V,          ^,           ,          ,          pV^,          pK  \        V\3        \        V ^,           4      V4      W#4      pV ^,          '       g%   \5        V^ ,          4      \5        V^,          4      3pV# )zd
Computation of the polygamma function of arbitrary integer order
m >= 0, for a complex argument z.
g?r   )r   r   r   r   r   r   ry   rO   r   r`   rW   r[   r   r]   r   r\   rZ   r   rS   r1   rY   rz   r(   r)   r.   	mpf_gammar#   )r   r   rn   r   r   r   r{   r   r   r   r   r   rs   rq   r   rr   zmr   integral_termro   r   magnr   r   scalr   r  r   s   &&&&                        rt   r  r  
  s   
 	Av%%FB	BDsa55$t$$$<:"+5>!:$<r
ACFQqSLAAuAAr!tR(Ab!AAtR(A  
QB	B	QB	BHQK4M="%A;wr115"=rBA	AA	A	A 1b>D747?D
D$r'!)
$C
RR QqS"%4B'tXa["-2tR(AtR r"q5VFC((	a!ea!eAg	ac!eac!e_	QAy!A#3T?AEEAaDM71Q4=(Hrv   c                    V \         9   d   \         V ,          # \        .V ^,           ,          p\        p\        ;q1^ &   \        ^V ^,           4       Fe  pV^,          W,           ^,
          ,          W,
          ^,           ,          pV^V,          ^V,          ^,
          ,          ,          pW2,          pW1V&   Kg  	  V\         V &   V# r   )borwein_cacher   r   r   )rs   dsr   rq   r   s   &    rt   borwein_coefficientsr  {  s    MQ
qs	BAA11ac]EQSUOqs1u%	!1a !	1	 
 M!Irv   r   c           	        V^,           p\        V 4      p V \        9   d8   \        V ,          ^ ,          V8  d   \        \        V ,          ^,          W4      # V ^8  dY   V ^8X  d   \        R4      hV '       g   \	        \
        4      # \        \        V ) ^,           V4      \        V ^,
          4      W4      # W8  d   \        \        ^ W4      # WR,          8  do   ^V,          ;rEV^W0,
          ,          ,          pWE\        V ,          ,          ,          pV^\        ^ W0^,          ,
          4      ,          ,          p\        WC) W4      # \        V4      V ^,
          ,          ^,           pV^8  d   \        RV,          ^,           4      pV\        VR,          ^,           4      ^
,          8  d   \        p\        V4       Fk  p\        W0\         P"                  ! V^4      ,          ,
          4      p	V	^8  d    M6\%        \        \'        \        V4      V ) V	4      V4      p
\)        WJV4      pKm  	  \        \        WC4      # \        VR,          ^,           4      p\+        V4      p\,        p\/        V 4      p \1        V4       FI  pVRV,          W,          W,          ,
          ,          V,          V^,           V ,          ,          ,          pKK  	  WC,          W,          ) ,          pWC,          ^V,          ^V^,           V ,
          ,          ,
          ,          pV \        9   d   \        V ,          ^ ,          V8  g   V \        9  d   V\        WC) V,
          4      3\        V &   \        WC) V,
          W4      # )z4
Optimized computation of zeta(s) for an integer s.
zzeta(1) poleg/$?g       @RQ@rl   )ry   zeta_int_cacher"   r   r#   r   r)   rz   r   r-   r   r   r   r    floatr   r   r   r&   r+   r'   r  r   r   r   )rq   rn   r   r{   rr   rp   r   needed_termsr   powprecro   rs   r   s   &&&          rt   r   r     s    
BAAN~a03r9~a(+T771u6^,,5>!}aRT2.1tIIw4D..	
hr'	Q26]	Y!^$$	Q#ac"""AsD.. 2Y!_q r6sAvz?Lc"T'A+.33$\2A!"!A"67G{k(1+r7&KRPAb)A 3 tQ++BtGaKAQAAAAAY	Qw!$+&2-1Q3(:: 	
qteA	
qBw1Aa=12A	^q 1! 4r 9q?VaR!89q3r64--rv   c                    V w  rErgV'       g@   V \         8X  d   V'       d   \        # \        \        4      # V \        8X  d   \        # \
        # V^,           pV'       g;   Wg,           \        P                  ! V^4      ^,           8  d   \        \        W1V4      # V^ 8  d   V'       dr   V \        8X  d   \        W4      # \        \        V 4      V\        V,          4      p	\        \        \        \        \        \        W4      V4      V4      p
\!        WW4      # \        \        V 4      W4      # V'       d   V'       dE   \        \        \        \        \        \        W4      V4      V4      p
\!        \#        W4      WV4      # \        \        V ^
V,          4      p\%        W4      p\#        W4      p\'        \)        V R4      V4      pV\+        ^ Wg,           4      ,           p\-        W,           4      p\/        \        \)        V^4      W4      VV4      p\!        V\!        V\!        VVV4      V4      W4      # \        \        W4      p\1        V4      w  ppppRVV,           ,          pVV8  dD   V'       d   \        W4      # \        \/        \        VV4      4      p
\3        V
\5        V4      W4      # V\+        ^ V4      ,          p\6        p\9        VR,          ^,           4      p\;        V4      p\6        p\=        W4      p\?        V4      p\A        V4       Ft  pV) \C        V^,           VV4      ,          V,	          p\E        VVV4      pVV,          VV,          ,
          V,          pV^,          '       d   VV,          pKk  VV,          pKv  	  VVV,          ) ,          p\G        VV) V4      pV'       d   \I        VW4      # \        \        \        \        \        \        W4      V4      V4      p
\/        VWV4      # )rk   r  rl   r   )%r   r   r#   r   r   r   r   r   r-   r?   r   r   r2   r&   rB   r   r'   mpf_zetar  rH   r1   r   r;   r)   r$   r%   r   r   ry   r  r   r=   r   r>   rN   r    r"   ) rq   rn   r   altr   r   r   r   r{   r   r   yro   r   r   wp2r~   r   rasignamanaexpabc	pole_distrr   rs   sfln2r   r   emanr   s    &&&&                            rt   r  r    s#   Ds:u~%9K	Bsx488Bq>A#564C00	Dyt))VAYL,=>AgdGD!,@"ErJA1++q	455
 gdGD!,@"ErJA8A?AS99D!RU#aQOyB',3q= BF^GIb!,a5r3?q71Qr?26t@@ 	aA$QZE4sDHI2~4%%a,-A1imT77
c!YA 	BtGaKAQAA	!B
B-CAYSqsB,,3 B$qTAaD[D q55FAFA  	
qteAQR A
q$$$D'$a(<bA2Fq!3''rv   Fc                 	   V w  rVV\         8X  d   \        WQW#4      \         3# V'       g,   \        \        V ^
4      \	        V4      4      '       d   \
        hV^,           p\        \        W4      p\        V^
4      w  rrRW,           ,          pW8  d   V'       dr   \        V4      p\        V\        V4      V4      p\        \        WV4      R4      p\        VV4      p\        V\        V4      V4      p\        VW4      p\!        VW4      # \#        \%        \        W4      4      p\        V\        V4      V4      p\!        WV4      # V\'        ^ V4      ,          p\)        V\         4      '       Ed+   V'       dE   \        \        \+        \,        \        \        W4      V4      V4      p\/        \1        W4      WV4      # \        \        V ^
V,          4      p\3        W4      p\1        W4      p\5        \7        V R4      V4      pVw  ppppVw  pppp\'        VV,           VV,           4      pV\'        ^ V4      ,           p\9        VV,           4      p\        V^4      \         3p \;        \+        V V V4      VV4      p!\/        V\/        V\/        VV!V4      V4      W4      # \=        VR,          ^,           4      p"V"\=        R\?        \A        V4      4      ,          4      ,          p"\C        V"4      p!\E        WW4      p#\E        Wg4      p$\F        p%\F        p&\H        V,          p'\H        ^V,          ,          p(V\J        8H  p)\M        V4      p*\O        V^,
          4      p Ww,           p\Q        V"4       F  p+\S        V+^,           VV*4      p,V)'       d"   V(\U        V+^,           V,          4      ,          p-M\W        V#) V,,          V,	          V4      p-V+^,          '       d    V-V!V",          V!V+,          ,
          ,          p-MV-V!V+,          V!V",          ,
          ,          p-\Y        V$) V,,          V,	          VV 4      w  p.p/V%V-V.,          V,	          ,          p%V&V-V/,          V,	          ,          p&K  	  V%V!V",          ) ,          p%V&V!V",          ) ,          p&\[        V%V) V4      p%\[        V&V) V4      p&V'       d   \!        V%V&3W4      # \        \        \+        \,        W4      V4      p\%        V%V&3WV4      # )r   r  g?r   rl   ).r   r  r0   rS   r   NotImplementedErrorrX   rP   r?   r'   r   r1   r&   r\   r#   r[   rU   rV   rZ   r   r/   rc   rR   rY   mpc_zeta	mpc_gammare   rT   r;   r]   ry   r   r   r  r   r   r   r   r=   r<   r   r>   r   rN   rM   r    )0rq   rn   r   r  forcer   r   r{   r  r  r  r  r  r  r   r  gr   ro   r   r   rsignrmanrexprbcisignimaniexpibcmagr  r~   pi2r   rs   refimftretimrp   one_2wpcritical_liner!  r   r   r   wrewims0   &&&&&                                           rt   r%  r%    s   FB	U{#+U22 vganhtn==!!	B 	A$Q^EDHI~A9R="-A'!+R0A1AAwqz2.AAq%A1d((/0AAy}b1A1C((
c!Y
 b%''12I"A8A?AS99GQ2&aQOyB',!#tT3!#tT3$s(DH%3q#;BsF^Q'Q,b#6q71Qr?26t@@BtGaKASVBZ 	!!AQA
2
C
2
C
C
C
R-C!B$G%KM
B-C
2a4.C
%CAYAaCS):qssl33AC48*B/Aq55!A$1+A!A$1+A 3$s(RS9SCBCB  adUOCadUOC
sRC
$C
sRC
$C
Sz4--GWWa4b9Sz1C00rv   c                     \        WV^4      # r   )r  rq   rn   r   s   &&&rt   mpf_altzetar=  r      AS!$$rv   c                     \        WV^4      # r   )r%  r<  s   &&&rt   mpc_altzetar@  u  r>  rv   c                     V^8X  d   V # \         V,          pV'       dB   V^,          '       d   W0,          V,	          pV^,          pW ,          V,	          p V^,          pKI  V# r   rm   )r   rs   r{   r  s   &&& rt   	pow_fixedrB  |  sP    Av2A
q55AFASRK	aHrv   c                    V \        \        4      8  d=   \        p\        R \        P                  \	        V4      4      ^,            p\
        pWV3# ^ .V ^,           ,          p^ .V ^,           ,          p\        V 4      pV F!  p\        W@^,           V4       F  pWAV&   K	  	  K#  	  \        V4       F=  w  rdV^8  g   K  ^pWd,          p W,          '       g   W,          p V^,          pK!  WsV&   K?  	  VsVsVsWV3# r   )	lensieve_cacheprimes_cacheindexr   
mult_cacher   r   	enumerate)rs   siever   multr   r   r   r   s   &       rt   
primesieverL    s    3{?|11#e*=a?@d""C1Q3KE3!A#;D^FA#aA!H !  % 6AAeeQG ! KLJ$rv   c           
         V^8  d   \        R4      h\        W4,           4      w  rgp/ p	\        V,          p
\        ^V,          ,          pWU,           p\        V4      p\	        V^,
          4      pV EFF  pV^,          W4,           8  d    EM0\        WV4      p\        V) V,          V,	          W^4      w  ppV '       d   V\        W,          4      ,          pM\        V) V,          V,	          V4      pVV,          V,	          pVV,          V,	          pVV3.W&   TTpp\        ^\        \        P                  ! W4,           V4      R,           4      ^,           4       FX  pVV,          VV,          ,
          V,	          VV,          VV,          ,           V,	          ppW,          P                  VV34       KZ  	  EKI  	  \        p\        pV^8X  d
   VV
,          p\        V^4      p\!        VW4,           ^,           4       EFP  pVV,          pW9   d   VV,          pW,          V^,
          ,          w  pp VVV,          ,          pV^8X  d   MVV,          pVV,          pW,          V^,
          ,          w  ppVV,          VV,          ,
          V,	          VV,          VV,          ,           V,	          ppK  \        VW]4      p\        V) V,          V,	          W^4      w  ppV '       d   V\        VV,          4      ,          pM\        V) V,          V,	          V4      pVV,          V,	          pVV,          V,	          pVV,          pVV,          pEKS  	  VV3# )r   za cannot be less than 1g{Gz?)r   rL  r   r=   r<   r>   rM   r   rN   r   ry   r   r   appendr   r   r   )r8  sresimro   rs   r{   rJ  r   rK  basic_powersrp   r7  r  r!  r2  r   r   cossinr   prepimr5  r6  r   xreximaar   s   &&&&&&                       rt   zetasum_sievedrY    s   1u233$QS/E4L
R-C!B$G
%C
B-C
2a4.CQ39A3' 3$s(R9S:af--AC48b."-Aumum:,SqTXXac!_T12145ASS2-#c'#c'/B1FCO""C9- 6   C
CAvs
	QqBBA!HQA#qs+HCad
6!HG'?1Q3/S WSW_r1c#gc#go5JSS2+C$sd3h^R=HCz!S&11tCx"nb1S5R-CS5R-Cs
s
/ 0 8Orv   c                   V^
,           p\        V4      pV^ .8g  p\        V4      ^8H  pV w  rV	\        8H  p\        W4      p	\        W4      p
V^ 8  dh   V\        8  d]   V'       gU   V'       gM   VR8  g   \
        P                  R8  d1   \        WWW&4      w  r\        W) VR4      \        W) VR4      3.pV. 3# \        V4      pV'       g   \        V^,           4      pV Uu. uF	  p\        NK  	  ppV Uu. uF	  p\        NK  	  ppV'       d,   V Uu. uF	  p\        NK  	  ppV Uu. uF	  p\        NK  	  ppM. ;pp\        V,          p\        ^V,          ,          p\        V4      p\        V^,
          4      pWf,           p\        WV,           ^,           4       EF  p\!        VVV4      p\#        V
) V,          V,	          VV4      w  ppV'       d   V\%        VV,          4      ,          pM\'        V	) V,          V,	          V4      pVV,          V,	          pVV,          V,	          p V'       d1   VVV,          ,          p!V!V,          V,	          p"V!V,          V,	          p#V'       Edl   V'       d   \)        VW4      pV^ ;;,          VV,          V,	          ,          uu&   V^ ;;,          V V,          V,	          ,          uu&   V'       dJ   V^ ;;,          X"V,          V,	          ,          uu&   V^ ;;,          X#V,          V,	          ,          uu&   EKy  EK|  \        V,          p$V F  pVV;;,          VV$,          V,	          ,          uu&   VV;;,          V V$,          V,	          ,          uu&   V'       dG   VV;;,          X"V$,          V,	          ,          uu&   VV;;,          X#V$,          V,	          ,          uu&   V$V,          V,	          p$K  	  EK9  V^ ;;,          V,          uu&   V^ ;;,          V ,          uu&   V'       g   EKn  V^ ;;,          X",          uu&   V^ ;;,          X#,          uu&   EK  	  V'       d   V'       dM   V^,          '       d=   V^ ,          ) V^ &   V^ ,          ) V^ &   V'       d   V^ ,          ) V^ &   V^ ,          ) V^ &   MV Uu. uF  pRV,          VV,          ,          NK  	  ppV Uu. uF  pRV,          VV,          ,          NK  	  ppV'       dM   V Uu. uF  pRV,          VV,          ,          NK  	  ppV Uu. uF  pRV,          VV,          ,          NK  	  pp\+        VV4       U%U&u. uF$  w  p%p&\        V%V) VR4      \        V&V) VR4      3NK&  	  pp%p&\+        VV4       U'U(u. uF$  w  p'p(\        V'V) VR4      \        V(V) VR4      3NK&  	  p)p'p(VV)3# u upi u upi u upi u upi u upi u upi u upi u upi u up&p%i u up(p'i )zA
Fast version of mp._zetasum, assuming s = complex, a = integer.
g    Ars   l        rl   )listrD  r   r   ZETASUM_SIEVE_CUTOFFsysmaxsizerY  r    r   r   r   r   r=   r<   r   r>   rM   r   rN   rB  zip)*rq   ro   rs   derivativesreflectrn   r{   have_derivativeshave_one_derivativerO  rP  r8  r   r   xsmaxdr   rV  rW  yreyimrp   r7  r!  r2  r  r   r   rR  rS  r   xterm_rexterm_im
reciprocalyterm_reyterm_imrr   xaxbyaybyss*   &&&&&&                                    rt   mpc_zetasumrr    s   
 
B{#K"qc)k*a/ HCE\M
3
C
3
C1u))2BSCKK%,?CABBT3/b#tS1QRS2v{DDFm )
)[8[C
)(
)[8[C
)!,-Ax-!,-Ax-c
R-C!B$G
B-C
2a4.C
%CAs1uAr3' 3$s(RS9S:af--AC48b."-AG?G?!ac*J"S(R/H"S(R/H"T.A8c>b00A8c>b00Fx#~"44FFx#~"44F  rM$AFx!|22FFx!|22FA8a<B"66A8a<B"66SRA % FhFFhFwA("A("I J axxa&Aa&A!!fWCF!!fWCF-89[B7SV##[C9-89[B7SV##[C91<=AQwQ''=1<=AQwQ''=C
'%HR RCs+\"rc4-M
N%  
' C
'%HR RCs+\"rc4-M
N%  
'r6MM *
)--r :9==
'
's<   #V48V9V>*W W W0 W W*W*W"i  i:  g?c           	     n	   ^pW,           p\         .V ^,           ,          p\        V4      p\        V,          pV) ^,          V^ &   \        \	        V4      ^4      p\        Ws4      ;r. p
^p V^	V,          ,
          pV^8  d   M\        \        \        V\        V4      V4      p\        V\        WV4      V4      p\        W4      p\        W4      pW,          V,          V,	          pV
P                  W34       \        WV4      pV^,          pK  \        ^V ^,           ^4       F  p\         p^pV
 Fm  w  ppV^,          ^8X  d   VW,          ,          pM-V^,
          ^,          pVVV,          ,           W,          ,          pV'       g    MVV,          pV^,          pKo  	  RV,          WO&   K  	  \        V ^,           4       Uu. uF  p\        \        W4      4      NK  	  pp\        \        \	        V4      ^4      ^V4      ;pp\        V\!        ^4      V4      p\        ^V ^,           ^4       F]  p\        VV,          VV4      p\        VV4      WO&   \        VVV4      p\        V\!        V^,           V^,           ,          4      V4      pK_  	  Wc,          V,          p\        ^V ^,           ^4       F  pV^,
          ^,          pV^V,          ^,           ,          ^V,          ^,           ,          ^,          p\        ^V^,           4       FK  pVV^V,          ,          V^V,          ^,           ^V,          ,
          ,          ,          V,	          ,          pKM  	  WO;;,          ^V,          V,          V,	          ,          uu&   K  	  \        ^V ^,           ^4       F  pV^,
          ^,          pV^V,          ^,           ,          ^V,          ^,           ,          p\        ^^V,          ^,           4       Fg  pVRV,          ^,          V,          V^V,          ,          ,          V^V,          ^,           ^V,          ,
          ,          ,          V,	          ,          pKi  	  WO;;,          VV,          V,	          ^V,          ,          ,          uu&   K  	  V Uu. uF  pVV,	          NK  	  up# u upi u upi )z
zeta(n) = A * pi**n / n! + B

where A is a rational number (A = Bernoulli number
for n even) and B is an infinite sum over powers of exp(2*pi).
(B = 0 for n even).

TODO: this is currently only used for gamma, but could
be very useful elsewhere.
r   rl   )r   r<   r   r1   r;   r@   r)   r   r&   r'   r   rN  r   r$   rz   r+   r   )r   rn   r   r{   zeta_valuesr~   rp   f_2pi	exp_2pi_kexp_2piexps3r   tpq1q2rs   rq   e1e2rr   r   r   pi_powfpir   reciprocal_pir   s   &&                         rt   
zeta_arrayr  _  s    E	B*!$K	"B
R-CT1WKNfRj#E!%,,I
 E	A
!A#X6T79dB7<Yb 126bbfrkb bXI3		QAqsAFBsax!$JqS1H"a%ZAD(FAFA  A  06ac{;{!q$	%{A;yQ7B??FSVXa["-FAac!_AaD&"%!!Rb)1Q31+!6;	  Y2%MAqsAqS1H!A!A&)1Q3A+ac"[1Qqs%;;BBA  1Q3},33  AqsAqS1H!A!A&1Q3q5!A2'!)A+{1Q3//+ac!eAaCi2HH2MMA "AmOb0AaC88  **kAuHHk**- 	<, +s   R-R2c                H   V R8  d   V ^
V ^
,          ,
          ,           pM!V R8  d   V ^V ^,          ,
          ,           pMT pV\         9   d   \         V,          V3# VR8  d   \        VR,          ^,           4      pM\        VR,          ^,           4      p\          FJ  pW18  g   K  \         V,          V) R  Uu. uF  qDW1,
          ,	          NK  	  ppV R8  d
   V\         V&   WQ3u # 	  VR8  d   \        VR,          4      pV^,           p^ .V,          p\        V^ &   \        V,          V^&   \	        V4      V^&   \        W&4      p\        ^V4       F  p	V^,          ) Wy^,
          ,          ,          V,	          p
\        ^V	4       F;  pV
RV,          W,          ,          WyV,
          ,          ,          V,	          ,          p
K=  	  V
^V	,
          ,          p
WV	&   K  	  V U
u. uF  q^,	          NK  	  pp
VRRR1,          pVRR pV\         V&   \        V 4      # u upi u up
i )z
Gives the Taylor coefficients of 1/gamma(1+x) as
a list of fixed-point numbers. Enough coefficients are returned
to ensure that the series converges to the given precision
when x is in [0.5, 1.5].
i  r   gRQ?gv/?Ng333333?rl   )gamma_taylor_cachery   r   r   r   r  r   gamma_taylor_coefficients)inprecrn   r   cprecr   coeffsr{   r   rt  r   ro   r   s   &           rt   r  r    s    |VBY(	$VBY(!!!$'-- d{d
Q ea  $</A%/H!/MN/M!%*oo/MFN}+1"4(< $ d{4#:	B	
aAAaDb=AaDr?AaD Q#KAq\dU1qS6\B!A2'KN*QsV3::A 	qs!  1BA	$B$A	#2A t$V,,9 O. 	s   9H"Hc           	      d   W^,
          ,	          \         ,           ^,	          p\         V,          p\        V4      w  rV^ 8  d   Tp
\        V^,
          4       F  pW,          pW,          V,	          p
K  	  W,          p\        pV F  pWV,          V,	          ,           pK  	  WV,
          ,          pV^ 8X  d   \	        W,          V,          V) W44      # V^8X  d   \        \        WV,          W44      V4      # V^8X  d.   \        \        \	        W,          V,          V) 4      4      W44      # R# Tp
\        V) 4       F  pW,          V,	          p
W,          pK  	  \        pV F  pWV,          V,	          ,           pK  	  WV,
          ,          pV\        \        V4      4      ,
          ^
8  d   \        V \        V) 4      4      p\	        W,          V) V,
          4      p
\        WV4      p
V^ 8X  d   \        \        WV4      # V^8X  d   \!        WV4      # V^8X  d$   \        \        \        \        W4      4      W44      # R# \	        W,          V
,          RV,          4      p
V^ 8X  d   \        \        WV4      # V^8X  d   \!        WV4      # V^8X  d   \#        \        \        V
4      W44      4      # R# )r   N)r   r  r   r   r    r1   r!   rA   r$   r4   r   r%   r   r'   r)   r   r"   r#   )xmpfr   r{   rn   r   typenearest_intrp   r  cwpr  r   r   r   r(  s   &&&&&&         rt   gamma_fixed_taylorr    sF    Q$K7*q0K
R-C+B/KFQA&AHAA ' 	
AcBYA 	2v19
RC;;19]1"utA2FF197<
RC#@A4MM  %AAHA & AcBYA 	2vQ  2%h|45AQS"R(Ab!AqytQc22qyq,,qywwtQ';<dHH  QSU2b5)Aqyq!<<qy#!66qyT)G!HHyrv   c                     V \         9   d   \         V ,          # \        V 4      w  rV\        W ^,
          ,          4      ,          pW\        \	        V4      4      \        V4      3\         V &   \         V ,          # r   )gamma_stirling_cacher   r   r4   r   )rs   r   r   s   &  rt   stirling_coefficientr    s_      #A&&A;DAQ!WAHSV$4hqkA""rv   c                &   \         W,           ,          V ,          pW",          V,	          p\        V4      V ,
          pWB^,          ,          qBV,          V,	          pWBR,          ,          qBV,          V,	          pWBR,          ,          qBV,          V,	          pWBR,          ,          qBV,          V,	          pV'       g   V# WBR,          ,          qBV,          V,	          pVRV,          R,          ,          qBV,          V,	          pWB^,          ,          qBV,          V,	          pV'       g   V# VRV,          R,          ,          qBV,          V,	          pVR	V,          R
,          ,          qBV,          V,	          pVRV,          R,          ,          qBV,          V,	          pV'       g   V# ^p\        \        V4      4      p\        \        V4      4      p^ p \	        V4      w  rrW{,           V,           pV) pW,
          pV^ 8  d   W8  d   W,          p	W,          pW},
          pV^ 8  d   W8  d   W/,	          pW,          pMTpW),          V
,          V,	          pV'       g    V# VV,          pW#,          V,	          pWV,
          ,          pV^,          pK  )zf
Sums the rational part of Stirling's expansion,

log(sqrt(2*pi)) - z + 1/(12*z) - 1/(360*z^3) + ...

h           !    [  ܹ   )r   rI   r4   r   r  )r   rn   rr   r   rq   r   usizetsizetexpr   r   pbqbterm_magshiftr   r   r   s   &&                rt   real_stirling_seriesr  "  s    
49	!#A	
tA"ABJA!d{1CKA!d{1DLA!d{1DLA!d{1QhDLA!d{1QA!d{1CKA!d{1QhaA!d{1q&A!d{16	A1tAQh
A SVESVED
+A.b:$Mq5UYGAJEq5UYAJEAQ5 
 H	 	
T	SUN	Qrv   c                    W ,          W,          ,           V,	          pW,          V,          pV) V,          V,          pWD,          WU,          ,
          V,	          pWT,          V^,
          ,	          p\        V4      V ,
          pV) p	W^,          ,          qV^,          ,          p	WF,          WW,          ,
          V,	          WG,          WV,          ,           V,	          rTWR,          ,          qVR,          ,          p	WF,          WW,          ,
          V,	          WG,          WV,          ,           V,	          rTWR,          ,          qVR,          ,          p	WF,          WW,          ,
          V,	          WG,          WV,          ,           V,	          rTWR,          ,          qVR,          ,          p	WF,          WW,          ,
          V,	          WG,          WV,          ,           V,	          rT\        V4      \        V4      ,           ^8  d   W3# WR,          ,          qVR,          ,          p	WF,          WW,          ,
          V,	          WG,          WV,          ,           V,	          rTVRV,          R,          ,          qRV,          R,          ,          p	WF,          WW,          ,
          V,	          WG,          WV,          ,           V,	          rTW^,          ,          qV^,          ,          p	WF,          WW,          ,
          V,	          WG,          WV,          ,           V,	          rT\        V4      \        V4      ,           ^8  d   W3# VRV,          R,          ,          qRV,          R,          ,          p	WF,          WW,          ,
          V,	          WG,          WV,          ,           V,	          rTVR	V,          R
,          ,          qR	V,          R
,          ,          p	WF,          WW,          ,
          V,	          WG,          WV,          ,           V,	          rTVRV,          R,          ,          qRV,          R,          ,          p	WF,          WW,          ,
          V,	          WG,          WV,          ,           V,	          rT\        V4      \        V4      ,           ^8  d   W3# ^p
\        \        \        V4      \        V4      4      4      p\        \        \        V4      \        V4      4      4      p^ p \	        V
4      w  rppVV,           V,           pV) pVV,
          pV^ 8  d   VV8  d   VV,          pVV,          pVV,
          pV^ 8  d$   VV8  d   VV,	          pVV,	          pVV,          pMTpTpWN,          V,          V,	          pW^,          V,          V,	          p\        V4      \        V4      ,           ^8  d    W3# VV,          pV	V,          p	WF,          WW,          ,
          V,	          WG,          WV,          ,           V,	          rTWV,
          ,          pV
^,          p
EK7  )r   r  r  r  r  r  r  r  r  r  r  r  r  )rI   r   r4   r   r  )r   r  rn   _mr5  r6  ureuimrO  rP  r   r  r  r  r   r   r  r  r  r  r   r9  r:  termretermims   &&&                      rt   complex_stirling_seriesr  W  so   
#)	B9
C2:"
C7SW
%C
'd1f
C
4
 1
$C"C 7NC37NC4'CGCGOd+B8OCCH_S4'CGCGOd+B9CS$Y&c4'CGCGOd+B9CS$Y&c4'CGCGOd+B
3x#c(Qsx9CS$Y&c4'CGCGOd+B3s7F?C3s7F?2C4'CGCGOd+B8OCCH_S4'CGCGOd+B
3x#c(Qsx48VCDHf$44S4'CGCGOd+B59fCU3Y%66c4'CGCGOd+B6#:vCfSj&&88s4'CGCGOd+B
3x#c(Qsx
A SS3s8,-ESS3s8,-ED
+A.b"2:$Mq5UQY!GAQJEHq5UQY(C(CQJECC%(u$%(u$v;V$q( 8O 	vvWsw&.g%' 	Qrv   c           
        V w  rErgV'       gU   V \         8X  d&   V^8X  d   \        # V^8X  d   \         # \        R4      hV \        8X  d   V^8X  d   \         # \        # \        # V^8X  d@   V^,           pWg,           V8  d*   V'       g"   \        \        V \        W4      V4      WV4      # V^ 8  p	V	'       d   V'       d   V^8X  d   \         # \        R4      hWV,          p
V
\        8  d   V^ 8X  d   \        \        V
^,
          ,          W4      # V^8X  d   \        \        V
,          W4      # V^8X  d$   \        \        \        V
^,
          ,          W4      # V^8X  d   \        \        V
^,
          ,          W4      # M\        WV) ,	          4      p
Wg,           pW,          pV^8X  d   V^,           pMV\        V4      ,           ^,           pW) 8  d   V^ 8X  d+   \        \        \        W4      \        \        V) 4      W4      # V^8X  d   \        \        WV4      # V^8X  d"   \        V \        \        W,
          4      W4      # V^8X  d   \!        \        \#        V 4      W4      4      # V^8X  d   \%        \        V \        4      W^ 4      # VR8  Edl   V	'       d   V^
V,          8  dx   V^ 8X  d   \'        \)        V
^,
          4      W4      # V^8X  d"   \+        \,        \)        V
^,
          4      W4      # V^8X  d&   \        \'        \)        V
^,
          4      4      W4      # V
^d8  g   V^
V,          8  Ed   V'       d   \/        V4      pV
^,          '       d   \1        ^V
,          ^,           4      pM\1        ^V
,          ^,           4      ) pV^ 8X  d&   \        \+        WW4      V) V
,           ^,           4      # V^8X  d$   \        \+        WW4      W,
          ^,
          4      # V^8X  d:   \        \        \+        V\3        V4      W4      V) V
,           ^,           4      W4      # MV
^ 8X  dQ   V^ 8X  d   \5        W4      # V^8X  d   \        \        \5        V4      W4      # V^8X  d   \        \5        V4      W4      # M\/        V4      p\7        V\1        ^V
,          ^,
          4      ,          V) V
,
          4      pV^ 8X  d   \        WV4      # V^8X  d   \        \        WV4      # V^8X  d   \        \#        V4      W4      # Wh,           pV^ 8  d
   W_,          pM	W_) ,	          pV^8X  EdO   V'       EgF   \,        V,          p\3        VV,
          4      p\3        V^V,          ,
          4      pV\        \9        VV4      4      ,
          pV^
8  d   \        \        V 4      p\        \:        V 4      pV^,          V^,          ,           pV^,          V^,          ,           pVV) 8  d%   \        \=        V4      \        \        V 4      W4      # VV) 8  d3   \        \        \        \=        V4      4      \        V \:        4      W4      # V\?        V) V) 4      ,          pWh,           pV^ 8  d
   W_,          pM	W_) ,	          p\        \@        V,          4      pV
\?        ^dV4      8  d%   V\B        8  d   V'       d   V) p\E        V VWW#4      # T p^ pV
V8  dg   \,        V,          ;ppVV
,
          p\G        V4       F  pVV,          V,	          pVV,          pK  	  \7        VV) 4      ;p pV'       d   \!        V 4      p M\#        V 4      p\I        VV4      p\K        \        VV4      V4      p V\,        V^,
          ,          ,
          V ,          V,	          p VV ,          p\7        VV) 4      pV'       d   \        \M        VV4      VV4      p!\!        \O        V4      4      p"V^ 8X  g   V^8X  d^   \        V!\Q        W4      4      p!V'       d   \        V"\7        VV) 4      V4      p"V^ 8X  d   \        V"V!W4      # V^8X  d   \        V!V"W4      # V^8X  d`   V'       d   \        V"\7        VV) 4      V4      p"\        \        \#        V!4      V4      W4      p!\        \        \#        V"4      V4      V!W4      # R# V^ 8X  d6   V'       d"   \        \Q        W4      \7        VV) 4      W4      # \Q        WV4      # V^8X  d?   V'       d"   \        \7        VV) 4      \Q        W4      W4      # \Q        \!        V4      W4      # V^8X  d7   V'       d#   \        V\        \7        VV) 4      V4      W4      # \        WV4      # R# )aq  
This function implements multipurpose evaluation of the gamma
function, G(x), as well as the following versions of the same:

type = 0 -- G(x)                    [standard gamma function]
type = 1 -- G(x+1) = x*G(x+1) = x!  [factorial]
type = 2 -- 1/G(x)                  [reciprocal gamma function]
type = 3 -- log(|G(x)|)             [log-gamma function, real part]
zgamma function poleNrl   ))r   r   r   r   r   r&   r'   rA   SMALL_FACTORIAL_CACHE_SIZEr"   small_factorial_cacher)   ry   r4   r1   r%   r#   r$   r  r   r	   r!   r   rK   r
   r   rL   r    minr   r   r   GAMMA_STIRLING_BETAMAX_GAMMA_TAYLOR_PRECr  r   r  r   rH   r;   r@   )#r   rn   r   r  r   r   r   r   r{   
is_integerrs   r1  
gamma_sizer   fr   absxmanrp   one_disttwo_distcancellationxsub1xsub2xsub1magxsub2magn_for_stirlingxorigr  r   r   xabsr  r   r   r   s#   &&&&                               rt   r  r    s    Ds:qy+qy,2339qy,K
 qy"W6B;t71ganb91CHH Jqy233J))qy4QqS94EEqy4Q7CCqyt%:1Q3%?KKqy4QqS94EE  (CJqyBYHZ((2- Sy1974.yrc/B4LL19WT1C8819WQ	$sv(>JJ19WWWQZ%CDD qyD)4a88
 byBrE!19#D1It9919($qs)TGG19"8D1I#6BBs7j2b5( $q55eAaCEl!$QqSU|m!19$]1%CbSU1WMM19$]1%CRT!VLL19"9]1c!f.#%'CE!G$-.29 9  a19Z%::19WT:b>4%MM19WZ^T%GG9 $ U1Q3q5\!1B3q5919WQc%::19WT1C%@@19WWQZ%CC XF{cmG!g.G qymws{#wqu}%Xc(H&=>>"D!$ED!$EQxa(HQxa(H2#~y}gdA.>JJ2#~wtYr];At$d1 1 #xi(++BXF{cmG&)g&6G ,R/0N3sN##-B(BhG!!WbBB E 	
A>R-CQAW#AsNG   "--D
Aqz 	Wb)Ar"B'A
Wr!t_
%	*r1AFAQA Jub)5"5F2J19	71>*AA|As3R8qyq!T//qyq!T//19A|As3R8
B/7A771:r2AtAA	  19wq~ RC($5 51C((19|As3AND/ /71:t1119q',q"*=r"BDNN1C(( rv   c           
         V w  rEVw  rgrVw  rrV\         8X  d[   V^8X  dB   V'       d:   \        WAV^4      pV) V) ,	          p\        \        V^
,           4      WV4      pVV3# \        WAW#4      \         3# V'       g	   V'       g   V'       g   V'       d   \        \        3# V^,           pW,           pW,           pV'       d   \        VV4      pMTpVR8  d   VV) 8  d   \        V \        \        W V4      \        V4      V4      V4      pV^ 8X  d   \        VW4      # V^8X  d   \        V VW4      # V^8X  d   \        VW4      # V^8X  d   \        \        VV4      W4      # MV^8w  d   VV) ,          pV^8X  d9   VV8  d2   V'       d   VV8  d#   \        \        V \        V V4      V4      WV4      # V^8X  d   \        \!        V\"        4      V3W^ 4      # \%        \'        V4      4      p\%        \'        V4      4      p\        VV4      pVV,          pV^8X  d   MV\)        V4      ,          pTpT pV'       d(   \+        V 4      p V ^ ,          ;w  rgrpV ^,          ;w  rrp^ p^ pVR8  Ed   V^8X  Ed   \-        V \"        4      pV^ ,          \         8X  d   V) pM0\        V^ ,          ^,          V^ ,          ^,          ,           V4      ) pVV8  d}   \        V4      p \        VV V4      p!\        V!V!V4      p!\/        V!\1        ^4      V4      p!\        V\3        \        V4      4      V4      p"\        V!V"V4      pV'       g   \        VW4      # MV^ 8  d
   VV,          p\-        V \4        4      p#V#^ ,          \         8X  d   V) p$M0\        V#^ ,          ^,          V#^ ,          ^,          ,           V4      ) p$V$V8  d   \        V4      p \7        \9        V V 4      \1        ^4      4      p%\        \        V#V#V4      V%V4      p!\/        V!\1        ^4      V4      p!\        V#\7        \"        \        V4      4      V4      p"\        V!V"V4      pV'       g   \        VW4      # MV$^ 8  d
   VV$,          pVV) 8  d   ^V^
,           ,          p&\;        V4      p'\=        \"        VV,
          4      p(\        V'V&VR7      p)\        \!        V'V(4      V&VR7      p*\?        \7        V*V)V&4      V(V&4      p+\9        VV+W4      p"V)V"3pV'       g   \        VW4      # M
VV) ,          pVV,          p\A        \B        V,          4      p,VV,8  p-\E        VV4      p.\E        VV4      p/^ p0V'       Eg   T p1VV,8  d   \G        VV4      p\A        ^V,^,          ,           V^,          ,
          R,          V,
          4      p2\H        V,          ;p3p4\J        p5\M        V24       FH  p6V.V3,          V/V5,          ,
          V,	          V.V5,          V/V3,          ,           V,	          p5p3V.V4,          p.KJ  	  \O        V3V) 4      \O        V5V) 4      3p0\O        V.V) 4      pWE3p \Q        V.V/V4      w  p7p8\        V V4      w  p9p:\E        V9V4      p9\E        V:V4      p:V9V.,          V:V/,          ,
          V,	          V9^,	          ,
          V7,           p7V9V/,          V:V.,          ,           V,	          V:^,	          ,
          V8,           p8\O        V7V) 4      \O        V8V) 4      3p"V0'       Ed^   V^8X  EdV   \        V"\        V0V4      V4      p"\S        V1^ ,          4      p;\S        V1^,          4      p<\T        PV                  ! V;V<4      p=\S        V"^,          4      p>\T        PX                  ! V<V;4      p?V=R8:  d   RV<,          V?,
          p@MAV<) RV?,          ,
          V;V?,          ,           V<\T        PZ                  ! V=4      ,          ,           p@\A        \T        P\                  ! X@V>,
          ^\T        P^                  ,          ,          R,           4      4      pV"^ ,          \!        V"^,          \        \        V4      ^V,          V4      V4      3p"V'       Ed   V^ 8X  g   V^8X  d   \        \a        VV4      VV4      pA\3        \        V4      4      \         3pBV'       d$   V^8X  d   \        XAVV4      pAM%\        XAVV4      pAM\        XA\c        X"V4      V4      pAV0'       d   \        XBV0V4      pBV^ 8X  d   \        XBXAW4      # V^8X  d   \        XAXBW4      # V^8X  Ed2   V'       d   \+        V4      pCM\+        X"4      pC\        XC\        \+        V4      V4      V4      pC\e        V^ ,          4      pD\g        V^,          4      pE\        V4      p \9        V VD4      p%\        V%VEV4      p%VC^ ,          \!        VC^,          V%V4      3pC\i        VC\k        V V4      V4      pC\a        \-        VVD4      V4      p%\        V%V4      p%\        VCV%V4      pCVE'       g4   \9        V \e        XD4      V4      p%XC^ ,          \7        VC^,          V%V4      3pC\        XCW4      # R# V^ 8X  d,   V0'       d   \        \c        X"V4      V0W4      # \c        X"W4      # V^8X  d5   V0'       d   \        V0\c        X"V4      W4      # \c        \+        X"4      W4      # V^8X  d   \        X"W4      # R# )r   )r  rx   g@KWx?Nii)6r   r  r(   r;   r   r   rW   r\   rY   r   rf   rZ   rU   ra   rX   r&  r%   r   r   r   r4   rV   rh   r]   r   r#   r   r&   r'   r$   r1   r)   ry   r  r   complexr   r   r   r    r  r5   r   hypotatan2r   floorr~   re   rb   r6   r7   r[   rA   )Fr   rn   r   r  ro   r   r  r  r  r  r   r   r   r   r   rs   r   r{   amagbmagr1  r   anbnabsnr  need_reflectionzorigyfinalbalance_preczsub1cancel1r~   r   r  zsub2cancel2rr   ppaabsr   x1r   xprimer  need_reductionafixbfixr  zpreredr   rrerp   rimr   rf  rg  lrelimzfazfbzfabsyfbr   gir   r   s1rezfloorimzsignsF   &&&&                                                                  rt   r&  r&  m  s	   DAEEEz191C+BTE"AVDG_as;Br6M#,e33 T4Dd| 
B8D8D$o Rx"9;wq2y}RH"MAqy4!==qyAt!99qyD!66qy4)@$!LLyQYC4LB
 qyS2X44<wq'!R."5qDD qy'!T*A.1==	VAYB	VAYBr2;DcJqy
hz"" OEAJ%&qT)T%&qT)T FLcz194(EQx5 %uQx{58A;6==|BZr2.Aq"%8B<4wy}'=rB Ar*&"6455 '1g4(EQx5 %uQx{58A;6==|BZGBOXa[9ub 91bA8B<4wtYr]'CRH Ar*&"6455 '1g2#:BrEB1:DD$r'*C4$/B74-r=BWRR0#r:F64-A!WF #vt11 # dU#L,B,R/0NN*NAr?DAr?D	A6. 2r?DQ**RU2S82=>A2%C#CAY!#Xd3h.3S488Kb7PS  S2#&S2#(>>ATB3'AA*4r:S1b>SsBsBD3t8#b(S!V4s:D3t8#b(S!V4s:rc"Lrc$::1 71b>2.A71:&C71:&CJJs3'E1Q4.C

3$A|c\A%TCE\CE)C,??DJJ34773C789A1wqt[QqS"%ErJKA19	
5"-ub9A$e,A1962.A62.AAwq"~r2Aq"%qyAt!99qyAt!99 19V_QZWWU^R8"=B q*HuQx(GBH%AAw+AQ%A2./BRR"5B;uh7<A2AQ#B B	( 3R8eWRUAr232t))/ 2 19wq"~q$<<1d((19q'!R.$<<71:t11191d(( rv   c                     \        WV^4      # r   r  r   rn   r   s   &&&rt   mpf_factorialr  W      Qc1%%rv   c                     \        WV^4      # r   r&  r  s   &&&rt   mpc_factorialr  Z  r  rv   c                     \        WV^4      # r   r  r  s   &&&rt   
mpf_rgammar  ]  r  rv   c                     \        WV^4      # r  r  r  s   &&&rt   
mpc_rgammar  `  r  rv   c                 B    V w  r4rVV'       d   \         h\        WV^4      # r   )r8   r  )r   rn   r   r   r   r   r   s   &&&    rt   mpf_loggammar  c  s$    DsQc1%%rv   c                     V w  r4Vw  rVrxVw  rrV\         8X  dA   V'       d9   \        W1V^4      pV) V) ,	          p\        \        V^
,           4      WV4      pW3# \	        WV^4      # r  )r   r  r(   r;   r&  )r   rn   r   ro   r   r  r  r  r  r   r   r   r   r   rs   r   s   &&&             rt   mpc_loggammar  i  sn    DAEEEzeqQ'UR!37vQc1%%rv   c                 ~    V \         8  d   \        \        V ^,
          ,          W4      # \        \	        V 4      W4      # r   )r  r"   r  r  r   )rs   rn   r   s   &&&rt   r   r   t  s3    %%,QqS14==Xa[$,,rv   r   )r   r   )r   )__doc__r   r]  backendr   r   r   r   r   r   
libintmathr   r	   r
   r   libmpfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   	libelefunr9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   libmpcrO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ru   r   r   r   r   r   r   r   	mpf_aperympf_khinchinmpf_glaishermpf_catalanmpf_mertensmpf_twinprimer   r   r   r   r   r   rz   r   r   r   r   r   r   r  r  r  r  ZETA_INT_CACHE_MAX_PRECr  r   r  r%  r=  r@  mpf_zetasumrB  rE  rF  rH  rL  rY  r\  rr  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r&  r  r  r  r  r  r  r   r   s   0rt   <module>r	     sY    
  < < 9 9                
 
 
 
 
 
 
0 
 
H  B 2 2z  *    0    2 [)	[)	//}-}- 1  @ a[a[2
 '':; IV	/Tz:@9= % 9)v % 3l ' 0 ' <J(T   ( 3.j %! U(n %!5 X1t ( % ( % 
 
67t  aV  u$ $$       
)!+	,.	,A "$q'*	,. O+b7-r/Ib#3jEPK)\h)T&&&&&	&  * -q.s   I/