/** * @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); }