 is used either for convenience of implementa- tion or when the overall efficiency (k/n) of the concatenated code is higher than that of any single code with the same error-correcting ability. Cyclic Codes Cyclic codes are a very important class of linear block codes for two reasons: first, cyclic codes are available for a wide range of error-detecting and error-correcting requirements, Cyclic Codes including burst error correction; second, the encoders and decoders can be implemented efficiently using feedback shift registers. The mathematical theory of cyclic codes is based on the "algebra of polynomials over GF(M)." In this framework the digits of a dataword or codeword are treated as the coeffi- cients of a polynomial. For example, the 4-bit word (1011) is represented by the polynomial of equation 4.9. d(x)=1.x3+0.x2+1.x1+1.x0 (4.9) When adding, subtracting, multiplying, or dividing these polynomials, the arithmetic that is carried out on the coefficients is done in GF(M) (i.e., modulo-2 for binary cyclic codes). The variable x never needs to be evaluated; it serves only a place-keeping role. A cyclic code is completely defined by its generator polynomial, which for an (n,k) code is a factor of x - 1 and is of degree r = (n - k). Hence it is of the form given by equation 4.10 and has r + 1 coefficients. (4.10) Published tables are available that give, for each code, the values of n and k, the coeffi- cients of g(x), and the distance of the code and hence its error detection and correction ability. In such tables it is common practice to represent the binary coefficients of the generator polynomial in octal notation. For example, if the generator of a (7,3) cyclic code (which therefore has 7 - 3 + 1 = 5 coefficients) is written as 35 in octal, the binary coefficients are (11101) and the generator polynomial is given by equation 4.11. (4.11) In systematic cyclic codes, in which the first k bits of the codeword are equal to the data word, equation 4.12 defines the parity check polynomial, p(x), which defines the