Gröbner basis project
Codebase for research into Gröbner basis computation
|
Polynomials that need arithmetic typically descend from this class. More...
#include <polynomial.hpp>
Public Member Functions | |
Construction | |
Mutable_Polynomial (Polynomial_Ring &R, Monomial_Ordering *ordering=generic_grevlex_ptr) | |
constructor | |
Destruction | |
virtual | ~Mutable_Polynomial ()=0 |
destructor | |
Computation | |
virtual Mutable_Polynomial * | zero_polynomial () const =0 |
zero polynomial of this type | |
virtual Mutable_Polynomial & | operator+= (const Abstract_Polynomial &)=0 |
add another polynomial | |
virtual Mutable_Polynomial & | operator-= (const Abstract_Polynomial &)=0 |
subtract another polynomial | |
virtual void | add_polynomial_multiple (const Prime_Field_Element &, const Monomial &, const Abstract_Polynomial &, bool subtract=false)=0 |
add monomial multiple of other | |
virtual void | multiply_by_scalar (const Prime_Field_Element &a) |
multiply by scalar | |
virtual void | multiply_by_monomial (const Monomial &t) |
multiply by monomial | |
virtual void | reduce_by (const Abstract_Polynomial &p) |
reduce by \(p\) until no further reduction possible | |
virtual Mutable_Polynomial * | monomial_multiple (const Monomial &) const =0 |
multiple of this and u | |
virtual Mutable_Polynomial * | scalar_multiple (const Prime_Field_Element &) const =0 |
multiple of this and c | |
Iteration | |
virtual Mutable_Polynomial_Iterator * | new_mutable_iterator ()=0 |
An iterator that may modify the current position. | |
Modification | |
virtual Mutable_Polynomial * | detach_head ()=0 |
Remove and return the head. | |
virtual void | add_last (const Prime_Field_Element &, const Monomial &)=0 |
Attach a new monomial to the tail – check that it belongs at tail! | |
![]() | |
Abstract_Polynomial (Polynomial_Ring &ring, Monomial_Ordering *ordering) | |
virtual | ~Abstract_Polynomial () |
Polynomial_Ring & | base_ring () const |
ring in which this polynomial resides | |
Prime_Field & | ground_field () |
ground field – all coefficients should be in this field | |
unsigned | number_of_variables () const |
number of variables – all monomials should agree with this (though it is never tested by the class) | |
Monomial_Ordering * | monomial_ordering () const |
reports leading monomial’s monomial ordering | |
virtual Monomial & | leading_monomial () const =0 |
leading monomial – call after sort_by_order()! | |
virtual Prime_Field_Element | leading_coefficient () const =0 |
leading coefficient – call after sort_by_order()! | |
virtual unsigned | length () const =0 |
number of monomials | |
virtual bool | is_zero () const =0 |
is this polynomial zero? | |
virtual bool | can_reduce (Abstract_Polynomial &other) const |
can this reduce other ? | |
virtual Poly_Strategy_Data * | strategy () const |
strategy related information | |
virtual DEG_TYPE | standard_degree () const |
maximum sum of exponents for any monomial | |
virtual DEG_TYPE | weighted_degree (const WT_TYPE *w=nullptr) const |
weighted sum of exponents for any monomial More... | |
void | set_strategy (Poly_Strategy_Data *psd) |
sets the polynomial’s strategy to psd | |
virtual void | set_monomial_ordering (Monomial_Ordering *order, bool sort_anew=true)=0 |
set the monomial ordering and sort the polynomials (optionally, but by default) More... | |
virtual void | sort_by_order ()=0 |
sort according to the leading monomial’s ordering More... | |
virtual Polynomial_Iterator * | new_iterator () const =0 |
An iterator that poses no risk of modifying the polynomial. | |
virtual Polynomial_Iterator * | begin () const =0 |
virtual Polynomial_Iterator * | end () const =0 |
virtual void | print (ostream &os=cout) const |
virtual void | println (ostream &os=cout) const |
virtual void | printlncout () const |
Additional Inherited Members | |
![]() | |
Polynomial_Ring & | R |
data about polynomial ring | |
Poly_Strategy_Data * | strat = nullptr |
data for computational strategies | |
Polynomials that need arithmetic typically descend from this class.
This class extends Abstract_Polynomial to allow for basic arithmetic of a polynomial.
Definition at line 285 of file polynomial.hpp.