/**
* @return evaluation of this polynomial at a given point
*/
internal int EvaluateAt(int a)
{
if (a == 0)
{
// Just return the x^0 coefficient
return(GetCoefficient(0));
}
var size = coefficients.Length;
if (a == 1)
{
// Just the sum of the coefficients
var result2 = 0;
for (var i = 0; i < size; i++)
{
result2 = GF256.AddOrSubtract(result2, coefficients[i]);
}
return(result2);
}
var result = coefficients[0];
for (var i = 1; i < size; i++)
{
result = GF256.AddOrSubtract(field.Multiply(a, result), coefficients[i]);
}
return(result);
}