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