Re: Initializing constants
- From: Ben Pfaff <blp@xxxxxxxxxxxxxxx>
- Date: Thu, 31 Aug 2006 13:05:47 -0700
"newsposter0123" <newsposter0123@xxxxxxxxx> writes:
Ben Pfaff wrote:
"newsposter0123" <newsposter0123@xxxxxxxxx> writes:Yep. Some hardware provides an 128bit long double.
Provided the precision of the measurements device was known in advance,
then the number of significant digits could be predetermined. If a
device with greater precision were used, then the constant would be
require adjustment (and no longer be a constant).
But the i386 floating-point architecture also has a fixed
precision.
When you obtain your device with greater precision,
you will have to change the code anyhow.
Depending on how the application was implemented, maybe. If the
calculations could be completed using the long double type, then no.
But the library/ api providing and/or using the constant would not
require adjustment.
You said, in the article that I originally replied to, that you
wanted to use an i386-specific instruction to obtain the value of
pi. You can't use that to obtain more than 80 bits of precision,
and you can't use it except on an i386 machine. Now you're
telling me that this will allow you to obtain greater precision
on a new device without adjusting the library or API.
So I don't see theMuch easier for the programmer to implement.
benefit.
I don't see how it's easier to use an i386-specific instruction
to obtain 80 bits of pi that to write a floating-point constant
that contains 80 bits of pi, and I certainly don't see how it
makes the code more extensible to better precision.
BTW, this is off topic, but if a measurment device (micrometer) is
graduated in thousands of an inch and has range 0-2 inch, would the
measurement .053 contain 3 or 4 significant digits and be written as
5.300e-2 or 5.30e-2? I'm pretty sure the measurement 1.053 would have
4.
Sounds like a trick question to me. I would think that .053 has
2 significant digits.
--
int main(void){char p[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.\
\n",*q="kl BIcNBFr.NKEzjwCIxNJC";int i=sizeof p/2;char *strchr();int putchar(\
);while(*q){i+=strchr(p,*q++)-p;if(i>=(int)sizeof p)i-=sizeof p-1;putchar(p[i]\
);}return 0;}
.
- References:
- Initializing constants
- From: newsposter0123
- Re: Initializing constants
- From: Ben Pfaff
- Re: Initializing constants
- From: newsposter0123
- Re: Initializing constants
- From: Ben Pfaff
- Re: Initializing constants
- From: newsposter0123
- Initializing constants
- Prev by Date: Re: is the C library a wrapper for windows API?
- Next by Date: Re: C IDE Recommendations
- Previous by thread: Re: Initializing constants
- Next by thread: how could I write this cpp macro
- Index(es):
Relevant Pages
|