github.com/gopherd/gonum@v0.0.4/mathext/internal/amos/amoslib/i1mach.f (about) 1 *DECK I1MACH 2 INTEGER FUNCTION I1MACH(I) 3 C***BEGIN PROLOGUE I1MACH 4 C***DATE WRITTEN 750101 (YYMMDD) 5 C***REVISION DATE 890213 (YYMMDD) 6 C***CATEGORY NO. R1 7 C***KEYWORDS LIBRARY=SLATEC,TYPE=INTEGER(I1MACH-I),MACHINE CONSTANTS 8 C***AUTHOR FOX, P. A., (BELL LABS) 9 C HALL, A. D., (BELL LABS) 10 C SCHRYER, N. L., (BELL LABS) 11 C***PURPOSE Returns integer machine dependent constants 12 C***DESCRIPTION 13 C 14 C I1MACH can be used to obtain machine-dependent parameters 15 C for the local machine environment. It is a function 16 C subroutine with one (input) argument, and can be called 17 C as follows, for example 18 C 19 C K = I1MACH(I) 20 C 21 C where I=1,...,16. The (output) value of K above is 22 C determined by the (input) value of I. The results for 23 C various values of I are discussed below. 24 C 25 C I/O unit numbers. 26 C I1MACH( 1) = the standard input unit. 27 C I1MACH( 2) = the standard output unit. 28 C I1MACH( 3) = the standard punch unit. 29 C I1MACH( 4) = the standard error message unit. 30 C 31 C Words. 32 C I1MACH( 5) = the number of bits per integer storage unit. 33 C I1MACH( 6) = the number of characters per integer storage unit. 34 C 35 C Integers. 36 C assume integers are represented in the S-digit, base-A form 37 C 38 C sign ( X(S-1)*A**(S-1) + ... + X(1)*A + X(0) ) 39 C 40 C where 0 .LE. X(I) .LT. A for I=0,...,S-1. 41 C I1MACH( 7) = A, the base. 42 C I1MACH( 8) = S, the number of base-A digits. 43 C I1MACH( 9) = A**S - 1, the largest magnitude. 44 C 45 C Floating-Point Numbers. 46 C Assume floating-point numbers are represented in the T-digit, 47 C base-B form 48 C sign (B**E)*( (X(1)/B) + ... + (X(T)/B**T) ) 49 C 50 C where 0 .LE. X(I) .LT. B for I=1,...,T, 51 C 0 .LT. X(1), and EMIN .LE. E .LE. EMAX. 52 C I1MACH(10) = B, the base. 53 C 54 C Single-Precision 55 C I1MACH(11) = T, the number of base-B digits. 56 C I1MACH(12) = EMIN, the smallest exponent E. 57 C I1MACH(13) = EMAX, the largest exponent E. 58 C 59 C Double-Precision 60 C I1MACH(14) = T, the number of base-B digits. 61 C I1MACH(15) = EMIN, the smallest exponent E. 62 C I1MACH(16) = EMAX, the largest exponent E. 63 C 64 C To alter this function for a particular environment, 65 C the desired set of DATA statements should be activated by 66 C removing the C from column 1. Also, the values of 67 C I1MACH(1) - I1MACH(4) should be checked for consistency 68 C with the local operating system. 69 C 70 C***REFERENCES FOX P.A., HALL A.D., SCHRYER N.L.,*FRAMEWORK FOR A 71 C PORTABLE LIBRARY*, ACM TRANSACTIONS ON MATHEMATICAL 72 C SOFTWARE, VOL. 4, NO. 2, JUNE 1978, PP. 177-188. 73 C***ROUTINES CALLED (NONE) 74 C***END PROLOGUE I1MACH 75 C 76 INTEGER IMACH(16),OUTPUT 77 SAVE IMACH 78 EQUIVALENCE (IMACH(4),OUTPUT) 79 C 80 C MACHINE CONSTANTS FOR THE IBM PC 81 C 82 DATA IMACH( 1) / 5 / 83 DATA IMACH( 2) / 6 / 84 DATA IMACH( 3) / 0 / 85 DATA IMACH( 4) / 0 / 86 DATA IMACH( 5) / 32 / 87 DATA IMACH( 6) / 4 / 88 DATA IMACH( 7) / 2 / 89 DATA IMACH( 8) / 31 / 90 DATA IMACH( 9) / 2147483647 / 91 DATA IMACH(10) / 2 / 92 DATA IMACH(11) / 24 / 93 DATA IMACH(12) / -125 / 94 DATA IMACH(13) / 127 / 95 DATA IMACH(14) / 53 / 96 DATA IMACH(15) / -1021 / 97 DATA IMACH(16) / 1023 / 98 C 99 C***FIRST EXECUTABLE STATEMENT I1MACH 100 IF (I .LT. 1 .OR. I .GT. 16) GO TO 10 101 C 102 I1MACH = IMACH(I) 103 RETURN 104 C 105 10 CONTINUE 106 WRITE (UNIT = OUTPUT, FMT = 9000) 107 9000 FORMAT ('1ERROR 1 IN I1MACH - I OUT OF BOUNDS') 108 C 109 C CALL FDUMP 110 C 111 C 112 STOP 113 END