namespace Exocortex.DSP { public class SimplePolynomial : Polynomial { public SimplePolynomial(params double[] coefficients) : base(coefficients) { } public override double Evaluate(double value) { var retval = coefficients[0]; var f = value; for (int i = 1; i < coefficients.Length; i++) { retval += coefficients[i] * f; f *= value; } return retval; } } public abstract class Polynomial { public Polynomial(params double[] coefficients) { this.coefficients = new double[coefficients.Length]; for (int i = 0; i < coefficients.Length; i++) this.coefficients[i] = coefficients[i]; } public abstract double Evaluate(double value); protected double[] coefficients = null; public double GetCoefficient(int index) { if (null == coefficients || index < 0 || index >= coefficients.Length) { return double.NaN; } return coefficients[index]; } } }