/*
 * $Id$
 */

package edu.jas.ufd;


import java.io.Serializable;
import java.util.List;
import java.util.SortedMap;

import edu.jas.poly.GenPolynomial;
import edu.jas.structure.GcdRingElem;


/**
 * Squarefree decomposition interface.
 * @param  coefficient type
 * @author Heinz Kredel
 * @usage To create objects that implement the Squarefree
 *        interface use the SquarefreeFactory. It will select an
 *        appropriate implementation based on the types of polynomial
 *        coefficients C. To obtain an implementation use
 *        getImplementation(), it returns an object of a class
 *        which extends the SquarefreeAbstract class which
 *        implements the Squarefree interface.
 * 
 * 
 * Squarefree<CT> engine;
 * engine = SquarefreeFactory.<CT> getImplementation(cofac);
 * c = engine.squarefreeFactors(a);
 * 
* * For example, if the coefficient type is BigInteger, the usage looks like * *
 * BigInteger cofac = new BigInteger();
 * Squarefree<BigInteger> engine;
 * engine = SquarefreeFactory.getImplementation(cofac);
 * Sm = engine.sqaurefreeFactors(poly);
 * 
* * @see edu.jas.ufd.SquarefreeFactory#getImplementation */ public interface Squarefree> extends Serializable { /** * GenPolynomial greatest squarefree divisor. * @param P GenPolynomial. * @return squarefree(pp(P)). */ public GenPolynomial squarefreePart(GenPolynomial P); /** * GenPolynomial test if is squarefree. * @param P GenPolynomial. * @return true if P is squarefree, else false. */ public boolean isSquarefree(GenPolynomial P); /** * GenPolynomial list test if squarefree. * @param L list of GenPolynomial. * @return true if each P in L is squarefree, else false. */ public boolean isSquarefree(List> L); /** * GenPolynomial squarefree factorization. * @param P GenPolynomial. * @return [p_1 -> e_1, ..., p_k -> e_k] with P = prod_{i=1,...,k} p_i^{e_i} * and p_i squarefree. */ public SortedMap, Long> squarefreeFactors(GenPolynomial P); /** * GenPolynomial is (squarefree) factorization. * @param P GenPolynomial. * @param F = [p_1,...,p_k]. * @return true if P = prod_{i=1,...,r} p_i, else false. */ public boolean isFactorization(GenPolynomial P, List> F); /** * GenPolynomial is (squarefree) factorization. * @param P GenPolynomial. * @param F = [p_1 -> e_1, ..., p_k -> e_k]. * @return true if P = prod_{i=1,...,k} p_i**e_i, else false. */ public boolean isFactorization(GenPolynomial P, SortedMap, Long> F); /** * GenPolynomial squarefree and co-prime list. * @param A list of GenPolynomials. * @return B with gcd(b,c) = 1 for all b != c in B and for all non-constant * a in A there exists b in B with b|a and each b in B is * squarefree. B does not contain zero or constant polynomials. */ public List> coPrimeSquarefree(List> A); /** * GenPolynomial squarefree and co-prime list. * @param a polynomial. * @param P squarefree co-prime list of GenPolynomials. * @return B with gcd(b,c) = 1 for all b != c in B and for non-constant a * there exists b in P with b|a. B does not contain zero or constant * polynomials. */ public List> coPrimeSquarefree(GenPolynomial a, List> P); /** * Test if list of GenPolynomials is squarefree and co-prime. * @param B list of GenPolynomials. * @return true, if for all b != c in B gcd(b,c) = 1 and * each b in B is squarefree, else false. */ public boolean isCoPrimeSquarefree(List> B); }

Ads help maintain this website.