Optimization
************

Objective Functions
===================

 -- Objective: (void)
 -- Objective: (const OBJECTIVE_FCN)
 -- Objective: (const OBJECTIVE_FCN, const GRADIENT_FCN)
 -- Objective: (const Objective &A)

 -- Objective&: operator = (const Objective &A)

 -- objective_fcn: objective_function (void) const;

 -- Objective&: set_objective_function (const OBJECTIVE_FCN)

 -- gradient_fcn: gradient_function (void) const;

 -- Objective&: set_gradient_function (const GRADIENT_FCN)

Bounds
======

 -- Bounds: (void)
 -- Bounds: (int N)
 -- Bounds: (const ColumnVector LB, const ColumnVector UB)
 -- Bounds: (const Bounds &A)

 -- Bounds&: operator = (const Bounds &A)

 -- Bounds&: resize (int N)

 -- double: lower_bound (int INDEX) const;
 -- double: upper_bound (int INDEX) const;

 -- ColumnVector: lower_bounds (void) const;
 -- ColumnVector: upper_bounds (void) const;

 -- int: size (void) const;

 -- Bounds&: set_bound (int INDEX, double LOW, double HIGH)

 -- Bounds&: set_bounds (double LOW, double HIGH)
 -- Bounds&: set_bounds (const ColumnVector LB, const ColumnVector UB)

 -- Bounds&: set_lower_bound (int INDEX, double LOW)
 -- Bounds&: set_upper_bound (int INDEX, double HIGH)

 -- Bounds&: set_lower_bounds (double LOW)
 -- Bounds&: set_upper_bounds (double HIGH)

 -- Bounds&: set_lower_bounds (const ColumnVector LB)
 -- Bounds&: set_upper_bounds (const ColumnVector UB)

 -- ostream&: operator << (ostream &OS, const Bounds &B)

Linear Constraints
==================

 -- LinConst: (void)
 -- LinConst: (int NCLIN, int NX)
 -- LinConst: (int NCLIN_EQ, int NCLIN_INEQ, int NX)
 -- LinConst: (const ColumnVector &LB, const Matrix &A, const ColumnVector &UB)
 -- LinConst: (const Matrix &A_EQ, const ColumnVector &B_EQ, const Matrix &A_INEQ, const ColumnVector &B_INEQ)
 -- LinConst: (const LinConst &A)

 -- LinConst&: operator = (const LinConst &A)

 -- LinConst&: resize (int NCLIN, int N)

 -- Matrix: constraint_matrix (void) const;

 -- LinConst&: set_constraint_matrix (const Matrix &A)

 -- Matrix: eq_constraint_matrix (void) const;
 -- Matrix: ineq_constraint_matrix (void) const;

 -- ColumnVector: eq_constraint_vector (void) const;
 -- ColumnVector: ineq_constraint_vector (void) const;

 -- ostream&: operator << (ostream &OS, const LinConst &B)

Nonlinear Constraints
=====================

 -- NLConst: (void)
 -- NLConst: (int N)
 -- NLConst: (const ColumnVector LB, const NLFunc F, const ColumnVector UB)
 -- NLConst: (const NLConst &A)

 -- NLConst&: operator = (const NLConst &A)

Quadratic Programming
=====================

 -- QP: (void)
 -- QP: (const ColumnVector &X, const Matrix &H)
 -- QP: (const ColumnVector &X, const Matrix &H, const ColumnVector &C)
 -- QP: (const ColumnVector &X, const Matrix &H, const Bounds &B)
 -- QP: (const ColumnVector &X, const Matrix &H, const LinConst &LC)
 -- QP: (const ColumnVector &X, const Matrix &H, const ColumnVector &C, const Bounds &B)
 -- QP: (const ColumnVector &X, const Matrix &H, const ColumnVector &C, const LinConst &LC)
 -- QP: (const ColumnVector &X, const Matrix &H, const Bounds &B, const LinConst &LC)
 -- QP: (const ColumnVector &X, const Matrix &H, const ColumnVector &C, const Bounds &B, const LinConst &LC)

 -- virtual ColumnVector: minimize (void)
 -- virtual ColumnVector: minimize (double &OBJF)
 -- virtual ColumnVector: minimize (double &OBJF, int &INFORM)
 -- virtual ColumnVector: minimize (double &OBJF, int &INFORM, ColumnVector &LAMBDA) = 0;

 -- virtual ColumnVector: minimize (const ColumnVector &X)
 -- virtual ColumnVector: minimize (const ColumnVector &X, double &OBJF)
 -- virtual ColumnVector: minimize (const ColumnVector &X, double &OBJF, int &INFORM)
 -- virtual ColumnVector: minimize (const ColumnVector &X, double &OBJF, int &INFORM, ColumnVector &LAMBDA)

 -- ColumnVector: minimize (double &OBJF, int &INFORM, ColumnVector &LAMBDA)

Nonlinear Programming
=====================

 -- NLP: (void)
 -- NLP: (const ColumnVector &X, const Objective &PHI)
 -- NLP: (const ColumnVector &X, const Objective &PHI, const Bounds &B)
 -- NLP: (const ColumnVector &X, const Objective &PHI, const Bounds &B, const LinConst &LC)
 -- NLP: (const ColumnVector &X, const Objective &PHI, const Bounds &B, const LinConst &LC, const NLConst &NLC)
 -- NLP: (const ColumnVector &X, const Objective &PHI, const LinConst &LC)
 -- NLP: (const ColumnVector &X, const Objective &PHI, const LinConst &LC, const NLConst &NLC)
 -- NLP: (const ColumnVector &X, const Objective &PHI, const NLConst &NLC)
 -- NLP: (const ColumnVector &X, const Objective &PHI, const Bounds &B, const NLConst &NLC)

 -- NLP&: operator = (const NLP &A)

 -- int: size (void) const

 -- ColumnVector: minimize (void)
 -- ColumnVector: minimize (double &OBJF)
 -- ColumnVector: minimize (double &OBJF, int &INFORM)
 -- ColumnVector: minimize (double &OBJF, int &INFORM, ColumnVector &LAMBDA)

 -- ColumnVector: minimize (const ColumnVector &X)
 -- ColumnVector: minimize (const ColumnVector &X, double &OBJF)
 -- ColumnVector: minimize (const ColumnVector &X, double &OBJF, int &INFORM)
 -- ColumnVector: minimize (const ColumnVector &X, double &OBJF, int &INFORM, ColumnVector &LAMBDA)