In this appendix, I construct the addition and multiplication tables for the eight elements in the set {0, 1, 2, 3, 4, 5, 6, 7}. As usual, 0 and 1 represent the additive and multiplicative identities, respectively.

As said in Section

2.6 , the

addition table is constructed writing the

elements in binary form and

adding them bitwise . For instance

$$ 3+5=\left(0\ 1\ 1\right)+\left(1\ 0\ 1\right)=\left(1\ 1\ 0\right)=6 $$

The other sums are computed likewise. The results appear in Table

2.1 .

Table 2.1 Addition in F _{8}

The construction of a multiplication table is not simple. I begin by filling the 0 and 1 rows (and columns) in Table

2.2 . To complete the table, I need to find the values of 21 ( = 6 + (36 − 6)/2) additional elements. For instance, what could the value of 2 ∗ 2 be? Clearly, since all the elements in any row (and column) must be different, 2 ∗ 2 ≠ 0 and 2 ∗ 2 ≠ 2. Moreover, because for fields with 2

^{m} elements

x +

x = 0, the

entries on the diagonal must also be different . Take two different elements,

x and

y . We have

x +

y ≠ 0, and therefore (

x +

y )

^{2} ≠ 0. But,

$$ {\left(x+y\right)}^2={x}^2+ xy+ yx+{y}^2={x}^2+{y}^2\ne 0 $$

Table 2.2 Some entries of the multiplication table

Thus, we can conclude that x ^{2} ≠ y ^{2} , as claimed. This implies that 2 ∗ 2 ≠ 1.

Let’s call

a the product 2 ∗ 2. Using the

distributive law , we have

$$ {\displaystyle \begin{array}{l}2\ast 3=2\left(1+2\right)=2+a\\ {}3\ast 3=\left(1+2\right)\left(1+2\right)={1}^2+{2}^2=1+a\end{array}} $$

These entries are also displayed in Table 2.2 .

To continue, call 2 ∗ 4 =

b . Then,

$$ {\displaystyle \begin{array}{l}2\ast 5=2\left(1+4\right)=2+b\\ {}3\ast 4=\left(1+2\right)4=4+b\\ {}3\ast 5=3\left(1+4\right)=3+4+b=7+b\end{array}} $$

Also

$$ {\displaystyle \begin{array}{l}2\ast 6=2\left(2+4\right)=a+b\\ {}2\ast 7=2\left(1+6\right)=2+a+b\\ {}3\ast 6=\left(1+2\right)6=6+a+b\\ {}3\ast 7=3\left(1+6\right)=3+6+a+b=5+a+b\end{array}} $$

I have entered all these new elements in Table

2.3 .

Table 2.3 More entries of the multiplication table

Finally, call 4 ∗ 4 =

c . Using again the distributive law, we have

the multiplication table in Table

2.4 . Since

a ,

b , and

c are not known, this table is only a

“blueprint.” Table 2.4 A “blueprint” of the multiplication table

To

construct the table from the “blueprint,” the only remaining task is to choose the values for

a ,

b , and

c . There are some conditions

a ,

b , and

c must satisfy:

1. The three numbers must be different (a and c are in the diagonal, a and b are in the same row, and b and c in the same column).

2. a ≠ 0, a ≠ 1, a ≠ 2 (as said before),

3. b ≠ 0, b ≠ 2, b ≠ 4, b ≠ 7,

4.

Hence, the only cases we need to explore are

$$ {\displaystyle \begin{array}{l}\ a\ \epsilon \kern0.5em \left\{3,4,5,6,7\right\}\kern1.1em b\ \epsilon\ \left\{1,3,5,6\right\}\kern0.84em c\ \epsilon\ \left\{2,3,5,6,7\right\}\\ {}\kern7.5em b\ne a,\kern4.599999em c\ne a,\kern0.6em c\ne b\end{array}} $$

Let’s try a = 3. See what values we can find for b .

We have 2 ∗ 3 = a + 2 = 3 + 2 = 1. Since b is in the same row as 2 ∗ 3 , b cannot be 1. Therefore, the only possible values for b are 5 and 6.

If we choose b = 5, then 2 ∗ 6 = a + b = 3 + 5 = 6, which is forbidden (6 would appear twice in column 6).

If we choose b = 6, then 2 ∗ 7 = 2 + a + b = 2 + 3 + 6 = 7 and 7 would appear twice in column 7.

Thus, a = 3 must be discarded.

Continue with a = 4. Proceeding by trial and error as before, two choices are now possible for b , namely: b = 3 and b = 5.

For a = 4, b = 3, only c = 6 works. Analogously, for a = 4, b = 5, the only valid choice for c is 7.

Using these values, and the

“blueprint” given in Table

2.4 , we can

construct two multiplication tables

Table 2.5a Multiplication table when a = 4, b = 3, c = 6

and

Table 2.5b Multiplication table when a = 4, b = 5, c = 7

In view of all the above, we have already obtained

two different “versions” of the field F _{8} (and more to come!). Call

\( {\boldsymbol{F}}_{\mathbf{8}}^{(1)} \) and

\( {\boldsymbol{F}}_{\mathbf{8}}^{(2)} \) , respectively, the versions corresponding to Tables

2.5a and

2.5b . The coding and decoding methods presented in this book require only

algebraic operations . Thus, if I find a

bijective application between

\( {\boldsymbol{F}}_{\mathbf{8}}^{(1)} \) and

\( {\boldsymbol{F}}_{\mathbf{8}}^{(2)} \) that

preserves additions and multiplications , all the computations in

\( {\boldsymbol{F}}_{\mathbf{8}}^{(1)} \) can be “mimicked” in

\( {\boldsymbol{F}}_{\mathbf{8}}^{(2)} \) and vice versa. We say that an application preserves additions and multiplications when, denoting by

x ,

x ^{′} two elements in

\( {\boldsymbol{F}}_{\mathbf{8}}^{(1)} \) and

y ,

y ′ their respective images in

\( {\boldsymbol{F}}_{\mathbf{8}}^{(2)} \) , we have

$$ x+{x}^{\prime}\to y+{y}^{\prime}\kern1em \mathrm{and}\kern1em {xx}^{\prime}\to {yy}^{\prime } $$

In this case, the choice of the version we utilize is immaterial unless the calculations performed with one of them are easier to implement . See later in this appendix.

Let’s now find an application that preserves the field structure.

Clearly the above conditions imply that 0 → 0 and 1 → 1. But what about the other elements? To answer that question, observe that any element in \( {\boldsymbol{F}}_{\mathbf{8}}^{(1)} \) and \( {\boldsymbol{F}}_{\mathbf{8}}^{(2)} \) , different from 0 and 1, generates by successive powers all the others. This is due to the fact that the number of nonzero elements (7) is prime. In other words, all elements of the field, different from 0 and 1, are generators . This is not a general property of finite fields. However, any Galois field has generators .

Let’s check, for instance, that 2 is a generator in both

\( {\boldsymbol{F}}_{\mathbf{8}}^{(1)} \) and

\( {\boldsymbol{F}}_{\mathbf{8}}^{(2)} \) .

Thus, the application is completely defined by giving the image of 2. In fact, 2 →

y implies 2

^{i} →

y ^{i} (to preserve multiplication) Recall, though, that addition has also to be preserved. To begin with, we should have

For

i = 7, the above is clearly true. Let’s see what happens for the other values of

i . For

i ≤ 6, 1 + 2

^{i} and 1 +

y ^{i} are nonzero elements of

\( {\boldsymbol{F}}_{\mathbf{8}}^{(1)} \) and

\( {\boldsymbol{F}}_{\mathbf{8}}^{(1)} \) , respectively. Hence, we can write

$$ 1+{2}^i={2}^{p(i)}\kern0.36em \mathrm{and}\kern0.36em 1+{y}^i={y}^{q(i)} $$

The functions

p (⋅) and

q (⋅) are, in general, different. Suppose, though, that for some

y we had

p (⋅) =

q (⋅). Then

$$ {\displaystyle \begin{array}{l}{2}^i+{2}^j={2}^i\left(1+{2}^{j-i}\right)={2}^{i+p\left(j-i\right)},j>i\\ {}{2}^{i+p\left(j-i\right)}\to {y}^{i+p\left(j-i\right)}\\ {}{y}^{i+p\left(j-i\right)}={y}^{i+q\left(j-i\right)}={y}^i\left(1+{y}^{j-i}\right)={y}^i+{y}^j\end{array}} $$

And the application would also preserve addition .

Operating in

\( {\boldsymbol{F}}_{\mathbf{8}}^{(1)} \) , we have

$$ {\displaystyle \begin{array}{cc}1+2=3={2}^3& 1+{2}^2=1+4=5={2}^6\\ {}1+{2}^3=1+3=2& 1+{2}^4=1+6=7={2}^5\\ {}1+{2}^5=1+7=6={2}^4& 1+{2}^6=1+5=4={2}^2\end{array}} $$

Thus, the function

p (⋅) is the one given in Table

2.6a Table 2.6a The function p (⋅)

Denote by

q _{k} (⋅) , with 2 ≤

k ≤ 7, the function

q (⋅) using

k as a generator in

\( {\boldsymbol{F}}_{\mathbf{8}}^{(1)} \) . Table

2.6b shows the results of the computations.

Table 2.6b q (⋅), computed in \( {\boldsymbol{F}}_8^{(2)} \) for all the generators

Therefore, the only values of y that make the application 2^{i} → y ^{i} addition preserving are 3, 5, and 6.

An application between two fields that preserves the field structure is called isomorphism and the two fields are said to be isomorphic . So, \( {\boldsymbol{F}}_{\mathbf{8}}^{(1)} \) and \( {\boldsymbol{F}}_{\mathbf{8}}^{(1)} \) are isomorphic.

More isomorphic fields can be obtained using other values for

a ,

b , and

c . Proceeding as before, the only legitimate multiplication tables correspond to the following choices for (

a b c )

$$ \left(5\kern0.24em 1\kern0.24em 6\right)\kern1em \left(5\kern0.24em 6\kern0.24em 7\right)\kern2em \left(6\kern0.24em 5\kern0.24em 2\right)\kern2em \left(6\kern0.24em 1\kern0.24em 3\right)\kern2em \left(7\kern0.24em 6\kern0.24em 3\right)\kern1.24em \left(7\kern0.24em 3\kern0.24em 2\right) $$

The resulting multiplication tables are Tables 2.7a , 2.7b , 2.7c , 2.7d , 2.7e , and 2.7f .

Constructing multiplication tables for Galois fields using the method just exposed is a very laborious process that becomes even more cumbersome as the size of the field increases . Furthermore, since all the “versions” are isomorphic, and therefore equivalent from a mathematical point of view, which ones should we utilize when it comes to doing the calculations?

As a

benchmark for comparison , I’ll use the circuits represented in Figs.

2.20 and

2.21 to

compute the powers of an element . In Fig.

2.20 , I have drawn four circuits to compute the powers of 2 and 3 using Tables

2.5a and

2.5b . On the other hand, the six circuits in Fig.

2.21 compute the powers of 2 using Tables

2.7a ,

2.7b ,

2.7c ,

2.7d ,

2.7e , and

2.7f .

Fig. 2.20 Circuits that compute the powers of 2 and 3 using Tables 2.5a and 2.5b

Fig. 2.21 Circuits to compute the powers of 2 using Tables 2.7a , 2.7b , 2.7c , 2.7d , 2.7e , and 2.7f

Table 2.7a Multiplication table when a = 5, b = 1, c = 6

Table 2.7b Multiplication table when a = 5, b = 6, c = 7

Table 2.7c Multiplication table when a = 6, b = 5, c = 2

Table 2.7d Multiplication table when a = 6, b = 1, c = 3

Table 2.7e Multiplication table when a = 7, b = 6, c = 3

Table 2.7f Multiplication table when a = 7, b = 3, c = 2

All these circuits are

shift registers that change their state at each time tick. For instance, for the circuit that computes the powers of 2 using Table

2.5b , the state of the register changes from (

c b a ) to (

a c a +

b ). The register is initialized with 1, stored in the register as (1 0 0) (see Fig.

2.22 ). Observe that, in contrast to what happens when we operate by hand, the leftmost bit is the least significant. The sequence of states is represented in Fig.

2.22 . Converted to decimal, the sequence is 1, 2, 4, 5, 7, 3, 6 in agreement to what we obtained before.

Fig. 2.22 Sequence of states for the circuit on top