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 |