ent maximize the minimum distance between possible ones are the BCJR algorithm of Bahl and colleagues [4] output sequences, and the aforementioned procedure and the soft-output Viterbi algorithm of Hagenauer may not maximize the minimum distance for a given and Hoeher [25]. Both algorithms output for each convolutional code and a given set of constellation points. information bit Ui, i = 0, km, an a posteriori A proper Euclidean distance code design should jointly log-likelihood ratio (LLR) consider the convolutional code and the set of constella- tion points in defining the mapping between bits and A(ui) = Pr{ = 1| = = y} constellation points. This concept was first introduced by Ungerboeck [48], and the resulting codes are often Pr{Ui = 0| = = y} referred to as trellis-coded modulation (TCM) codes. TCM codes are usually formed by letting a convolu- whose sign specifies the reconstructed source bit . tional code index a partition of constellation points [48]. A family of convolutional codes can be generated from Forney [20] and Conway and Sloane [13] independently a single convolutional code, called a mother code, with utilized this heuristic to define a set of codes that are rate 1 Some output symbols of the mother encoder are derived from a convolutional code that indexes a lattice punctured, which allows the construction of a family of partition. More specifically, both Forney and Conway and codes with rates np' p np-1' p+I' where p is the Sloane showed that good trellis codes can be obtained by puncturing period. To obtain RCPC codes [24], all partitioning a well-known lattice and then searching for protection symbols of the higher rate-punctured code are a convolutional code to index the partition. In this used by the lower rate codes (the higher rate codes are chapter, we will denote a lattice partition as A/A, where embedded into the lower rate codes). A nice feature of A is a sublattice of A and partitions A into cosets of A.A RCPC codes is that if a higher rate code does not provide coset of A is formed