001/*
002 * $Id$
003 */
004
005package edu.jas.ufd;
006
007
008import java.io.Serializable;
009import java.util.List;
010
011import edu.jas.kern.Scripting;
012import edu.jas.poly.GenPolynomial;
013import edu.jas.structure.RingElem;
014
015
016/**
017 * Container for the evaluation points of a polynomial.
018 * @author Heinz Kredel
019 * @param <C> coefficient type
020 */
021
022public class EvalPoints<C extends RingElem<C>> implements Serializable {
023
024
025    /**
026     * Original multivariate polynomial to be evaluated.
027     */
028    public final GenPolynomial<C> poly;
029
030
031    /**
032     * Evaluated univariate polynomial as evaluated.
033     */
034    public final GenPolynomial<C> upoly;
035
036
037    /**
038     * Evaluation points.
039     */
040    public final List<C> evalPoints;
041
042
043    /**
044     * Constructor.
045     * @param p given GenPolynomial in r variables, x_{r+1}, x_{r}, ..., x_{1}.
046     * @param u evaluated GenPolynomial = p(x_{r+1}, lr, ..., l1).
047     * @param ep list of evaluation points, (l1, ..., lr).
048     */
049    public EvalPoints(GenPolynomial<C> p, GenPolynomial<C> u, List<C> ep) {
050        poly = p;
051        upoly = u;
052        evalPoints = ep;
053    }
054
055
056    /**
057     * Get the String representation.
058     * @see java.lang.Object#toString()
059     */
060    @Override
061    public String toString() {
062        StringBuffer sb = new StringBuffer("EvalPoints(");
063        sb.append(poly.toString());
064        sb.append(", ");
065        sb.append(upoly.toString());
066        sb.append(", ");
067        sb.append(evalPoints.toString());
068        sb.append(")");
069        return sb.toString();
070    }
071
072
073    /**
074     * Get a scripting compatible string representation.
075     * @return script compatible representation for this container.
076     * @see edu.jas.structure.ElemFactory#toScript()
077     */
078    public String toScript() {
079        StringBuffer sb = new StringBuffer();
080        switch (Scripting.getLang()) {
081        case Python:
082            sb.append("EvalPoints(");
083            break;
084        case Ruby:
085            sb.append("EvalPoints.new(");
086        default:
087        }
088        sb.append(poly.toScript());
089        sb.append(", ");
090        sb.append(upoly.toScript());
091        sb.append(", ");
092        sb.append(evalPoints.toString());
093        sb.append(")");
094        return sb.toString();
095    }
096
097}