204 lines
5.3 KiB
FortranFixed
204 lines
5.3 KiB
FortranFixed
*DMPREC
|
|
DOUBLE PRECISION FUNCTION DMPREC()
|
|
C***BEGIN PROLOGUE DPREC
|
|
C***REFER TO DODR,DODRC
|
|
C***ROUTINES CALLED (NONE)
|
|
C***DATE WRITTEN 860529 (YYMMDD)
|
|
C***REVISION DATE 920304 (YYMMDD)
|
|
C***PURPOSE DETERMINE MACHINE PRECISION FOR TARGET MACHINE AND COMPILER
|
|
C ASSUMING FLOATING-POINT NUMBERS ARE REPRESENTED IN THE
|
|
C T-DIGIT, BASE-B FORM
|
|
C SIGN (B**E)*( (X(1)/B) + ... + (X(T)/B**T) )
|
|
C WHERE 0 .LE. X(I) .LT. B FOR I=1,...,T, AND
|
|
C 0 .LT. X(1).
|
|
C TO ALTER THIS FUNCTION FOR A PARTICULAR TARGET MACHINE,
|
|
C EITHER
|
|
C ACTIVATE THE DESIRED SET OF DATA STATEMENTS BY
|
|
C REMOVING THE C FROM COLUMN 1
|
|
C OR
|
|
C SET B, TD AND TS USING I1MACH BY ACTIVATING
|
|
C THE DECLARATION STATEMENTS FOR I1MACH
|
|
C AND THE STATEMENTS PRECEEDING THE FIRST
|
|
C EXECUTABLE STATEMENT BELOW.
|
|
C***END PROLOGUE DPREC
|
|
|
|
C...LOCAL SCALARS
|
|
DOUBLE PRECISION
|
|
+ B
|
|
INTEGER
|
|
+ TD,TS
|
|
|
|
C...EXTERNAL FUNCTIONS
|
|
C INTEGER
|
|
C + I1MACH
|
|
C EXTERNAL
|
|
C + I1MACH
|
|
|
|
C...VARIABLE DEFINITIONS (ALPHABETICALLY)
|
|
|
|
C DOUBLE PRECISION B
|
|
C THE BASE OF THE TARGET MACHINE.
|
|
C (MAY BE DEFINED USING I1MACH(10).)
|
|
C INTEGER TD
|
|
C THE NUMBER OF BASE-B DIGITS IN DOUBLE PRECISION.
|
|
C (MAY BE DEFINED USING I1MACH(14).)
|
|
C INTEGER TS
|
|
C THE NUMBER OF BASE-B DIGITS IN SINGLE PRECISION.
|
|
C (MAY BE DEFINED USING I1MACH(11).)
|
|
|
|
|
|
C MACHINE CONSTANTS FOR COMPUTERS FOLLOWING IEEE ARITHMETIC STANDARD
|
|
C (E.G., MOTOROLA 68000 BASED MACHINES SUCH AS SUN AND SPARC
|
|
C WORKSTATIONS, AND AT&T PC 7300; AND 8087 BASED MICROS SUCH AS THE
|
|
C IBM PC AND THE AT&T 6300).
|
|
C DATA B / 2 /
|
|
C DATA TS / 24 /
|
|
C DATA TD / 53 /
|
|
|
|
C MACHINE CONSTANTS FOR THE BURROUGHS 1700 SYSTEM.
|
|
C DATA B / 2 /
|
|
C DATA TS / 24 /
|
|
C DATA TD / 60 /
|
|
|
|
C MACHINE CONSTANTS FOR THE BURROUGHS 5700 SYSTEM
|
|
C THE BURROUGHS 6700/7700 SYSTEMS
|
|
C DATA B / 8 /
|
|
C DATA TS / 13 /
|
|
C DATA TD / 26 /
|
|
|
|
C MACHINE CONSTANTS FOR THE CDC 6000/7000 (FTN5 COMPILER)
|
|
C THE CYBER 170/180 SERIES UNDER NOS
|
|
C DATA B / 2 /
|
|
C DATA TS / 48 /
|
|
C DATA TD / 96 /
|
|
|
|
C MACHINE CONSTANTS FOR THE CDC 6000/7000 (FTN COMPILER)
|
|
C THE CYBER 170/180 SERIES UNDER NOS/VE
|
|
C THE CYBER 200 SERIES
|
|
C DATA B / 2 /
|
|
C DATA TS / 47 /
|
|
C DATA TD / 94 /
|
|
|
|
C MACHINE CONSTANTS FOR THE CRAY
|
|
C DATA B / 2 /
|
|
C DATA TS / 47 /
|
|
C DATA TD / 94 /
|
|
|
|
C MACHINE CONSTANTS FOR THE DATA GENERAL ECLIPSE S/200
|
|
C DATA B / 16 /
|
|
C DATA TS / 6 /
|
|
C DATA TD / 14 /
|
|
|
|
C MACHINE CONSTANTS FOR THE HARRIS COMPUTER
|
|
C DATA B / 2 /
|
|
C DATA TS / 23 /
|
|
C DATA TD / 38 /
|
|
|
|
C MACHINE CONSTANTS FOR THE HONEYWELL DPS 8/70
|
|
C THE HONEYWELL 600/6000 SERIES
|
|
C DATA B / 2 /
|
|
C DATA TS / 27 /
|
|
C DATA TD / 63 /
|
|
|
|
C MACHINE CONSTANTS FOR THE HP 2100
|
|
C (3 WORD DOUBLE PRECISION OPTION WITH FTN4)
|
|
C DATA B / 2 /
|
|
C DATA TS / 23 /
|
|
C DATA TD / 39 /
|
|
|
|
C MACHINE CONSTANTS FOR THE HP 2100
|
|
C (4 WORD DOUBLE PRECISION OPTION WITH FTN4)
|
|
C DATA B / 2 /
|
|
C DATA TS / 23 /
|
|
C DATA TD / 55 /
|
|
|
|
C MACHINE CONSTANTS FOR THE IBM 360/370 SERIES
|
|
C DATA B / 16 /
|
|
C DATA TS / 6 /
|
|
C DATA TD / 14 /
|
|
|
|
C MACHINE CONSTANTS FOR THE IBM PC
|
|
C DATA B / 2 /
|
|
C DATA TS / 24 /
|
|
C DATA TD / 53 /
|
|
|
|
C MACHINE CONSTANTS FOR THE INTERDATA (PERKIN ELMER) 7/32
|
|
C INTERDATA (PERKIN ELMER) 8/32
|
|
C DATA B / 16 /
|
|
C DATA TS / 6 /
|
|
C DATA TD / 14 /
|
|
|
|
C MACHINE CONSTANTS FOR THE PDP-10 (KA PROCESSOR).
|
|
C DATA B / 2 /
|
|
C DATA TS / 27 /
|
|
C DATA TD / 54 /
|
|
|
|
C MACHINE CONSTANTS FOR THE PDP-10 (KI PROCESSOR).
|
|
C DATA B / 2 /
|
|
C DATA TS / 27 /
|
|
C DATA TD / 62 /
|
|
|
|
C MACHINE CONSTANTS FOR THE PDP-11 SYSTEM
|
|
C DATA B / 2 /
|
|
C DATA TS / 24 /
|
|
C DATA TD / 56 /
|
|
|
|
C MACHINE CONSTANTS FOR THE PERKIN-ELMER 3230
|
|
C DATA B / 16 /
|
|
C DATA TS / 6 /
|
|
C DATA TD / 14 /
|
|
|
|
C MACHINE CONSTANTS FOR THE PRIME 850 AND PRIME 4050
|
|
C DATA B / 2 /
|
|
C DATA TS / 23 /
|
|
C DATA TD / 47 /
|
|
|
|
C MACHINE CONSTANTS FOR THE SEL SYSTEMS 85/86
|
|
C DATA B / 16 /
|
|
C DATA TS / 6 /
|
|
C DATA TD / 14 /
|
|
|
|
C MACHINE CONSTANTS FOR SUN AND SPARC WORKSTATIONS
|
|
C DATA B / 2 /
|
|
C DATA TS / 24 /
|
|
C DATA TD / 53 /
|
|
|
|
C MACHINE CONSTANTS FOR THE UNIVAC 1100 SERIES
|
|
C DATA B / 2 /
|
|
C DATA TS / 27 /
|
|
C DATA TD / 60 /
|
|
|
|
C MACHINE CONSTANTS FOR THE VAX-11 WITH FORTRAN IV-PLUS COMPILER
|
|
C DATA B / 2 /
|
|
C DATA TS / 24 /
|
|
C DATA TD / 56 /
|
|
|
|
C MACHINE CONSTANTS FOR THE VAX/VMS SYSTEM WITHOUT G_FLOATING
|
|
C DATA B / 2 /
|
|
C DATA TS / 24 /
|
|
C DATA TD / 56 /
|
|
|
|
C MACHINE CONSTANTS FOR THE VAX/VMS SYSTEM WITH G_FLOATING
|
|
C DATA B / 2 /
|
|
C DATA TS / 24 /
|
|
C DATA TD / 53 /
|
|
|
|
C MACHINE CONSTANTS FOR THE XEROX SIGMA 5/7/9
|
|
C DATA B / 16 /
|
|
C DATA TS / 6 /
|
|
C DATA TD / 14 /
|
|
|
|
|
|
C***FIRST EXECUTABLE STATEMENT DMPREC
|
|
|
|
|
|
C B = I1MACH(10)
|
|
C TS = I1MACH(11)
|
|
C TD = I1MACH(14)
|
|
|
|
DMPREC = B ** (1-TD)
|
|
|
|
RETURN
|
|
|
|
END
|