diff options
Diffstat (limited to 'math/gsurfit/gssaved.x')
-rw-r--r-- | math/gsurfit/gssaved.x | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/math/gsurfit/gssaved.x b/math/gsurfit/gssaved.x new file mode 100644 index 00000000..b2bddffd --- /dev/null +++ b/math/gsurfit/gssaved.x @@ -0,0 +1,42 @@ +# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. + +include <math/gsurfit.h> +include "dgsurfitdef.h" + +# GSSAVE -- Procedure to save the surface fit for later use by the +# evaluate routines. After a call to GSSAVE the first eight elements +# of fit contain the surface type, xorder (or number of polynomial pieces +# in x), yorder (or the number of polynomial pieces in y), xterms, xmin, +# xmax, ymin, and ymax. The remaining spaces are filled by the GS_NCOEFF(sf) +# coefficients. + +procedure dgssave (sf, fit) + +pointer sf # pointer to the surface descriptor +double fit[ARB] # array for storing fit + +begin + # get the surface parameters + if (sf == NULL) + return + + # order is surface type dependent + switch (GS_TYPE(sf)) { + case GS_LEGENDRE, GS_CHEBYSHEV, GS_POLYNOMIAL: + GS_SAVEXORDER(fit) = GS_XORDER(sf) + GS_SAVEYORDER(fit) = GS_YORDER(sf) + default: + call error (0, "GSSAVE: Unknown surface type.") + } + + # save remaining parameters + GS_SAVETYPE(fit) = GS_TYPE(sf) + GS_SAVEXMIN(fit) = GS_XMIN(sf) + GS_SAVEXMAX(fit) = GS_XMAX(sf) + GS_SAVEYMIN(fit) = GS_YMIN(sf) + GS_SAVEYMAX(fit) = GS_YMAX(sf) + GS_SAVEXTERMS(fit) = GS_XTERMS(sf) + + # save the coefficients + call amovd (COEFF(GS_COEFF(sf)), fit[GS_SAVECOEFF+1], GS_NCOEFF(sf)) +end |