Date: Tue, 29 Apr 2003 10:34:20 -0400 From: David Gilbert <dgilbert@velocet.ca> To: Oliver Fromme <olli@secnetix.de> Cc: freebsd-hackers@FreeBSD.ORG Subject: [hackers] Re: x86-64 support Message-ID: <16046.36204.494761.258593@canoe.velocet.net> In-Reply-To: <200304280054.h3S0sTi2006266@lurza.secnetix.de> References: <20030427065621.G40030-100000@haldjas.folklore.ee> <200304280054.h3S0sTi2006266@lurza.secnetix.de>
next in thread | previous in thread | raw e-mail | index | archive | help
>>>>> "Oliver" == Oliver Fromme <olli@secnetix.de> writes:
Oliver> 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-)
Oliver> You don't need that; the digits of pi can be calculated quite
Oliver> easily with integer math. This snippet is from my signature
Oliver> collection:
Oliver> int f[9800],b,c=9814,g,i;long
Oliver> a=1e4,d,e,h;main(){for(;b=c,c-=14;i=printf(
Oliver> "%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;}
With gcc -o pi pi.c, the output is:
[2:19:319]dgilbert@canoe:~/devel> ./pi
187700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
and so on. All Zeros.
With gcc -O -o pi pi.c, the output is:
[2:21:321]dgilbert@canoe:~/devel> ./pi
501859265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316
... and so on for many digits. Neither matches:
echo "scale=200; 4*a(1)" | bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
81640628620899862803482534211706798214808651328230664709384460955058\
223172535940812848111745028410270193852110555964462294895493038196
Dave.
--
============================================================================
|David Gilbert, Velocet Communications. | Two things can only be |
|Mail: dgilbert@velocet.net | equal if and only if they |
|http://daveg.ca | are precisely opposite. |
=========================================================GLO================
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?16046.36204.494761.258593>
