1 /* 2 This file is part of PolyLib. 3 4 PolyLib is free software: you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation, either version 3 of the License, or 7 (at your option) any later version. 8 9 PolyLib is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with PolyLib. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 #ifndef _Lattice_h_ 19 #define _Lattice_h_ 20 21 #if defined(__cplusplus) 22 extern "C" { 23 #endif 24 25 extern void AffineHermite ( Lattice *A, Lattice **H, Matrix **U ); 26 extern void AffineSmith ( Lattice *A, Lattice **U, Lattice **V, Lattice 27 **Diag ); 28 extern Lattice *ChangeLatticeDimension ( Lattice *A, int dimension ); 29 extern Lattice *EmptyLattice ( int dimension ); 30 extern Lattice *ExtractLinearPart ( Lattice *A ); 31 extern int FindHermiteBasisofDomain ( Polyhedron *A, Matrix **B ); 32 extern Lattice *Homogenise ( Lattice *A, Bool Forward ); 33 extern int intcompare ( const void *a, const void *b ); 34 extern Bool isEmptyLattice ( Lattice *A ); 35 extern Bool isfulldim ( Matrix *m ); 36 extern Bool IsLattice ( Matrix *m ); 37 extern Bool isLinear ( Lattice *A ); 38 extern LatticeUnion *LatticeDifference ( Lattice *A, Lattice *B ); 39 extern Lattice *LatticeImage ( Lattice *A, Matrix *M ); 40 extern Bool LatticeIncludes ( Lattice *A, Lattice *B ); 41 extern Lattice *LatticeIntersection ( Lattice *X, Lattice *Y ); 42 extern Lattice *LatticePreimage ( Lattice *L, Matrix *G ); 43 extern LatticeUnion *LatticeSimplify ( LatticeUnion *latlist ); 44 extern LatticeUnion *LatticeUnion_Alloc ( void ); 45 extern void LatticeUnion_Free ( LatticeUnion *Head ); 46 extern void PrintLatticeUnion ( FILE *fp, char *format, LatticeUnion 47 *Head ); 48 extern Bool sameAffinepart ( Lattice *A, Lattice *B ); 49 extern Bool sameLattice ( Lattice *A, Lattice *B ); 50 extern LatticeUnion *Lattice2LatticeUnion(Lattice *X,Lattice *Y); 51 52 #if defined(__cplusplus) 53 } 54 #endif 55 56 #endif /* _Lattice_h_ */ 57