double | |
unsigned_to_double1 (u) | |
unsigned u; | |
{ | |
double d; | |
d = (int) u; /* convert as from a *signed* integer */ | |
return ((int) u < 0) | |
? d + 4294967296.0 | |
: d; | |
} | |
/* Alternatively */ | |
double | |
unsigned_to_double2 (u) | |
unsigned u; | |
{ | |
double d; | |
u -= 2147483648; /* complement sign bit */ | |
d = (int) u; /* convert as from a *signed* integer */ | |
return d + 2147483648.0; | |
} | |
unsigned | |
double_to_unsigned (d) | |
double d; | |
{ | |
d += 2147483648.0; | |
return ((int) d) - 2147483648; | |
} |