1. A method for decoding a codeword transmitted over a channel, comprising: demodulating data received over the channel to produce an initial estimate of belief messages for bits of the codeword; and decoding the codeword using a belief propagation (BP) decoding that iteratively passes the belief messages between a set of variable nodes representing the bits of the codeword and a set of check nodes representing parity-check constraints on the bits of the codeword until a termination condition is met, wherein the BP decoding comprises: determining a probability of the belief messages; selecting a look-up table (LUT) from a set of LUTs based on the probability; and mapping, using the LUT, values of at least two incoming belief messages to values of at least one outgoing belief message that forms an incoming belief message in a subsequent iteration of the BP decoding, wherein at least some steps of the method are performed by a processor of a BP decoder.