modf(x: f64) -> (f64, f64)1  pub fn modf(x: f64) -> (f64, f64) {
2      let rv2: f64;
3      let mut u = x.to_bits();
4      let mask: u64;
5      let e = ((u >> 52 & 0x7ff) as i32) - 0x3ff;
6  
7      /* no fractional part */
8      if e >= 52 {
9          rv2 = x;
10          if e == 0x400 && (u << 12) != 0 {
11              /* nan */
12              return (x, rv2);
13          }
14          u &= 1 << 63;
15          return (f64::from_bits(u), rv2);
16      }
17  
18      /* no integral part*/
19      if e < 0 {
20          u &= 1 << 63;
21          rv2 = f64::from_bits(u);
22          return (x, rv2);
23      }
24  
25      mask = ((!0) >> 12) >> e;
26      if (u & mask) == 0 {
27          rv2 = x;
28          u &= 1 << 63;
29          return (f64::from_bits(u), rv2);
30      }
31      u &= !mask;
32      rv2 = f64::from_bits(u);
33      return (x - rv2, rv2);
34  }
35