Consider a system of equations in variables for which we
look for integral solutions.

is a matrix and is a vector of order .

In the homogeneous space, the equation is where

To solve such a sytems, first the rows of are rearranged in such a way that the first rows of are the ones which contribute to the rank. This is done with:

**static void****RearrangeMatforSolveDio****(Matrix *M)**- : rearrange the matrix in order to solve a diofantine equation.

Then the function `SolveDiophantine` for solving the equation
can be used. If a solution exists, the procedure returns , otherwise it
returns .

**int****SolveDiophantine****(Matrix *M, Matrix **U, Vector **X)**- : solve Diophantine Equations

Generally this functions is used in connection with operations on lattices because a lattice can be seen as a solution of a Diophantine equation.