Initial revision
authorStephen Adams <edu/mit/csail/zurich/adams>
Fri, 6 Dec 1996 17:14:56 +0000 (17:14 +0000)
committerStephen Adams <edu/mit/csail/zurich/adams>
Fri, 6 Dec 1996 17:14:56 +0000 (17:14 +0000)
etc/r2bs.scm [new file with mode: 0644]

diff --git a/etc/r2bs.scm b/etc/r2bs.scm
new file mode 100644 (file)
index 0000000..cf092b8
--- /dev/null
@@ -0,0 +1,19 @@
+;; $Id: r2bs.scm,v 1.1 1996/12/06 17:14:56 adams Exp $
+
+(define (real->bit-string x)
+  ;; Allocate a 64-bit result to hold the double-precision number.
+  (let ((result (bit-string-allocate 64)))
+    (read-bits!
+     ;; Guarantee that the number is floating-point.
+     (exact->inexact x)
+     ;; Skip over the non-marked vector header (32 bits).
+     32
+     result)
+    result))
+
+(define (bit-string->flonum bs)
+  ;; Allocate a flonum that we can clobber.
+  ;; The call to `random' prevents the compiler from constant folding.
+  (let ((flonum (exact->inexact (random 1))))
+    (write-bits! flonum 32 bs)
+    flonum))