blob: 6eb671f3698569036280954be824b5bc141a927f (
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
36
37
38
39
|
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
include <mach.h>
# IMPKDDC -- Put an image header parameter of type double.
procedure impkdc (im, key, dval, comment)
pointer im # image descriptor
char key[ARB] # parameter to be set
double dval # double precision value
char comment[ARB] #
pointer sp, sval
int i, strlen()
begin
call smark (sp)
call salloc (sval, SZ_FNAME, TY_CHAR)
# Reduce the precision of the encoded value if necessary to fit in
# the FITS value field. Start with NDIGITS_DP-1 as the precision
# estimate NDIGITS_DP is only approximate, and if we make up half a
# digit of precision the result can be 1.00000000000000001 instead
# of 1.0.
for (i=NDIGITS_DP-1; i >= NDIGITS_RP; i=i-1) {
call sprintf (Memc[sval], SZ_FNAME, "%0.*g")
call pargi (i)
call pargd (dval)
if (strlen (Memc[sval]) < 20)
break
}
# Write the new value to the header.
call impstrc (im, key, Memc[sval], comment)
call sfree (sp)
end
|