aboutsummaryrefslogtreecommitdiff
path: root/math/iminterp/asieval.x
blob: 51f9a63bd80fb5077293fc987247675b6ddba028 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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