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    }