aboutsummaryrefslogtreecommitdiff
path: root/math/iminterp/asieval.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/iminterp/asieval.x
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'math/iminterp/asieval.x')
-rw-r--r--math/iminterp/asieval.x67
1 files changed, 67 insertions, 0 deletions
diff --git a/math/iminterp/asieval.x b/math/iminterp/asieval.x
new file mode 100644
index 00000000..51f9a63b
--- /dev/null
+++ b/math/iminterp/asieval.x
@@ -0,0 +1,67 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <math/iminterp.h>
+include "im1interpdef.h"
+
+# ASIEVAL -- This procedure finds the interpolated value assuming that
+# x lands in the array, i.e. 1 <= x <= npts.
+
+real procedure asieval (asi, x)
+
+pointer asi # interpolator descriptor
+real x[ARB] # x value
+
+real value
+
+begin
+ switch (ASI_TYPE(asi)) { # switch on interpolator type
+
+ case II_NEAREST:
+ call ii_nearest (x, value, 1,
+ COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
+ return (value)
+
+ case II_LINEAR:
+ call ii_linear (x, value, 1,
+ COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
+ return (value)
+
+ case II_POLY3:
+ call ii_poly3 (x, value, 1, COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
+ return (value)
+
+ case II_POLY5:
+ call ii_poly5 (x, value, 1, COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
+ return (value)
+
+ case II_SPLINE3:
+ call ii_spline3 (x, value, 1,
+ COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
+ return (value)
+
+ case II_SINC:
+ call ii_sinc (x, value, 1,
+ COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)), ASI_NCOEFF(asi),
+ ASI_NSINC(asi), DX)
+ return (value)
+
+ case II_LSINC:
+ call ii_lsinc (x, value, 1,
+ COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)), ASI_NCOEFF(asi),
+ LTABLE(ASI_LTABLE(asi)), 2 * ASI_NSINC(asi) + 1,
+ ASI_NINCR(asi), DX)
+ return (value)
+
+ case II_DRIZZLE:
+ if (ASI_PIXFRAC(asi) >= 1.0)
+ call ii_driz1 (x, value, 1, COEFF(ASI_COEFF(asi) +
+ ASI_OFFSET(asi)), ASI_BADVAL(asi))
+ else
+ call ii_driz (x, value, 1, COEFF(ASI_COEFF(asi) +
+ ASI_OFFSET(asi)), ASI_PIXFRAC(asi), ASI_BADVAL(asi))
+ return (value)
+
+ default:
+ call error (0, "ASIEVAL: Unknown interpolator type.")
+ }
+end