All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.jas.poly.PolynomialRing Maven / Gradle / Ivy

The newest version!
/*
 * $Id: PolynomialRing.java 1801 2008-05-19 20:50:39Z kredel $
 */

package edu.jas.poly;


import java.util.List;
import java.util.Random;


import edu.jas.structure.RingElem;
import edu.jas.structure.RingFactory;


/**
 * Polynomial factory interface.
 * Defines polynomial specific factory methods.
 * @author Heinz Kredel
 */

public interface PolynomialRing> 
                 extends RingFactory< Polynomial > {


    /**
     * Number of variables.
     * @return the number of variables.
     */
    public int numberOfVariables();


    /** Get the variable names. 
     * @return vars.
     */
    public String[] getVars();


    /**
     * Generate a random polynomial.
     * @param k bitsize of random coefficients.
     * @param l number of terms.
     * @param d maximal degree in each variable.
     * @param q density of nozero exponents.
     * @return a random polynomial.
     */
    public Polynomial random(int k, int l, int d, float q);


    /**
     * Generate a random polynomial.
     * @param k bitsize of random coefficients.
     * @param l number of terms.
     * @param d maximal degree in each variable.
     * @param q density of nozero exponents.
     * @param rnd is a source for random bits.
     * @return a random polynomial.
     */
    public Polynomial random(int k, int l, int d, float q, Random rnd);


    /**
     * Generate univariate polynomial in a given variable.
     * @param i the index of the variable.
     * @return X_i as univariate polynomial.
     */
    public Polynomial univariate(int i);


    /**
     * Generate univariate polynomial in a given variable with given exponent.
     * @param i the index of the variable.
     * @param e the exponent of the variable.
     * @return X_i^e as univariate polynomial.
     */
    public Polynomial univariate(int i, long e);


    /**
     * Generate list of univariate polynomials in all variables.
     * @return List(X_1,...,X_n) a list of univariate polynomials.
     */
    public List> univariateList();


    /**
     * Extend variables. Used e.g. in module embedding.
     * Extend number of variables by i.
     * @param i number of variables to extend.
     * @return extended polynomial ring factory.
     */
    public PolynomialRing extend(int i);


    /**
     * Contract variables. Used e.g. in module embedding.
     * Contract number of variables by i.
     * @param i number of variables to remove.
     * @return contracted polynomial ring factory.
     */
    public PolynomialRing contract(int i);


    /**
     * Reverse variables. Used e.g. in opposite rings.
     * @return polynomial ring factory with reversed variables.
     */
    public PolynomialRing reverse();


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy