\begin{ccRefClass}{Linear_program<NT>}

\ccInclude{CGAL/QP_models.h}

\ccDefinition
An object of class \ccRefName\ describes a linear program of the form
%%
\begin{eqnarray*}
\mbox{(QP)}& \mbox{minimize} & c^{T}x+c_0 \\
&\mbox{subject to}   & Ax\qprel b, \\
&                    & l \leq x \leq u
\end{eqnarray*}
%%
in $n$ real variables $x=(x_0,\ldots,x_{n-1})$.
Here, 
\begin{itemize}
\item $A$ is an $m\times n$ matrix (the constraint matrix), 
\item $b$ is an $m$-dimensional vector (the right-hand side),
\item $\qprel$ is an $m$-dimensional vector of relations 
from $\{\leq, =, \geq\}$, 
\item $l$ is an $n$-dimensional vector of lower
bounds for $x$,
\item $u$ is an $n$-dimensional vector of upper bounds for
$x$, 
\item $c$ is an $n$-dimensional vector (the linear objective
  function), and 
\item $c_0$ is a constant.
\end{itemize}

This class copies the program data from given iterator ranges; this
is useful if the iterators that you have are not random-access.
The time taken to copy the data is $\Theta(nm+n^2)$, though, even if 
the program description is very sparse. Usually, 
you only need to wrap existing (random-access) 
iterators, and then you may use the classes 
\ccc{Linear_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, C_it>} and \ccc{Linear_program_from_pointers<NT>}).

\ccIsModel
\ccc{LinearProgramInterface}

\ccCreation
\ccIndexClassCreation
\ccCreationVariable{lp}

The following constructor is a template, so you can provide input
iterators of any types.

\ccConstructor{Linear_program_from_iterators(int n, int m, 
  const A_iterator& a, 
  const B_iterator& b,
  const R_iterator& r,
  const FL_iterator& fl,
  const L_iterator& l,
  const FU_iterator& fu,
  const U_iterator& u,
  const C_iterator& c,
  const std::iterator_traits<C_iterator>value_type& c0 = 0
  )}{constructs \ccVar\ from given input iterators and the constant \ccc{c0}.}

\ccSeeAlso
\ccc{Linear_program_from_iterators<A_it, B_it, R_it, FL_it, L_it, FU_it, U_it, D_it, C_it>}\\
\ccc{Linear_program_from_pointers<NT>}


\end{ccRefClass}
