= Solution
Represent the <zero polynomial> by `degree = -1`, with an allocated one-element <array> whose element is zero. Its coefficient prefix is empty; the spare cell is merely convenient storage. For every nonzero <polynomial>, require `degree >= 0`, sufficient allocated capacity, and a nonzero leading <polynomial coefficient>.
``
PROCEDURE Zero(VAR p: Poly);
BEGIN
p.degree := -1; NEW(p.coeff, 1); p.coeff[0] := 0.0
END Zero;
PROCEDURE Normalize(VAR p: Poly);
BEGIN
WHILE p.degree >= 0 DO
IF p.coeff[p.degree] # 0.0 THEN RETURN END;
DEC(p.degree)
END
END Normalize;
``
Thus
$$
\boxed{\deg_{\mathrm{stored}}0=-1;\qquad p\ne0\Longrightarrow p_{p.\mathrm{degree}}\ne0.}
$$
The sentinel $-1$ is a representation convention, not an assertion that the mathematical <degree of the zero polynomial> is an ordinary integer. In parts (b)–(e), algebraic correctness uses exact arithmetic on <real numbers>; ordinary <floating-point arithmetic> introduces rounding and needs an additional numerical policy if exact zero tests are to be replaced.
Back to article page