error casting an unsigned long to a double with egcs 1.0.1

Daniel Supernaw-Issen dsupern@arash.amd.com
Fri Mar 13 09:02:00 GMT 1998


Hi,

I'm working on a very large project.  There are a couple places in our code
where we are casting unsigned longs to doubles.  In some of these cases, the
casted answer is complete garbage.  When I've made a minimal test program to 
show the bug, the code works fine.  When I make a separate function to do the
work, the code works fine.  I've only been able to reproduce this bug when it's
embeded in a alot of other code.  This said, I haven't been able to pair it down
enough to demonstrate the problem with anything approaching reasonable example
length.  I'm using egcs-1.0.1.  I've been able to work around this problem
by doing as much mathematical manipulation of the unsigned long as an unsigned
long so that I can guarentee that the value is within the range of an int.  Once
this is done, I've been casting through int to the double like this:

double_variable = (double)(int)unsigned_long_variable;

I'm sorry I don't workable example of the problem.  If someone specifically
wants to see the code (its ORACLE PROC precompiled C++), I can probably get it
to you, but you would need a *ton* of other files and commercial libraries to
build it (which is why I was trying to build a smaller example of the problem
that didn't use all this junk).

Daniel



More information about the Gcc-bugs mailing list