polylib 5.22.8
Lattice.c File Reference
#include <polylib/polylib.h>
#include <stdlib.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)
 
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)
 
static MatrixMakeDioEqforInter (Matrix *A, Matrix *B)
 
LatticeLatticeIntersection (Lattice *X, Lattice *Y)
 
static void AddLattice (LatticeUnion *, Matrix *, Matrix *, int, int)
 
LatticeUnionSplitLattice (Matrix *, Matrix *, Matrix *)
 
LatticeUnionLattice2LatticeUnion (Lattice *X, Lattice *Y)
 
LatticeUnionLatticeDifference (Lattice *A, Lattice *B)
 Method : More...
 
int FindHermiteBasisofDomain (Polyhedron *A, Matrix **B)
 
LatticeLatticeImage (Lattice *A, Matrix *M)
 
LatticeLatticePreimage (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)
 
LatticeUnionLatticeSimplify (LatticeUnion *latlist)
 
int intcompare (const void *a, const void *b)
 
static int polylib_sqrt (int i)
 

Function Documentation

◆ AddLattice()

static void AddLattice ( LatticeUnion Head,
Matrix B1,
Matrix B2,
int  NumofTimes,
int  Colnumber 
)
static

◆ AffineHermite()

◆ AffinePartCompare()

static int AffinePartCompare ( const void *  A,
const void *  B 
)
static

Definition at line 1493 of file Lattice.c.

References matrix::NbRows, value_gt, and value_lt.

Referenced by AffinePartSort().

◆ AffinePartSimplify()

static Bool AffinePartSimplify ( LatticeUnion curlist,
LatticeUnion **  newlist 
)
static

◆ AffinePartSort()

static void AffinePartSort ( LatticeUnion List)
static

Definition at line 1517 of file Lattice.c.

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

Referenced by AffinePartSimplify().

◆ AffineSmith()

◆ allfactors()

static factor allfactors ( int  num)
static

Definition at line 1695 of file Lattice.c.

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

Referenced by Simplify().

◆ AlmostSameAffinePart()

static Bool AlmostSameAffinePart ( LatticeUnion A,
LatticeUnion B 
)
static

Definition at line 1541 of file Lattice.c.

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

Referenced by AffinePartSimplify().

◆ ChangeLatticeDimension()

Lattice * ChangeLatticeDimension ( Lattice A,
int  dimension 
)

◆ EmptyLattice()

Lattice * EmptyLattice ( int  dimension)

◆ ExtractLinearPart()

Lattice * ExtractLinearPart ( Lattice A)

Definition at line 423 of file Lattice.c.

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

Referenced by Lattice2LatticeUnion().

◆ FindHermiteBasisofDomain()

◆ Homogenise()

Lattice * Homogenise ( Lattice A,
Bool  Forward 
)

◆ intcompare()

int intcompare ( const void *  a,
const void *  b 
)

Definition at line 1681 of file Lattice.c.

Referenced by allfactors().

◆ isEmptyLattice()

◆ isfulldim()

Bool isfulldim ( Matrix m)

Definition at line 1262 of file Lattice.c.

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

Referenced by ZPolyhedron_Alloc().

◆ IsLattice()

Bool IsLattice ( Matrix m)

Definition at line 1234 of file Lattice.c.

References False, m, True, value_notone_p, and value_notzero_p.

Referenced by ZPolyhedron_Alloc().

◆ isLinear()

Bool isLinear ( Lattice A)

Definition at line 127 of file Lattice.c.

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

Referenced by AffineHermite().

◆ Lattice2LatticeUnion()

◆ LatticeDifference()

◆ LatticeImage()

◆ LatticeIncludes()

Bool LatticeIncludes ( Lattice A,
Lattice B 
)

Definition at line 324 of file Lattice.c.

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

Referenced by main(), and ZPolyhedronIncludes().

◆ LatticeIntersection()

◆ LatticePreimage()

◆ LatticeSimplify()

LatticeUnion * LatticeSimplify ( LatticeUnion latlist)

◆ LatticeUnion_Alloc()

LatticeUnion * LatticeUnion_Alloc ( void  )

Definition at line 42 of file Lattice.c.

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

Referenced by main().

◆ LatticeUnion_Free()

void LatticeUnion_Free ( LatticeUnion Head)

Definition at line 26 of file Lattice.c.

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

Referenced by main(), and ZDomainSimplify().

◆ LinearPartCompare()

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

Definition at line 1438 of file Lattice.c.

References matrix::NbRows, value_gt, and value_lt.

Referenced by LinearPartSort().

◆ LinearPartSort()

static void LinearPartSort ( LatticeUnion Head)
static

Definition at line 1461 of file Lattice.c.

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

Referenced by LatticeSimplify().

◆ MakeDioEqforInter()

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

Definition at line 556 of file Lattice.c.

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

Referenced by LatticeIntersection().

◆ polylib_sqrt()

static int polylib_sqrt ( int  i)
static

Definition at line 1756 of file Lattice.c.

Referenced by allfactors().

◆ PrintLatticeUnion()

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

Definition at line 14 of file Lattice.c.

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

Referenced by main().

◆ sameAffinepart()

Bool sameAffinepart ( Lattice A,
Lattice B 
)

Definition at line 56 of file Lattice.c.

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

◆ sameLattice()

Bool sameLattice ( Lattice A,
Lattice B 
)

◆ SameLinearPart()

static Bool SameLinearPart ( LatticeUnion A,
LatticeUnion B 
)
static

Definition at line 1638 of file Lattice.c.

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

Referenced by LatticeSimplify().

◆ Simplify()

◆ SplitLattice()

LatticeUnion * SplitLattice ( Matrix B1,
Matrix B2,
Matrix C 
)

Definition at line 889 of file Lattice.c.

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

Referenced by Lattice2LatticeUnion().