001 /*
002 * $Id: TaylorFunction.java 3342 2010-10-06 19:55:37Z kredel $
003 */
004
005 package edu.jas.ps;
006
007
008 import java.util.List;
009
010 import edu.jas.poly.ExpVector;
011 import edu.jas.structure.RingElem;
012
013
014 /**
015 * Interface for functions capable for Taylor series expansion.
016 * @param <C> ring element type
017 * @author Heinz Kredel
018 */
019
020 public interface TaylorFunction<C extends RingElem<C>> {
021
022
023 /**
024 * Get the factorial coefficient.
025 * @return factorial coefficient.
026 */
027 public long getFacul();
028
029
030 /**
031 * Test if this is zero.
032 * @return true if this is 0, else false.
033 */
034 public boolean isZERO();
035
036
037 /**
038 * Deriviative.
039 * @return deriviative of this.
040 */
041 public TaylorFunction<C> deriviative();
042
043
044 /**
045 * Multi-partial deriviative.
046 * @param i exponent vector.
047 * @return partial deriviative of this with respect to all variables.
048 */
049 public TaylorFunction<C> deriviative(ExpVector i);
050
051
052 /**
053 * Evaluate.
054 * @param a element.
055 * @return this(a).
056 */
057 public C evaluate(C a);
058
059
060 /**
061 * Evaluate at a tuple of elements.
062 * @param a tuple of elements.
063 * @return this(a).
064 */
065 public C evaluate(List<C> a);
066
067 }