diff options
Diffstat (limited to 'pkg/xtools/inlfit/inlimit.gx')
-rw-r--r-- | pkg/xtools/inlfit/inlimit.gx | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/pkg/xtools/inlfit/inlimit.gx b/pkg/xtools/inlfit/inlimit.gx new file mode 100644 index 00000000..ed4c2b43 --- /dev/null +++ b/pkg/xtools/inlfit/inlimit.gx @@ -0,0 +1,51 @@ +include <pkg/inlfit.h> + + +# IN_LIMIT -- Compute the independent variable limits for all variables, +# and store them in the INLFIT structure. + +procedure in_limit$t (in, x, npts, nvars) + +pointer in # INLFIT descriptor +PIXEL x[ARB] # Independent values (npts * nvars) +int npts # number of points +int nvars # number of variables + +int i, j +PIXEL 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 + Mem$t[minptr + i - 1] = xmin + Mem$t[maxptr + i - 1] = xmax + } +end |