GiNaCRA
0.6.4
|
A class providing the multiplication table for the quotient ring modulo a given Groebner basis. More...
#include <SpecialQuotientRingMultiplicationTable.h>
Public Member Functions | |
SpecialQuotientRingMultiplicationTable (list< MultivariatePolynomial< monomialOrdering > > gb) throw ( invalid_argument ) | |
Constructs a multiplication table according to the given zero-dimensional Groebner basis. | |
SpecialQuotientRingMultiplicationTable (MultivariatePolynomial< monomialOrdering > p) | |
Constructs a multiplication table according to the zero-dimensional Groebner basis which is constructed from the given polynomial as a special Groebner basis w.r.t. | |
const list < MultivariatePolynomial < monomialOrdering > > | GroebnerBasis () const |
Get the special Groebner basis of the ideal spanning the quotient ring. | |
const vector< MultivariateTerm < monomialOrdering > > | TermsUnderTheStaircase () const |
Get the monomials under the staircase. | |
const int | dim () const |
Get the number of monomials under the staircase, that is, the dimension of the vector space. | |
const list< symbol > | Variables () const |
const bool | operator== (const SpecialQuotientRingMultiplicationTable< monomialOrdering > &) const |
const bool | operator!= (const SpecialQuotientRingMultiplicationTable< monomialOrdering > &) const |
const MultivariatePolynomial < monomialOrdering > | product (const MultivariateTerm< monomialOrdering > m1, const MultivariateTerm< monomialOrdering > m2) const throw ( invalid_argument ) |
Efficiently compute m1 * m2 within the quotient ring. | |
const MultivariatePolynomial < monomialOrdering > | product (const int i, const int j) const throw ( invalid_argument ) |
Efficiently compute the product of the i-th and the j-th basis element within the quotient ring. | |
void | realRoots () const |
Compute the roots of the input polynomial. | |
std::ostream & | print (std::ostream &os) const |
Protected Member Functions | |
const bool | isEqual (const SpecialQuotientRingMultiplicationTable< monomialOrdering > &o) const |
const MultivariatePolynomial < monomialOrdering > | trace (const MultivariatePolynomial< monomialOrdering > p) const throw ( invalid_argument ) |
Efficiently compute the trace of the linear form L_p where p is a special template polynomial. | |
const MultivariatePolynomial < monomialOrdering > | generalPositionTemplatePowerTrace (const numeric &i, const unsigned e) const throw ( invalid_argument ) |
Compute the trace of the general position template of index i (without constant part) to the power of e. | |
Private Member Functions | |
void | initializeMultiplicationTable () |
Computes the coefficients of the normal forms of all products of basis elements. | |
void | initializeBasis () |
Creates mTermsUnderTheStaircase and sorts it according to monomialOrdering. | |
Private Attributes | |
symbol | mInfinitesimal |
list< MultivariatePolynomial < monomialOrdering > > | mGroebnerBasis |
MultivariateCoefficient < monomialOrdering > | coefficientLcm |
vector< MultivariateTerm < monomialOrdering > > | mTermsUnderTheStaircase |
list< symbol > | mVariables |
map< pair< pair< int, int > , int >, set< ex, ex_is_less > ::iterator > | mMultiplicationTable |
set< ex, ex_is_less > | mProductCoeffs |
A class providing the multiplication table for the quotient ring modulo a given Groebner basis.
In the constructor the following is performed:
The multiplication table is stored as a map. With a slight loss of efficiency for accessing the entries (O(log(t) if t is the number of entries), this representation is a good more memory efficient than a three-dimensional array.
Runtime complexities in a nutshell: Let n be the number of monomial basis elements and t be the number of multiplication table entries. This class implements the vector representation of the monomial basis.<br/ >
Notation is following http://www.possibility.com/Cpp/CppCodingStandard.html.
Definition at line 58 of file SpecialQuotientRingMultiplicationTable.h.
GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::SpecialQuotientRingMultiplicationTable | ( | list< MultivariatePolynomial< monomialOrdering > > | gb | ) | throw ( invalid_argument ) |
GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::SpecialQuotientRingMultiplicationTable | ( | MultivariatePolynomial< monomialOrdering > | p | ) |
const int GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::dim | ( | ) | const [inline] |
Get the number of monomials under the staircase, that is, the dimension of the vector space.
const MultivariatePolynomial<monomialOrdering> GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::generalPositionTemplatePowerTrace | ( | const numeric & | i, |
const unsigned | e | ||
) | const throw ( invalid_argument ) [inline, protected] |
Compute the trace of the general position template of index i (without constant part) to the power of e.
i | index of the general position template |
e | power to which the template polynomial is raised |
error | if the input did not happen to show the correct coefficient structure |
const list<MultivariatePolynomial<monomialOrdering> > GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::GroebnerBasis | ( | ) | const |
void GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::initializeBasis | ( | ) | [inline, private] |
Creates mTermsUnderTheStaircase and sorts it according to monomialOrdering.
void GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::initializeMultiplicationTable | ( | ) | [inline, private] |
Computes the coefficients of the normal forms of all products of basis elements.
const bool GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::isEqual | ( | const SpecialQuotientRingMultiplicationTable< monomialOrdering > & | o | ) | const [inline, protected] |
o |
const bool GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::operator!= | ( | const SpecialQuotientRingMultiplicationTable< monomialOrdering > & | ) | const |
const bool GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::operator== | ( | const SpecialQuotientRingMultiplicationTable< monomialOrdering > & | ) | const |
std::ostream& GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::print | ( | std::ostream & | os | ) | const |
os |
const MultivariatePolynomial<monomialOrdering> GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::product | ( | const MultivariateTerm< monomialOrdering > | m1, |
const MultivariateTerm< monomialOrdering > | m2 | ||
) | const throw ( invalid_argument ) |
Efficiently compute m1 * m2 within the quotient ring.
m1 | |
m2 |
const MultivariatePolynomial<monomialOrdering> GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::product | ( | const int | i, |
const int | j | ||
) | const throw ( invalid_argument ) [inline] |
Efficiently compute the product of the i-th and the j-th basis element within the quotient ring.
i | |
j |
void GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::realRoots | ( | ) | const |
Compute the roots of the input polynomial.
const vector<MultivariateTerm<monomialOrdering> > GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::TermsUnderTheStaircase | ( | ) | const |
Get the monomials under the staircase.
This is the basis of the quotient ring. It is sorted according to monomialOrdering.
const MultivariatePolynomial<monomialOrdering> GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::trace | ( | const MultivariatePolynomial< monomialOrdering > | p | ) | const throw ( invalid_argument ) [inline, protected] |
Efficiently compute the trace of the linear form L_p where p is a special template polynomial.
The trace is the sum of the main diagonal of the matrix associated with the linear form of p mapping each a to p*a.
p |
error | if the input did not happen to show the correct coefficient structure |
const list<symbol> GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::Variables | ( | ) | const |
MultivariateCoefficient<monomialOrdering> GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::coefficientLcm [private] |
Definition at line 188 of file SpecialQuotientRingMultiplicationTable.h.
list<MultivariatePolynomial<monomialOrdering> > GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::mGroebnerBasis [private] |
Definition at line 187 of file SpecialQuotientRingMultiplicationTable.h.
symbol GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::mInfinitesimal [private] |
Definition at line 186 of file SpecialQuotientRingMultiplicationTable.h.
map<pair<pair<int, int>, int>, set<ex, ex_is_less>::iterator> GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::mMultiplicationTable [private] |
Definition at line 192 of file SpecialQuotientRingMultiplicationTable.h.
set<ex, ex_is_less> GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::mProductCoeffs [private] |
Definition at line 193 of file SpecialQuotientRingMultiplicationTable.h.
vector<MultivariateTerm<monomialOrdering> > GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::mTermsUnderTheStaircase [private] |
Definition at line 189 of file SpecialQuotientRingMultiplicationTable.h.
list<symbol> GiNaCRA::SpecialQuotientRingMultiplicationTable< monomialOrdering >::mVariables [private] |
Definition at line 190 of file SpecialQuotientRingMultiplicationTable.h.