Go to the source code of this file.
◆ CMRintmatComputeUpperDiagonal()
Transforms matrix
into a new matrix by applying integer row operations and row- and column swaps to find an upper-diagonal basis matrix.
The rank \( r \) is stored in *prank
and the row- and column permutations are stored in *ppermutations
, such that the first \( r \) rows and columns of the resulting matrix form an invertible upper-diagonal matrix. If invert
is true
then in this \( r \)-by- \( r \) submatrix, the largest (in terms of absolute value) entry in each column is on the diagonal.
- Parameters
-
cmr | CMR environment. |
matrix | A matrix |
invert | Whether the transformed basis columns shall be strictly diagonally dominant. |
prank | Pointer for storing the rank of the basis matrix. |
ppermutations | Pointer for storing the row- and column permutations applied to matrix (may be NULL ). |
presult | Pointer for storing the resulting int matrix (may be NULL ). |
ptranspose | Pointer for storing the transpose of the result int matrix (may be NULL ). |
◆ moduloNonnegative()
static int moduloNonnegative |
( |
int |
p, |
|
|
int |
q |
|
) |
| |
|
inlinestatic |
◆ moduloTernary()
static int moduloTernary |
( |
int |
p, |
|
|
int |
q |
|
) |
| |
|
inlinestatic |