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