1 #ifndef MINOR_PROCESSOR_H
2 #define MINOR_PROCESSOR_H
89 const int containerMinorSize,
91 const bool multipleMinors);
101 static int IOverJ (
const int i,
const int j);
110 static int Faculty (
const int i);
199 virtual bool isEntryZero (
const int absoluteRowIndex,
200 const int absoluteColumnIndex)
const;
225 const int numberOfColumns,
const int* columnIndices);
316 int getEntry (
const int rowIndex,
const int columnIndex)
const;
345 const bool multipleMinors,
377 const int characteristic,
402 const int characteristic,
412 const int absoluteColumnIndex)
const;
433 void defineMatrix (
const int numberOfRows,
const int numberOfColumns,
462 const int* columnIndices,
463 const int characteristic,
const ideal& iSB,
464 const char* algorithm);
492 const int* columnIndices,
494 const int characteristic,
const ideal& iSB);
518 const char* algorithm);
545 const int characteristic,
577 poly getEntry (
const int rowIndex,
const int columnIndex)
const;
601 const bool multipleMinors,
652 const int absoluteColumnIndex)
const;
673 void defineMatrix (
const int numberOfRows,
const int numberOfColumns,
674 const poly* polyMatrix);
697 const int* columnIndices,
const char* algorithm,
720 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.
bool isEntryZero(const int absoluteRowIndex, const int absoluteColumnIndex) const
A method for testing whether a matrix entry is zero.
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.
std::string toString() const
A method for providing a printable version of the represented MinorProcessor.
int _rows
private store for the number of rows in the underlying matrix
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.
poly getEntry(const int rowIndex, const int columnIndex) const
A method for retrieving the matrix entry.
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...
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 _minorSize
private store for the dimension of the minor(s) of interest
PolyMinorProcessor()
A constructor for creating an instance.
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-...
virtual bool isEntryZero(const int absoluteRowIndex, const int absoluteColumnIndex) const
A method for testing whether a matrix entry is zero.
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.
int getBestLine(const int k, const MinorKey &mk) const
A method for identifying the row or column with the most zeros.
~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.
bool isEntryZero(const int absoluteRowIndex, const int absoluteColumnIndex) const
A method for testing whether a matrix entry is zero.
static int Faculty(const int i)
A static method for computing the factorial of i.
Class PolyMinorValue is derived from MinorValue and can be used for representing values in a cache fo...
void getCurrentColumnIndices(int *const target) const
A method for obtaining the current set of columns corresponding to the current minor when iterating t...
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)
The following sip_sideal structure has many different uses thoughout Singular. Basic use-cases for it...
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.
void getCurrentRowIndices(int *const target) const
A method for obtaining the current set of rows corresponding to the current minor when iterating thro...
int getEntry(const int rowIndex, const int columnIndex) const
A method for retrieving the matrix entry.
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.
std::string toString() const
A method for providing a printable version of the represented MinorProcessor.
void defineMatrix(const int numberOfRows, const int numberOfColumns, const int *matrix)
A method for defining a matrix with integer entries.
void print() const
A method for printing a string representation of the given MinorProcessor to std::cout.
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.