On this page
zMachine Numerical Characteristics of the Machine
  Description
.Machine is a variable holding information on the numerical characteristics of the machine R is running on, such as the largest double or integer and the machine's precision.
Usage
.Machine
  Details
The algorithm is based on Cody's (1988) subroutine MACHAR. As all current implementations of R use 32-bit integers and use IEC 60559 floating-point (double precision) arithmetic, the "integer" and "double" related values are the same for almost all R builds.
Note that on most platforms smaller positive values than .Machine$double.xmin can occur. On a typical R platform the smallest positive double is about 5e-324.
Value
A list with components
double.eps | 
      the smallest positive floating-point number   | 
     
double.neg.eps | 
      a small positive floating-point number   | 
     
double.xmin | 
      the smallest non-zero normalized floating-point number, a power of the radix, i.e.,   | 
     
double.xmax | 
      the largest normalized floating-point number. Typically, it is equal to   | 
     
double.base | 
      the radix for the floating-point representation: normally   | 
     
double.digits | 
      the number of base digits in the floating-point significand: normally   | 
     
double.rounding | 
      the rounding action, one of  | 
     
double.guard | 
      the number of guard digits for multiplication with truncating arithmetic. It is 1 if floating-point arithmetic truncates and more than   | 
     
double.ulp.digits | 
      the largest negative integer   | 
     
double.neg.ulp.digits | 
      the largest negative integer   | 
     
double.exponent | 
      the number of bits (decimal places if   | 
     
double.min.exp | 
      the largest in magnitude negative integer   | 
     
double.max.exp | 
      the smallest positive power of   | 
     
integer.max | 
      the largest integer which can be represented. Always 2^31 - 1 = 2147483647.  | 
     
sizeof.long | 
      the number of bytes in a C   | 
     
sizeof.longlong | 
      the number of bytes in a C   | 
     
sizeof.longdouble | 
      the number of bytes in a C   | 
     
sizeof.pointer | 
      the number of bytes in a C   | 
     
longdouble.eps, longdouble.neg.eps, longdouble.digits, ... | 
      when   | 
     
Note
In the (typical) case where capabilities("long.double") is true, R uses the long double C type in quite a few places internally for accumulators in e.g. sum, reading non-integer numeric constants into (binary) double precision numbers, or arithmetic such as x %% y; also, long double can be read by readBin. 
 For this reason, in that case, .Machine contains ten further components, longdouble.eps, *.neg.eps, *.digits, *.rounding *.guard, *.ulp.digits, *.neg.ulp.digits, *.exponent, *.min.exp, and *.max.exp, computed entirely analogously to their double.* counterparts, see there.
sizeof.longdouble only tells you the amount of storage allocated for a long double. Often what is stored is the 80-bit extended double type of IEC 60559, padded to the double alignment used on the platform — this seems to be the case for the common R platforms using ix86 and x86_64 chips.
Note that it is legal for a platform to have a long double C type which is identical to the double type — this happens on ARM cpus. In that case capabilities("long.double") will be false but .Machine may contain "longdouble.<kind>" elements.
Source
Uses a C translation of Fortran code in the reference, modified by the R Core Team to defeat over-optimization in modern compilers.
References
Cody, W. J. (1988). MACHAR: A subroutine to dynamically determine machine parameters. Transactions on Mathematical Software, 14(4), 303–311. doi: 10.1145/50063.51907.
See Also
.Platform for details of the platform.
Examples
.Machine
## or for a neat printout
noquote(unlist(format(.Machine)))
  Copyright (©) 1999–2012 R Foundation for Statistical Computing.
Licensed under the GNU General Public License.