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 }