RosettaCodeData/Task/Ramanujans-constant/Pluto/ramanujans-constant.pluto
2026-04-30 12:34:36 -04:00

25 lines
640 B
Text

require "bignum"
local fmt = require "fmt"
mpfr.init()
mpfr.setBits(200)
local function ramanujan(n, dp)
local bd = new bigdec(n, dp)
local pi = mpfr.pi(dp)
local sr = mpfr.sqrt(bd)
return mpfr.exp(pi * sr)
end
print("Ramanujan's constant to 32 decimal places is:")
print(ramanujan(163, 32):tostring(32))
local heegner = {19, 43, 67, 163}
print("\nHeegner numbers yielding almost integers:")
for heegner as h do
local r = ramanujan(h, 32)
local rc = r:ceil()
local diff = (rc - r):tostring(32)
r = r:tostring(32)
rc = rc:tostring(32)
fmt.print("%3d: %51s ≈ %18s (diff: %s)", h, r, rc, diff)
end