aboutsummaryrefslogtreecommitdiff
path: root/noao/digiphot/apphot/aputil/apbsmooth.x
blob: 28c53c00cc1ef16530d163d229b1e14ab0138a83 (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
# AP_BSMOOTH - Box car smooth a histogram 1, 2 or 3 times.

procedure ap_bsmooth (hgm, shgm, nbins, nker, iter)

real	hgm[ARB]		# the original histogram
real	shgm[ARB]		# the smoothed histogram
int	nbins			# length of the histogram
int	nker			# half width of box kernel
int	iter			# number of iterations

pointer	sp, work1, work2

begin
	# Smooth the histogram
	switch (iter) {
	case 1:
	    call ap_sboxr (hgm, shgm, nbins, nker)
	case 2:
	    call smark (sp)
	    call salloc (work1, nbins, TY_REAL)
	    call ap_sboxr (hgm, Memr[work1], nbins, nker)
	    call ap_sboxr (Memr[work1], shgm, nbins, nker)
	    call sfree (sp)
	default:
	    call smark (sp)
	    call salloc (work1, nbins, TY_REAL)
	    call salloc (work2, nbins, TY_REAL)
	    call ap_sboxr (hgm, Memr[work1], nbins, nker)
	    call ap_sboxr (Memr[work1], Memr[work2], nbins, nker)
	    call ap_sboxr (Memr[work2], shgm, nbins, nker)
	    call sfree (sp)
	}
end