A decoder for processing a sequence of received symbols, the decoder comprising: a branch metric calculation unit for computing branch metrics associated with transitions between states of a multi-stage trellis representation of a state machine, wherein at least a non-empty subset of the branch metrics correspond to a linear distance between a given one of the received symbols and its nearest codeword in a given stage of the trellis; an add-compare-select unit having an input coupled to an output of the branch metric calculation unit, the add-compare-select unit utilizing the linear distance branch metrics generated by the branch metric calculation unit for a current stage of the trellis, and a path metric generated for a previous stage of the trellis, for comparison purposes in determining a survivor path and corresponding updated path metric for the current stage of the trellis; and a traceback unit having an input coupled to an output of the add-compare-select unit, the traceback unit generating an output for a given stage of the multi-stage trellis based on the path metric determined for that stage; wherein a given one of the linear distance branch metrics corresponds to a transition from state i to state j in stage n of the trellis; characterized in that the survivor path is determined utilizing the following computation for trellis codes with finite constellations: Δ ⁢ M = { M i, n - 1 - M k, n - 1 + ∑ m = 1 N y n, m - P i, j, n, m + y n, m - P i, j, n, m ⁢ if s i ⊕ s k = 1 and s i = 1 M i, n - 1 - M k, n - 1 - ∑ m = 1 N y n, m - P i, j, n, m + y n, m - P i, j, n, m otherwise where y n,m denotes an m th -dimensional received symbol at stage n, P ijnm denotes a nearest codeword in a coset C i,j to the m th -dimensional received symbol, y n,m, at stage n, M j,n denotes a path metric for state j at stage n, Δ M denotes a path metric difference, s i = sign ( y n,m - P i,j,n,m), and s k = sign ( y n,m - P k,j,n,m). a branch metric calculation unit for computing branch metrics associated with transitions between states of a multi-stage trellis representation of a state machine, wherein at least a non-empty subset of the branch metrics correspond to a linear distance between a given one of the received symbols and its nearest codeword in a given stage of the trellis; an add-compare-select unit having an input coupled to an output of the branch metric calculation unit, the add-compare-select unit utilizing the linear distance branch metrics generated by the branch metric calculation unit for a current stage of the trellis, and a path metric generated for a previous stage of the trellis, for comparison purposes in determining a survivor path and corresponding updated path metric for the current stage of the trellis; and a traceback unit having an input coupled to an output of the add-compare-select unit, the traceback unit generating an output for a given stage of the multi-stage trellis based on the path metric determined for that stage; wherein a given one of the linear distance branch metrics corresponds to a transition from state i to state j in stage n of the trellis; characterized in that the survivor path is determined utilizing the following computation for trellis codes with finite constellations: Δ ⁢ M = { M i, n - 1 - M k, n - 1 + ∑ m = 1 N y n, m - P i, j, n, m + y n, m - P i, j, n, m ⁢ if s i ⊕ s k = 1 and s i = 1 M i, n - 1 - M k, n - 1 - ∑ m = 1 N y n, m - P i, j, n, m + y n, m - P i, j, n, m otherwise where y n,m denotes an m th -dimensional received symbol at stage n, P ijnm denotes a nearest codeword in a coset C i,j to the m th -dimensional received symbol, y n,m, at stage n, M j,n denotes a path metric for state j at stage n, Δ M denotes a path metric difference, s i = sign ( y n,m - P i,j,n,m), and s k = sign ( y n,m - P k,j,n,m).