Date: Mon, 28 Apr 2003 02:54:29 +0200 (CEST) From: Oliver Fromme <olli@secnetix.de> To: freebsd-hackers@FreeBSD.ORG Subject: Re: x86-64 support Message-ID: <200304280054.h3S0sTi2006266@lurza.secnetix.de> In-Reply-To: <20030427065621.G40030-100000@haldjas.folklore.ee>
next in thread | previous in thread | raw e-mail | index | archive | help
Narvi <narvi@haldjas.folklore.ee> wrote: > On Sat, 26 Apr 2003, M. Warner Losh wrote: > > In message: <20030427064014.H40030-100000@haldjas.folklore.ee> > > Narvi <narvi@haldjas.folklore.ee> writes: > > : option USE_PI_DIGITS 100 > > > > Only if you could implement it with integer math :-) > > where's the problem in that ? most mp libs use integer arithmetic, and > x86-64 gives you 64x64->128 bit widening multiplies 8-) You don't need that; the digits of pi can be calculated quite easily with integer math. This snippet is from my signature collection: int f[9800],b,c=9814,g,i;long a=1e4,d,e,h;main(){for(;b=c,c-=14;i=printf( "%04d",e+d/a),e=d%a)while(g=--b*2)d=h*b+a*(i?f[b]:a/5),h=d/--g,f[b]=d%g;} Of course it doesn't comply with style(9), otherwise it wouldn't fit into two lines. Prettifying (de-obfuscating) it to make it style(9)-compliant is left as an exercise to the reader. ;-) Regards Oliver PS: The number of digits is specified by the iteration counter c which starts at 9814 in this case, producing 2800 digits (35 rows on an 80-columns terminal). The counter should be initialized with (digits / 4 + 1) * 14. Don't forget to make the f[] array sufficiently large. -- Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München Any opinions expressed in this message may be personal to the author and may not necessarily reflect the opinions of secnetix in any way. "Any sufficiently advanced technology is indistinguishable from magic." Arthur C. Clarke's Third Law, from Profiles of the Future
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304280054.h3S0sTi2006266>