polylib 5.22.8
|
Go to the source code of this file.
Macros | |
#define | POL_ENSURE_INEQUALITIES(P) |
#define | POL_ENSURE_POINTS(P) |
#define | POL_ENSURE_FACETS(P) |
#define | POL_ENSURE_VERTICES(P) |
Functions | |
void | Polyhedron_Compute_Dual (Polyhedron *P) |
Polyhedron * | DomainConstraintSimplify (Polyhedron *P, unsigned MaxRays) |
Polyhedron * | AddConstraints (Value *Con, unsigned NbConstraints, Polyhedron *Pol, unsigned NbMaxRays) |
Polyhedron * | AddPolyToDomain (Polyhedron *Pol, Polyhedron *PolDomain) |
Polyhedron * | AddRays (Value *Ray2, unsigned NbRay2, Polyhedron *Pol1, unsigned NbMaxRays) |
Add 'NbAddedRays' rays to polyhedron 'Pol'. More... | |
Polyhedron * | align_context (Polyhedron *Pol, int align_dimension, int NbMaxRays) |
Polyhedron * | Constraints2Polyhedron (Matrix *Constraints, unsigned NbMaxRays) |
Given a matrix of constraints ('Constraints'), construct and return a polyhedron. More... | |
Polyhedron * | Disjoint_Domain (Polyhedron *Pol, int flag, unsigned NbMaxRays) |
Polyhedron * | DomainAddConstraints (Polyhedron *Pol, Matrix *Mat, unsigned NbMaxRays) |
Polyhedron * | DomainAddRays (Polyhedron *Pol, Matrix *Ray, unsigned NbMaxConstrs) |
Add rays pointed by 'Ray' to each and every polyhedron in the polyhedral domain 'Pol'. More... | |
Polyhedron * | DomainConvex (Polyhedron *Pol, unsigned NbMaxConstrs) |
Interval * | DomainCost (Polyhedron *Pol, Value *Cost) |
Polyhedron * | DomainDifference (Polyhedron *Pol1, Polyhedron *Pol2, unsigned NbMaxRays) |
Polyhedron * | DomainImage (Polyhedron *Pol, Matrix *Func, unsigned NbMaxConstrs) |
Polyhedron * | DomainIntersection (Polyhedron *Pol1, Polyhedron *Pol2, unsigned NbMaxRays) |
Return the intersection of two polyhedral domains 'Pol1' and 'Pol2'. More... | |
Polyhedron * | DomainPreimage (Polyhedron *Pol, Matrix *Func, unsigned NbMaxRays) |
Polyhedron * | DomainSimplify (Polyhedron *Pol1, Polyhedron *Pol2, unsigned NbMaxRays) |
Polyhedron * | Stras_DomainSimplify (Polyhedron *Pol1, Polyhedron *Pol2, unsigned NbMaxRays) |
Polyhedron * | DomainUnion (Polyhedron *Pol1, Polyhedron *Pol2, unsigned NbMaxRays) |
Polyhedron * | Domain_Copy (Polyhedron *Pol) |
void | Domain_Free (Polyhedron *Pol) |
void | Domain_PrintConstraints (FILE *Dst, const char *Format, Polyhedron *Pol) |
Polyhedron * | Empty_Polyhedron (unsigned Dimension) |
int | Gauss (Matrix *Mat, int NbEq, int Dimension) |
int | lower_upper_bounds (int pos, Polyhedron *P, Value *context, Value *LBp, Value *UBp) |
Matrix * | Polyhedron2Constraints (Polyhedron *Pol) |
Matrix * | Polyhedron2Rays (Polyhedron *Pol) |
Given a polyhedron 'Pol', return a matrix of rays. More... | |
int | PolyhedronIncludes (Polyhedron *Pol1, Polyhedron *Pol2) |
Polyhedron * | Polyhedron_Alloc (unsigned Dimension, unsigned NbConstraints, unsigned NbRays) |
Polyhedron * | Polyhedron_Copy (Polyhedron *Pol) |
void | Polyhedron_Free (Polyhedron *Pol) |
Polyhedron * | Polyhedron_Image (Polyhedron *Pol, Matrix *Func, unsigned NbMaxConstrs) |
Polyhedron * | Polyhedron_Preimage (Polyhedron *Pol, Matrix *Func, unsigned NbMaxRays) |
void | Polyhedron_Print (FILE *Dst, const char *Format, const Polyhedron *Pol) |
void | Polyhedron_PrintConstraints (FILE *Dst, const char *Format, Polyhedron *Pol) |
Polyhedron * | Polyhedron_Scan (Polyhedron *D, Polyhedron *C, unsigned MAXRAYS) |
void | PolyPrint (Polyhedron *Pol) |
Polyhedron * | Rays2Polyhedron (Matrix *Ray, unsigned NbMaxConstrs) |
Given a matrix of rays 'Ray', create and return a polyhedron. More... | |
Polyhedron * | SubConstraint (Value *Con, Polyhedron *Pol, unsigned NbMaxRays, int Pass) |
Polyhedron * | Universe_Polyhedron (unsigned Dimension) |
void | polylib_close (void) |
Free all cache allocated memory: call this function before exiting in a memory checker environment like valgrind. More... | |
#define POL_ENSURE_FACETS | ( | P | ) |
Definition at line 13 of file polyhedron.h.
#define POL_ENSURE_INEQUALITIES | ( | P | ) |
Definition at line 5 of file polyhedron.h.
#define POL_ENSURE_POINTS | ( | P | ) |
Definition at line 9 of file polyhedron.h.
#define POL_ENSURE_VERTICES | ( | P | ) |
Definition at line 17 of file polyhedron.h.
Polyhedron * AddConstraints | ( | Value * | Con, |
unsigned | NbConstraints, | ||
Polyhedron * | Pol, | ||
unsigned | NbMaxRays | ||
) |
Definition at line 2303 of file polyhedron.c.
References any_exception_error, BuildSat(), CATCH, Chernikova(), polyhedron::Constraint, Constraints2Polyhedron(), polyhedron::Dimension, errormsg1(), Matrix_Alloc(), Matrix_Free(), polyhedron::NbBid, polyhedron::NbConstraints, polyhedron::NbRays, matrix::p, POL_ENSURE_INEQUALITIES, POL_ENSURE_VERTICES, POL_ISSET, POL_NO_DUAL, Pol_status, Polyhedron_Copy(), Polyhedron_Free(), polyhedron::Ray, Remove_Redundants(), RETHROW, Sat, SMFree(), TRY, UNCATCH, and Vector_Copy().
Referenced by Add_CEqualities(), Disjoint_Domain(), DomainAddConstraints(), DomainIntersection(), FindSimple(), old_Polyhedron_Preprocess(), p_simplify_constraints(), PDomainIntersection(), Polyhedron_Image_Enumerate(), and PolyhedronLTQ().
Polyhedron * AddPolyToDomain | ( | Polyhedron * | Pol, |
Polyhedron * | PolDomain | ||
) |
Definition at line 2449 of file polyhedron.c.
References emptyQ, polyhedron::next, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, Polyhedron_Free(), and PolyhedronIncludes().
Referenced by Disjoint_Domain(), DomainDifference(), DomainImage(), DomainIntersection(), DomainPreimage(), DomainSimplify(), PDomainDifference(), PDomainIntersection(), Polyhedron_Image_Enumerate(), and Stras_DomainSimplify().
Polyhedron * AddRays | ( | Value * | AddedRays, |
unsigned | NbAddedRays, | ||
Polyhedron * | Pol, | ||
unsigned | NbMaxConstrs | ||
) |
Add 'NbAddedRays' rays to polyhedron 'Pol'.
Rays are pointed by 'AddedRays' and the maximum allowed constraints in the new polyhedron is 'NbMaxConstrs'.
Definition at line 2696 of file polyhedron.c.
References any_exception_error, BuildSat(), CATCH, Chernikova(), polyhedron::Constraint, polyhedron::Dimension, errormsg1(), Matrix_Alloc(), Matrix_Free(), polyhedron::NbConstraints, polyhedron::NbEq, polyhedron::NbRays, matrix::NbRows, matrix::p_Init, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, POL_ISSET, POL_NO_DUAL, Pol_status, Polyhedron_Free(), polyhedron::Ray, Remove_Redundants(), RETHROW, Sat, SMFree(), TransformSat(), TRY, UNCATCH, and Vector_Copy().
Referenced by DomainAddRays(), DomainConvex(), and PolyhedronLTQ().
Polyhedron * align_context | ( | Polyhedron * | Pol, |
int | align_dimension, | ||
int | NbMaxRays | ||
) |
Definition at line 3753 of file polyhedron.c.
References any_exception_error, CATCH, polyhedron::Constraint, polyhedron::Dimension, Domain_Copy(), Domain_Free(), errormsg1(), F_ISSET, polyhedron::flags, polyhedron::NbBid, polyhedron::NbConstraints, polyhedron::NbEq, polyhedron::NbRays, polyhedron::next, POL_INEQUALITIES, POL_POINTS, POL_VALID, Polyhedron_Alloc(), Polyhedron_Free(), polyhedron::Ray, RETHROW, TRY, UNCATCH, value_assign, value_set_si, and Vector_Copy().
Referenced by Find_m_faces(), main(), Polyhedron_Scan(), test_Constraints_Remove_parm_eqs(), and test_Polyhedron_Remove_parm_eqs().
Polyhedron * Constraints2Polyhedron | ( | Matrix * | Constraints, |
unsigned | NbMaxRays | ||
) |
Given a matrix of constraints ('Constraints'), construct and return a polyhedron.
Constraints | Constraints (may be modified!) |
NbMaxRays | Estimated number of rays in the ray matrix of the polyhedron. |
Definition at line 1905 of file polyhedron.c.
References any_exception_error, CATCH, Chernikova(), polyhedron::Constraint, ConstraintSimplify(), Empty_Polyhedron(), errormsg1(), ExchangeRows(), F_SET, First_Non_Zero(), Gauss(), ImplicitEqualities(), Matrix_Alloc(), Matrix_Free(), Matrix_Print(), matrix::NbColumns, polyhedron::NbEq, matrix::NbRows, SatMatrix::NbRows, matrix::p, matrix::p_Init, SatMatrix::p_init, POL_INEQUALITIES, POL_INTEGER, POL_ISSET, POL_NO_DUAL, POL_VALID, Polyhedron_Alloc(), Polyhedron_Free(), Polyhedron_Print(), polyhedron::Ray, Remove_Redundants(), RETHROW, Sat, SMAlloc(), SMFree(), SMPrint(), SMVector_Init, SortConstraints(), TRY, UNCATCH, Universe_Polyhedron(), value_clear, value_init, value_notzero_p, value_set_si, value_zero_p, Vector_Copy(), and Vector_Set().
Referenced by AddConstraints(), dehomogenize_polyhedron(), DomainSimplify(), Ehrhart_Quick_Apx(), Elim_Columns(), eliminable_vars(), Enumeration_zero(), Find_m_faces(), homogenize(), LexSmaller(), main(), Param_Vertices_Print(), Polyhedron_Compute_Dual(), Polyhedron_Preimage(), Polyhedron_Preprocess(), Polyhedron_Preprocess2(), Polyhedron_Remove_parm_eqs(), Recession_Cone(), Stras_DomainSimplify(), test_Constraints_fullDimensionize(), test_Constraints_Remove_parm_eqs(), test_Polyhedron_Remove_parm_eqs(), and Union_Read().
Polyhedron * Disjoint_Domain | ( | Polyhedron * | Pol, |
int | flag, | ||
unsigned | NbMaxRays | ||
) |
Definition at line 4540 of file polyhedron.c.
References AddConstraints(), AddPolyToDomain(), polyhedron::Constraint, Domain_Free(), emptyQ, errormsg1(), polyhedron::NbConstraints, polyhedron::next, Polyhedron_Copy(), Polyhedron_Free(), SubConstraint(), and value_zero_p.
Referenced by Domain_Enumerate(), and main().
Polyhedron * Domain_Copy | ( | Polyhedron * | Pol | ) |
Definition at line 2867 of file polyhedron.c.
References Domain_Copy(), polyhedron::next, and Polyhedron_Copy().
Referenced by AddZPolytoZDomain(), align_context(), Domain_Copy(), DomainAddRays(), DomainDifference(), ZDomainSimplify(), ZPolyhedron_Alloc(), and ZPolyhedronDifference().
void Domain_Free | ( | Polyhedron * | Pol | ) |
Definition at line 1626 of file polyhedron.c.
References polyhedron::next, and Polyhedron_Free().
Referenced by Add_CEqualities(), AddZPolytoZDomain(), align_context(), CanonicalForm(), Compute_PDomains(), Disjoint_Domain(), Domain_Enumerate(), DomainDifference(), Ehrhart_Quick_Apx_Full_Dim(), EmptyZPolyhedron(), Enumerate_NoParameters(), Enumeration_Free(), Find_m_faces(), FindHermiteBasisofDomain(), IntegraliseLattice(), main(), Param_Domain_Free(), Param_Vertices_Print(), PDomainDifference(), Polyhedron_Enumerate(), Polyhedron_LexSmallerEnumerate(), Polyhedron_Not_Empty(), Polyhedron_Preprocess(), Polyhedron_Scan(), PolyhedronLTQ(), ZDomainSimplify(), ZPolyhedron_Free(), ZPolyhedronDifference(), ZPolyhedronImage(), ZPolyhedronIncludes(), ZPolyhedronIntersection(), and ZPolyhedronPreimage().
void Domain_PrintConstraints | ( | FILE * | Dst, |
const char * | Format, | ||
Polyhedron * | Pol | ||
) |
Definition at line 4752 of file polyhedron.c.
References polyhedron::next, and Polyhedron_PrintConstraints().
Polyhedron * DomainAddConstraints | ( | Polyhedron * | Pol, |
Matrix * | Mat, | ||
unsigned | NbMaxRays | ||
) |
Definition at line 4485 of file polyhedron.c.
References AddConstraints(), polyhedron::Dimension, errormsg1(), matrix::NbColumns, matrix::NbRows, polyhedron::next, matrix::p_Init, Polyhedron_Free(), and PolyhedronIncludes().
Polyhedron * DomainAddRays | ( | Polyhedron * | Pol, |
Matrix * | Ray, | ||
unsigned | NbMaxConstrs | ||
) |
Add rays pointed by 'Ray' to each and every polyhedron in the polyhedral domain 'Pol'.
'NbMaxConstrs' is maximum allowed constraints in the constraint set of a polyhedron.
Definition at line 2794 of file polyhedron.c.
References AddRays(), polyhedron::Dimension, Domain_Copy(), errormsg1(), matrix::NbColumns, matrix::NbRows, polyhedron::next, matrix::p, Polyhedron_Free(), and PolyhedronIncludes().
Referenced by Find_m_faces(), and Polyhedron_Scan().
Polyhedron * DomainConstraintSimplify | ( | Polyhedron * | P, |
unsigned | MaxRays | ||
) |
Definition at line 4797 of file polyhedron.c.
References polyhedron::Dimension, emptyQ, polyhedron::next, Vector::p, p_simplify_constraints(), Polyhedron_Free(), value_clear, value_init, value_set_si, Vector_Alloc(), and Vector_Free().
Polyhedron * DomainConvex | ( | Polyhedron * | Pol, |
unsigned | NbMaxConstrs | ||
) |
Definition at line 3659 of file polyhedron.c.
References AddRays(), any_exception_error, CATCH, polyhedron::NbRays, polyhedron::next, POL_ENSURE_VERTICES, Polyhedron_Copy(), Polyhedron_Free(), polyhedron::Ray, RETHROW, TRY, and UNCATCH.
Referenced by Compute_PDomains(), and main().
Interval * DomainCost | ( | Polyhedron * | Pol, |
Value * | Cost | ||
) |
Definition at line 4340 of file polyhedron.c.
References any_exception_error, CATCH, polyhedron::Dimension, errormsg1(), interval::MaxD, interval::MaxI, interval::MaxN, interval::MinD, interval::MinI, interval::MinN, polyhedron::NbRays, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, polyhedron::Ray, RETHROW, TRY, UNCATCH, value_addto, value_assign, value_clear, value_eq, value_gt, value_init, value_lt, value_multiply, value_ne, value_oppose, value_set_si, and value_zero_p.
Polyhedron * DomainDifference | ( | Polyhedron * | Pol1, |
Polyhedron * | Pol2, | ||
unsigned | NbMaxRays | ||
) |
Definition at line 3694 of file polyhedron.c.
References AddPolyToDomain(), polyhedron::Constraint, polyhedron::Dimension, Domain_Copy(), Domain_Free(), Empty_Polyhedron(), emptyQ, errormsg1(), polyhedron::NbConstraints, polyhedron::next, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, SubConstraint(), and value_notzero_p.
Referenced by Domain_Enumerate(), ZDomainSimplify(), ZPolyhedronDifference(), and ZPolyhedronIncludes().
Polyhedron * DomainImage | ( | Polyhedron * | Pol, |
Matrix * | Func, | ||
unsigned | NbMaxConstrs | ||
) |
Definition at line 4303 of file polyhedron.c.
References AddPolyToDomain(), any_exception_error, CATCH, polyhedron::next, Polyhedron_Free(), Polyhedron_Image(), RETHROW, TRY, and UNCATCH.
Referenced by AddZPolytoZDomain(), CanonicalForm(), FindHermiteBasisofDomain(), IntegraliseLattice(), Polyhedron_Image_Enumerate(), ZDomainSimplify(), ZPolyhedronDifference(), ZPolyhedronImage(), ZPolyhedronIncludes(), ZPolyhedronIntersection(), and ZPolyhedronPreimage().
Polyhedron * DomainIntersection | ( | Polyhedron * | Pol1, |
Polyhedron * | Pol2, | ||
unsigned | NbMaxRays | ||
) |
Return the intersection of two polyhedral domains 'Pol1' and 'Pol2'.
The maximum allowed rays in the new polyhedron generated is 'NbMaxRays'.
Definition at line 2637 of file polyhedron.c.
References AddConstraints(), AddPolyToDomain(), polyhedron::Constraint, polyhedron::Dimension, Empty_Polyhedron(), errormsg1(), polyhedron::NbConstraints, and polyhedron::next.
Referenced by Domain_Enumerate(), Ehrhart_Quick_Apx_Full_Dim(), Enumerate_NoParameters(), Find_m_faces(), main(), Polyhedron_Enumerate(), Polyhedron_Scan(), PolyhedronLTQ(), test_Constraints_Remove_parm_eqs(), test_Polyhedron_Remove_parm_eqs(), ZPolyhedronDifference(), and ZPolyhedronIntersection().
Polyhedron * DomainPreimage | ( | Polyhedron * | Pol, |
Matrix * | Func, | ||
unsigned | NbMaxRays | ||
) |
Definition at line 4175 of file polyhedron.c.
References AddPolyToDomain(), any_exception_error, CATCH, polyhedron::next, Polyhedron_Free(), Polyhedron_Preimage(), RETHROW, TRY, and UNCATCH.
Referenced by IntegraliseLattice(), ZDomainSimplify(), ZPolyhedronDifference(), ZPolyhedronImage(), ZPolyhedronIntersection(), and ZPolyhedronPreimage().
Polyhedron * DomainSimplify | ( | Polyhedron * | Pol1, |
Polyhedron * | Pol2, | ||
unsigned | NbMaxRays | ||
) |
Definition at line 3346 of file polyhedron.c.
References AddPolyToDomain(), polyhedron::Constraint, Constraints2Polyhedron(), polyhedron::Dimension, Empty_Polyhedron(), emptyQ, errormsg1(), Matrix_Alloc(), Matrix_Free(), MSB, polyhedron::NbConstraints, matrix::NbRows, NEXT, polyhedron::next, matrix::p, POL_ENSURE_VERTICES, Pol_status, SimplifyConstraints(), SimplifyEqualities(), SMVector_Init, and Vector_Copy().
Referenced by Ehrhart_Quick_Apx_Full_Dim(), Find_m_faces(), main(), Polyhedron_Enumerate(), and Polyhedron_Scan().
Polyhedron * DomainUnion | ( | Polyhedron * | Pol1, |
Polyhedron * | Pol2, | ||
unsigned | NbMaxRays | ||
) |
Definition at line 3585 of file polyhedron.c.
References polyhedron::Dimension, errormsg1(), polyhedron::next, Polyhedron_Copy(), and PolyhedronIncludes().
Referenced by AddZPolytoZDomain(), DMUnion(), and main().
Polyhedron * Empty_Polyhedron | ( | unsigned | Dimension | ) |
Definition at line 1721 of file polyhedron.c.
References polyhedron::Constraint, errormsg1(), F_SET, polyhedron::NbBid, polyhedron::NbEq, POL_FACETS, POL_INEQUALITIES, POL_POINTS, POL_VALID, POL_VERTICES, Polyhedron_Alloc(), value_set_si, and Vector_Set().
Referenced by Constraints2Polyhedron(), DomainDifference(), DomainIntersection(), DomainSimplify(), EmptyZPolyhedron(), p_simplify_constraints(), Polyhedron_Image(), Polyhedron_Preimage(), Rays2Polyhedron(), Remove_Redundants(), and Stras_DomainSimplify().
int Gauss | ( | Matrix * | Mat, |
int | NbEq, | ||
int | Dimension | ||
) |
Definition at line 823 of file polyhedron.c.
References Gauss4(), Matrix_Print(), matrix::NbRows, and matrix::p.
Referenced by Constraints2Polyhedron(), P_Enum(), Remove_Redundants(), and SimplifyEqualities().
int lower_upper_bounds | ( | int | pos, |
Polyhedron * | P, | ||
Value * | context, | ||
Value * | LBp, | ||
Value * | UBp | ||
) |
Definition at line 3905 of file polyhedron.c.
References polyhedron::Constraint, polyhedron::Dimension, Inner_Product(), LB_INFINITY, n, polyhedron::NbConstraints, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, UB_INFINITY, value_add_int, value_assign, value_clear, value_division, value_gt, value_init, value_lt, value_modulus, value_neg_p, value_notzero_p, value_oppose, value_pos_p, value_set_si, value_sub_int, and value_zero_p.
Referenced by cherche_min(), count_points(), exist_points(), and P_Enum().
Matrix * Polyhedron2Constraints | ( | Polyhedron * | Pol | ) |
Definition at line 2060 of file polyhedron.c.
References polyhedron::Constraint, polyhedron::Dimension, errormsg1(), Matrix_Alloc(), polyhedron::NbConstraints, matrix::p_Init, POL_ENSURE_INEQUALITIES, and Vector_Copy().
Referenced by dehomogenize_polyhedron(), Elim_Columns(), Find_m_faces(), GenParamPolyhedron(), main(), Polyhedron_Remove_parm_eqs(), and traite_m_face().
Matrix * Polyhedron2Rays | ( | Polyhedron * | Pol | ) |
Given a polyhedron 'Pol', return a matrix of rays.
Definition at line 2672 of file polyhedron.c.
References polyhedron::Dimension, errormsg1(), Matrix_Alloc(), polyhedron::NbRays, matrix::p_Init, POL_ENSURE_POINTS, polyhedron::Ray, and Vector_Copy().
Referenced by main().
Polyhedron * Polyhedron_Alloc | ( | unsigned | Dimension, |
unsigned | NbConstraints, | ||
unsigned | NbRays | ||
) |
Definition at line 1566 of file polyhedron.c.
References polyhedron::Constraint, polyhedron::Dimension, errormsg1(), polyhedron::flags, polyhedron::NbBid, polyhedron::NbConstraints, polyhedron::NbEq, polyhedron::NbRays, polyhedron::next, polyhedron::p_Init, polyhedron::p_Init_size, polyhedron::Ray, and value_alloc().
Referenced by align_context(), Constraints2Polyhedron(), Empty_Polyhedron(), Polyhedron_Copy(), Polyhedron_Image(), Remove_Redundants(), and Universe_Polyhedron().
void Polyhedron_Compute_Dual | ( | Polyhedron * | P | ) |
Definition at line 2206 of file polyhedron.c.
References assert, polyhedron::Constraint, Constraints2Polyhedron(), polyhedron::Dimension, F_ISSET, matrix::NbColumns, polyhedron::NbConstraints, matrix::NbRows, polyhedron::next, matrix::p, matrix::p_Init, polyhedron::p_Init, POL_FACETS, POL_INEQUALITIES, POL_VALID, POL_VERTICES, and Polyhedron_Free().
Polyhedron * Polyhedron_Copy | ( | Polyhedron * | Pol | ) |
Definition at line 2840 of file polyhedron.c.
References polyhedron::Constraint, polyhedron::Dimension, errormsg1(), polyhedron::flags, polyhedron::NbBid, polyhedron::NbConstraints, polyhedron::NbEq, polyhedron::NbRays, Polyhedron_Alloc(), polyhedron::Ray, and Vector_Copy().
Referenced by Add_CEqualities(), AddConstraints(), Disjoint_Domain(), Domain_Copy(), DomainConvex(), DomainUnion(), FindSimple(), p_simplify_constraints(), and Polyhedron_Image_Enumerate().
void Polyhedron_Free | ( | Polyhedron * | Pol | ) |
Definition at line 1614 of file polyhedron.c.
References polyhedron::Constraint, polyhedron::p_Init, polyhedron::p_Init_size, and value_free().
Referenced by AddConstraints(), AddPolyToDomain(), AddRays(), align_context(), CanonicalForm(), ComputeNPLinesRays(), Constraints2Polyhedron(), dehomogenize_enumeration(), Disjoint_Domain(), Domain_Free(), DomainAddConstraints(), DomainAddRays(), DomainConstraintSimplify(), DomainConvex(), DomainImage(), DomainPreimage(), Ehrhart_Quick_Apx(), Ehrhart_Quick_Apx_Full_Dim(), eliminable_vars(), Enumerate_NoParameters(), Enumeration_zero(), Find_m_faces(), FindSimple(), main(), p_simplify_constraints(), PDomainDifference(), PDomainIntersection(), Polyhedron2Param_Domain(), Polyhedron_Compute_Dual(), Polyhedron_Enumerate(), Polyhedron_Image(), Polyhedron_Image_Enumerate(), Polyhedron_LexSmallerEnumerate(), Polyhedron_Preimage(), Polyhedron_Preprocess(), Polyhedron_Remove_parm_eqs(), Rays2Polyhedron(), Remove_Redundants(), SimplifyConstraints(), Stras_DomainSimplify(), SubConstraint(), test_Constraints_fullDimensionize(), test_Constraints_Remove_parm_eqs(), test_Polyhedron_Remove_parm_eqs(), and traite_m_face().
Polyhedron * Polyhedron_Image | ( | Polyhedron * | Pol, |
Matrix * | Func, | ||
unsigned | NbMaxConstrs | ||
) |
Definition at line 4204 of file polyhedron.c.
References any_exception_error, CATCH, polyhedron::Constraint, polyhedron::Dimension, Empty_Polyhedron(), errormsg1(), Gauss4(), Matrix_Alloc(), Matrix_Copy(), Matrix_Free(), Matrix_Inverse(), polyhedron::NbBid, matrix::NbColumns, polyhedron::NbConstraints, polyhedron::NbEq, polyhedron::NbRays, matrix::NbRows, matrix::p, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, Polyhedron_Alloc(), Polyhedron_Free(), polyhedron::Ray, Rays2Polyhedron(), Rays_Mult(), Rays_Mult_Transpose(), RETHROW, TRY, and UNCATCH.
Referenced by DomainImage(), and main().
Polyhedron * Polyhedron_Preimage | ( | Polyhedron * | Pol, |
Matrix * | Func, | ||
unsigned | NbMaxRays | ||
) |
Definition at line 4113 of file polyhedron.c.
References any_exception_error, CATCH, polyhedron::Constraint, Constraints2Polyhedron(), polyhedron::Dimension, Empty_Polyhedron(), errormsg1(), Matrix_Alloc(), Matrix_Free(), matrix::NbColumns, polyhedron::NbConstraints, matrix::NbRows, matrix::p, POL_ENSURE_INEQUALITIES, Pol_status, Polyhedron_Free(), Rays_Mult(), RETHROW, TRY, and UNCATCH.
Referenced by DomainPreimage(), Ehrhart_Quick_Apx_Full_Dim(), Enumerate_NoParameters(), main(), Param_Polyhedron_Scale_Integer(), and Polyhedron_Enumerate().
void Polyhedron_Print | ( | FILE * | Dst, |
const char * | Format, | ||
const Polyhedron * | Pol | ||
) |
Definition at line 1639 of file polyhedron.c.
References polyhedron::Constraint, polyhedron::Dimension, polyhedron::NbBid, polyhedron::NbConstraints, polyhedron::NbEq, polyhedron::NbRays, polyhedron::next, Polyhedron_Print(), polyhedron::Ray, value_notzero_p, and value_print.
Referenced by Compute_PDomains(), Constraints2Polyhedron(), Ehrhart_Quick_Apx_Full_Dim(), Elim_Columns(), Enumerate_NoParameters(), Find_m_faces(), main(), Polyhedron_Enumerate(), Polyhedron_Preprocess(), Polyhedron_Print(), PolyhedronLTQ(), PolyPrint(), PreElim_Columns(), Rays2Polyhedron(), traite_m_face(), and ZPolyhedronPrint().
void Polyhedron_PrintConstraints | ( | FILE * | Dst, |
const char * | Format, | ||
Polyhedron * | Pol | ||
) |
Definition at line 4739 of file polyhedron.c.
References polyhedron::Constraint, polyhedron::Dimension, polyhedron::NbConstraints, and value_print.
Referenced by AffConstraints(), AffContraintes(), and Domain_PrintConstraints().
Polyhedron * Polyhedron_Scan | ( | Polyhedron * | D, |
Polyhedron * | C, | ||
unsigned | MAXRAYS | ||
) |
Definition at line 3838 of file polyhedron.c.
References align_context(), assert, polyhedron::Dimension, Domain_Free(), DomainAddRays(), DomainIntersection(), DomainSimplify(), errormsg1(), Matrix_Alloc(), Matrix_Free(), matrix::NbRows, polyhedron::next, matrix::p, matrix::p_Init, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, value_set_si, and Vector_Set().
Referenced by Ehrhart_Quick_Apx_Full_Dim(), Enumerate_NoParameters(), main(), Polyhedron_Enumerate(), Polyhedron_Not_Empty(), and Polyhedron_Preprocess().
int PolyhedronIncludes | ( | Polyhedron * | Pol1, |
Polyhedron * | Pol2 | ||
) |
Definition at line 2404 of file polyhedron.c.
References polyhedron::Constraint, polyhedron::Dimension, polyhedron::NbConstraints, polyhedron::NbRays, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, polyhedron::Ray, value_addmul, value_clear, value_init, value_neg_p, value_notzero_p, value_set_si, and value_zero_p.
Referenced by AddPolyToDomain(), DomainAddConstraints(), DomainAddRays(), DomainUnion(), Ehrhart_Quick_Apx_Full_Dim(), IncludeInRes(), main(), Polyhedron_Enumerate(), Remove_RedundantDomains(), test_Constraints_Remove_parm_eqs(), and test_Polyhedron_Remove_parm_eqs().
void polylib_close | ( | void | ) |
Free all cache allocated memory: call this function before exiting in a memory checker environment like valgrind.
Notice that, in a multithreaded environment, all your threads have to call this function
Definition at line 4843 of file polyhedron.c.
References free_exception_stack(), and free_value_cache().
void PolyPrint | ( | Polyhedron * | Pol | ) |
Definition at line 1710 of file polyhedron.c.
References Polyhedron_Print().
Polyhedron * Rays2Polyhedron | ( | Matrix * | Ray, |
unsigned | NbMaxConstrs | ||
) |
Given a matrix of rays 'Ray', create and return a polyhedron.
Ray | Rays (may be modified!) |
NbMaxConstrs | Estimated number of constraints in the polyhedron. |
Definition at line 2087 of file polyhedron.c.
References any_exception_error, CATCH, Chernikova(), Empty_Polyhedron(), errormsg1(), Matrix_Alloc(), Matrix_Free(), Matrix_Print(), matrix::NbColumns, matrix::NbRows, matrix::p, matrix::p_Init, POL_ISSET, POL_NO_DUAL, Polyhedron_Free(), Polyhedron_Print(), Remove_Redundants(), RETHROW, Sat, SMAlloc(), SMFree(), SMPrint(), SMVector_Init, TransformSat(), TRY, UNCATCH, value_set_si, and Vector_Set().
Referenced by main(), Polyhedron_Image(), and traite_m_face().
Polyhedron * Stras_DomainSimplify | ( | Polyhedron * | Pol1, |
Polyhedron * | Pol2, | ||
unsigned | NbMaxRays | ||
) |
Definition at line 3459 of file polyhedron.c.
References AddPolyToDomain(), any_exception_error, CATCH, polyhedron::Constraint, Constraints2Polyhedron(), polyhedron::Dimension, Empty_Polyhedron(), emptyQ, errormsg1(), Matrix_Alloc(), Matrix_Free(), MSB, polyhedron::NbConstraints, matrix::NbRows, NEXT, polyhedron::next, matrix::p, POL_ENSURE_VERTICES, Polyhedron_Free(), RETHROW, SimplifyConstraints(), SMVector_Init, TRY, UNCATCH, and Vector_Copy().
Polyhedron * SubConstraint | ( | Value * | Con, |
Polyhedron * | Pol, | ||
unsigned | NbMaxRays, | ||
int | Pass | ||
) |
Definition at line 2529 of file polyhedron.c.
References any_exception_error, BuildSat(), CATCH, Chernikova(), polyhedron::Constraint, polyhedron::Dimension, errormsg1(), Matrix_Alloc(), Matrix_Free(), polyhedron::NbBid, polyhedron::NbConstraints, polyhedron::NbRays, matrix::p, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, POL_ISSET, POL_NO_DUAL, Pol_status, Polyhedron_Free(), polyhedron::Ray, Remove_Redundants(), RETHROW, Sat, SMFree(), TRY, UNCATCH, value_assign, value_decrement, value_notzero_p, value_oppose, value_set_si, and Vector_Copy().
Referenced by Disjoint_Domain(), DomainDifference(), and PDomainDifference().
Polyhedron * Universe_Polyhedron | ( | unsigned | Dimension | ) |
Definition at line 1754 of file polyhedron.c.
References polyhedron::Constraint, errormsg1(), F_SET, polyhedron::NbBid, polyhedron::NbEq, POL_FACETS, POL_INEQUALITIES, POL_POINTS, POL_VALID, POL_VERTICES, Polyhedron_Alloc(), polyhedron::Ray, value_set_si, and Vector_Set().
Referenced by Constraints2Polyhedron(), Ehrhart_Quick_Apx_Full_Dim(), Enumerate_NoParameters(), Enumeration_zero(), Find_m_faces(), GenParamPolyhedron(), Polyhedron_Enumerate(), and Polyhedron_Preprocess().