blob: afd6adc5952f871a0266719338f6dc866314d98b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
# DTCSCL -- Scales a double precision real, maintaining maximum precision.
# Called by DTOC and CTOD.
procedure dtcscl (v, e, sense)
double v # value to be scaled
int e # exponent
int sense # sense of scaling (0=apply e to v; 1=calc e)
begin
if (sense == 0) # scale v by 10 ** e
v = v * (10.0d0 ** e)
else { # scale number to 0.1 <= v < 1.0
if (v == 0.0d0)
e = 0
else {
e = -1
while (v < 0.1d0) {
v = v * 10.0d0
e = e - 1
if (v == 0.0d0) { # check for underflow to zero
e = 0
break
}
}
while (v >= 1.0d0) {
v = v / 10.0d0
e = e + 1
}
}
}
end
|