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

# AIFTRR -- Inverse fourier transform (real transform, real output arrays).
# The inverse transform of the real arrays FR and FI of length NPIX/2+1 is
# returned in the real array SR of length NPIX.  Since the real inverse
# transform is being performed the array SI is ignored and may be omitted.
# The transformation may be performed in place if desired.  NPIX must be a
# power of 2.

procedure aiftrr (fr, fi, sr, si, npix)

real	fr[ARB], fi[ARB]	# real and imag parts of transform (input)
real	sr[ARB], si[ARB]	# spatial data (output).  SI NOT USED.
int	npix
int	ier
pointer	sp, work

begin
	call smark (sp)
	call salloc (work, npix + 2, TY_REAL)

	# Pack the real and imaginary parts into a complex array as required
	# by FFS.
	call apkxr (fr, fi, Memr[work], npix / 2 + 1)

	# Compute the inverse transform.
	call ffs (Memr[work], npix, ier)
	if (ier == 1)
	    call fatal (1, "aiftrr: npix not a power of 2")

	# The work array now contains the real part of the transform; merely
	# copy it to the output array.
	call amovr (Memr[work], sr, npix)

	call sfree (sp)
end