1 | initial version |
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?