def calculateit(base, n, tofile): intpart = numeral(3, base) skip = 1 if base <= 3: skip = 2 prec = int(n * math.log(base, 2)) + 10 print("Step 1 of 2: calculating binary value...") t = clock() a = pi_fixed(prec, verbose=True, verbose_base=base) step1_time = clock() - t print("Step 2 of 2: converting to specified base...") t = clock() d = bin_to_radix(a, prec, base, n) d = numeral(d, base, n) step2_time = clock() - t print("\nWriting output...\n") if tofile: out_ = sys.stdout sys.stdout = tofile print("%i base-%i digits of pi:\n" % (n, base)) print(intpart, ".\n") display_fraction(d, skip, colwidth=10, columns=5) if tofile: sys.stdout = out_ print("\nFinished in %f seconds (%f calc, %f convert)" % \ ((step1_time + step2_time), step1_time, step2_time))
def _a(n, j, prec): """Compute the inner sum in the HRR formula.""" if j == 1: return fone s = fzero pi = pi_fixed(prec) for h in range(1, j): if igcd(h, j) != 1: continue # & with mask to compute fractional part of fixed-point number one = 1 << prec onemask = one - 1 half = one >> 1 g = 0 if j >= 3: for k in range(1, j): t = h*k*one//j if t > 0: frac = t & onemask else: frac = -((-t) & onemask) g += k*(frac - half) g = ((g - 2*h*n*one)*pi//j) >> prec s = mpf_add(s, mpf_cos(from_man_exp(g, -prec), prec), prec) return s
def calculateit(base, n, tofile): intpart = numeral(3, base) skip = 1 if base <= 3: skip = 2 prec = int(n*math.log(base,2))+10 print "Step 1 of 2: calculating binary value..." t = clock() a = pi_fixed(prec, verbose=True, verbose_base=base) step1_time = clock() - t print "Step 2 of 2: converting to specified base..." t = clock() d = bin_to_radix(a, prec, base, n) d = numeral(d, base, n) step2_time = clock() - t print "\nWriting output...\n" if tofile: out_ = sys.stdout sys.stdout = tofile print "%i base-%i digits of pi:\n" % (n, base) print intpart, ".\n" display_fraction(d, skip, colwidth=10, columns=5) if tofile: sys.stdout = out_ print "\nFinished in %f seconds (%f calc, %f convert)" % \ ((step1_time + step2_time), step1_time, step2_time)
def _a(n, j, prec): """Compute the inner sum in the HRR formula.""" if j == 1: return fone s = fzero pi = pi_fixed(prec) for h in range(1, j): if igcd(h, j) != 1: continue # & with mask to compute fractional part of fixed-point number one = 1 << prec onemask = one - 1 half = one >> 1 g = 0 if j >= 3: for k in range(1, j): t = h * k * one // j if t > 0: frac = t & onemask else: frac = -((-t) & onemask) g += k * (frac - half) g = ((g - 2 * h * n * one) * pi // j) >> prec s = mpf_add(s, mpf_cos(from_man_exp(g, -prec), prec), prec) return s