Start New Discussion within our Software Development Community

Short snippet in C# to do this classic trick, I could not find one on the web. Little, (even none!) error checking is done here.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Horner
{
    class Program
    {
        //here it all happens
        static double Horner(double[] coeffients, int degree, double value)
        {
            double result = coeffients[degree];
            for (int i = degree - 1; i >= 0; i--)
            {
                result = result * value + coeffients[i];
            }
            return result;
        }


        //Main function to exercise the above
        static void Main(string[] args)
        {
            //coefficient array
            double[] c = {0,0,0,0,0,0,0,0,0,0,0};   //degree 10 maximum
            //highest degree
            int d;
            //value to be evaluated
            double v;
            Console.WriteLine("HORNER polynomial evaluator.");
            Console.WriteLine();
            Console.Write("Enter degree of polynomial: ");
            d = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Fill in coefficients from low to high degree.");
            Console.WriteLine("Coefficients, a[0], a[1], ..., a[" + d.ToString() + "]");
            for (int i = 0; i <= d; i++)
            {
                Console.Write("Coefficient a[" + i.ToString() + "] = ");
                c[i] = Convert.ToDouble(Console.ReadLine());
            }
            Console.Write("Enter the value to be evaluated: ");
            v = Convert.ToDouble(Console.ReadLine());

            double r = Horner(c, d, v);
            Console.WriteLine("------------------------------------------------");
            Console.WriteLine("The calculated value for this polynomial is : {0}",r);

        }
    }
}
The article starter has earned a lot of community kudos, and such articles offer a bounty for quality replies.