i1mach_IRIX6.f
INTEGER FUNCTION I1MACH (I)
C***BEGIN PROLOGUE I1MACH
C***PURPOSE Return integer machine dependent constants.
C***LIBRARY SLATEC
C***CATEGORY R1
C***TYPE INTEGER (I1MACH-I)
C***KEYWORDS MACHINE CONSTANTS
C***AUTHOR Fox, P. A., (Bell Labs)
C Hall, A. D., (Bell Labs)
C Schryer, N. L., (Bell Labs)
C***DESCRIPTION
C
C I1MACH can be used to obtain machine-dependent parameters for the
C local machine environment. It is a function subprogram with one
C (input) argument and can be referenced as follows:
C
C K = I1MACH(I)
C
C where I=1,...,16. The (output) value of K above is determined by
C the (input) value of I. The results for various values of I are
C discussed below.
C
C I/O unit numbers:
C I1MACH( 1) = the standard input unit.
C I1MACH( 2) = the standard output unit.
C I1MACH( 3) = the standard punch unit.
C I1MACH( 4) = the standard error message unit.
C
C Words:
C I1MACH( 5) = the number of bits per integer storage unit.
C I1MACH( 6) = the number of characters per integer storage unit.
C
C Integers:
C assume integers are represented in the S-digit, base-A form
C
C sign ( X(S-1)*A**(S-1) + ... + X(1)*A + X(0) )
C
C where 0 .LE. X(I) .LT. A for I=0,...,S-1.
C I1MACH( 7) = A, the base.
C I1MACH( 8) = S, the number of base-A digits.
C I1MACH( 9) = A**S - 1, the largest magnitude.
C
C Floating-Point Numbers:
C Assume floating-point numbers are represented in the T-digit,
C base-B form
C sign (B**E)*( (X(1)/B) + ... + (X(T)/B**T) )
C
C where 0 .LE. X(I) .LT. B for I=1,...,T,
C 0 .LT. X(1), and EMIN .LE. E .LE. EMAX.
C I1MACH(10) = B, the base.
C
C Single-Precision:
C I1MACH(11) = T, the number of base-B digits.
C I1MACH(12) = EMIN, the smallest exponent E.
C I1MACH(13) = EMAX, the largest exponent E.
C
C Double-Precision:
C I1MACH(14) = T, the number of base-B digits.
C I1MACH(15) = EMIN, the smallest exponent E.
C I1MACH(16) = EMAX, the largest exponent E.
C
C To alter this function for a particular environment, the desired
C set of DATA statements should be activated by removing the C from
C column 1. Also, the values of I1MACH(1) - I1MACH(4) should be
C checked for consistency with the local operating system.
C
C***REFERENCES P. A. Fox, A. D. Hall and N. L. Schryer, Framework for
C a portable library, ACM Transactions on Mathematical
C Software 4, 2 (June 1978), pp. 177-188.
C***ROUTINES CALLED (NONE)
C***REVISION HISTORY (YYMMDD)
C 750101 DATE WRITTEN
C 891012 Added VAX G-floating constants. (WRB)
C 891012 REVISION DATE from Version 3.2
C 891214 Prologue converted to Version 4.0 format. (BAB)
C 900618 Added DEC RISC constants. (WRB)
C 900723 Added IBM RS 6000 constants. (WRB)
C 901009 Correct I1MACH(7) for IBM Mainframes. Should be 2 not 16.
C (RWC)
C 910710 Added HP 730 constants. (SMR)
C 911114 Added Convex IEEE constants. (WRB)
C 920121 Added SUN -r8 compiler option constants. (WRB)
C 920229 Added Touchstone Delta i860 constants. (WRB)
C 920501 Reformatted the REFERENCES section. (WRB)
C 920625 Added Convex -p8 and -pd8 compiler option constants.
C (BKS, WRB)
C 930201 Added DEC Alpha and SGI constants. (RWC and WRB)
C 930618 Corrected I1MACH(5) for Convex -p8 and -pd8 compiler
C options. (DWL, RWC and WRB).
C***END PROLOGUE I1MACH