5void Lcm3(Value a, Value b, Value *c) {
27Value *
Lcm(Value i, Value j) {
30 tmp = (Value *)malloc(
sizeof(Value));
44 for (i = 0; i < size; i++)
74 for (i = 0; i < M->
NbRows; i++)
89 for (i = 0; i < (int)A->
NbRows; i++)
104 for (i = 0; i < Src->
NbRows; i++)
122 for (i = 0; i < A->
NbRows; i++)
147 for (i = 0; i < temp->
NbRows; i++) {
149 for (j = 0; j < i; j++)
155 for (j = i + 1; j < temp->
NbColumns; j++)
175 if (Rownumber == X->
NbRows - 1)
181 for (i = Rownumber; i < X->
NbRows - 1; i++)
200 for (i = Rownumber; i > 0; i--)
218 for (i = 0; i < X->
NbRows; i++) {
220 for (j = Columnnumber; j > 0; j--)
237 for (i = 0; i < X->
NbRows; i++) {
239 for (j = Columnnumber; j < X->
NbColumns - 1; j++)
256 for (i = 0; i < M->
NbRows; i++)
274 for (i = 0; i < M->
NbRows; i++)
277 for (i = 0; i < M->
NbRows; i++)
292 for (i = 0; i < Rownumber; i++)
294 for (; i < Result->
NbRows; i++)
311 for (i = 0; i < Result->
NbRows; i++) {
314 Result->
p[i] + FirstColumnnumber,
315 M->
NbColumns - NumColumns - FirstColumnnumber);
330 for (i = 0; i < Result->
NbRows; i++) {
332 Vector_Copy(M->
p[i] + Columnnumber + 1, Result->
p[i] + Columnnumber,
347 Matrix *C, *curMat, *temp1, *temp2;
350 int dim, curDim, curVect, rank;
360 for (i = 0; i < H->
NbRows; i++)
377 for (i = 0; i < C->
NbRows; i++) {
401 while ((curVect < C->NbRows) && (curDim < dim)) {
410 if (rank == temp->
NbRows) {
Lattice * Homogenise(Lattice *A, Bool Forward)
void PutRowLast(Matrix *X, int Rownumber)
Matrix * AddANullRow(Matrix *M)
void PutColumnLast(Matrix *X, int Columnnumber)
void Lcm3(Value a, Value b, Value *c)
Matrix * RemoveRow(Matrix *M, int Rownumber)
Matrix * Identity(unsigned size)
Matrix * Transpose(Matrix *A)
Value * Lcm(Value i, Value j)
Bool isIntegral(Matrix *A)
void PutRowFirst(Matrix *X, int Rownumber)
void PutColumnFirst(Matrix *X, int Columnnumber)
Matrix * RemoveColumn(Matrix *M, int Columnnumber)
void ExchangeRows(Matrix *M, int Row1, int Row2)
int findHermiteBasis(Matrix *M, Matrix **Result)
Matrix * AddANullColumn(Matrix *M)
Matrix * Matrix_Copy(Matrix const *Src)
Matrix * RemoveNColumns(Matrix *M, int FirstColumnnumber, int NumColumns)
void ExchangeColumns(Matrix *M, int Column1, int Column2)
int SolveDiophantine(Matrix *M, Matrix **U, Vector **X)
#define value_swap(v1, v2)
#define value_notzero_p(val)
#define value_absolute(ref, val)
#define value_zero_p(val)
#define value_assign(v1, v2)
#define value_set_si(val, i)
#define value_division(ref, val1, val2)
#define value_multiply(ref, val1, val2)
#define value_modulus(ref, val1, val2)
Matrix * Matrix_Alloc(unsigned NbRows, unsigned NbColumns)
void Matrix_Free(Matrix *Mat)
void Vector_Free(Vector *vector)
void Gcd(Value a, Value b, Value *result)
void Vector_Copy(Value *p1, Value *p2, unsigned length)