A method for error correction of data encoded by a low-density parity check, LDPC, code, the LDPC code being represented by a factor graph including a multitude of variable nodes (216-1, 216-2,..., 216-V) and a multitude of check nodes (218-1, 218-2,... 218-C), comprising: determining, by a reliability circuit, reliability data in response to binary hard data corresponding to a codeword of the LDPC code read from a memory device, wherein the reliability data is either a maximum reliability data value for a first binary hard data value or a minimum reliability data value for a second binary hard data value; receiving, at each of the multitude of variable nodes, as initial inputs from the reliability circuit either the maximum reliability data value including the first binary hard data value or the minimum reliability data value including the second binary hard data value and storing, at each of the multitude of variable nodes, the reliability data received at said variable node; for each of the multitude of variable nodes, sending the first binary hard data value or the second binary hard data value included in the reliability data stored at said variable node to each of a plurality of check nodes coupled to said variable node according to the LDPC code for performing XOR operations at the coupled check nodes to obtain parity data as a result of said XOR operations; for each of the multitude of variable nodes, updating the reliability data stored at said variable node based on parity data input from less than all of the plurality of check nodes coupled to said variable node; wherein updating the stored reliability data comprises incrementing or decrementing the stored reliability data by a predetermined amount based on the parity data input and within the range defined by the maximum and minimum reliability data value; and proceeding the updating of the stored reliability data of said variable node until a parity data input from each of the plurality of check nodes coupled to said variable node has been received; iteratively repeating the updating of the reliability data stored at the multitude of variable nodes and the sending of updated binary hard data included in the stored reliability data until a particular number of iterations have been performed and/or until a syndrome check performed by the multitude of check nodes is correct. determining, by a reliability circuit, reliability data in response to binary hard data corresponding to a codeword of the LDPC code read from a memory device, wherein the reliability data is either a maximum reliability data value for a first binary hard data value or a minimum reliability data value for a second binary hard data value; receiving, at each of the multitude of variable nodes, as initial inputs from the reliability circuit either the maximum reliability data value including the first binary hard data value or the minimum reliability data value including the second binary hard data value and storing, at each of the multitude of variable nodes, the reliability data received at said variable node; for each of the multitude of variable nodes, sending the first binary hard data value or the second binary hard data value included in the reliability data stored at said variable node to each of a plurality of check nodes coupled to said variable node according to the LDPC code for performing XOR operations at the coupled check nodes to obtain parity data as a result of said XOR operations; for each of the multitude of variable nodes, updating the reliability data stored at said variable node based on parity data input from less than all of the plurality of check nodes coupled to said variable node; wherein updating the stored reliability data comprises incrementing or decrementing the stored reliability data by a predetermined amount based on the parity data input and within the range defined by the maximum and minimum reliability data value; and proceeding the updating of the stored reliability data of said variable node until a parity data input from each of the plurality of check nodes coupled to said variable node has been received; iteratively repeating the updating of the reliability data stored at the multitude of variable nodes and the sending of updated binary hard data included in the stored reliability data until a particular number of iterations have been performed and/or until a syndrome check performed by the multitude of check nodes is correct.