/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/artutl.c,v 1.1 1989/09/20 23:19:25 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/artutl.c,v 1.2 1989/09/24 13:49:38 cph Exp $
Copyright (c) 1989 Massachusetts Institute of Technology
flonum_integer_p (x)
SCHEME_OBJECT x;
{
+ extern double modf ();
double iptr;
return ((modf ((FLONUM_TO_DOUBLE (x)), (&iptr))) == 0);
}
flonum_floor (x)
SCHEME_OBJECT x;
{
+ extern double floor ();
return (double_to_flonum (floor (FLONUM_TO_DOUBLE (x))));
}
flonum_ceiling (x)
SCHEME_OBJECT x;
{
+ extern double ceil ();
return (double_to_flonum (ceil (FLONUM_TO_DOUBLE (x))));
}
return
(double_to_flonum (double_truncate ((dx < 0) ? (dx - 0.5) : (dx + 0.5))));
}
+
+SCHEME_OBJECT
+flonum_normalize (x)
+ SCHEME_OBJECT x;
+{
+ extern double frexp ();
+ int exponent;
+ double significand = (frexp ((FLONUM_TO_DOUBLE (x)), (&exponent)));
+ return (cons ((double_to_flonum (significand)),
+ (double_to_flonum ((double) exponent))));
+}
\f
/* Generic Integer Operations */
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/extern.h,v 9.33 1989/09/20 23:07:50 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/extern.h,v 9.34 1989/09/24 13:49:05 cph Exp $
Copyright (c) 1987, 1988, 1989 Massachusetts Institute of Technology
extern SCHEME_OBJECT flonum_floor ();
extern SCHEME_OBJECT flonum_ceiling ();
extern SCHEME_OBJECT flonum_round ();
+extern SCHEME_OBJECT flonum_normalize ();
extern Boolean integer_zero_p ();
extern Boolean integer_negative_p ();
extern Boolean integer_positive_p ();
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/flonum.c,v 9.27 1989/09/20 23:08:30 cph Exp $
+$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 $
Copyright (c) 1987, 1988, 1989 Massachusetts Institute of Technology
FLONUM_EXACT_CONVERSION (flonum_ceiling)
DEFINE_PRIMITIVE ("FLONUM-ROUND->EXACT", Prim_flonum_round_to_exact, 1, 1, 0)
FLONUM_EXACT_CONVERSION (flonum_round)
+
+DEFINE_PRIMITIVE ("FLONUM-NORMALIZE", Prim_flonum_normalize, 1, 1, 0)
+{
+ PRIMITIVE_HEADER (1);
+ Set_Time_Zone (Zone_Math);
+ 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/unxutl/Attic/ymkfile,v 1.11 1989/09/22 08:47:32 cph Exp $
+$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 $
Copyright (c) 1989 Massachusetts Institute of Technology
artutl.o : scheme.touch
bignum.o : scheme.touch bignumint.h
-bigprm.o flonum.o intprm.o generic.o : scheme.touch prims.h zones.h
+bigprm.o intprm.o generic.o : scheme.touch prims.h zones.h
+flonum.o : scheme.touch prims.h zones.h float.h
storage.o : scheme.touch gctype.c
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/version.h,v 11.1 1989/09/20 23:03:51 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/version.h,v 11.2 1989/09/24 13:50:06 cph Exp $
Copyright (c) 1988, 1989 Massachusetts Institute of Technology
#define VERSION 11
#endif
#ifndef SUBVERSION
-#define SUBVERSION 1
+#define SUBVERSION 2
#endif
#ifndef UCODE_TABLES_FILENAME
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/version.h,v 11.1 1989/09/20 23:03:51 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/version.h,v 11.2 1989/09/24 13:50:06 cph Exp $
Copyright (c) 1988, 1989 Massachusetts Institute of Technology
#define VERSION 11
#endif
#ifndef SUBVERSION
-#define SUBVERSION 1
+#define SUBVERSION 2
#endif
#ifndef UCODE_TABLES_FILENAME