MonomialEval started Horner evaluation from poly[len-2] instead of the highest-degree coefficient poly[len-1], so it silently ignored the top coefficient (1 + 2x at x=3 gave 1 instead of 7) and indexed poly[-1] on a constant polynomial, panicking. Start from poly[n] and iterate from n-1, matching the documented y = sum x^i * poly[i]. Closes #579