min - 1)/2]. A formal demonstration of this property is provided in Appendix J. What about error 11.3 Cyclic codes detection? It is simpler to show that the code has the capability to detect up to dmin - 1 errors. Indeed, dmin represents the minimum number of bit positions by which any two codewords differ. If the distance d(X, Y) between a received codeword Y and a message code X is such that d(X, Y) < dmin, or equivalently, d(X, Y) < dmin - 1, then Y differs from X by fewer than dmin positions and, hence, does not belong to the code. The code is, thus, able to recognize that there exists a number of d(X, Y) errors up to a maximum of dmin - 1. As we have seen, the code is, however, able to correct up to {(dmin - 1)/2} - of these errors. In the case of Hamming codes, we have seen that dmin = 3. This gives for these codes an error-detection capability of up to dmin - 1 = 2 errors and an error-correction capability of up to w = 1 errors, independently of the block-code size. Cyclic codes Cyclic codes represent a subset of linear block codes that obey two essential properties: (a) The sum of two codewords is also a block codeword; (b) Any cyclic permutation of the block codeword is also a block codeword. Cyclic codes corresponding to (n, k) block codes can be generated by polynomials g(p) of degree n-k. - Here, I shall briefly describe the principle of this encoding method. Assume a block code Y (=(yo...yn-1) of n bits yi, which are now labeled from 0 to n - 1. From this codeword, we can generate a polynomial (11.15) where p is a real variable. We multiply Y(p) by p and perform the following term rearrangements: pY(p) = (11.16) To derive the above result, we have used the property that for binary numbers, subtraction is the same as addition. Equation (11.16) can then be put in the form: pY(p) (11.17) where (11.18) is the reminder of the division of pY(p) by M = pn + 1, or Y1(p)=pY(p)mod[M], (11.19) Error correction where mod[M] stands for "modulo M" (the same way one writes 6:3 = 0 mod[3], or 8:3 = 2 mod[3]). It is 