00001
00002
00003
00004
00005
00006
00007 #ifndef _polyhedron_H_
00008 #define _polyhedron_H_
00009 #if (defined(__STDC__) || defined(__cplusplus))
00010
00011 #if defined(__cplusplus)
00012 extern "C" {
00013 #endif
00014
00015 extern Polyhedron *AddConstraints(Value *Con,unsigned NbConstraints,
00016 Polyhedron *Pol,unsigned NbMaxRays );
00017 extern Polyhedron *AddPolyToDomain(Polyhedron *Pol,Polyhedron *PolDomain);
00018 extern Polyhedron *AddRays (Value *Ray2,unsigned NbRay2,Polyhedron
00019 *Pol1,unsigned NbMaxRays);
00020 extern Polyhedron *align_context(Polyhedron *Pol,int align_dimension,
00021 int NbMaxRays);
00022 extern Polyhedron *Constraints2Polyhedron(Matrix *Constraints, unsigned
00023 NbMaxRays);
00024 extern Polyhedron *Disjoint_Domain( Polyhedron *Pol, int flag, unsigned
00025 NbMaxRays );
00026 extern Polyhedron *DomainAddConstraints(Polyhedron *Pol,Matrix *Mat,
00027 unsigned NbMaxRays);
00028 extern Polyhedron *DomainAddRays(Polyhedron *Pol,Matrix *Ray,
00029 unsigned NbMaxConstrs);
00030 extern Polyhedron *DomainConvex(Polyhedron *Pol,unsigned NbMaxConstrs);
00031 extern Interval *DomainCost(Polyhedron *Pol,Value *Cost);
00032 extern Polyhedron *DomainDifference(Polyhedron *Pol1,Polyhedron *Pol2,
00033 unsigned NbMaxRays);
00034 extern Polyhedron *DomainImage(Polyhedron *Pol,Matrix *Func,unsigned
00035 NbMaxConstrs);
00036 extern Polyhedron *DomainIntersection(Polyhedron *Pol1,Polyhedron
00037 *Pol2, unsigned NbMaxRays);
00038 extern Polyhedron *DomainPreimage(Polyhedron *Pol,Matrix *Func,
00039 unsigned NbMaxRays);
00040 extern Polyhedron *DomainSimplify(Polyhedron *Pol1, Polyhedron *Pol2,
00041 unsigned NbMaxRays);
00042 extern Polyhedron *Stras_DomainSimplify(Polyhedron *Pol1, Polyhedron *Pol2,
00043 unsigned NbMaxRays);
00044 extern Polyhedron *DomainUnion(Polyhedron *Pol1,Polyhedron *Pol2,
00045 unsigned NbMaxRays);
00046 extern Polyhedron *Domain_Copy(Polyhedron *Pol);
00047 extern void Domain_Free (Polyhedron *Pol);
00048 extern Polyhedron *Empty_Polyhedron(unsigned Dimension);
00049 extern int Gauss(Matrix *Mat,int NbEq,int Dimension);
00050 extern int lower_upper_bounds(int pos,Polyhedron *P,Value *context,
00051 Value *LBp,Value *UBp);
00052 extern Matrix *Polyhedron2Constraints(Polyhedron *Pol);
00053 extern Matrix *Polyhedron2Rays(Polyhedron *Pol);
00054 extern int PolyhedronIncludes(Polyhedron *Pol1,Polyhedron *Pol2);
00055 extern Polyhedron* Polyhedron_Alloc(unsigned Dimension,unsigned
00056 NbConstraints,unsigned NbRays);
00057 extern Polyhedron *Polyhedron_Copy(Polyhedron *Pol);
00058 extern void Polyhedron_Free(Polyhedron *Pol);
00059 extern Polyhedron *Polyhedron_Image(Polyhedron *Pol,Matrix *Func,
00060 unsigned NbMaxConstrs);
00061 extern Polyhedron *Polyhedron_Preimage(Polyhedron *Pol,Matrix *Func,
00062 unsigned NbMaxRays);
00063 extern void Polyhedron_Print(FILE *Dst,char *Format,Polyhedron *Pol);
00064 extern void Polyhedron_PrintConstraints(FILE *Dst,char *Format,
00065 Polyhedron *Pol);
00066 extern Polyhedron *Polyhedron_Scan(Polyhedron *D,Polyhedron *C,
00067 unsigned MAXRAYS);
00068 extern void PolyPrint(Polyhedron *Pol);
00069 extern Polyhedron *Rays2Polyhedron(Matrix *Ray,unsigned NbMaxConstrs);
00070 extern Polyhedron *SubConstraint(Value *Con,Polyhedron *Pol,
00071 unsigned NbMaxRays, int Pass);
00072 extern Polyhedron *Universe_Polyhedron (unsigned Dimension);
00073
00074 #if defined(__cplusplus)
00075 }
00076 #endif
00077
00078 #else
00079
00080 extern Polyhedron *AddConstraints(
00081 );
00082 extern Polyhedron *AddPolyToDomain();
00083 extern Polyhedron *AddRays (
00084 );
00085 extern Polyhedron *align_context(
00086 );
00087 extern Polyhedron *Constraints2Polyhedron(
00088 );
00089 extern Polyhedron *Disjoint_Domain();
00090 extern Polyhedron *DomainAddConstraints(
00091 );
00092 extern Polyhedron *DomainAddRays(
00093 );
00094 extern Polyhedron *DomainConvex();
00095 extern Interval *DomainCost();
00096 extern Polyhedron *DomainDifference(
00097 );
00098 extern Polyhedron *DomainImage(
00099 );
00100 extern Polyhedron *DomainIntersection(
00101 );
00102 extern Polyhedron *DomainPreimage(
00103 );
00104 extern Polyhedron *DomainSimplify(
00105 );
00106 extern Polyhedron *DomainUnion(
00107 );
00108 extern Polyhedron *Domain_Copy();
00109 extern void Domain_Free ();
00110 extern Polyhedron *Empty_Polyhedron();
00111 extern int Gauss();
00112 extern int lower_upper_bounds(
00113 );
00114 extern Matrix *Polyhedron2Constraints();
00115 extern Matrix *Polyhedron2Rays();
00116 extern int PolyhedronIncludes();
00117 extern Polyhedron* Polyhedron_Alloc(
00118 );
00119 extern Polyhedron *Polyhedron_Copy();
00120 extern void Polyhedron_Free();
00121 extern Polyhedron *Polyhedron_Image(
00122 );
00123 extern Polyhedron *Polyhedron_Preimage(
00124 );
00125 extern void Polyhedron_Print();
00126 extern void Polyhedron_PrintConstraints(
00127 );
00128 extern Polyhedron *Polyhedron_Scan(
00129 );
00130 extern void PolyPrint();
00131 extern Polyhedron *Rays2Polyhedron();
00132 extern Polyhedron *SubConstraint(
00133 );
00134 extern Polyhedron *Universe_Polyhedron ();
00135
00136
00137 #endif
00138 #endif