/*
* $Id$
*/
package edu.jas.poly;
import java.util.Map;
import java.util.Iterator;
import edu.jas.structure.RingElem;
import edu.jas.structure.RingFactory;
/**
* Polynomial interface.
* Adds methods specific to polynomials.
* @param ring element type
* @author Heinz Kredel
*/
public interface Polynomial>
extends RingElem< Polynomial > {
/**
* Leading monomial.
* @return first map entry.
*/
public Map.Entry leadingMonomial();
/**
* Leading exponent vector.
* @return first exponent.
*/
public ExpVector leadingExpVector();
/**
* Leading base coefficient.
* @return first coefficient.
*/
public C leadingBaseCoefficient();
/**
* Trailing base coefficient.
* @return coefficient of constant term.
*/
public C trailingBaseCoefficient();
/**
* Reductum.
* @return this - leading monomial.
*/
public Polynomial reductum();
/**
* Extend variables. Used e.g. in module embedding.
* Extend all ExpVectors by i elements and multiply by x_j^k.
* @param pfac extended polynomial ring factory (by i variables).
* @param j index of variable to be used for multiplication.
* @param k exponent for x_j.
* @return extended polynomial.
*/
public Polynomial extend(PolynomialRing pfac, int j, long k);
/**
* Contract variables. Used e.g. in module embedding.
* remove i elements of each ExpVector.
* @param pfac contracted polynomial ring factory (by i variables).
* @return Map of exponents and contracted polynomials.
* Note: could return SortedMap
*/
public Map> contract(PolynomialRing pfac);
/**
* Reverse variables. Used e.g. in opposite rings.
* @return polynomial with reversed variables.
*/
public Polynomial reverse(PolynomialRing oring);
/**
* Iterator over coefficients.
* @return val.values().iterator().
*/
public Iterator coefficientIterator();
/**
* Iterator over exponents.
* @return val.keySet().iterator().
*/
public Iterator exponentIterator();
/**
* Iterator over monomials.
* @return a PolyIterator.
*/
public Iterator> monomialIterator();
}
Ads help maintain this website.