1 double
unsigned_to_double1(u)2 unsigned_to_double1 (u)
3      unsigned u;
4 {
5   double d;
6   d = (int) u;			/* convert as from a *signed* integer */
7   return ((int) u < 0)
8     ? d + 4294967296.0
9       : d;
10 }
11 
12 /* Alternatively */
13 
14 double
unsigned_to_double2(u)15 unsigned_to_double2 (u)
16      unsigned u;
17 {
18   double d;
19   u -= 2147483648;		/* complement sign bit */
20   d = (int) u;			/* convert as from a *signed* integer */
21   return d + 2147483648.0;
22 }
23 
24 unsigned
double_to_unsigned(d)25 double_to_unsigned (d)
26      double d;
27 {
28   d += 2147483648.0;
29   return ((int) d) - 2147483648;
30 }
31