# Data Integrity Functions

This chapter describes Intel® Integrated Performance Primitives (Intel® IPP) functions for data integrity. These functions implement error-correcting coding, which is featured in [Berl68], [Mor02], and [Bla84].

The data integrity functions are based on operations over finite fields. A field may be defined as a set of elements where

• The results of the addition (+) and multiplication (*) operations on two arbitrary elements are defined uniquely.
• The associative and commutative laws are applicable to both addition and multiplication, and multiplication is distributional with respect to addition: u*(v+w) = u*v+u*w.
• An additive identity element 0 and multiplicative identity 1 ≠ 0 exist.
• Each field element u has a unique additive inverse element -u, such that u+(-u) = 0.
• Each non-zero field element u has a unique multiplicative inverse element 1/u, such that u*(1/u) = 1.

For each field element u, the following equations are true:

0+u = u

1*u = u

0*u = 0.

A field that contains only finitely many elements is called a finite field (or Galois field). The order of a finite field is the number of elements q it contains. It is traditional to denote the finite field of order q by GF(q).

The error-correcting codes implemented in Intel IPP deal with binary finite fields GF(2m), consisting of 2m possible bit strings of length m, and essentially use polynomials over GF(2m).

Accordingly, the Intel IPP data integrity functions are divided into groups described in the following sections:

GF(2m) Arithmetic Functions