Main Page | Class List | File List | Class Members | File Members

polyhedron.h File Reference

Go to the source code of this file.

Defines

#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)
PolyhedronDomainConstraintSimplify (Polyhedron *P, unsigned MaxRays)
PolyhedronAddConstraints (Value *Con, unsigned NbConstraints, Polyhedron *Pol, unsigned NbMaxRays)
PolyhedronAddPolyToDomain (Polyhedron *Pol, Polyhedron *PolDomain)
PolyhedronAddRays (Value *Ray2, unsigned NbRay2, Polyhedron *Pol1, unsigned NbMaxRays)
Polyhedronalign_context (Polyhedron *Pol, int align_dimension, int NbMaxRays)
PolyhedronConstraints2Polyhedron (Matrix *Constraints, unsigned NbMaxRays)
 Given a matrix of constraints ('Constraints'), construct and return a polyhedron.

PolyhedronDisjoint_Domain (Polyhedron *Pol, int flag, unsigned NbMaxRays)
PolyhedronDomainAddConstraints (Polyhedron *Pol, Matrix *Mat, unsigned NbMaxRays)
PolyhedronDomainAddRays (Polyhedron *Pol, Matrix *Ray, unsigned NbMaxConstrs)
PolyhedronDomainConvex (Polyhedron *Pol, unsigned NbMaxConstrs)
IntervalDomainCost (Polyhedron *Pol, Value *Cost)
PolyhedronDomainDifference (Polyhedron *Pol1, Polyhedron *Pol2, unsigned NbMaxRays)
PolyhedronDomainImage (Polyhedron *Pol, Matrix *Func, unsigned NbMaxConstrs)
PolyhedronDomainIntersection (Polyhedron *Pol1, Polyhedron *Pol2, unsigned NbMaxRays)
PolyhedronDomainPreimage (Polyhedron *Pol, Matrix *Func, unsigned NbMaxRays)
PolyhedronDomainSimplify (Polyhedron *Pol1, Polyhedron *Pol2, unsigned NbMaxRays)
PolyhedronStras_DomainSimplify (Polyhedron *Pol1, Polyhedron *Pol2, unsigned NbMaxRays)
PolyhedronDomainUnion (Polyhedron *Pol1, Polyhedron *Pol2, unsigned NbMaxRays)
PolyhedronDomain_Copy (Polyhedron *Pol)
void Domain_Free (Polyhedron *Pol)
void Domain_PrintConstraints (FILE *Dst, const char *Format, Polyhedron *Pol)
PolyhedronEmpty_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)
MatrixPolyhedron2Constraints (Polyhedron *Pol)
MatrixPolyhedron2Rays (Polyhedron *Pol)
int PolyhedronIncludes (Polyhedron *Pol1, Polyhedron *Pol2)
PolyhedronPolyhedron_Alloc (unsigned Dimension, unsigned NbConstraints, unsigned NbRays)
PolyhedronPolyhedron_Copy (Polyhedron *Pol)
void Polyhedron_Free (Polyhedron *Pol)
PolyhedronPolyhedron_Image (Polyhedron *Pol, Matrix *Func, unsigned NbMaxConstrs)
PolyhedronPolyhedron_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)
PolyhedronPolyhedron_Scan (Polyhedron *D, Polyhedron *C, unsigned MAXRAYS)
void PolyPrint (Polyhedron *Pol)
PolyhedronRays2Polyhedron (Matrix *Ray, unsigned NbMaxConstrs)
 Given a matrix of rays 'Ray', create and return a polyhedron.

PolyhedronSubConstraint (Value *Con, Polyhedron *Pol, unsigned NbMaxRays, int Pass)
PolyhedronUniverse_Polyhedron (unsigned Dimension)


Define Documentation

#define POL_ENSURE_FACETS  ) 
 

Value:

if (F_ISSET(P, POL_VALID) && !F_ISSET(P, POL_FACETS))                   \
            Polyhedron_Compute_Dual(P);

Definition at line 13 of file polyhedron.h.

Referenced by AddPolyToDomain(), AddRays(), count_points(), Domain_Enumerate(), DomainCost(), DomainDifference(), FindHermiteBasisofDomain(), in_domain(), lower_upper_bounds(), PDomainDifference(), PDomainIntersection(), Polyhedron2Param_Domain(), Polyhedron2Param_SimplifiedDomain(), Polyhedron2Param_Vertices(), Polyhedron_Enumerate(), Polyhedron_Image(), Polyhedron_Image_Enumerate(), Polyhedron_Not_Empty(), Polyhedron_Scan(), PolyhedronIncludes(), PolyhedronLTQ(), PolyhedronTSort(), Print_Domain(), SubConstraint(), and ZPolyhedron_Alloc().

#define POL_ENSURE_INEQUALITIES  ) 
 

Value:

if (F_ISSET(P, POL_VALID) && !F_ISSET(P, POL_INEQUALITIES))             \
            Polyhedron_Compute_Dual(P);

Definition at line 5 of file polyhedron.h.

Referenced by AddConstraints(), LexSmaller(), Polyhedron2Constraints(), and Polyhedron_Preimage().

#define POL_ENSURE_POINTS  ) 
 

Value:

if (F_ISSET(P, POL_VALID) && !F_ISSET(P, POL_POINTS))                   \
            Polyhedron_Compute_Dual(P);

Definition at line 9 of file polyhedron.h.

Referenced by Polyhedron2Rays().

#define POL_ENSURE_VERTICES  ) 
 

Value:

if (F_ISSET(P, POL_VALID) && !F_ISSET(P, POL_VERTICES))                 \
            Polyhedron_Compute_Dual(P);

Definition at line 17 of file polyhedron.h.

Referenced by AddConstraints(), AddPolyToDomain(), AddRays(), count_points(), Domain_Enumerate(), DomainConvex(), DomainCost(), DomainDifference(), DomainSimplify(), FindHermiteBasisofDomain(), in_domain(), lower_upper_bounds(), PDomainDifference(), PDomainIntersection(), Polyhedron2Param_Domain(), Polyhedron2Param_SimplifiedDomain(), Polyhedron2Param_Vertices(), Polyhedron_Enumerate(), Polyhedron_Image(), Polyhedron_Image_Enumerate(), Polyhedron_Not_Empty(), Polyhedron_Scan(), PolyhedronIncludes(), PolyhedronLTQ(), PolyhedronTSort(), Print_Domain(), Stras_DomainSimplify(), SubConstraint(), and ZPolyhedron_Alloc().


Function Documentation

Polyhedron* AddConstraints Value *  Con,
unsigned  NbConstraints,
Polyhedron Pol,
unsigned  NbMaxRays
 

Definition at line 2276 of file polyhedron.c.

References any_exception_error, BuildSat(), CATCH, Chernikova(), polyhedron::Constraint, Constraints2Polyhedron(), polyhedron::Dimension, errormsg1(), Matrix, Matrix_Alloc(), Matrix_Free(), polyhedron::NbBid, polyhedron::NbConstraints, polyhedron::NbRays, matrix::NbRows, matrix::p, POL_ENSURE_INEQUALITIES, POL_ENSURE_VERTICES, POL_ISSET, POL_NO_DUAL, Pol_status, Polyhedron, Polyhedron_Copy(), Polyhedron_Free(), polyhedron::Ray, Remove_Redundants(), RETHROW, 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 2415 of file polyhedron.c.

References emptyQ, polyhedron::next, p, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, Polyhedron, Polyhedron_Free(), and PolyhedronIncludes().

Referenced by Disjoint_Domain(), DomainDifference(), DomainImage(), DomainIntersection(), DomainPreimage(), DomainSimplify(), PDomainDifference(), PDomainIntersection(), Polyhedron_Image_Enumerate(), and Stras_DomainSimplify().

Polyhedron* AddRays Value *  Ray2,
unsigned  NbRay2,
Polyhedron Pol1,
unsigned  NbMaxRays
 

Definition at line 2644 of file polyhedron.c.

References any_exception_error, BuildSat(), CATCH, Chernikova(), polyhedron::Constraint, polyhedron::Dimension, errormsg1(), Matrix, 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, Polyhedron_Free(), polyhedron::Ray, Remove_Redundants(), RETHROW, 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 3644 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, p, POL_INEQUALITIES, POL_POINTS, POL_VALID, Polyhedron, 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.

Parameters:
Constraints Constraints (may be modified!)
NbMaxRays Estimated number of rays in the ray matrix of the polyhedron.
Returns:
newly allocated Polyhedron

Definition at line 1889 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, Matrix_Alloc(), Matrix_Free(), Matrix_Print(), matrix::NbColumns, polyhedron::NbEq, SatMatrix::NbRows, matrix::NbRows, matrix::p, SatMatrix::p_init, matrix::p_Init, POL_INEQUALITIES, POL_INTEGER, POL_ISSET, POL_NO_DUAL, POL_VALID, Polyhedron, Polyhedron_Alloc(), Polyhedron_Free(), Polyhedron_Print(), polyhedron::Ray, Remove_Redundants(), RETHROW, 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 4383 of file polyhedron.c.

References AddConstraints(), AddPolyToDomain(), polyhedron::Constraint, Domain_Free(), emptyQ, errormsg1(), polyhedron::NbConstraints, polyhedron::next, Polyhedron, Polyhedron_Copy(), Polyhedron_Free(), SubConstraint(), and value_zero_p.

Referenced by Domain_Enumerate(), and main().

Polyhedron* Domain_Copy Polyhedron Pol  ) 
 

Definition at line 2806 of file polyhedron.c.

References polyhedron::next, Polyhedron, and Polyhedron_Copy().

Referenced by AddZPolytoZDomain(), align_context(), DomainAddRays(), DomainDifference(), ZDomainSimplify(), ZPolyhedron_Alloc(), and ZPolyhedronDifference().

void Domain_Free Polyhedron Pol  ) 
 

Definition at line 1599 of file polyhedron.c.

References polyhedron::next, Polyhedron, 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 4617 of file polyhedron.c.

References polyhedron::next, Polyhedron, and Polyhedron_PrintConstraints().

Polyhedron* DomainAddConstraints Polyhedron Pol,
Matrix Mat,
unsigned  NbMaxRays
 

Definition at line 4330 of file polyhedron.c.

References AddConstraints(), polyhedron::Dimension, errormsg1(), Matrix, matrix::NbColumns, matrix::NbRows, polyhedron::next, matrix::p_Init, Polyhedron, Polyhedron_Free(), and PolyhedronIncludes().

Polyhedron* DomainAddRays Polyhedron Pol,
Matrix Ray,
unsigned  NbMaxConstrs
 

Definition at line 2733 of file polyhedron.c.

References AddRays(), polyhedron::Dimension, Domain_Copy(), errormsg1(), Matrix, matrix::NbColumns, matrix::NbRows, polyhedron::next, matrix::p, Polyhedron, Polyhedron_Free(), and PolyhedronIncludes().

Referenced by Find_m_faces(), and Polyhedron_Scan().

Polyhedron* DomainConstraintSimplify Polyhedron P,
unsigned  MaxRays
 

Definition at line 4664 of file polyhedron.c.

References polyhedron::Dimension, emptyQ, polyhedron::next, Vector::p, p_simplify_constraints(), Polyhedron, Polyhedron_Free(), value_clear, value_init, value_set_si, Vector_Alloc(), and Vector_Free().

Polyhedron* DomainConvex Polyhedron Pol,
unsigned  NbMaxConstrs
 

Definition at line 3553 of file polyhedron.c.

References AddRays(), any_exception_error, CATCH, polyhedron::next, p, POL_ENSURE_VERTICES, Polyhedron, Polyhedron_Copy(), Polyhedron_Free(), RETHROW, TRY, and UNCATCH.

Referenced by Compute_PDomains(), and main().

Interval* DomainCost Polyhedron Pol,
Value *  Cost
 

Definition at line 4202 of file polyhedron.c.

References any_exception_error, CATCH, polyhedron::Dimension, errormsg1(), Interval, interval::MaxD, interval::MaxI, interval::MaxN, interval::MinD, interval::MinI, interval::MinN, polyhedron::NbRays, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, Polyhedron, 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 3587 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, Polyhedron, SubConstraint(), and value_notzero_p.

Referenced by Domain_Enumerate(), ZDomainSimplify(), ZPolyhedronDifference(), and ZPolyhedronIncludes().

Polyhedron* DomainImage Polyhedron Pol,
Matrix Func,
unsigned  NbMaxConstrs
 

Definition at line 4166 of file polyhedron.c.

References AddPolyToDomain(), any_exception_error, CATCH, Matrix, p, Polyhedron, 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
 

Definition at line 2590 of file polyhedron.c.

References AddConstraints(), AddPolyToDomain(), polyhedron::Constraint, polyhedron::Dimension, Empty_Polyhedron(), errormsg1(), polyhedron::NbConstraints, polyhedron::next, and Polyhedron.

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 4040 of file polyhedron.c.

References AddPolyToDomain(), any_exception_error, CATCH, Matrix, p, Polyhedron, 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 3243 of file polyhedron.c.

References AddPolyToDomain(), polyhedron::Constraint, Constraints2Polyhedron(), polyhedron::Dimension, Empty_Polyhedron(), emptyQ, errormsg1(), Matrix, Matrix_Alloc(), Matrix_Free(), MSB, polyhedron::NbConstraints, matrix::NbRows, NEXT, polyhedron::next, matrix::p, POL_ENSURE_VERTICES, Pol_status, Polyhedron, 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 3472 of file polyhedron.c.

References polyhedron::Dimension, errormsg1(), polyhedron::next, Polyhedron, Polyhedron_Copy(), and PolyhedronIncludes().

Referenced by AddZPolytoZDomain(), DMUnion(), and main().

Polyhedron* Empty_Polyhedron unsigned  Dimension  ) 
 

Definition at line 1698 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, 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 812 of file polyhedron.c.

References Gauss4(), Matrix, 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 3784 of file polyhedron.c.

References polyhedron::Constraint, polyhedron::Dimension, Inner_Product(), LB_INFINITY, polyhedron::NbConstraints, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, Polyhedron, 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 2039 of file polyhedron.c.

References polyhedron::Constraint, polyhedron::Dimension, errormsg1(), Matrix, Matrix_Alloc(), polyhedron::NbConstraints, matrix::p_Init, POL_ENSURE_INEQUALITIES, Polyhedron, 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  ) 
 

Definition at line 2622 of file polyhedron.c.

References polyhedron::Dimension, errormsg1(), Matrix, Matrix_Alloc(), polyhedron::NbRays, matrix::p_Init, POL_ENSURE_POINTS, Polyhedron, polyhedron::Ray, and Vector_Copy().

Referenced by main().

Polyhedron* Polyhedron_Alloc unsigned  Dimension,
unsigned  NbConstraints,
unsigned  NbRays
 

Definition at line 1539 of file polyhedron.c.

References polyhedron::Constraint, polyhedron::Dimension, errormsg1(), polyhedron::flags, polyhedron::NbBid, polyhedron::NbConstraints, polyhedron::NbEq, polyhedron::NbRays, polyhedron::next, p, polyhedron::p_Init, polyhedron::p_Init_size, Polyhedron, 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 2181 of file polyhedron.c.

References assert, polyhedron::Constraint, Constraints2Polyhedron(), polyhedron::Dimension, F_ISSET, Matrix, matrix::NbColumns, polyhedron::NbConstraints, matrix::NbRows, polyhedron::next, matrix::p, polyhedron::p_Init, matrix::p_Init, POL_FACETS, POL_INEQUALITIES, POL_VALID, POL_VERTICES, Polyhedron, and Polyhedron_Free().

Polyhedron* Polyhedron_Copy Polyhedron Pol  ) 
 

Definition at line 2779 of file polyhedron.c.

References polyhedron::Constraint, polyhedron::Dimension, errormsg1(), polyhedron::flags, polyhedron::NbBid, polyhedron::NbConstraints, polyhedron::NbEq, polyhedron::NbRays, Polyhedron, 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 1586 of file polyhedron.c.

References polyhedron::Constraint, polyhedron::p_Init, polyhedron::p_Init_size, Polyhedron, 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 4068 of file polyhedron.c.

References any_exception_error, CATCH, polyhedron::Constraint, polyhedron::Dimension, Empty_Polyhedron(), errormsg1(), Gauss4(), Matrix, 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, 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 3981 of file polyhedron.c.

References any_exception_error, CATCH, polyhedron::Constraint, Constraints2Polyhedron(), polyhedron::Dimension, Empty_Polyhedron(), errormsg1(), Matrix, Matrix_Alloc(), Matrix_Free(), matrix::NbColumns, polyhedron::NbConstraints, matrix::NbRows, matrix::p, POL_ENSURE_INEQUALITIES, Pol_status, Polyhedron, 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 1613 of file polyhedron.c.

References polyhedron::Constraint, polyhedron::Dimension, polyhedron::NbBid, polyhedron::NbConstraints, polyhedron::NbEq, polyhedron::NbRays, polyhedron::next, p, Polyhedron, 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(), PolyhedronLTQ(), PolyPrint(), PreElim_Columns(), Rays2Polyhedron(), traite_m_face(), and ZPolyhedronPrint().

void Polyhedron_PrintConstraints FILE *  Dst,
const char *  Format,
Polyhedron Pol
 

Definition at line 4602 of file polyhedron.c.

References polyhedron::Constraint, polyhedron::Dimension, polyhedron::NbConstraints, Polyhedron, and value_print.

Referenced by AffConstraints(), AffContraintes(), and Domain_PrintConstraints().

Polyhedron* Polyhedron_Scan Polyhedron D,
Polyhedron C,
unsigned  MAXRAYS
 

Definition at line 3722 of file polyhedron.c.

References align_context(), assert, polyhedron::Dimension, Domain_Free(), DomainAddRays(), DomainIntersection(), DomainSimplify(), errormsg1(), Matrix, Matrix_Alloc(), Matrix_Free(), matrix::NbRows, polyhedron::next, matrix::p, matrix::p_Init, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, Polyhedron, 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 2371 of file polyhedron.c.

References polyhedron::Constraint, polyhedron::Dimension, polyhedron::NbConstraints, polyhedron::NbRays, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, Polyhedron, 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 PolyPrint Polyhedron Pol  ) 
 

Definition at line 1687 of file polyhedron.c.

References Polyhedron, and Polyhedron_Print().

Polyhedron* Rays2Polyhedron Matrix Ray,
unsigned  NbMaxConstrs
 

Given a matrix of rays 'Ray', create and return a polyhedron.

Parameters:
Ray Rays (may be modified!)
NbMaxConstrs Estimated number of constraints in the polyhedron.
Returns:
newly allocated Polyhedron

Definition at line 2066 of file polyhedron.c.

References any_exception_error, CATCH, Chernikova(), Empty_Polyhedron(), errormsg1(), Matrix, Matrix_Alloc(), Matrix_Free(), Matrix_Print(), matrix::NbColumns, SatMatrix::NbRows, matrix::NbRows, SatMatrix::p, matrix::p, matrix::p_Init, POL_ISSET, POL_NO_DUAL, Polyhedron, Polyhedron_Free(), Polyhedron_Print(), Remove_Redundants(), RETHROW, 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 3351 of file polyhedron.c.

References AddPolyToDomain(), any_exception_error, CATCH, polyhedron::Constraint, Constraints2Polyhedron(), polyhedron::Dimension, Empty_Polyhedron(), emptyQ, errormsg1(), Matrix, Matrix_Alloc(), Matrix_Free(), MSB, polyhedron::NbConstraints, matrix::NbRows, NEXT, polyhedron::next, matrix::p, POL_ENSURE_VERTICES, Polyhedron, Polyhedron_Free(), RETHROW, SimplifyConstraints(), SMVector_Init, TRY, UNCATCH, and Vector_Copy().

Polyhedron* SubConstraint Value *  Con,
Polyhedron Pol,
unsigned  NbMaxRays,
int  Pass
 

Definition at line 2491 of file polyhedron.c.

References any_exception_error, BuildSat(), CATCH, Chernikova(), polyhedron::Constraint, polyhedron::Dimension, errormsg1(), Matrix, Matrix_Alloc(), Matrix_Free(), polyhedron::NbBid, polyhedron::NbConstraints, polyhedron::NbRays, matrix::NbRows, matrix::p, POL_ENSURE_FACETS, POL_ENSURE_VERTICES, POL_ISSET, POL_NO_DUAL, Pol_status, Polyhedron, Polyhedron_Free(), polyhedron::Ray, Remove_Redundants(), RETHROW, 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 1731 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, 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().


Generated on Thu Sep 4 15:29:00 2008 for polylib by doxygen 1.3.5