Forney algorithm
In coding theory, 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. Procedure. Code words look like polynomials. By design, the generator polynomial has consecutive roots α, α, ..., α. Syndromes Error location polynomial The zeros of Λ("x") are "X", ..., "X". The zeros are the reciprocals of the error locations formula_2. 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 However, there is a more efficient method known as the Forney algorithm, which is based on Lagrange interpolation. First calculate the error evaluator polynomial Where is the partial syndrome polynomial: Then evaluate the error values: The value is often called the "first consecutive root" or "fcr". Some codes select , so the expression simplifies to: Formal derivative. Λ'("x") is the formal derivative  of the error locator polynomial Λ("x"): In the above expression, note that "i" is an integer, and λ 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. Derivation. Lagrange interpolation Erasures. Define the erasure locator polynomial Where the erasure locations are given by "j". Apply the procedure described above, substituting Γ for Λ. If both errors and erasures are present, use the error-and-erasure locator polynomial