1 #ifndef MINOR_PROCESSOR_H 2 #define MINOR_PROCESSOR_H 86 const int containerMinorSize,
88 const bool multipleMinors);
98 static int IOverJ (
const int i,
const int j);
196 virtual bool isEntryZero (
const int absoluteRowIndex,
197 const int absoluteColumnIndex)
const;
222 const int numberOfColumns,
const int* columnIndices);
313 int getEntry (
const int rowIndex,
const int columnIndex)
const;
342 const bool multipleMinors,
374 const int characteristic,
399 const int characteristic,
409 const int absoluteColumnIndex)
const;
430 void defineMatrix (
const int numberOfRows,
const int numberOfColumns,
459 const int* columnIndices,
460 const int characteristic,
const ideal& iSB,
461 const char* algorithm);
489 const int* columnIndices,
491 const int characteristic,
const ideal& iSB);
515 const char* algorithm);
542 const int characteristic,
574 poly
getEntry (
const int rowIndex,
const int columnIndex)
const;
598 const bool multipleMinors,
649 const int absoluteColumnIndex)
const;
670 void defineMatrix (
const int numberOfRows,
const int numberOfColumns,
671 const poly* polyMatrix);
694 const int* columnIndices,
const char* algorithm,
717 const int* columnIndices,
PolyMinorValue getMinorPrivateBareiss(const int k, const MinorKey &mk, const ideal &iSB)
A method for computing the value of a minor, without using a cache.
Class MinorProcessor implements the key methods for computing one or all sub-determinantes of a given...
static int IOverJ(const int i, const int j)
A static method for computing the binomial coefficient i over j.
IntMinorValue getMinorPrivateLaplace(const int k, const MinorKey &mk, const bool multipleMinors, Cache< MinorKey, IntMinorValue > &c, int characteristic, const ideal &iSB)
A method for computing the value of a minor, using a cache.
int _containerColumns
private store for the number of columns in the container minor; This is set by MinorProcessor::define...
Class PolyMinorProcessor is derived from class MinorProcessor.
void print() const
A method for printing a string representation of the given MinorProcessor to std::cout.
Compatiblity layer for legacy polynomial operations (over currRing)
int _rows
private store for the number of rows in the underlying matrix
bool isEntryZero(const int absoluteRowIndex, const int absoluteColumnIndex) const
A method for testing whether a matrix entry is zero.
IntMinorValue getMinor(const int dimension, const int *rowIndices, const int *columnIndices, const int characteristic, const ideal &iSB, const char *algorithm)
A method for computing the value of a minor without using a cache.
virtual std::string toString() const
A method for providing a printable version of the represented MinorProcessor.
MinorKey _minor
private store for the rows and columns of the minor of interest; Usually, this minor will encode subs...
std::string toString() const
A method for providing a printable version of the represented MinorProcessor.
int _columns
private store for the number of columns in the underlying matrix
int _containerRows
private store for the number of rows in the container minor; This is set by MinorProcessor::defineSub...
static int NumberOfRetrievals(const int rows, const int columns, const int containerMinorSize, const int minorSize, const bool multipleMinors)
A static method for computing the maximum number of retrievals of a minor.
Class IntMinorValue is derived from MinorValue and can be used for representing values in a cache for...
MinorProcessor()
The default constructor.
int getEntry(const int rowIndex, const int columnIndex) const
A method for retrieving the matrix entry.
poly getEntry(const int rowIndex, const int columnIndex) const
A method for retrieving the matrix entry.
int _minorSize
private store for the dimension of the minor(s) of interest
PolyMinorProcessor()
A constructor for creating an instance.
std::string toString() const
A method for providing a printable version of the represented MinorProcessor.
Class Cache is a template-implementation of a cache with arbitrary classes for representing keys and ...
PolyMinorValue getNextMinor(const char *algorithm, const ideal &iSB)
A method for obtaining the next minor when iterating through all minors of a given size within a pre-...
IntMinorValue getNextMinor(const int characteristic, const ideal &iSB, const char *algorithm)
A method for obtaining the next minor when iterating through all minors of a given size within a pre-...
bool hasNextMinor()
A method for checking whether there is a next choice of rows and columns when iterating through all m...
int * _intMatrix
private store for integer matrix entries
IntMinorValue getMinorPrivateBareiss(const int k, const MinorKey &mk, const int characteristic, const ideal &iSB)
A method for computing the value of a minor using Bareiss's algorithm.
~PolyMinorProcessor()
A destructor for deleting an instance.
bool setNextKeys(const int k)
A method for iterating through all possible subsets of k rows and k columns inside a pre-defined subm...
PolyMinorValue getMinor(const int dimension, const int *rowIndices, const int *columnIndices, const char *algorithm, const ideal &iSB)
A method for computing the value of a minor, without using a cache.
void getCurrentRowIndices(int *const target) const
A method for obtaining the current set of rows corresponding to the current minor when iterating thro...
static int Faculty(const int i)
A static method for computing the factorial of i.
virtual bool isEntryZero(const int absoluteRowIndex, const int absoluteColumnIndex) const
A method for testing whether a matrix entry is zero.
void getCurrentColumnIndices(int *const target) const
A method for obtaining the current set of columns corresponding to the current minor when iterating t...
Class PolyMinorValue is derived from MinorValue and can be used for representing values in a cache fo...
MinorKey _container
private store for the rows and columns of the container minor within the underlying matrix; _containe...
void defineMatrix(const int numberOfRows, const int numberOfColumns, const poly *polyMatrix)
A method for defining a matrix with polynomial entries.
BOOLEAN dimension(leftv res, leftv args)
Class MinorKey can be used for representing keys in a cache for sub-determinantes; see class Cache.
void printCounters(char *prefix, bool resetToZero)
IntMinorProcessor()
A constructor for creating an instance.
poly * _polyMatrix
private store for polynomial matrix entries
void setMinorSize(const int minorSize)
Sets the size of the minor(s) of interest.
Class IntMinorProcessor is derived from class MinorProcessor.
void defineMatrix(const int numberOfRows, const int numberOfColumns, const int *matrix)
A method for defining a matrix with integer entries.
int getBestLine(const int k, const MinorKey &mk) const
A method for identifying the row or column with the most zeros.
bool isEntryZero(const int absoluteRowIndex, const int absoluteColumnIndex) const
A method for testing whether a matrix entry is zero.
void defineSubMatrix(const int numberOfRows, const int *rowIndices, const int numberOfColumns, const int *columnIndices)
A method for defining a sub-matrix within a pre-defined matrix.
PolyMinorValue getMinorPrivateLaplace(const int k, const MinorKey &mk, const bool multipleMinors, Cache< MinorKey, PolyMinorValue > &c, const ideal &iSB)
A method for computing the value of a minor, using a cache.
~IntMinorProcessor()
A destructor for deleting an instance.
virtual ~MinorProcessor()
A destructor for deleting an instance.