3 DOUBLE PRECISION FUNCTION d1mach(I)
18 INTEGER sc, cray1(38),
j
20 SAVE small, large, right, diver, log10, sc
21 DOUBLE PRECISION dmach(5)
22 equivalence(dmach(1),
small(1))
23 equivalence(dmach(2),large(1))
24 equivalence(dmach(3),right(1))
25 equivalence(dmach(4),diver(1))
26 equivalence(dmach(5),log10(1))
65 IF (
small(1) .EQ. 1117925532
66 * .AND.
small(2) .EQ. -448790528)
THEN
78 ELSE IF (
small(2) .EQ. 1117925532
79 * .AND.
small(1) .EQ. -448790528)
THEN
91 ELSE IF (
small(1) .EQ. -2065213935
92 * .AND.
small(2) .EQ. 10752)
THEN
103 log10(2) = -805796613
104 ELSE IF (
small(1) .EQ. 1267827943
105 * .AND.
small(2) .EQ. 704643072)
THEN
109 large(1) = 2147483647
115 log10(1) = 1091781651
116 log10(2) = 1352628735
117 ELSE IF (
small(1) .EQ. 1120022684
118 * .AND.
small(2) .EQ. -448790528)
THEN
122 large(1) = 2147483647
124 right(1) = 1019215872
126 diver(1) = 1020264448
128 log10(1) = 1072907283
129 log10(2) = 1352628735
130 ELSE IF (
small(1) .EQ. 815547074
131 * .AND.
small(2) .EQ. 58688)
THEN
141 log10(1) = 1142112243
142 log10(2) = 2046775455
146 large(2) = large(2) - right(2)
147 IF (large(2) .EQ. 64 .AND.
small(2) .EQ. 0)
THEN
150 cray1(
j+1) = cray1(
j) + cray1(
j)
152 cray1(22) = cray1(21) + 321322
154 cray1(
j+1) = cray1(
j) + cray1(
j)
156 IF (cray1(38) .EQ.
small(1))
THEN
160 CALL
i1mcry(large(1),
j, 24574, 16777215, 16777215)
161 CALL
i1mcry(large(2),
j, 0, 16777215, 16777214)
162 CALL
i1mcry(right(1),
j, 16291, 8388608, 0)
164 CALL
i1mcry(diver(1),
j, 16292, 8388608, 0)
166 CALL
i1mcry(log10(1),
j, 16383, 10100890, 8715215)
167 CALL
i1mcry(log10(2),
j, 0, 16226447, 9001388)
180 IF (dmach(4) .GE. 1.0d0)
stop 778
181 IF (
i .LT. 1 .OR.
i .GT. 5)
THEN
182 WRITE(*,*)
'D1MACH(I): I =',
i,
' is out of bounds.'
187 9000
FORMAT(/
' Adjust D1MACH by uncommenting data statements'/
188 *
' appropriate for your machine.')
209 INTEGER a, a1, b,
c, d