1. A method of decoding a signal transmitted via a multiple input multiple output (MIMO) communication channel, the method comprising: receiving a data symbol vector comprising a plurality of data symbols corresponding to a plurality of transmitted data symbols; selecting one of a plurality of candidate data symbols, the plurality of candidate data symbols defining a candidate vector, wherein the plurality of candidate data symbols corresponds to the plurality of transmitted data symbols; grouping all possible values of the selected one candidate data symbol into two or more bit groups; selecting a bit group from the two or more bit groups; determining a local optimum candidate value from values in the selected bit group for the selected one candidate data symbol for a given set of values corresponding to all of the plurality of candidate data symbols but the selected one candidate data symbol, the local optimum candidate value minimizing a distance value corresponding to a distance between the received data symbol vector and a channel matrix multiplied with the candidate vector, without calculating the distance value; and calculating a likelihood value for a bit in the selected one candidate data symbol based at least in part on the determined local optimum candidate value.