aboutsummaryrefslogtreecommitdiff
path: root/math/curfit/cvevalr.x
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/cvevalr.x
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'math/curfit/cvevalr.x')
-rw-r--r--math/curfit/cvevalr.x51
1 files changed, 51 insertions, 0 deletions
diff --git a/math/curfit/cvevalr.x b/math/curfit/cvevalr.x
new file mode 100644
index 00000000..56c4c772
--- /dev/null
+++ b/math/curfit/cvevalr.x
@@ -0,0 +1,51 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <math/curfit.h>
+
+include "curfitdef.h"
+
+# CVEVAL -- Procedure to evaluate curve at a given x. The CV_NCOEFF(cv)
+# coefficients are assumed to be in COEFF.
+
+real procedure cveval (cv, x)
+
+pointer cv # curve descriptor
+real x # x value
+
+int left
+pointer cptr, xptr
+real yfit
+
+real adotr()
+
+begin
+
+ # calculate the non-zero basis functions
+ switch (CV_TYPE(cv)) {
+ case CHEBYSHEV:
+ left = 0
+ call rcv_b1cheb (x, CV_ORDER(cv), CV_MAXMIN(cv), CV_RANGE(cv),
+ XBASIS(CV_XBASIS(cv)))
+ case LEGENDRE:
+ left = 0
+ call rcv_b1leg (x, CV_ORDER(cv), CV_MAXMIN(cv), CV_RANGE(cv),
+ XBASIS(CV_XBASIS(cv)))
+ case SPLINE3:
+ call rcv_b1spline3 (x, CV_NPIECES(cv), -CV_XMIN(cv),
+ CV_SPACING(cv), XBASIS(CV_XBASIS(cv)), left)
+ case SPLINE1:
+ call rcv_b1spline1 (x, CV_NPIECES(cv), -CV_XMIN(cv),
+ CV_SPACING(cv), XBASIS(CV_XBASIS(cv)), left)
+ case USERFNC:
+ left = 0
+ call rcv_b1user (cv, x)
+ }
+
+
+ # accumulate the fitted value
+ cptr = CV_COEFF(cv) + left
+ xptr = CV_XBASIS(cv)
+ yfit = adotr (XBASIS(xptr), COEFF(cptr), CV_ORDER(cv))
+
+ return (yfit)
+end