I'm a software developer with a moderate mathematical background, and I've been trying to write a software implementation of reed-solomon decoding from scratch, as a learning experience.
I'm using the following paper as my main resource for developing the decoder, and it seems they don't explain something well, or I don't see the connection.
http://downloads.bbc.co.uk/rd/pubs/whp/whp-pdf-files/WHP031.pdf
The process of decoding takes the received message as a polynomial $R(x)$, calculates the syndromes as a polyomial S(x). The next step runs the Euclidean algorithm on S(x) to output lambda(x) and omega(x), which are then fed to later stages of the decoder.
The paper indicates that $\Lambda(x)$ can be calculated from $S(x)$ using Berlekamp's algorithm, however, it does not seem to indicate how to calculate $\Omega(x)$ using Berlekamp's algorithm, or perhaps from $\Lambda(x)$.
If only Euclid's algorithm can be used to calculate $\Omega(x)$, what's the point of explaining how $\Lambda(x)$ can be calculated using Berlekamp's?
Either there is no point, which would be strange, and thus I have to perform Euclid's algorithm no matter what, or there is a point, and somehow I can calculate $\Omega(x)$ either during Berlekamp's or from the products thereof.
What gives?
Some direction in the paper and the approach -
Page 21 shows a block diagram of the system. Pages 15 through 21 show the basic definitions of each part of the process.
The received message $R(x)$ is a sequence of bytes that is treated as a polynomial on the galois field.
From $R(x)$ we calculate the syndromes, represented as either coefficients $S_0, S_1, ...$ or as the polynomial formed from those coefficients $S(x)$. The syndromes are repeatedly used during the error detection, location, and correction process. Pages 22 through 24 show a worked example of various methods to calculate the coefficients of $S(x)$.
From $S(x)$ we can use Euclid's to calculate $\Omega(x)$ and $\Lambda(x)$. Page 25 shows a worked example of this. $\Omega(x)$ is the error magnitude polynomial, and $\Lambda(x)$ is the error locator polynomial.
From $\Lambda(x)$ we run the Chien search (pages 29,30) to calculate the error positions polynomial $X(x)$.
From $\Omega(x)$ and the derivative of $\Lambda(x)$, $\Lambda'(x)$, we calculate the error value polynomial $\frac{\Omega(x)}{\Lambda'(x)}$ using Forney's method (page 31).
Using the zero elements of the error locations polynomial, we add the indicated elements of the error value polynomial to the received message $R(x)$ to produce the corrected message transmitted message $T(x)$, and thus complete the task.
I seem to have found my answer, and I'm embarrassed I didn't see it earlier. Sorry to have drawn your attention for such a simple mistake.
Page 19 shows exactly how to derive $\Omega(x)$ from $S(x)$ and $\Lambda(x)$ -
$\Omega(x) = \left[S(x) \Lambda(x)\right]\ mod\ x^{2t}$
$\Omega_0 = S_b$
$\Omega_1 = S_{b+1} + S_b \Lambda_1 $
..