# Revision history [back]

The following code is doing the job. (I hope the formula was retyped in an equivalent manner. For instance, (y/x)^(1/2) was replaced for our purposes by (y/x)^4 .)

F8 = GF(8)
F2 = GF(2)

def f( x, y, field=F8, d=3 ):

if x == field(0):    y_by_x = field(0)
else            :    y_by_x = y / x

return d^2 * ( y * ( y_by_x^3 + 1 ) + ( 1 + d + d^2 ) * y_by_x * ( y_by_x + 1 ) ) \
/ \
( y_by_x^4 + d^2 * y_by_x^2 + 1 ) \
+ \
y_by_x^4

print matrix( F2, 8, 8, [ [ f( x, y, F8, 3 ).trace() for y in F8 ] for x in F8 ] )


We get:

[0 0 0 1 0 1 1 1]
[0 1 1 1 0 0 1 0]
[0 0 1 0 1 1 1 0]
[0 0 1 1 0 0 1 1]
[0 1 0 1 1 1 0 0]
[0 1 0 1 0 1 0 1]
[0 0 0 0 1 1 1 1]
[0 1 1 0 1 0 0 1]


N.B. Which is the meaning of the above result?