00001
00002
00003
00004
00005
00006
00007
00008 #ifndef _Zpolyhedron_h_
00009 #define _Zpolyhedron_h_
00010 #if (defined(__STDC__) || defined(__cplusplus))
00011
00012 #if defined(__cplusplus)
00013 extern "C" {
00014 #endif
00015
00016 extern void CanonicalForm(ZPolyhedron *Zpol, ZPolyhedron **Result,
00017 Matrix **Basis);
00018 extern ZPolyhedron *EmptyZPolyhedron (int dimension);
00019 extern ZPolyhedron *IntegraliseLattice (ZPolyhedron *A);
00020 extern Bool isEmptyZPolyhedron (ZPolyhedron *Zpol);
00021 extern ZPolyhedron *ZDomainDifference (ZPolyhedron *A, ZPolyhedron *B);
00022 extern ZPolyhedron *ZDomainImage ( ZPolyhedron *A, Matrix *Func );
00023 extern Bool ZDomainIncludes ( ZPolyhedron *A, ZPolyhedron *B );
00024 extern ZPolyhedron *ZDomainIntersection ( ZPolyhedron *A, ZPolyhedron *B );
00025 extern ZPolyhedron *ZDomainPreimage ( ZPolyhedron *A, Matrix *Func );
00026 extern void ZDomainPrint ( FILE *fp, char *format, ZPolyhedron *A );
00027 extern ZPolyhedron *ZDomainSimplify ( ZPolyhedron *ZDom );
00028 extern ZPolyhedron *ZDomainUnion ( ZPolyhedron *A, ZPolyhedron *B );
00029 extern ZPolyhedron *ZDomain_Copy ( ZPolyhedron *Head );
00030 extern void ZDomain_Free ( ZPolyhedron *Head );
00031 extern Bool ZPolyhedronIncludes ( ZPolyhedron *A, ZPolyhedron *B );
00032 extern ZPolyhedron *ZPolyhedron_Alloc ( Lattice *Lat, Polyhedron *Poly );
00033 extern ZPolyhedron *SplitZpolyhedron();
00034
00035 #if defined(__cplusplus)
00036 }
00037 #endif
00038
00039 #else
00040
00041 extern void CanonicalForm (
00042 );
00043 extern ZPolyhedron *EmptyZPolyhedron ();
00044 extern ZPolyhedron *IntegraliseLattice ();
00045 extern Bool isEmptyZPolyhedron ();
00046 extern ZPolyhedron *ZDomainDifference ();
00047 extern ZPolyhedron *ZDomainImage ();
00048 extern Bool ZDomainIncludes ();
00049 extern ZPolyhedron *ZDomainIntersection (
00050 );
00051 extern ZPolyhedron *ZDomainPreimage ();
00052 extern void ZDomainPrint ();
00053 extern ZPolyhedron *ZDomainSimplify ();
00054 extern ZPolyhedron *ZDomainUnion ();
00055 extern ZPolyhedron *ZDomain_Copy ();
00056 extern void ZDomain_Free ();
00057 extern Bool ZPolyhedronIncludes ();
00058 extern ZPolyhedron *ZPolyhedron_Alloc ();
00059 extern ZPolyhedron *SplitZpolyhedron();
00060
00061 #endif
00062 #endif