PiecewiseCubic.mesa
Copyright Ó 1985, 1992 by Xerox Corporation. All rights reserved.
Michael Plass
Doug Wyatt, September 5, 1985 1:14:45 pm PDT
PiecewiseCubic: CEDAR DEFINITIONS =
BEGIN
Handle: TYPE = LIST OF PieceRec; -- non-overlapping pieces in increasing order
PieceRec:
TYPE =
RECORD
[domainStart, domainEnd:
REAL,
initValue, initSlope, finalSlope, finalValue: REAL];
Zero: PROCEDURE RETURNS [Handle];
Piece:
PROCEDURE [domainStart, domainEnd:
REAL,
initValue, initSlope, finalSlope, finalValue: REAL]
RETURNS [Handle];
PieceProc: TYPE = PROCEDURE [p, q: PieceRec];
EnumerateCommonPieces: PROCEDURE [f: Handle, g: Handle, P: PieceProc] ;
Combine:
PROCEDURE [a:
REAL, f: Handle, b:
REAL, g: Handle]
RETURNS [Handle];
calculates a*f + b*g
Eval: PROCEDURE [f: Handle, t: REAL] RETURNS [REAL];
EvalDeriv: PROCEDURE [f: Handle, t: REAL] RETURNS [REAL];
EvalDerivDeriv: PROCEDURE [f: Handle, t: REAL] RETURNS [REAL];
EvalAll: PROCEDURE [f: Handle, t: REAL] RETURNS [value,deriv,derivDeriv,derivDerivDeriv,domainStart,domainEnd: REAL];
END.