Lattice.c File Reference

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

Go to the source code of this file.

Classes

struct  factor

Functions

static factor allfactors (int num)
void PrintLatticeUnion (FILE *fp, char *format, LatticeUnion *Head)
void LatticeUnion_Free (LatticeUnion *Head)
LatticeUnion * LatticeUnion_Alloc (void)
Bool sameAffinepart (Lattice *A, Lattice *B)
Lattice * EmptyLattice (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)
Lattice * Homogenise (Lattice *A, Bool Forward)
Bool LatticeIncludes (Lattice *A, Lattice *B)
Bool sameLattice (Lattice *A, Lattice *B)
Lattice * ChangeLatticeDimension (Lattice *A, int dimension)
Lattice * ExtractLinearPart (Lattice *A)
static Matrix * MakeDioEqforInter (Matrix *A, Matrix *B)
Lattice * LatticeIntersection (Lattice *X, Lattice *Y)
static void AddLattice (LatticeUnion *, Matrix *, Matrix *, int, int)
LatticeUnion * SplitLattice (Matrix *, Matrix *, Matrix *)
LatticeUnion * Lattice2LatticeUnion (Lattice *X, Lattice *Y)
LatticeUnion * LatticeDifference (Lattice *A, Lattice *B)
 Method :.
int FindHermiteBasisofDomain (Polyhedron *A, Matrix **B)
Lattice * LatticeImage (Lattice *A, Matrix *M)
Lattice * LatticePreimage (Lattice *L, Matrix *G)
Bool IsLattice (Matrix *m)
Bool isfulldim (Matrix *m)
static Bool Simplify (LatticeUnion **InputList, LatticeUnion **ResultList, int dim)
static int LinearPartCompare (const void *A, const void *B)
static void LinearPartSort (LatticeUnion *Head)
static int AffinePartCompare (const void *A, const void *B)
static void AffinePartSort (LatticeUnion *List)
static Bool AlmostSameAffinePart (LatticeUnion *A, LatticeUnion *B)
static Bool AffinePartSimplify (LatticeUnion *curlist, LatticeUnion **newlist)
static Bool SameLinearPart (LatticeUnion *A, LatticeUnion *B)
LatticeUnion * LatticeSimplify (LatticeUnion *latlist)
int intcompare (const void *a, const void *b)
static int polylib_sqrt (int i)

Function Documentation

static void AddLattice ( LatticeUnion *  Head,
Matrix *  B1,
Matrix *  B2,
int  NumofTimes,
int  Colnumber 
) [static]
void AffineHermite ( Lattice *  A,
Lattice **  H,
Matrix **  U 
)
static int AffinePartCompare ( const void *  A,
const void *  B 
) [static]

Definition at line 1484 of file Lattice.c.

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

Referenced by AffinePartSort().

static Bool AffinePartSimplify ( LatticeUnion *  curlist,
LatticeUnion **  newlist 
) [static]
static void AffinePartSort ( LatticeUnion *  List  )  [static]

Definition at line 1506 of file Lattice.c.

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

Referenced by AffinePartSimplify().

void AffineSmith ( Lattice *  A,
Lattice **  U,
Lattice **  V,
Lattice **  Diag 
)
static factor allfactors ( int  num  )  [static]

Definition at line 1677 of file Lattice.c.

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

Referenced by Simplify().

static Bool AlmostSameAffinePart ( LatticeUnion *  A,
LatticeUnion *  B 
) [static]

Definition at line 1530 of file Lattice.c.

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

Referenced by AffinePartSimplify().

Lattice* ChangeLatticeDimension ( Lattice *  A,
int  dimension 
)
Lattice* EmptyLattice ( int  dimension  ) 
Lattice* ExtractLinearPart ( Lattice *  A  ) 

Definition at line 439 of file Lattice.c.

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

Referenced by Lattice2LatticeUnion().

int FindHermiteBasisofDomain ( Polyhedron *  A,
Matrix **  B 
)
Lattice* Homogenise ( Lattice *  A,
Bool  Forward 
)
int intcompare ( const void *  a,
const void *  b 
)

Definition at line 1663 of file Lattice.c.

Referenced by allfactors().

Bool isEmptyLattice ( Lattice *  A  ) 
Bool isfulldim ( Matrix *  m  ) 

Definition at line 1267 of file Lattice.c.

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

Referenced by ZPolyhedron_Alloc().

Bool IsLattice ( Matrix *  m  ) 

Definition at line 1239 of file Lattice.c.

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

Referenced by ZPolyhedron_Alloc().

Bool isLinear ( Lattice *  A  ) 

Definition at line 145 of file Lattice.c.

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

Referenced by AffineHermite().

LatticeUnion* Lattice2LatticeUnion ( Lattice *  X,
Lattice *  Y 
)
LatticeUnion* LatticeDifference ( Lattice *  A,
Lattice *  B 
)
Lattice* LatticeImage ( Lattice *  A,
Matrix *  M 
)
Bool LatticeIncludes ( Lattice *  A,
Lattice *  B 
)

Definition at line 340 of file Lattice.c.

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

Referenced by main(), and ZPolyhedronIncludes().

Lattice* LatticeIntersection ( Lattice *  X,
Lattice *  Y 
)
Lattice* LatticePreimage ( Lattice *  L,
Matrix *  G 
)
LatticeUnion* LatticeSimplify ( LatticeUnion *  latlist  ) 
LatticeUnion* LatticeUnion_Alloc ( void   ) 

Definition at line 60 of file Lattice.c.

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

Referenced by main().

void LatticeUnion_Free ( LatticeUnion *  Head  ) 

Definition at line 44 of file Lattice.c.

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

Referenced by main(), and ZDomainSimplify().

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

Definition at line 1429 of file Lattice.c.

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

Referenced by LinearPartSort().

static void LinearPartSort ( LatticeUnion *  Head  )  [static]

Definition at line 1452 of file Lattice.c.

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

Referenced by LatticeSimplify().

static Matrix * MakeDioEqforInter ( Matrix *  A,
Matrix *  B 
) [static]

Definition at line 569 of file Lattice.c.

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

Referenced by LatticeIntersection().

static int polylib_sqrt ( int  i  )  [static]

Definition at line 1739 of file Lattice.c.

Referenced by allfactors().

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

Definition at line 32 of file Lattice.c.

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

Referenced by main().

Bool sameAffinepart ( Lattice *  A,
Lattice *  B 
)

Definition at line 74 of file Lattice.c.

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

Bool sameLattice ( Lattice *  A,
Lattice *  B 
)
static Bool SameLinearPart ( LatticeUnion *  A,
LatticeUnion *  B 
) [static]

Definition at line 1620 of file Lattice.c.

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

Referenced by LatticeSimplify().

static Bool Simplify ( LatticeUnion **  InputList,
LatticeUnion **  ResultList,
int  dim 
) [static]
LatticeUnion * SplitLattice ( Matrix *  B1,
Matrix *  B2,
Matrix *  C 
)

Definition at line 901 of file Lattice.c.

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

Referenced by Lattice2LatticeUnion().


Generated on Wed Nov 25 17:45:27 2009 for polylib by  doxygen 1.6.1