Skip site navigation (1)Skip section navigation (2)
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>