public override String ToString() {
StringBuilder result = new StringBuilder(8 * GetDegree());
for (int degree = GetDegree(); degree >= 0; degree--) {
int coefficient = GetCoefficient(degree);
if (coefficient != 0) {
if (coefficient < 0) {
result.Append(" - ");
coefficient = -coefficient;
}
else {
if (result.Length > 0) {
result.Append(" + ");
}
}
if (degree == 0 || coefficient != 1) {
int alphaPower = field.Log(coefficient);
if (alphaPower == 0) {
result.Append('1');
}
else if (alphaPower == 1) {
result.Append('a');
}
else {
result.Append("a^");
result.Append(alphaPower);
}
}
if (degree != 0) {
if (degree == 1) {
result.Append('x');
}
else {
result.Append("x^");
result.Append(degree);
}
}
}
}
return result.ToString();
}
}