arithmetic/src/misc/functional/Functional.ig


GENERIC INTERFACE Functional(R, V, FD);
Arithmetic for Modula-3, see doc for details

IMPORT Arithmetic AS Arith;

TYPE
  Func = PROCEDURE (x: V.T; ): R.T RAISES {Arith.Error};
  (* evaluate functional for vector x *)
  FuncDeriv2 = PROCEDURE (x: V.T; ): FD.T RAISES {Arith.Error};
evaluate functional, its first derivative (gradient) and its second derivative (Jacobian of the gradient)

PROCEDURE EvalCentralDiff2 (f: Func; x, dx: V.T; ): FD.T
  RAISES {Arith.Error};
compute central differences, this can be used as approximation for derivatives; accesses 'evaluate' method

PROCEDURE FindStationaryPoint
  (f: FuncDeriv2; x: V.T; tol: R.T; maxiter: CARDINAL; ): V.T
  RAISES {Arith.Error};
find candidates for extrema and saddle points by Newton's iteration

END Functional.