1. A method of decoding data stored in a nonvolatile memory array, the data encoded according to a predetermined scheme, comprising: reading the encoded data from the nonvolatile memory array to obtain a plurality of bits; obtaining likelihood information regarding the plurality of bits; and calculating output likelihood values using the predetermined scheme, the output likelihood values calculated from the plurality of bits and the likelihood information.