iMachine

Returns integer information describing the computer’s arithmetic.

Synopsis

iMachine(n)

Required Arguments

int n (Input)
Index indicating which value is to be returned. It must be between 0 and 12.

Return Value

The requested value is returned. If n is out of range, then NaN is returned.

Description

The function iMachine returns information describing the computer’s arithmetic. This can be used to make programs machine independent.

\[\texttt{iMachine(0)} = \text{ Number of bits per byte}\]

Assume that integers are represented in M-digit, base-A form as

\[\sigma \textstyle\sum_{k=0}^{M} x_k A^k\]

where σ is the sign and \(0\leq x_k<A\) for \(k=0,\ldots,M\). Then,

n Definition
0 C, bits per character
1 A, the base
2 \(M_s\), the number of base-A digits in a short int
3 \(A^{M_s}-1\), the largest short int
4 \(M_l\), the number of base-A digits in a long int
5 \(A^{M_1}-1\), the largest long int

Assume that floating-point numbers are represented in N-digit, base B form as

\[\sigma B^E \textstyle\sum_{k=1}^{N} x_k B^{-k}\]

where σ is the sign and \(0\leq x_k<B\) for \(k=1,\ldots,N\) for and \(E_$\leq E\leq E_"\).

Then,

n Definition
6 B, the base
7 \(N_f\), the number of base-B digits in float
8 \(E_{\min_f},\text{the smallest } \mathit{float} \text{ exponent}\)
9 \(E_{\max_f},\text{the largest } \mathit{float} \text{ exponent}\)
10 \(N_d\), the number of base-B digits in double
11 \(E_{\min_d},\text{the smallest } \mathit{double} \text{ exponent}\)
12 \(E_{\max_d},\text{the largest } \mathit{double} \text{ exponent}\)

Example

This example prints all the values returned by iMachine on a 32-bit machine with IEEE (Institute for Electrical and Electronics Engineer) arithmetic.

from __future__ import print_function
from pyimsl.math.iMachine import iMachine

for n in range(0, 13):
    ans = iMachine(n)
    print("iMachine[", n, "] = ", ans)

Output

iMachine[ 0 ] =  8
iMachine[ 1 ] =  2
iMachine[ 2 ] =  15
iMachine[ 3 ] =  32767
iMachine[ 4 ] =  63
iMachine[ 5 ] =  9223372036854775807
iMachine[ 6 ] =  2
iMachine[ 7 ] =  24
iMachine[ 8 ] =  -125
iMachine[ 9 ] =  128
iMachine[ 10 ] =  53
iMachine[ 11 ] =  -1021
iMachine[ 12 ] =  1024