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]; 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. ° PiecewiseCubic.mesa Copyright Σ 1985, 1992 by Xerox Corporation. All rights reserved. Michael Plass Doug Wyatt, September 5, 1985 1:14:45 pm PDT calculates a*f + b*g ΚΒ•NewlineDelimiter –(cedarcode) style™codešœ™Kšœ Οeœ6™BKšœ™K™,—K˜KšΠblœΟkœŸ œ˜#KšŸ˜K˜KšœŸœŸœŸœ Οc-˜Nšœ ŸœŸ˜šœŸœ˜Kšœ.Ÿœ˜4——K˜KšΟnœŸ œŸœ ˜!K˜š‘œŸ œŸœ˜/Kšœ.Ÿœ˜3KšŸœ ˜—K˜Kš‘ œŸœŸ œ˜-K˜Kš‘œŸ œ'˜GK˜š ‘œŸ œŸœŸœ Ÿœ ˜MKšœ™—K˜Kš ‘œŸ œŸœŸœŸœ˜4K˜Kš ‘ œŸ œŸœŸœŸœ˜9K˜Kš ‘œŸ œŸœŸœŸœ˜>K˜Kš ‘œŸ œŸœŸœ@Ÿœ˜uK˜KšŸœ˜—…—vθ