Block polynomials

1.Representation

Multivariate polynomials in dense representation over C with monomials of type Monomial are implemented in the class block_polynomial<C,Monomial,V> defined in block_polynomial.hpp. The default variant block_polynomial_naive assumes that C is a field, not necessarily commutative, and provides implementations of the naive algorithms. For instance the product and the division have quadratic costs.

#include <numerix/integer.hpp>
#include <multimix/block_polynomial.hpp>
…
monomial<> e (vec<nat> (1, 2));
block_polynomial<integer> t1 (integer (2), e); // defines the term 2 * x * y^2

The bracket operator [] is overloaded to access either the -th coefficient with respect to the internal representation order, or to retrieve the coefficient of a monomial given in argument.

2.Implementation variants

Reducing the polynomial product to the univariate one (from the algebramix library), known as the Kronecker substitution, is implemented in the variant block_polynomial_kronecker. Special variants are available to double, floating, integer, rational, and modular integers.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License. If you don't have this file, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.