diff options
Diffstat (limited to 'math/curfit/cvsave.gx')
-rw-r--r-- | math/curfit/cvsave.gx | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/math/curfit/cvsave.gx b/math/curfit/cvsave.gx new file mode 100644 index 00000000..95fedd2b --- /dev/null +++ b/math/curfit/cvsave.gx @@ -0,0 +1,56 @@ +# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. + +include <math/curfit.h> + +$if (datatype == r) +include "curfitdef.h" +$else +include "dcurfitdef.h" +$endif + +# CVSAVE -- Procedure to save the parameters of the fit for later +# use by cveval and cvvector. Only curve_type, order, xmin, xmax +# and the coefficients are saved. The parameters are saved in fit +# in the order curve_type, order, xmin, xmax, followed by the +# coefficients. + +$if (datatype == r) +procedure cvsave (cv, fit) +$else +procedure dcvsave (cv, fit) +$endif + +pointer cv # curve descriptor +PIXEL fit[ARB] # PIXEL array containing curve parameters + +begin + # set common curve parameters + CV_SAVETYPE(fit) = CV_TYPE(cv) + CV_SAVEXMIN(fit) = CV_XMIN(cv) + CV_SAVEXMAX(fit) = CV_XMAX(cv) + if (CV_TYPE(cv) == USERFNC) + $if (datatype == r) + CV_SAVEFNC(fit) = CV_USERFNCR(cv) # no type conversion + $else + CV_SAVEFNC(fit) = CV_USERFNCD(cv) + $endif + + # set curve-type dependent parmeters + switch (CV_TYPE(cv)) { + case LEGENDRE, CHEBYSHEV, USERFNC: + CV_SAVEORDER(fit) = CV_ORDER(cv) + case SPLINE1, SPLINE3: + CV_SAVEORDER(fit) = CV_NPIECES(cv) + 1 + default: + call error (0, "CVSAVE: Unknown curve type.") + } + + + # set coefficients + if (CV_TYPE(cv) == USERFNC) + call amov$t (COEFF(CV_COEFF(cv)), fit[CV_SAVECOEFF+1], + CV_NCOEFF(cv)) + else + call amov$t (COEFF(CV_COEFF(cv)), fit[CV_SAVECOEFF], + CV_NCOEFF(cv)) +end |