/*--------------------------------------------------------------------------
 * maximize.h - definitions/declarations for numerical differentiation
 *              and function maximization
 *
 *       (C) Jurgen Doornik 1994-2001
 *
 *--------------------------------------------------------------------------*/

#ifndef MAXIMIZE_INCLUDED
#define MAXIMIZE_INCLUDED

enum
{
    MAX_CONV, MAX_WEAK_CONV, MAX_MAXIT, MAX_LINE_FAIL, MAX_FUNC_FAIL, MAX_NOCONV
};
MaxMonitor(const sMethod, const cIter, const vP, const vScore, const vDelta,
    const dFuncInit, const dFunc, const steplen, const condhes, const ret_val,
	const bCompact);
MaxGetParams(const args);

MaxBFGS(const func, const avP, const adFunc, const amHessian, const fNumDer, ...);
MaxNewton(const func, const avP, const adFunc, const amHessian, const fNumDer, ...);
MaxSimplex(const func, const avP, const adFunc, vDelta);
MaxConvergenceMsg(const iCode);
MaxControlEps(const dEps1, const dEps2);
MaxControl(const mxIter, const iPrint, ...);
GetMaxControl();
GetMaxControlEps();

Num1Derivative(const func, vP, const avScore);
Num2Derivative(const func, vP, const amHessian);
NumJacobian(const func, vU, const amJacobian);
NumJacobianEx(const func, vU, const vF, const fCentral, const amJacobian);
NumJacobianMul(const func, const vU, const vF, const mD, const fCentral,
	const amJacobian);

#endif /* MAXIMIZE_INCLUDED */
