00001
00002
00003
00004
00005
00006
00007 #ifndef _Lattice_h_
00008 #define _Lattice_h_
00009 #if (defined(__STDC__) || defined(__cplusplus))
00010
00011 #if defined(__cplusplus)
00012 extern "C" {
00013 #endif
00014
00015 extern void AffineHermite ( Lattice *A, Lattice **H, Matrix **U );
00016 extern void AffineSmith ( Lattice *A, Lattice **U, Lattice **V, Lattice
00017 **Diag );
00018 extern Lattice *ChangeLatticeDimension ( Lattice *A, int dimension );
00019 extern Lattice *EmptyLattice ( int dimension );
00020 extern Lattice *ExtractLinearPart ( Lattice *A );
00021 extern int FindHermiteBasisofDomain ( Polyhedron *A, Matrix **B );
00022 extern Lattice *Homogenise ( Lattice *A, Bool Forward );
00023 extern int intcompare ( const void *a, const void *b );
00024 extern Bool isEmptyLattice ( Lattice *A );
00025 extern Bool isfulldim ( Matrix *m );
00026 extern Bool IsLattice ( Matrix *m );
00027 extern Bool isLinear ( Lattice *A );
00028 extern LatticeUnion *LatticeDifference ( Lattice *A, Lattice *B );
00029 extern Lattice *LatticeImage ( Lattice *A, Matrix *M );
00030 extern Bool LatticeIncludes ( Lattice *A, Lattice *B );
00031 extern Lattice *LatticeIntersection ( Lattice *X, Lattice *Y );
00032 extern Lattice *LatticePreimage ( Lattice *L, Matrix *G );
00033 extern LatticeUnion *LatticeSimplify ( LatticeUnion *latlist );
00034 extern LatticeUnion *LatticeUnion_Alloc ( void );
00035 extern void LatticeUnion_Free ( LatticeUnion *Head );
00036 extern void PrintLatticeUnion ( FILE *fp, char *format, LatticeUnion
00037 *Head );
00038 extern Bool sameAffinepart ( Lattice *A, Lattice *B );
00039 extern Bool sameLattice ( Lattice *A, Lattice *B );
00040 extern LatticeUnion *Lattice2LatticeUnion();
00041
00042 #if defined(__cplusplus)
00043 }
00044 #endif
00045
00046 #else
00047
00048 extern void AffineHermite ();
00049 extern void AffineSmith (
00050 );
00051 extern Lattice *ChangeLatticeDimension ();
00052 extern Lattice *EmptyLattice ();
00053 extern Lattice *ExtractLinearPart ();
00054 extern int FindHermiteBasisofDomain ();
00055 extern Lattice *Homogenise ();
00056 extern int intcompare ();
00057 extern Bool isEmptyLattice ();
00058 extern Bool isfulldim ();
00059 extern Bool IsLattice ();
00060 extern Bool isLinear ();
00061 extern LatticeUnion *LatticeDifference ();
00062 extern Lattice *LatticeImage ();
00063 extern Bool LatticeIncludes ();
00064 extern Lattice *LatticeIntersection ();
00065 extern Lattice *LatticePreimage ();
00066 extern LatticeUnion *LatticeSimplify ();
00067 extern LatticeUnion *LatticeUnion_Alloc ();
00068 extern void LatticeUnion_Free ();
00069 extern void PrintLatticeUnion (
00070 );
00071 extern Bool sameAffinepart ();
00072 extern Bool sameLattice ();
00073 extern LatticeUnion *Lattice2LatticeUnion();
00074
00075 #endif
00076 #endif