Define and expose flo:precision.
authorTaylor R Campbell <campbell@mumble.net>
Fri, 30 Nov 2018 06:48:05 +0000 (06:48 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Fri, 30 Nov 2018 06:53:17 +0000 (06:53 +0000)
This is the same as flo:significand-digits-base-2, but its name
doesn't imply base 2 -- it refers to whatever the floating-point
radix is.  Not that we're likely to do decimal floating-point ever,
but maybe you might want to write code that could be used in another
environment that does.

src/relnotes/flonum
src/runtime/arith.scm
src/runtime/runtime.pkg
tests/runtime/test-arith.scm

index cd953f3233f8603f6765df71656dafaa59d3567e..e42ef8fb67d2aacaf5513af58bd02cec5fd2a667 100644 (file)
@@ -4,7 +4,10 @@ New flonum-related definitions:
   always 2 but useful for assertions if you want to future-proof code
   that assumes it with a noisy failure in case we ever violate the
   assumption.
-- flo:radix. - Floating-point radix as a flonum.
+. flo:radix. - Floating-point radix as a flonum.
+. flo:precision - Number of digits in a significand, including the hidden
+  one bit for normal binary floating-point numbers.  For binary64
+  floating-point, this is 53.
 . flo:error-bound - Greatest possible relative error in rounding to nearest.
 . flo:log-error-bound = (log flo:error-bound)
 . flo:ulp-of-one - Distance from 1 to next greater floating-point number.
index 87e25a1cd3101f75577678f2803d7facf38497dc..ae273999f6cda61d8f06c9f05850e5116cc20df5 100644 (file)
@@ -95,6 +95,7 @@ USA.
 
 (define-integrable flo:radix 2)
 (define-integrable flo:radix. 2.)
+(define flo:precision)
 (define flo:ulp-of-one)
 (define flo:error-bound)
 (define flo:log-error-bound)
@@ -119,6 +120,7 @@ USA.
 
 (define (initialize-microcode-dependencies!)
   (let ((p microcode-id/floating-mantissa-bits))
+    (set! flo:precision p)
     (set! flo:significand-digits-base-2 p)
     ;; Add two here because first and last digits may be
     ;; "partial" in the sense that each represents less than the
index 5777e63efbbcd44aabbb1ae16e3708470b112c7c..71c552823c8f2cef2490c38cb14e218a98f691a5 100644 (file)
@@ -3403,6 +3403,7 @@ USA.
          flo:log-error-bound
          flo:normal-exponent-max
          flo:normal-exponent-min
+         flo:precision
          flo:radix
          flo:radix.
          flo:significand-digits-base-10
index acfee804820f792cc083f61a33d0ec2530c098c1..0de60324a8daa3cd514b09d4f66b592ceb204024 100644 (file)
@@ -943,7 +943,6 @@ USA.
                           (- z))))))
 
 (assert (= flo:radix 2))
-(define flo:precision flo:significand-digits-base-2)
 
 (define-enumerated-test 'exact->inexact
   `((,(+ 1 (expt flo:radix flo:precision))