1. A computer-implemented method of recovering data associated with an error correction code (ECC) codeword received on a channel using an iterative decoder, comprising: receiving, by an elementary check node of the iterative decoder, a first set of m tuples A and a second set of m tuples B, each tuple including a symbol and a probability that the symbol is correct, wherein mεZ > ; sorting the first set A by the probabilities of its tuples and the second set B by the probabilities of its tuples; computing a set C of 2m−1 tuples by performing at least the following operations: ∀ tuple A x ε the first set A, wherein xεZ and 0≦x≦m−1, computing a result tuple C x,α using A x and a tuple B α of the second set B having a highest probability as input; and ∀ tuple B y ε the second set B, wherein yεZ and 1≦y≦m−1, computing a result tuple C β,y using B y and a tuple A β of the first set A having the highest probability as input; eliminating, from consideration as output, at least m−1 tuples of the set C having the lowest probabilities; outputting, by the elementary check node, a set O of m output tuples that includes at least some remaining tuples of the set C; and recovering data based at least in part on the set O of m output tuples.