A single polynomial expander 22 is time multiplexed to produce firstly a
modified syndrome polynomial T(x) and then an erasure located polynomial
.LAMBDA.(x). T(x) is supplied to a key equation solving unit 32 which
solves the key equation to calculate an error locator polynomial
.sigma.(x) and an errata evaluator polynomial .omega.(x). These
polynomials .sigma.(x), .LAMBDA.(x) and .omega.(x) form three inputs to
polynomial evaluators 52 56 and a Forney block 62 for determining the
location and magnitude of each symbol error and symbol erasure, allowing
the received codeword to be corrected in a correction block 72.
Optionally, a transform block 42 is provided to avoid unnecessary delay
and improve throughput when decoding shortened codewords.