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

include <math/curfit.h>

include "dcurfitdef.h"

# CVSAVE -- Procedure to save the parameters of the fit for later
# use by cveval and cvvector. Only curve_type, order, xmin, xmax
# and the coefficients are saved. The parameters are saved in fit
# in the order curve_type, order, xmin, xmax, followed by the
# coefficients.

procedure dcvsave (cv, fit)

pointer	cv		# curve descriptor
double	fit[ARB]	# PIXEL array containing curve parameters

begin
	# set common curve parameters
	CV_SAVETYPE(fit) = CV_TYPE(cv)
	CV_SAVEXMIN(fit) = CV_XMIN(cv)
	CV_SAVEXMAX(fit) = CV_XMAX(cv)
	if (CV_TYPE(cv) == USERFNC)
	    CV_SAVEFNC(fit) = CV_USERFNCD(cv)

	# set curve-type dependent parmeters
	switch (CV_TYPE(cv)) {
	case LEGENDRE, CHEBYSHEV, USERFNC:
	    CV_SAVEORDER(fit) = CV_ORDER(cv)
	case SPLINE1, SPLINE3:
	    CV_SAVEORDER(fit) = CV_NPIECES(cv) + 1
	default:
	    call error (0, "CVSAVE: Unknown curve type.")
	}


	# set coefficients
	if (CV_TYPE(cv) == USERFNC)
	    call amovd (COEFF(CV_COEFF(cv)), fit[CV_SAVECOEFF+1],
	        CV_NCOEFF(cv)) 
	else
	    call amovd (COEFF(CV_COEFF(cv)), fit[CV_SAVECOEFF],
	        CV_NCOEFF(cv)) 
end