chiark / gitweb /
into and from limb
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 4 Oct 2020 19:04:11 +0000 (20:04 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 4 Oct 2020 19:04:11 +0000 (20:04 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bigfloat.rs

index 9a6032dba32ee0a00715c0f94f50e1d7ee2f9a3d..aa7bca34e1fe06a7ee2b6cbb9a081e7ac9460c8d 100644 (file)
@@ -122,6 +122,23 @@ mod innards {
   }
 
 }
+
+impl From<u64> for Limb {
+  fn from(u: u64) -> Limb {
+    assert_eq!(0, u >> 48);
+    Limb([ ((u >> 32) & 0xffff) as u16,
+           ((u >> 16) & 0xffff) as u16,
+           ((u >>  0) & 0xffff) as u16 ])
+  }
+}
+impl From<Limb> for u64 {
+  fn from(l: Limb) -> u64 {
+    ((l.0[0] as u64) << 32) |
+    ((l.0[1] as u64) << 16) |
+    ((l.0[2] as u64) <<  0)
+  }
+}
+
 /*/
 impl Bigfloat {
   fn from_parts(sign: Sign, exp: Sz, limbs: &[Limb]) {