# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc. include $if (datatype == r) include "gsurfitdef.h" $else include "dgsurfitdef.h" $endif # GSFIT -- Procedure to solve the normal equations for a surface. # The inner products of the basis functions are calculated and # accumulated into the GS_NCOEFF(sf) ** 2 matrix MATRIX. # The main diagonal of the matrix is stored in the first row of # MATRIX followed by the remaining non-zero diagonals. # The inner product # of the basis functions and the data ordinates are stored in the # GS_NCOEFF(sf)-vector VECTOR. The Cholesky factorization of MATRIX # is calculated and stored in CHOFAC. Forward and back substitution # is used to solve for the GS_NCOEFF(sf)-vector COEFF. $if (datatype == r) procedure gsfit (sf, x, y, z, w, npts, wtflag, ier) $else procedure dgsfit (sf, x, y, z, w, npts, wtflag, ier) $endif pointer sf # surface descriptor PIXEL x[npts] # array of x values PIXEL y[npts] # array of y values PIXEL z[npts] # data array PIXEL w[npts] # array of weights int npts # number of data points int wtflag # type of weighting int ier # ier = OK, everything OK # ier = SINGULAR, matrix is singular, 1 or more # coefficients are 0. # ier = NO_DEG_FREEDOM, too few points to solve matrix begin $if (datatype == r) call gszero (sf) call gsacpts (sf, x, y, z, w, npts, wtflag) call gssolve (sf, ier) $else call dgszero (sf) call dgsacpts (sf, x, y, z, w, npts, wtflag) call dgssolve (sf, ier) $endif end