On Fri, Feb 11, 2011 at 11:16:55PM +0100, Stefan D?singer wrote:
.... Its just that this function goes to great lengths to make sure it doesn't rely on the actual encoding that it is annoying that we have to give it up for detecting the sign of zeroes.
In that case why not?
int is_neq_z(double x) { union { char i[sizeof (double)]; double d; } ux, u0; int i;
if (x != 0.0) return 0; u0.d = 0.0; ux.d = x; for (i = 0; i < sizeof (double); i++) { if (ux.i[i] != u0.i[i]) return 1; } return 0; }
Which works provided that there are only 2 encoding patterns for zero.
David