aboutsummaryrefslogtreecommitdiff
path: root/math/curfit/cvsave.gx
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /math/curfit/cvsave.gx
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'math/curfit/cvsave.gx')
-rw-r--r--math/curfit/cvsave.gx56
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