From dfa36afa894ecc4a9626ecbe1ba36e4ff1f00a77 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 31 Jan 2011 19:52:50 -0700 Subject: [PATCH] change `floating-point-bytes->real' to always produce a flonum --- collects/scribblings/reference/numbers.scrbl | 2 +- collects/tests/racket/number.rktl | 4 ++-- src/racket/src/numstr.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/collects/scribblings/reference/numbers.scrbl b/collects/scribblings/reference/numbers.scrbl index 3910473fd0..e400b2ea64 100644 --- a/collects/scribblings/reference/numbers.scrbl +++ b/collects/scribblings/reference/numbers.scrbl @@ -937,7 +937,7 @@ of length @racket[size-n], the @exnraise[exn:fail:contract].} [big-endian? any/c (system-big-endian?)] [start exact-nonnegative-integer? 0] [end exact-nonnegative-integer? (bytes-length bstr)]) - (and/c real? inexact?)]{ + flonum?]{ Converts the IEEE floating-point number encoded in @racket[bstr] from position @racket[start] (inclusive) to @racket[end] (exclusive) to an diff --git a/collects/tests/racket/number.rktl b/collects/tests/racket/number.rktl index 9adc86467c..4159d18488 100644 --- a/collects/tests/racket/number.rktl +++ b/collects/tests/racket/number.rktl @@ -2750,8 +2750,8 @@ (< a -1e38)))) (map (lambda (n) - (test #t close? (real->single-flonum n) (floating-point-bytes->real (real->floating-point-bytes n 4 #t) #t)) - (test #t close? (real->single-flonum n) (floating-point-bytes->real (real->floating-point-bytes n 4 #f) #f)) + (test #t close? n (floating-point-bytes->real (real->floating-point-bytes n 4 #t) #t)) + (test #t close? n (floating-point-bytes->real (real->floating-point-bytes n 4 #f) #f)) (test n floating-point-bytes->real (real->floating-point-bytes n 8 #t) #t) (test n floating-point-bytes->real (real->floating-point-bytes n 8 #f) #f)) (append diff --git a/src/racket/src/numstr.c b/src/racket/src/numstr.c index 1e80c9a56d..b83136e990 100644 --- a/src/racket/src/numstr.c +++ b/src/racket/src/numstr.c @@ -2090,7 +2090,7 @@ static Scheme_Object *bytes_to_real (int argc, Scheme_Object *argv[]) { float f; memcpy(&f, buf, sizeof(float)); -#ifdef MZ_USE_SINGLE_FLOATS +#ifdef MZ_USE_SINGLE_FLOATS_AS_DEFAULT return scheme_make_float(f); #else return scheme_make_double(f);