#!/usr/bin/env ruby require 'bigdecimal' goal = (ARGV[0]||9999).to_i if true pi4 = 0.0 (0..goal).each do |x| pi4 += (-1)**x * 1.0/(2*x+1) end printf("pi=%.20f\n", 4*pi4) printf("ep=%.20f\n", Math::PI-4*pi4) end pi4 = 0.0 goal.step(0, -1) do |x| pi4 += (-1)**x * 1.0/(2*x+1) end printf("pi=%.20f\n", 4*pi4) printf("ep=%.20f\n", Math::PI-4*pi4) pi4 = 0 bai = 10**20 (0..goal).each do |i| pi4 += (-1)**i * bai/(2*i+1) #printf("%d\r", i) end printf("pi=%.20f\n", 4.0*pi4/bai) printf("ep=%.20f\n", Math::PI-4.0*pi4/bai)