aboutsummaryrefslogtreecommitdiff
path: root/pkg/xtools/inlfit/inlimitd.x
blob: cc0ba12eb8e8537ee6401d521935875bc8e1940c (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
include	<pkg/inlfit.h>


# IN_LIMIT -- Compute the independent variable limits for all variables,
# and store them in the INLFIT structure.

procedure in_limitd (in, x, npts, nvars)

pointer	in			# INLFIT descriptor
double	x[ARB]			# Independent values (npts * nvars)
int	npts			# number of points
int	nvars			# number of variables

int	i, j
double	aux, xmin, xmax
pointer	minptr, maxptr

pointer	in_getp()

begin
#	# Debug
#	call eprintf ("in_limit: in=%d, npts=%d, nvars=%d\n")
#	    call pargi (in)
#	    call pargi (npts)
#	    call pargi (nvars)

	# Get minimum and maximum buffer pointers
	minptr = in_getp (in, INLXMIN)
	maxptr = in_getp (in, INLXMAX)

	# Loop over variables
	do i = 1, nvars {

	    # Set initial values
	    xmin = x[i]
	    xmax = x[i]

	    # Search for maximum and minimum values
	    do j = 1, npts {
		aux = x[(j - 1) * nvars + i]
		if (xmin > aux)
		    xmin = aux
		else if (xmax < aux)
		    xmax = aux
	    }

	    # Enter values into the structure
	    Memd[minptr + i - 1] = xmin
	    Memd[maxptr + i - 1] = xmax
	}
end