Main Page | Class List | File List | Class Members | File Members

Lattice.c File Reference

#include <stdlib.h>
#include <polylib/polylib.h>

Go to the source code of this file.

Classes

struct  factor

Functions

factor allfactors (int num)
void PrintLatticeUnion (FILE *fp, char *format, LatticeUnion *Head)
void LatticeUnion_Free (LatticeUnion *Head)
LatticeUnionLatticeUnion_Alloc (void)
Bool sameAffinepart (Lattice *A, Lattice *B)
LatticeEmptyLattice (int dimension)
Bool isEmptyLattice (Lattice *A)
Bool isLinear (Lattice *A)
void AffineHermite (Lattice *A, Lattice **H, Matrix **U)
void AffineSmith (Lattice *A, Lattice **U, Lattice **V, Lattice **Diag)
LatticeHomogenise (Lattice *A, Bool Forward)
Bool LatticeIncludes (Lattice *A, Lattice *B)
Bool sameLattice (Lattice *A, Lattice *B)
LatticeChangeLatticeDimension (Lattice *A, int dimension)
LatticeExtractLinearPart (Lattice *A)
MatrixMakeDioEqforInter (Matrix *A, Matrix *B)
LatticeLatticeIntersection (Lattice *X, Lattice *Y)
MatrixMakeDioEqforInter (Lattice *A, Lattice *B)
void AddLattice (LatticeUnion *, Matrix *, Matrix *, int, int)
LatticeUnionSplitLattice (Matrix *, Matrix *, Matrix *)
LatticeUnionLattice2LatticeUnion (Lattice *X, Lattice *Y)
LatticeUnionLatticeDifference (Lattice *A, Lattice *B)
 Method :.

LatticeUnionSplitLattice (Lattice *B1, Lattice *B2, Matrix *C)
int FindHermiteBasisofDomain (Polyhedron *A, Matrix **B)
LatticeLatticeImage (Lattice *A, Matrix *M)
LatticeLatticePreimage (Lattice *L, Matrix *G)
Bool IsLattice (Matrix *m)
Bool isfulldim (Matrix *m)
Bool Simplify (LatticeUnion **InputList, LatticeUnion **ResultList, int dim)
int LinearPartCompare (const void *A, const void *B)
void LinearPartSort (LatticeUnion *Head)
int AffinePartCompare (const void *A, const void *B)
void AffinePartSort (LatticeUnion *List)
Bool AlmostSameAffinePart (LatticeUnion *A, LatticeUnion *B)
Bool AffinePartSimplify (LatticeUnion *curlist, LatticeUnion **newlist)
Bool SameLinearPart (LatticeUnion *A, LatticeUnion *B)
LatticeUnionLatticeSimplify (LatticeUnion *latlist)
int intcompare (const void *a, const void *b)
int polylib_sqrt (int i)


Function Documentation

void AddLattice LatticeUnion ,
Matrix ,
Matrix ,
int  ,
int 
[static]
 

Definition at line 912 of file Lattice.c.

References AffineHermite(), Lattice, LatticeUnion::M, Matrix, Matrix_Copy(), Matrix_Free(), matrix::NbColumns, matrix::NbRows, LatticeUnion::next, matrix::p, Value, value_addto, value_clear, value_init, value_multiply, and value_set_si.

Referenced by SplitLattice().

void AffineHermite Lattice A,
Lattice **  H,
Matrix **  U
 

Definition at line 159 of file Lattice.c.

References Bool, False, Hermite(), Homogenise(), isLinear(), Lattice, Matrix, Matrix_Copy(), Matrix_Free(), and True.

int AffinePartCompare const void *  A,
const void *  B
[static]
 

Definition at line 1462 of file Lattice.c.

References Lattice, matrix::NbRows, value_gt, and value_lt.

Referenced by AffinePartSort().

Bool AffinePartSimplify LatticeUnion curlist,
LatticeUnion **  newlist
[static]
 

Definition at line 1527 of file Lattice.c.

References AffinePartSort(), AlmostSameAffinePart(), Bool, False, LatticeUnion::M, matrix::NbColumns, matrix::NbRows, LatticeUnion::next, matrix::p, Simplify(), Value, value_assign, value_clear, and value_init.

Referenced by LatticeSimplify().

void AffinePartSort LatticeUnion List  )  [static]
 

Definition at line 1484 of file Lattice.c.

References AffinePartCompare(), Lattice, LatticeUnion::M, and LatticeUnion::next.

Referenced by AffinePartSimplify().

void AffineSmith Lattice A,
Lattice **  U,
Lattice **  V,
Lattice **  Diag
 

Definition at line 204 of file Lattice.c.

References False, Homogenise(), Lattice, Matrix, Matrix_Alloc(), Matrix_Copy(), Matrix_Free(), Matrix_Inverse(), matrix::NbRows, matrix::p, Smith(), True, Value, value_addto, value_assign, value_clear, value_decrement, value_division, VALUE_FMT, value_init, value_modulus, value_multiply, value_neg_p, value_print, and value_set_si.

factor allfactors int  num  )  [static]
 

Definition at line 1655 of file Lattice.c.

References factor::count, factor::fac, intcompare(), and polylib_sqrt().

Referenced by Simplify().

Bool AlmostSameAffinePart LatticeUnion A,
LatticeUnion B
[static]
 

Definition at line 1508 of file Lattice.c.

References Bool, False, LatticeUnion::M, matrix::NbColumns, matrix::NbRows, matrix::p, True, and value_ne.

Referenced by AffinePartSimplify().

Lattice* ChangeLatticeDimension Lattice A,
int  dimension
 

Definition at line 393 of file Lattice.c.

References Lattice, Matrix_Alloc(), matrix::NbRows, matrix::p, value_assign, and value_set_si.

Lattice* EmptyLattice int  dimension  ) 
 

Definition at line 78 of file Lattice.c.

References Lattice, Matrix_Alloc(), matrix::p, and value_set_si.

Lattice* ExtractLinearPart Lattice A  ) 
 

Definition at line 423 of file Lattice.c.

References Lattice, Matrix_Alloc(), matrix::NbColumns, matrix::NbRows, matrix::p, and value_assign.

int FindHermiteBasisofDomain Polyhedron A,
Matrix **  B
 

Definition at line 975 of file Lattice.c.

References ChangeLatticeDimension(), polyhedron::Constraint, polyhedron::Dimension, DomainImage(), emptyQ, findHermiteBasis(), Identity(), Lcm(), Matrix, Matrix_Alloc(), Matrix_Copy(), Matrix_Free(), Matrix_Inverse(), Matrix_Product(), MAXNOOFRAYS, matrix::NbColumns, polyhedron::NbConstraints, polyhedron::NbRays, matrix::NbRows, matrix::p, Polyhedron, polyhedron::Ray, RemoveColumn(), Value, value_assign, value_clear, value_division, value_init, value_multiply, value_notzero_p, value_set_si, value_substract, and value_zero_p.

Lattice* Homogenise Lattice A,
Bool  Forward
 

Definition at line 296 of file Lattice.c.

References Lattice, Matrix, Matrix_Copy(), matrix::NbColumns, matrix::NbRows, PutColumnFirst(), PutColumnLast(), PutRowFirst(), PutRowLast(), and True.

int intcompare const void *  a,
const void *  b
 

Definition at line 1641 of file Lattice.c.

Referenced by allfactors().

Bool isEmptyLattice Lattice A  ) 
 

Definition at line 101 of file Lattice.c.

References Bool, False, Lattice, matrix::NbColumns, matrix::NbRows, matrix::p, True, value_notzero_p, and value_one_p.

Bool isfulldim Matrix m  ) 
 

Definition at line 1245 of file Lattice.c.

References Bool, False, Hermite(), Matrix, Matrix_Free(), matrix::NbRows, matrix::p, True, and value_zero_p.

Bool IsLattice Matrix m  ) 
 

Definition at line 1217 of file Lattice.c.

References Bool, False, Matrix, matrix::NbColumns, matrix::NbRows, matrix::p, True, value_notone_p, and value_notzero_p.

Bool isLinear Lattice A  ) 
 

Definition at line 128 of file Lattice.c.

References Bool, False, Lattice, matrix::NbColumns, matrix::NbRows, matrix::p, True, and value_notzero_p.

LatticeUnion* Lattice2LatticeUnion Lattice X,
Lattice Y
 

Definition at line 658 of file Lattice.c.

References ChangeLatticeDimension(), ExtractLinearPart(), isEmptyLattice(), Lattice, LatticeIntersection(), Matrix, Matrix_Alloc(), Matrix_Copy(), Matrix_Free(), Matrix_Inverse(), Matrix_Product(), matrix::NbColumns, matrix::NbRows, matrix::p, Smith(), SplitLattice(), True, Value, value_assign, value_clear, value_division, and value_init.

LatticeUnion* LatticeDifference Lattice A,
Lattice B
 

Method :.

Definition at line 798 of file Lattice.c.

References AffineHermite(), isEmptyLattice(), isinHnf(), Lattice, Lattice2LatticeUnion(), LatticeSimplify(), LatticeUnion::M, Matrix, Matrix_Copy(), Matrix_Free(), matrix::NbColumns, matrix::NbRows, LatticeUnion::next, and True.

Lattice* LatticeImage Lattice A,
Matrix M
 

Definition at line 1104 of file Lattice.c.

References EmptyLattice(), Lattice, LatticePreimage(), Matrix, Matrix_Alloc(), Matrix_Copy(), Matrix_Free(), Matrix_Inverse(), Matrix_Product(), matrix::NbColumns, matrix::NbRows, matrix::p, and value_one_p.

Bool LatticeIncludes Lattice A,
Lattice B
 

Definition at line 324 of file Lattice.c.

References AffineHermite(), Bool, False, Lattice, LatticeIntersection(), Matrix, Matrix_Free(), sameLattice(), and True.

Lattice* LatticeIntersection Lattice X,
Lattice Y
 

Definition at line 459 of file Lattice.c.

References AffineHermite(), EmptyLattice(), isEmptyLattice(), isinHnf(), Lattice, MakeDioEqforInter(), Matrix, Matrix_Alloc(), Matrix_Copy(), Matrix_Free(), matrix::NbColumns, matrix::NbRows, Vector::p, matrix::p, SolveDiophantine(), value_assign, value_set_si, and Vector_Free().

Lattice* LatticePreimage Lattice L,
Matrix G
 

Definition at line 1143 of file Lattice.c.

References EmptyLattice(), Lattice, Matrix, Matrix_Alloc(), Matrix_Free(), matrix::NbColumns, matrix::NbRows, Vector::p, matrix::p, SolveDiophantine(), Value, value_assign, value_clear, value_init, value_multiply, value_oppose, value_set_si, value_substract, and Vector_Free().

LatticeUnion* LatticeSimplify LatticeUnion latlist  ) 
 

Definition at line 1614 of file Lattice.c.

References AffinePartSimplify(), Bool, False, LinearPartSort(), LatticeUnion::next, SameLinearPart(), and True.

LatticeUnion* LatticeUnion_Alloc void   ) 
 

Definition at line 43 of file Lattice.c.

References LatticeUnion::M, and LatticeUnion::next.

Referenced by main().

void LatticeUnion_Free LatticeUnion Head  ) 
 

Definition at line 27 of file Lattice.c.

References LatticeUnion::M, Matrix_Free(), and LatticeUnion::next.

int LinearPartCompare const void *  A,
const void *  B
[static]
 

Definition at line 1407 of file Lattice.c.

References Lattice, matrix::NbRows, value_gt, and value_lt.

Referenced by LinearPartSort().

void LinearPartSort LatticeUnion Head  )  [static]
 

Definition at line 1430 of file Lattice.c.

References Lattice, LinearPartCompare(), LatticeUnion::M, and LatticeUnion::next.

Referenced by LatticeSimplify().

Matrix* MakeDioEqforInter Lattice A,
Lattice B
[static]
 

Definition at line 553 of file Lattice.c.

References Lattice, Matrix, Matrix_Alloc(), matrix::NbColumns, matrix::NbRows, matrix::p, value_oppose, and value_set_si.

Referenced by LatticeIntersection().

Matrix* MakeDioEqforInter Matrix A,
Matrix B
[static]
 

int polylib_sqrt int  i  )  [static]
 

Definition at line 1717 of file Lattice.c.

Referenced by allfactors().

void PrintLatticeUnion FILE *  fp,
char *  format,
LatticeUnion Head
 

Definition at line 15 of file Lattice.c.

References LatticeUnion::M, Matrix, Matrix_Print(), and LatticeUnion::next.

Bool sameAffinepart Lattice A,
Lattice B
 

Definition at line 57 of file Lattice.c.

References Bool, False, Lattice, matrix::NbColumns, matrix::NbRows, matrix::p, True, and value_ne.

Bool sameLattice Lattice A,
Lattice B
 

Definition at line 355 of file Lattice.c.

References AffineHermite(), Bool, False, Lattice, Matrix, Matrix_Free(), matrix::NbColumns, matrix::NbRows, matrix::p, True, and value_ne.

Bool SameLinearPart LatticeUnion A,
LatticeUnion B
[static]
 

Definition at line 1598 of file Lattice.c.

References Bool, False, LatticeUnion::M, matrix::NbRows, matrix::p, True, and value_ne.

Referenced by LatticeSimplify().

Bool Simplify LatticeUnion **  InputList,
LatticeUnion **  ResultList,
int  dim
[static]
 

Definition at line 1284 of file Lattice.c.

References allfactors(), Bool, factor::count, factor::fac, False, LatticeUnion::M, Matrix_Copy(), Matrix_Free(), matrix::NbColumns, matrix::NbRows, LatticeUnion::next, matrix::p, True, Value, value_addto, value_assign, value_clear, value_division, value_eq, value_ge, value_gt, value_increment, value_init, value_lt, value_set_si, and VALUE_TO_INT.

Referenced by AffinePartSimplify().

LatticeUnion* SplitLattice Lattice B1,
Lattice B2,
Matrix C
 

Definition at line 885 of file Lattice.c.

References AddLattice(), Lattice, LatticeUnion::M, Matrix, matrix::NbRows, LatticeUnion::next, matrix::p, and VALUE_TO_INT.

Referenced by Lattice2LatticeUnion().

LatticeUnion* SplitLattice Matrix ,
Matrix ,
Matrix
 


Generated on Mon Sep 12 14:48:30 2005 for polylib by doxygen 1.3.5