aboutsummaryrefslogtreecommitdiff
path: root/sys/vops/ak/agltx.x
blob: c50cfccf90ca9aae54d38bbff834d7c6ac80bfb9 (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
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

# AGLT -- Given a list of ranges, replace the value of each input pixel
# which falls within a given range by applying the corresponding linear
# transformation (b = a * kmul + kadd).  If KMUL is identically zero,
# B is replaced by the constant KADD.

procedure agltx (a, b, npix, low, high, kmul, kadd, nrange)

complex	a[ARB], b[ARB], pixval
int	npix, i
complex	low[nrange], high[nrange]	# range limits
real	kmul[nrange], kadd[nrange]
real	abs_pixval
int	nrange, nr

begin
	do i = 1, npix {
	    pixval = a[i]
	    b[i] = pixval
		abs_pixval = abs (pixval)
	    do nr = 1, nrange
		if (abs_pixval >= abs (low[nr]) &&
		abs_pixval <= abs (high[nr])) {
			if (kmul[nr] == 0.0)
			    b[i] = kadd[nr]
			else
			    b[i] = (pixval * kmul[nr]) + kadd[nr]
			break
		}
	}
end