Create an instance of the interface class. It contains only global internal data shared by all LP
problems, so you will not usually need multiple instances of solver in your program.
Nor they would disturb each other.
Find the convex hull of the given point set. Points must contain
homogeneous coordinates of the points; the elements in the first column
must be 1 for affine points and 0 for rays.
Return value:
first the facet normals
second the linearity basis (the subspace orthogonal to Points).
Dual convex hull problem: find the vertices of a polyhedron given as an intersection of halfspaces
(Inequalities∗X>=0) and hyperplanes (Equations∗X=0).
These functions do practically the same as their enumerate_* cousins, but without storing the coordinates.
Only the lrslib solver offers this functionality, since its algorithm indeed does not need internal storage.
Note that count_facets has an additional restriction: it can be used with bounded polytopes only. The reason is that
in the unbounded case the lrs algorithm may produce repeating facets, which can't be filtered out without using additional
storage.
count_vertices counts the bounded vertices and the rays separately. In the return value, first contains the total number
of vertices, and second contains the number of bounded vertices (non-rays). If an optional argument only_bounded is set
to true, the rays are not counted at all and the returned first field is zero. The reason for introducing this option is
that the reverse search algorithm can generate the same rays multiple times, therefore the duplicates must be filtered out.
If the polyhedron has very many rays, the storage consumption grows tremendously, defeating the only advantage of this counting
function over the normal convex hull computation.
Separate the extremal vertices from the redundant points in a given point set.
Points must contain homogeneous coordinates.
This operation is cheaper than the complete convex hull computation, as it is based on repeating LP solving.
Return value:
first the vertex indices.
second (in lrs_interface::solver) the linearity basis (the subspace orthogonal to Points)
second (in cdd_interface::solver) the co-vertices, that is,
normal vectors of hyperplanes separating the corresponding vertex from the rest.