"Neil Kurzman" <ns*@mail.asb.com> wrote in message
news:40***************@mail.asb.com...
Christopher Benson-Manica wrote: How does one determine whether a double is equal to -0.0000...? Will
fabs() from math.h return 0.000... on -0.0000...?
One way would be:
if( (Number < 0) &&( Number > -0.00001))
You get to figure out how many zeros work for you
That won't work, since (Number<0) will be false for Number=-0. The -0
floating point bit pattern is all 0 bits except the sign bit, which is
turned on. The only time the sign of zero matters is when determining which
side of 0 you're on if you're on a singularity at 0 (called a branch cut).
The IEEE floating point arithmetic routines carefully keep track of -0's,
but to test for it you'll need to check directly for the sign bit, which is
easy enough with:
#include <math.h>
if (signbit(x)) ...
fabs, if implemented correctly, will convert -0 to 0.
Here's a brief introduction to IEEE arithmetic:
www.digitalmars.com/ctg/ctgNumerics.html
Here are some math functions, and what they do with -0:
www.digitalmars.com/rtl/math.html
-Walter
www.digitalmars.com free C/C++/D compilers