MLIR 23.0.0git
Matrix.cpp File Reference
#include "mlir/Analysis/Presburger/Matrix.h"
#include "mlir/Analysis/Presburger/Fraction.h"
#include "mlir/Analysis/Presburger/Utils.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <utility>

Go to the source code of this file.

Namespaces

namespace  mlir
 Include the generated interface declarations.
namespace  mlir::presburger

Functions

static void modEntryColumnOperation (Matrix< DynamicAPInt > &m, unsigned row, unsigned sourceCol, unsigned targetCol, Matrix< DynamicAPInt > &otherMatrix)
 Set M(row, targetCol) to its remainder on division by M(row, sourceCol) by subtracting from column targetCol an appropriate integer multiple of sourceCol.
static std::optional< std::pair< unsigned, unsigned > > findNonZeroMinInSubmatrix (const IntMatrix &mat, unsigned from)
static std::optional< unsignedfindNonMultipleRow (const IntMatrix &mat, unsigned from, const DynamicAPInt &divisor)

Function Documentation

◆ findNonMultipleRow()

std::optional< unsigned > findNonMultipleRow ( const IntMatrix & mat,
unsigned from,
const DynamicAPInt & divisor )
static

◆ findNonZeroMinInSubmatrix()

std::optional< std::pair< unsigned, unsigned > > findNonZeroMinInSubmatrix ( const IntMatrix & mat,
unsigned from )
static

◆ modEntryColumnOperation()

void modEntryColumnOperation ( Matrix< DynamicAPInt > & m,
unsigned row,
unsigned sourceCol,
unsigned targetCol,
Matrix< DynamicAPInt > & otherMatrix )
static

Set M(row, targetCol) to its remainder on division by M(row, sourceCol) by subtracting from column targetCol an appropriate integer multiple of sourceCol.

This brings M(row, targetCol) to the range [0, M(row, sourceCol)). Apply the same column operation to otherMatrix, with the same integer multiple.

Definition at line 380 of file Matrix.cpp.

References mlir::presburger::Matrix< T >::addToColumn().

Referenced by mlir::presburger::IntMatrix::computeHermiteNormalForm().