Soft decision decoding of a codeword of a Reed-Muller (RM) code by
selecting an optimal decomposition variable i using a likelihood calculation. A code RM(r, m) is expressed as {(u, uv)|uεRM(r, m−1) and vεRM(r−1, m−1)) where uv denotes a component-wise multiplication of u and v, and (u, uv)=(r1, r2). A receive codeword is separated into r1=u and r2=uv based on the optimal decomposition variable, and r2 is decoded according to the optimal decomposition variable, using a RM(r−1, m−1) decoder to obtain a decoded v and a first set of decoded bits. The decoded v is combined with r1 using (r1+r2v)/2, and
(r1+r2V)/2 is decoded using a RM(r, m−1) decoder to obtain a decoded u and a second set of decoded bits.