x86-64 support

Oliver Fromme olli at secnetix.de
Sun Apr 27 17:54:32 PDT 2003


Narvi <narvi at haldjas.folklore.ee> wrote:
 > On Sat, 26 Apr 2003, M. Warner Losh wrote:
 > > In message: <20030427064014.H40030-100000 at haldjas.folklore.ee>
 > >             Narvi <narvi at 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


More information about the freebsd-hackers mailing list