Gröbner basis project
Codebase for research into Gröbner basis computation
Mutable_Polynomial Class Referenceabstract

Polynomials that need arithmetic typically descend from this class. More...

#include <polynomial.hpp>

Inheritance diagram for Mutable_Polynomial:
Abstract_Polynomial Double_Buffered_Polynomial Polynomial_Geobucket Polynomial_Linked_List

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_Polynomialzero_polynomial () const =0
 zero polynomial of this type
 
virtual Mutable_Polynomialoperator+= (const Abstract_Polynomial &)=0
 add another polynomial
 
virtual Mutable_Polynomialoperator-= (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_Polynomialmonomial_multiple (const Monomial &) const =0
 multiple of this and u
 
virtual Mutable_Polynomialscalar_multiple (const Prime_Field_Element &) const =0
 multiple of this and c
 
Iteration
virtual Mutable_Polynomial_Iteratornew_mutable_iterator ()=0
 An iterator that may modify the current position.
 
Modification
virtual Mutable_Polynomialdetach_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!
 
- Public Member Functions inherited from Abstract_Polynomial
 Abstract_Polynomial (Polynomial_Ring &ring, Monomial_Ordering *ordering)
 
virtual ~Abstract_Polynomial ()
 
Polynomial_Ringbase_ring () const
 ring in which this polynomial resides
 
Prime_Fieldground_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_Orderingmonomial_ordering () const
 reports leading monomial’s monomial ordering
 
virtual Monomialleading_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_Datastrategy () 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_Iteratornew_iterator () const =0
 An iterator that poses no risk of modifying the polynomial.
 
virtual Polynomial_Iteratorbegin () const =0
 
virtual Polynomial_Iteratorend () const =0
 
virtual void print (ostream &os=cout) const
 
virtual void println (ostream &os=cout) const
 
virtual void printlncout () const
 

Additional Inherited Members

- Protected Attributes inherited from Abstract_Polynomial
Polynomial_RingR
 data about polynomial ring
 
Poly_Strategy_Datastrat = nullptr
 data for computational strategies
 

Detailed Description

Polynomials that need arithmetic typically descend from this class.

Author
John Perry
Date
2015

This class extends Abstract_Polynomial to allow for basic arithmetic of a polynomial.

Definition at line 285 of file polynomial.hpp.


The documentation for this class was generated from the following files: