Patent ID: 8046657

Claim:
A method of decoding a received data block encoded via a linear block code represented by a parity check matrix, the method comprising: initializing joint probabilities of bit subsets in the received data block based on using the parity check matrix to identify the bit subsets as coupled bits in the received data block and calculating joint probability values for possible combinations of bit values in each bit subset according to corresponding soft values obtained from demodulating the received data block; updating the joint probabilities based on the parity check matrix, by: updating the joint probabilities as a function of all related combinations of the joint probabilities as indicated by the parity check matrix; and for one or more iterations, recalculating the joint probabilities and using the recalculated joint probabilities as initial values for a next iteration, and calculating final joint probabilities in a last iteration, wherein, in each intermediate iteration, recalculating the joint probabilities comprises, for each joint probability, excluding a corresponding one of the parity check equations from the recalculation to avoid a recalculation bias; and recovering encoded data from the received data block using the updated joint probabilities.