The object
.Machine
is a list with various
numeric components whose names (with the exception of
integer.max
)
are made up of the characters
double.
or
single.
followed
by the name of a particular parameter of machine arithmetic (described
below).
For example,
single.digits
is the number of base
single.base
digits
in the floating point representation of a single-precision number.
In addition, the component
integer.max
is the largest integer.
base == 2
or
rounding == 0
,
eps
is
base^ulp.digits
.
Otherwise,
eps
is
base^upl.digits/2
.
base == 2
or
rounding == 0
,
neg.eps
is
base^neg.ulp.digits
.
Otherwise,
neg.eps
is
(base^neg.ulp.digits)/2
.
Because
neg.ulp/digits
is bounded below by
-(digits+3)
,
neg.eps
may not be the smallest number that can alter 1 by
subtraction.
xmin
is
base^min.exp
.
xmax
is
(1-neg.eps)*digits^max.exp
.
Note - on some machines
xmax
will be only the
second, or perhaps third, largest number, being
too small by 1 or 2 units in the last digit of the significand.
digits
base
base
digits
participate in the post-normalization shift of the
floating-point significand in multiplication;
1 if floating-point arithmetic truncates and more
than
digits
base
base
digits participate in the
post-normalization shift of the floating-point significand in multiplication.
ulp.digits
is bounded below by
-(digits+3)
.
neg.ulp.digits
is bounded below by
-(digits+3)
.
base
== 10)
reserved for the representation of the exponent
(including the bias or sign) of a floating-point number.
base^min.exp
is positive and normalized.
base
that overflows.
Adapted from W. J. Cody, "MACHAR: A Subroutine to Dynamically Determine Machine Parameters," TOMS(14), 1988.
.Machine$integer.max # largest integer