The Forney algorithm (or Forney's algorithm) calculates the error values at known error locations. It is used as one of the steps in decoding BCH codes and Reed–Solomon codes (a subclass of BCH codes). George David Forney, Jr. developed the algorithm.
- Need to introduce terminology and the setup...
Code words look like polynomials. By design, the generator polynomial has consecutive roots αc, αc+1, ..., αc+d−2.
Error location polynomial
The zeros of Λ(x) are X1−1, ..., Xν−1. The zeros are the reciprocals of the error locations .
Once the error locations are known, the next step is to determine the error values at those locations. The error values are then used to correct the received values at those locations to recover the original codeword.
In the more general case, the error weights can be determined by solving the linear system
Where S(x) is the partial syndrome polynomial:
Then evaluate the error values:
Some codes select c = 1, so the expression simplifies to:
In the above expression, note that i is an integer, and λi would be an element of the finite field. The operator · represents ordinary multiplication (repeated addition in the finite field) and not the finite field's multiplication operator.
Gill (unknown, pp. 52–54) gives a derivation of the Forney algorithm.
Define the erasure locator polynomial
Where the erasure locations are given by ji. Apply the procedure described above, substituting Γ for Λ.
If both errors and erasures are present, use the error-and-erasure locator polynomial
- Forney, Jr., G. (October 1965), "On Decoding BCH Codes", IEEE Transactions on Information Theory 11 (4): 549–557, doi:10.1109/TIT.1965.1053825, ISSN 0018-9448
- Gill, John, EE387 Notes #7, Handout #28, Stanford University, pp. 42–45, retrieved April 21, 2010
- W. Wesley Peterson's book