T.R | Title | User | Personal Name | Date | Lines |
---|
945.1 | | TLE::LUCIA | http://asaab.zko.dec.com/~lucia/biography.html | Fri May 02 1997 12:30 | 23 |
| This is a result of the newest long double support. Ladebug now does everything
in the "widest" of the floating types available. In the case of floating point
literals, they are done in long double, hence the difference you are seeing.
It is okay.
float op float = float [real*4]
double op double = double [real*8]
float op double = double [real*8]
float op long double = long double [real*16]
.
.
.
In many cases, I've checked that if:
long double x;
if ((long double)((double)x)) == x then display x using double to minimize the
"noisy bits". In this case, nothing is ever a double, so this step is skipped.
Tim
|
945.2 | Something is still wrong | WIBBIN::NOYCE | Pulling weeds, pickin' stones | Fri May 02 1997 15:08 | 8 |
| > set $c = 7.89 + (long)7.89
>
> 1.48899999999999996802557689079549E+0001
Clearly, some part of the computation was done in double (64 bits) but the
display was done in long double (128 bits). I would guess that the conversion
of "7.89" to a binary floating-point value was done in double -- is it supposed
to be done in the widest floating type?
|
945.3 | | TLE::LUCIA | http://asaab.zko.dec.com/~lucia/biography.html | Fri May 02 1997 16:28 | 10 |
| Good catch Bill... The lexer/parser creates a double, not a long double.
HEY CHARLIE -- ARE WE GOING TO HAVE long double SUPPORT IN C++??
This is the real cause of the problem, since we're trying to minimized the
amount of non C++ code in the debugger...
I'll put this back on my plate.
Tim
|
945.4 | -real16 or -Wf,-real16 | DECCXL::OUELLETTE | mudseason into blackfly season | Fri May 02 1997 19:13 | 3 |
| There's a switch on the V6.0 C++ compiler...
There are a whole raft of library and name mangling issues to be solved
before you'd really want to use it though.
|