1double
2unsigned_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
14double
15unsigned_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
24unsigned
25double_to_unsigned (d)
26     double d;
27{
28  d += 2147483648.0;
29  return ((int) d) - 2147483648;
30}
31