In coding theory, the Bose–Chaudhuri–Hocquenghem codes (BCH codes) form a class of cyclic error-correcting codes that are constructed using polynomials over a finite field (also called Galois field). BCH codes were invented in 1959 by French mathematician Alexis Hocquenghem, and independently in 1960 by Raj Chandra Bose and D.K. Ray-Chaudhuri. The name Bose–Chaudhuri–Hocquenghem (and the acronym BCH) arises from the initials of the inventors' surnames (mistakenly, in the case of Ray-Chaudhuri). One of the key features of BCH codes is that during code design, there is a precise control over the number of symbol errors correctable by the code. In particular, it is possible to design binary BCH codes that can correct multiple bit errors. Another advantage of BCH codes is the ease with which they can be decoded, namely, via an algebraic method known as syndrome decoding. This simplifies the design of the decoder for these codes, using small low-power electronic hardware. BCH codes are used in applications such as satellite communications, compact disc players, DVDs, disk drives, USB flash drives, solid-state drives, quantum-resistant cryptography and two-dimensional bar codes. Definition and illustration Primitive narrow-sense BCH codes Given a prime number and prime power with positive integers and such that , a primitive narrow-sense BCH code over the finite field (or Galois field) with code length and distance at least is constructed by the following method. Let be a primitive element of . For any positive integer , let be the minimal polynomial with coefficients in of . The generator polynomial of the BCH code is defined as the least common multiple . It can be seen that is a polynomial with coefficients in and divides . Therefore, the polynomial code defined by is a cyclic code. Example Let and (therefore ). We will consider different values of for based on the reducing polynomial , using primitive element . There are fourteen minimum polynomials with coefficients in satisfying The minimal polynomials are The BCH code with has generator polynomial It has minimal Hamming distance at least 3 and corrects up to one error. Since the generator polynomial is of degree 4, this code has 11 data bits and 4 checksum bits. The BCH code with has generator polynomial It has minimal Hamming distance at least 5 and corrects up to two errors. Since the generator polynomial is of degree 8, this code has 7 data bits and 8 checksum bits.