def mertens_fixed(prec): wp = prec + 20 m = 2 s = mpf_euler(wp) while 1: t = mpf_zeta_int(m, wp) if t == fone: break t = mpf_log(t, wp) t = mpf_mul_int(t, moebius(m), wp) t = mpf_div(t, from_int(m), wp) s = mpf_add(s, t) m += 1 return to_fixed(s, prec)
def terms(): orig = ctx.prec # zeta ~ 1+eps; need to set precision # to get logarithm accurately k = 0 while 1: k += 1 u = libintmath.moebius(k) if not u: continue ctx.prec = wp t = u*ctx.ln(ctx.zeta(k*s))/k if not t: return #print ctx.prec, ctx.nstr(t) ctx.prec = orig yield t
def terms(): orig = ctx.prec # zeta ~ 1+eps; need to set precision # to get logarithm accurately k = 0 while 1: k += 1 u = libintmath.moebius(k) if not u: continue ctx.prec = wp t = u * ctx.ln(ctx.zeta(k * s)) / k if not t: return #print ctx.prec, ctx.nstr(t) ctx.prec = orig yield t
def I(n): return sum(moebius(d)<<(n//d) for d in xrange(1,n+1) if not n%d)//n
def I(n): return sum( moebius(d) << (n // d) for d in xrange(1, n + 1) if not n % d) // n