/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/boot.c,v 9.57 1989/09/20 23:06:26 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/boot.c,v 9.58 1989/09/24 15:12:48 cph Exp $
Copyright (c) 1988, 1989 Massachusetts Institute of Technology
#define ID_PRINTER_LENGTH 4 /* TTY height (# chars) */
#define ID_NEW_LINE_CHARACTER 5 /* #\Newline */
#define ID_FLONUM_PRECISION 6 /* Flonum mantissa (# bits) */
-#define ID_FLONUM_EXPONENT 7 /* Flonum exponent (# bits) */
+#define ID_FLONUM_EPSILON 7 /* Flonum epsilon (flonum) */
#define ID_OS_NAME 8 /* OS name (string) */
#define ID_OS_VARIANT 9 /* OS variant (string) */
#define ID_STACK_TYPE 10 /* Scheme stack type (string) */
FAST_VECTOR_SET
(Result, ID_NEW_LINE_CHARACTER, (ASCII_TO_CHAR ('\n')));
FAST_VECTOR_SET
- (Result, ID_FLONUM_PRECISION,
- (LONG_TO_UNSIGNED_FIXNUM (FLONUM_MANTISSA_BITS)));
+ (Result, ID_FLONUM_PRECISION, (LONG_TO_UNSIGNED_FIXNUM (DBL_MANT_DIG)));
FAST_VECTOR_SET
- (Result, ID_FLONUM_EXPONENT, (LONG_TO_UNSIGNED_FIXNUM (FLONUM_EXPT_SIZE)));
+ (Result, ID_FLONUM_EPSILON, (double_to_flonum ((double) DBL_EPSILON)));
FAST_VECTOR_SET
(Result, ID_OS_NAME, (char_pointer_to_string (OS_Name)));
FAST_VECTOR_SET
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/config.h,v 9.48 1989/09/22 08:44:46 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/config.h,v 9.49 1989/09/24 15:12:53 cph Exp $
Copyright (c) 1987, 1988, 1989 Massachusetts Institute of Technology
ULONG_SIZE is the size of an unsigned long in bits.
+ ******** The following flonum constants have been superseded by the
+ use of "float.h". ********
+
FLONUM_EXPT_SIZE is the number of bits in the largest positive
exponent of a (double) floating point number.
Note that if excess exponents are used in the representation,
#define ULONG_SIZE 32
#define BELL '\007'
#define FASL_INTERNAL_FORMAT FASL_68000
-#define FLONUM_EXPT_SIZE 7
-#define FLONUM_MANTISSA_BITS 56
-#define MAX_FLONUM_EXPONENT 127
+/* #define FLONUM_EXPT_SIZE 7 */
+/* #define FLONUM_MANTISSA_BITS 56 */
+/* #define MAX_FLONUM_EXPONENT 127 */
#define HAS_FREXP
#ifdef quick
/* Bignum code fails for certain variables in registers because of a
#define ULONG_SIZE 32
#define BELL '\007'
#define FASL_INTERNAL_FORMAT FASL_VAX
-#define FLONUM_EXPT_SIZE 7
-#define FLONUM_MANTISSA_BITS 56 /* D format */
-#define MAX_FLONUM_EXPONENT 127
+/* #define FLONUM_EXPT_SIZE 7 */
+/* #define FLONUM_MANTISSA_BITS 56 D format */
+/* #define MAX_FLONUM_EXPONENT 127 */
#define HAS_FLOOR
#define HAS_FREXP
#define HAS_MODF
#else /* not MC68020 */
#define FASL_INTERNAL_FORMAT FASL_68000
#endif /* MC68020 */
-#define FLONUM_EXPT_SIZE 10
-#define FLONUM_MANTISSA_BITS 53
-#define MAX_FLONUM_EXPONENT 1023
+/* #define FLONUM_EXPT_SIZE 10 */
+/* #define FLONUM_MANTISSA_BITS 53 */
+/* #define MAX_FLONUM_EXPONENT 1023 */
#define HAS_FLOOR
#define HAS_FREXP
#define HAS_MODF
#define ULONG_SIZE 32
#define BELL '\007'
#define FASL_INTERNAL_FORMAT FASL_HP_9000_500
-#define FLONUM_EXPT_SIZE 10
-#define FLONUM_MANTISSA_BITS 53
-#define MAX_FLONUM_EXPONENT 1023
+/* #define FLONUM_EXPT_SIZE 10 */
+/* #define FLONUM_MANTISSA_BITS 53 */
+/* #define MAX_FLONUM_EXPONENT 1023 */
#define HAS_FLOOR
#define HAS_FREXP
#define HAS_MODF
#define ULONG_SIZE 32
#define BELL '\007'
-#define FLONUM_EXPT_SIZE 10
-#define FLONUM_MANTISSA_BITS 53
-#define MAX_FLONUM_EXPONENT 1023
+/* #define FLONUM_EXPT_SIZE 10 */
+/* #define FLONUM_MANTISSA_BITS 53 */
+/* #define MAX_FLONUM_EXPONENT 1023 */
#ifdef sun4
#define MACHINE_TYPE "sun4"
#define ULONG_SIZE 32
#define BELL '\007'
#define FASL_INTERNAL_FORMAT FASL_BFLY
-#define FLONUM_EXPT_SIZE 7
-#define FLONUM_MANTISSA_BITS 56
-#define MAX_FLONUM_EXPONENT 127
+/* #define FLONUM_EXPT_SIZE 7 */
+/* #define FLONUM_MANTISSA_BITS 56 */
+/* #define MAX_FLONUM_EXPONENT 127 */
#include <public.h>
#define HAS_FREXP
#define HAS_MODF
#define ULONG_SIZE ???
#define BELL '\007'
#define FASL_INTERNAL_FORMAT FASL_CYBER
-#define FLONUM_EXPT_SIZE 14
-#define FLONUM_MANTISSA_BITS 48
+/* #define FLONUM_EXPT_SIZE 14 */
+/* #define FLONUM_MANTISSA_BITS 48 */
/* Not the full range, or so the manual says. */
-#define MAX_FLONUM_EXPONENT 4095
+/* #define MAX_FLONUM_EXPONENT 4095 */
/* The Cyber180 C compiler manifests a bug in hairy conditional
expressions */
#define Conditional_Bug
#define ULONG_SIZE 32
#define BELL '\007'
#define FASL_INTERNAL_FORMAT FASL_CELERITY
-#define FLONUM_EXPT_SIZE 11
-#define FLONUM_MANTISSA_BITS 53
-#define MAX_FLONUM_EXPONENT 2047
+/* #define FLONUM_EXPT_SIZE 11 */
+/* #define FLONUM_MANTISSA_BITS 53 */
+/* #define MAX_FLONUM_EXPONENT 2047 */
#endif
\f
#ifdef hp9000s800
#define ULONG_SIZE 32
#define BELL '\007'
#define FASL_INTERNAL_FORMAT FASL_HP_SPECTRUM
-#define FLONUM_EXPT_SIZE 10
-#define FLONUM_MANTISSA_BITS 53
-#define MAX_FLONUM_EXPONENT 1023
+/* #define FLONUM_EXPT_SIZE 10 */
+/* #define FLONUM_MANTISSA_BITS 53 */
+/* #define MAX_FLONUM_EXPONENT 1023 */
#define FLOATING_ALIGNMENT 0x7 /* Low 3 MBZ for float storage */
#define HAS_FLOOR
#define HAS_FREXP
#define DBFLT_SIZE 64
#define BELL '\007'
#define FASL_INTERNAL_FORMAT FASL_UMAX
-#define FLONUM_EXPT_SIZE 10
-#define FLONUM_MANTISSA_BITS 53
-#define MAX_FLONUM_EXPONENT 1023
+/* #define FLONUM_EXPT_SIZE 10 */
+/* #define FLONUM_MANTISSA_BITS 53 */
+/* #define MAX_FLONUM_EXPONENT 1023 */
#define HAS_FLOOR
#define HAS_FREXP
#define HAS_MODF
#define ULONG_SIZE 32
#define BELL '\007'
#define FASL_INTERNAL_FORMAT FASL_PYR
-#define FLONUM_EXPT_SIZE 10
-#define FLONUM_MANTISSA_BITS 53
-#define MAX_FLONUM_EXPONENT 1023
+/* #define FLONUM_EXPT_SIZE 10 */
+/* #define FLONUM_MANTISSA_BITS 53 */
+/* #define MAX_FLONUM_EXPONENT 1023 */
#endif
#ifdef alliant
#define ULONG_SIZE 32
#define BELL '\007'
#define FASL_INTERNAL_FORMAT FASL_ALLIANT
-#define FLONUM_EXPT_SIZE 10
-#define FLONUM_MANTISSA_BITS 53
-#define MAX_FLONUM_EXPONENT 1023
+/* #define FLONUM_EXPT_SIZE 10 */
+/* #define FLONUM_MANTISSA_BITS 53 */
+/* #define MAX_FLONUM_EXPONENT 1023 */
#define HAS_FLOOR
#define HAS_FREXP
#define HAS_MODF
#define ULONG_SIZE 32
/* Flonum (double) size is 64 bits. */
#define FLOATING_ALIGNMENT 0x7
-#define FLONUM_MANTISSA_BITS 53
-#define FLONUM_EXPT_SIZE 10
-#define MAX_FLONUM_EXPONENT 1023
+/* #define FLONUM_MANTISSA_BITS 53 */
+/* #define FLONUM_EXPT_SIZE 10 */
+/* #define MAX_FLONUM_EXPONENT 1023 */
/* Floating point representation uses hidden bit. */\r
#define FASL_INTERNAL_FORMAT FASL_MIPS
#define BELL '\007'
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/flonum.c,v 9.28 1989/09/24 13:49:21 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/flonum.c,v 9.29 1989/09/24 15:12:57 cph Exp $
Copyright (c) 1987, 1988, 1989 Massachusetts Institute of Technology
CHECK_ARG (1, FLONUM_P);
PRIMITIVE_RETURN (flonum_normalize (ARG_REF (1)));
}
-
-#include "float.h"
-#if (FLT_RADIX != 2)
-#include "error: floating point radix not 2! Arithmetic won't work."
-#endif
-
-#define FLONUM_CONSTANT(expression) \
-{ \
- PRIMITIVE_HEADER (0); \
- PRIMITIVE_RETURN (expression); \
-}
-
-DEFINE_PRIMITIVE ("FLONUM-MANTISSA-DIGITS", Prim_flonum_mantissa_digits, 0, 0, 0)
- FLONUM_CONSTANT (long_to_integer (DBL_MANT_DIG))
-DEFINE_PRIMITIVE ("FLONUM-EPSILON", Prim_flonum_epsilon, 0, 0, 0)
- FLONUM_CONSTANT (double_to_flonum ((double) DBL_EPSILON))
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/intprm.c,v 1.1 1989/09/20 23:23:20 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/intprm.c,v 1.2 1989/09/24 15:13:01 cph Exp $
Copyright (c) 1989 Massachusetts Institute of Technology
PRIMITIVE_RETURN (FIXNUM_TO_FLONUM (integer));
if (bignum_fits_in_word_p
(integer,
- (((control & 1) != 0) ? FLONUM_MANTISSA_BITS : MAX_FLONUM_EXPONENT),
+ (((control & 1) != 0) ? DBL_MANT_DIG : DBL_MAX_EXP),
0))
PRIMITIVE_RETURN (BIGNUM_TO_FLONUM (integer));
if ((control & 2) != 0)
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/object.h,v 9.32 1989/09/20 23:10:26 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/object.h,v 9.33 1989/09/24 15:13:04 cph Exp $
Copyright (c) 1987, 1988, 1989 Massachusetts Institute of Technology
(bignum_fits_in_word_p ((bignum), ((sizeof (long)) * CHAR_BIT), 1))
/* If precision should not be lost,
- compare to FLONUM_MANTISSA_BITS instead. */
+ compare to DBL_MANT_DIG instead. */
#define BIGNUM_TO_DOUBLE_P(bignum) \
- (bignum_fits_in_word_p ((bignum), MAX_FLONUM_EXPONENT, 0))
+ (bignum_fits_in_word_p ((bignum), DBL_MAX_EXP, 0))
/* Flonum Operations */
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/psbtobin.c,v 9.37 1989/09/21 22:53:12 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/psbtobin.c,v 9.38 1989/09/24 15:12:41 cph Exp $
Copyright (c) 1987, 1989 Massachusetts Institute of Technology
fast int expt;
Result = 0.0;
- for (expt = MAX_FLONUM_EXPONENT;
+ for (expt = DBL_MAX_EXP;
expt != 0;
expt >>= 1)
{
size_in_bits = (read_signed_decimal (portable_file));
if (size_in_bits == 0)
return (0);
- if ((exponent > MAX_FLONUM_EXPONENT) ||
- (exponent < -MAX_FLONUM_EXPONENT))
+ if ((exponent > DBL_MAX_EXP) || (exponent < DBL_MIN_EXP))
{
/* Skip over mantissa */
fast double Normalization;
long digit;
- if (size_in_bits > FLONUM_MANTISSA_BITS)
+ if (size_in_bits > DBL_MAN_DIG)
{
fprintf(stderr,
"%s: Some precision may be lost.",
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/scheme.h,v 9.30 1989/09/20 23:11:23 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/scheme.h,v 9.31 1989/09/24 15:13:08 cph Exp $
Copyright (c) 1987, 1988, 1989 Massachusetts Institute of Technology
#include "extern.h" /* External declarations */
#include "bignum.h" /* Bignum declarations */
#include "prim.h" /* Declarations for primitives. */
+#include "float.h" /* Floating-point parameters */
+#if (FLT_RADIX != 2)
+#include "error: floating point radix not 2! Arithmetic won't work."
+#endif
+
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/unxutl/Attic/ymkfile,v 1.12 1989/09/24 13:50:26 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/unxutl/Attic/ymkfile,v 1.13 1989/09/24 15:13:11 cph Exp $
Copyright (c) 1989 Massachusetts Institute of Technology
/* scheme.touch depends also on butterfly.h rename.c */
scheme.touch : scheme.h config.h bkpt.h object.h scode.h sdata.h \
gc.h interp.h stack.h futures.h types.h errors.h returns.h \
- const.h fixobj.h default.h extern.h prim.h intrpt.h
+ const.h fixobj.h default.h extern.h prim.h intrpt.h float.h
os.touch : os.c mul.c unix.c vms.c unknown.c scheme.touch zones.h
psbmap.touch : config.h object.h bignum.h bignumint.h bitstr.h types.h \
sdata.h const.h psbmap.h $(GC_HEAD_FILES) comlin.h comlin.c
artutl.o : scheme.touch
bignum.o : scheme.touch bignumint.h
-bigprm.o intprm.o generic.o : scheme.touch prims.h zones.h
-flonum.o : scheme.touch prims.h zones.h float.h
+bigprm.o flonum.o intprm.o generic.o : scheme.touch prims.h zones.h
storage.o : scheme.touch gctype.c
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/object.h,v 9.32 1989/09/20 23:10:26 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/object.h,v 9.33 1989/09/24 15:13:04 cph Exp $
Copyright (c) 1987, 1988, 1989 Massachusetts Institute of Technology
(bignum_fits_in_word_p ((bignum), ((sizeof (long)) * CHAR_BIT), 1))
/* If precision should not be lost,
- compare to FLONUM_MANTISSA_BITS instead. */
+ compare to DBL_MANT_DIG instead. */
#define BIGNUM_TO_DOUBLE_P(bignum) \
- (bignum_fits_in_word_p ((bignum), MAX_FLONUM_EXPONENT, 0))
+ (bignum_fits_in_word_p ((bignum), DBL_MAX_EXP, 0))
/* Flonum Operations */
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/psbtobin.c,v 9.37 1989/09/21 22:53:12 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/psbtobin.c,v 9.38 1989/09/24 15:12:41 cph Exp $
Copyright (c) 1987, 1989 Massachusetts Institute of Technology
fast int expt;
Result = 0.0;
- for (expt = MAX_FLONUM_EXPONENT;
+ for (expt = DBL_MAX_EXP;
expt != 0;
expt >>= 1)
{
size_in_bits = (read_signed_decimal (portable_file));
if (size_in_bits == 0)
return (0);
- if ((exponent > MAX_FLONUM_EXPONENT) ||
- (exponent < -MAX_FLONUM_EXPONENT))
+ if ((exponent > DBL_MAX_EXP) || (exponent < DBL_MIN_EXP))
{
/* Skip over mantissa */
fast double Normalization;
long digit;
- if (size_in_bits > FLONUM_MANTISSA_BITS)
+ if (size_in_bits > DBL_MAN_DIG)
{
fprintf(stderr,
"%s: Some precision may be lost.",