Skip to content

Commit 8261e8a

Browse files
committed
Make dpmpar portable using epsilon, tiny and huge
1 parent dde41b6 commit 8261e8a

File tree

1 file changed

+4
-136
lines changed

1 file changed

+4
-136
lines changed

src/dpmpar.f

Lines changed: 4 additions & 136 deletions
Original file line numberDiff line numberDiff line change
@@ -31,143 +31,11 @@ double precision function dpmpar(i)
3131
c Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More'
3232
c
3333
c **********
34-
integer mcheps(4)
35-
integer minmag(4)
36-
integer maxmag(4)
34+
3735
double precision dmach(3)
38-
equivalence (dmach(1),mcheps(1))
39-
equivalence (dmach(2),minmag(1))
40-
equivalence (dmach(3),maxmag(1))
41-
c
42-
c Machine constants for the IBM 360/370 series,
43-
c the Amdahl 470/V6, the ICL 2900, the Itel AS/6,
44-
c the Xerox Sigma 5/7/9 and the Sel systems 85/86.
45-
c
46-
c data mcheps(1),mcheps(2) / z34100000, z00000000 /
47-
c data minmag(1),minmag(2) / z00100000, z00000000 /
48-
c data maxmag(1),maxmag(2) / z7fffffff, zffffffff /
49-
c
50-
c Machine constants for the Honeywell 600/6000 series.
51-
c
52-
c data mcheps(1),mcheps(2) / o606400000000, o000000000000 /
53-
c data minmag(1),minmag(2) / o402400000000, o000000000000 /
54-
c data maxmag(1),maxmag(2) / o376777777777, o777777777777 /
55-
c
56-
c Machine constants for the CDC 6000/7000 series.
57-
c
58-
c data mcheps(1) / 15614000000000000000b /
59-
c data mcheps(2) / 15010000000000000000b /
60-
c
61-
c data minmag(1) / 00604000000000000000b /
62-
c data minmag(2) / 00000000000000000000b /
63-
c
64-
c data maxmag(1) / 37767777777777777777b /
65-
c data maxmag(2) / 37167777777777777777b /
66-
c
67-
c Machine constants for the PDP-10 (KA processor).
68-
c
69-
c data mcheps(1),mcheps(2) / "114400000000, "000000000000 /
70-
c data minmag(1),minmag(2) / "033400000000, "000000000000 /
71-
c data maxmag(1),maxmag(2) / "377777777777, "344777777777 /
72-
c
73-
c Machine constants for the PDP-10 (KI processor).
74-
c
75-
c data mcheps(1),mcheps(2) / "104400000000, "000000000000 /
76-
c data minmag(1),minmag(2) / "000400000000, "000000000000 /
77-
c data maxmag(1),maxmag(2) / "377777777777, "377777777777 /
78-
c
79-
c Machine constants for the PDP-11.
80-
c
81-
c data mcheps(1),mcheps(2) / 9472, 0 /
82-
c data mcheps(3),mcheps(4) / 0, 0 /
83-
c
84-
c data minmag(1),minmag(2) / 128, 0 /
85-
c data minmag(3),minmag(4) / 0, 0 /
86-
c
87-
c data maxmag(1),maxmag(2) / 32767, -1 /
88-
c data maxmag(3),maxmag(4) / -1, -1 /
89-
c
90-
c Machine constants for the Burroughs 6700/7700 systems.
91-
c
92-
c data mcheps(1) / o1451000000000000 /
93-
c data mcheps(2) / o0000000000000000 /
94-
c
95-
c data minmag(1) / o1771000000000000 /
96-
c data minmag(2) / o7770000000000000 /
97-
c
98-
c data maxmag(1) / o0777777777777777 /
99-
c data maxmag(2) / o7777777777777777 /
100-
c
101-
c Machine constants for the Burroughs 5700 system.
102-
c
103-
c data mcheps(1) / o1451000000000000 /
104-
c data mcheps(2) / o0000000000000000 /
105-
c
106-
c data minmag(1) / o1771000000000000 /
107-
c data minmag(2) / o0000000000000000 /
108-
c
109-
c data maxmag(1) / o0777777777777777 /
110-
c data maxmag(2) / o0007777777777777 /
111-
c
112-
c Machine constants for the Burroughs 1700 system.
113-
c
114-
c data mcheps(1) / zcc6800000 /
115-
c data mcheps(2) / z000000000 /
116-
c
117-
c data minmag(1) / zc00800000 /
118-
c data minmag(2) / z000000000 /
119-
c
120-
c data maxmag(1) / zdffffffff /
121-
c data maxmag(2) / zfffffffff /
122-
c
123-
c Machine constants for the Univac 1100 series.
124-
c
125-
c data mcheps(1),mcheps(2) / o170640000000, o000000000000 /
126-
c data minmag(1),minmag(2) / o000040000000, o000000000000 /
127-
c data maxmag(1),maxmag(2) / o377777777777, o777777777777 /
128-
c
129-
c Machine constants for the Data General Eclipse S/200.
130-
c
131-
c Note - it may be appropriate to include the following card -
132-
c static dmach(3)
133-
c
134-
c data minmag/20k,3*0/,maxmag/77777k,3*177777k/
135-
c data mcheps/32020k,3*0/
136-
c
137-
c Machine constants for the Harris 220.
138-
c
139-
c data mcheps(1),mcheps(2) / '20000000, '00000334 /
140-
c data minmag(1),minmag(2) / '20000000, '00000201 /
141-
c data maxmag(1),maxmag(2) / '37777777, '37777577 /
142-
c
143-
c Machine constants for the Cray-1.
144-
c
145-
c data mcheps(1) / 0376424000000000000000b /
146-
c data mcheps(2) / 0000000000000000000000b /
147-
c
148-
c data minmag(1) / 0200034000000000000000b /
149-
c data minmag(2) / 0000000000000000000000b /
150-
c
151-
c data maxmag(1) / 0577777777777777777777b /
152-
c data maxmag(2) / 0000007777777777777776b /
153-
c
154-
c Machine constants for the Prime 400.
155-
c
156-
c data mcheps(1),mcheps(2) / :10000000000, :00000000123 /
157-
c data minmag(1),minmag(2) / :10000000000, :00000100000 /
158-
c data maxmag(1),maxmag(2) / :17777777777, :37777677776 /
159-
c
160-
c Machine constants for the VAX-11.
161-
c
162-
c data mcheps(1),mcheps(2) / 9472, 0 /
163-
c data minmag(1),minmag(2) / 128, 0 /
164-
c data maxmag(1),maxmag(2) / -32769, -1 /
165-
c
166-
c Machine constants for IEEE machines.
167-
c
168-
data dmach(1) /2.22044604926d-16/
169-
data dmach(2) /2.22507385852d-308/
170-
data dmach(3) /1.79769313485d+308/
36+
dmach(1) = epsilon(1d0)
37+
dmach(2) = tiny(1d0)
38+
dmach(3) = huge(1d0)
17139
c
17240
dpmpar = dmach(i)
17341
return

0 commit comments

Comments
 (0)