aboutsummaryrefslogtreecommitdiff
path: root/math/gsurfit/gssaver.x
blob: b4f5bf320f06bb522bea60a326a094a63b733863 (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
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

include <math/gsurfit.h>
include	"gsurfitdef.h"

# GSSAVE -- Procedure to save the surface fit for later use by the
# evaluate routines. After a call to GSSAVE the first eight elements
# of fit contain the surface type, xorder (or number of polynomial pieces
# in x), yorder (or the number of polynomial pieces in y), xterms, xmin,
# xmax, ymin, and ymax. The remaining spaces are filled by the GS_NCOEFF(sf)
# coefficients.

procedure gssave (sf, fit)

pointer	sf		# pointer to the surface descriptor
real	fit[ARB]	# array for storing fit

begin
	# get the surface parameters
	if (sf == NULL)
	    return

	# order is surface type dependent
	switch (GS_TYPE(sf)) {
	case GS_LEGENDRE, GS_CHEBYSHEV, GS_POLYNOMIAL:
	    GS_SAVEXORDER(fit) = GS_XORDER(sf)
	    GS_SAVEYORDER(fit) = GS_YORDER(sf)
	default:
	    call error (0, "GSSAVE: Unknown surface type.")
	}

	# save remaining parameters
	GS_SAVETYPE(fit) = GS_TYPE(sf)
	GS_SAVEXMIN(fit) = GS_XMIN(sf)
	GS_SAVEXMAX(fit) = GS_XMAX(sf)
	GS_SAVEYMIN(fit) = GS_YMIN(sf)
	GS_SAVEYMAX(fit) = GS_YMAX(sf)
	GS_SAVEXTERMS(fit) = GS_XTERMS(sf)

	# save the coefficients
	call amovr (COEFF(GS_COEFF(sf)), fit[GS_SAVECOEFF+1], GS_NCOEFF(sf))
end