Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Nov 2010 14:25:19 -0500
From:      Alex Stangl <alex@stangl.us>
To:        Arthur Bela <jozsi.avadkan@gmail.com>
Cc:        FreeBSD Mailing list <freebsd-questions@freebsd.org>
Subject:   Re: how to generate pi in c
Message-ID:  <20101105192519.GA78113@scout.stangl.us>
In-Reply-To: <AANLkTikaBYi0d4dvLnc=vxuPDWQHDqrVJrz=iVkECeO=@mail.gmail.com>
References:  <AANLkTikaBYi0d4dvLnc=vxuPDWQHDqrVJrz=iVkECeO=@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Nov 05, 2010 at 05:40:39PM +0100, Arthur Bela wrote:
> Does anyone has a "generate-pi.c" source code?

Search for pi spigot algorithm.

Here is a tiny C program from Jeremy Gibbon's Unbounded Spigot paper
(due to Dik Winter and Achim Flammenkamp):

a[52514],b,c=52514,d,e,f=1e4,g,h;main(){for(;b=c-=14;h=printf("%04d",
e+d/f))for(e=d%=f;g=--b*2;d/=g)d=d*b+f*(h?a[b]:f/5),a[b]=d%--g;}

This produces the first 15,000 digits concisely, but is obfuscated.
If you need an unbounded number of digits, search out the spigot
algorithm papers.

Alex



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20101105192519.GA78113>