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);
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.
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.
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)
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.
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.