00001 #ifndef _Lattice_h_
00002 #define _Lattice_h_
00003
00004 #if defined(__cplusplus)
00005 extern "C" {
00006 #endif
00007
00008 extern void AffineHermite ( Lattice *A, Lattice **H, Matrix **U );
00009 extern void AffineSmith ( Lattice *A, Lattice **U, Lattice **V, Lattice
00010 **Diag );
00011 extern Lattice *ChangeLatticeDimension ( Lattice *A, int dimension );
00012 extern Lattice *EmptyLattice ( int dimension );
00013 extern Lattice *ExtractLinearPart ( Lattice *A );
00014 extern int FindHermiteBasisofDomain ( Polyhedron *A, Matrix **B );
00015 extern Lattice *Homogenise ( Lattice *A, Bool Forward );
00016 extern int intcompare ( const void *a, const void *b );
00017 extern Bool isEmptyLattice ( Lattice *A );
00018 extern Bool isfulldim ( Matrix *m );
00019 extern Bool IsLattice ( Matrix *m );
00020 extern Bool isLinear ( Lattice *A );
00021 extern LatticeUnion *LatticeDifference ( Lattice *A, Lattice *B );
00022 extern Lattice *LatticeImage ( Lattice *A, Matrix *M );
00023 extern Bool LatticeIncludes ( Lattice *A, Lattice *B );
00024 extern Lattice *LatticeIntersection ( Lattice *X, Lattice *Y );
00025 extern Lattice *LatticePreimage ( Lattice *L, Matrix *G );
00026 extern LatticeUnion *LatticeSimplify ( LatticeUnion *latlist );
00027 extern LatticeUnion *LatticeUnion_Alloc ( void );
00028 extern void LatticeUnion_Free ( LatticeUnion *Head );
00029 extern void PrintLatticeUnion ( FILE *fp, char *format, LatticeUnion
00030 *Head );
00031 extern Bool sameAffinepart ( Lattice *A, Lattice *B );
00032 extern Bool sameLattice ( Lattice *A, Lattice *B );
00033 extern LatticeUnion *Lattice2LatticeUnion(Lattice *X,Lattice *Y);
00034
00035 #if defined(__cplusplus)
00036 }
00037 #endif
00038
00039 #endif