diff options
Diffstat (limited to 'sys/imio/dbc/impkdc.x')
-rw-r--r-- | sys/imio/dbc/impkdc.x | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/sys/imio/dbc/impkdc.x b/sys/imio/dbc/impkdc.x new file mode 100644 index 00000000..6eb671f3 --- /dev/null +++ b/sys/imio/dbc/impkdc.x @@ -0,0 +1,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 |