GaloisField`Private`ad = AdditionGF27 GaloisField`Private`mlt = MultipleGF27 GaloisField`Private`pow = PowerGF27 GaloisField`Private`vQ = VGF27Q GaloisField`Private`cQ = ConGF27Q GaloisField`Private`alvQ = AlVGF27Q BaseField[GF27] ^= GF3 Characteristic[GF27] ^= 3 ExtensionDegree[GF27] ^= 3 GFElements[GF27] ^= {0, 1, 3, 9, 5, 15, 23, 13, 17, 20, 4, 12, 14, 11, 2, 6, 18, 7, 21, 16, 26, 22, 10, 8, 24, 25, 19} GFExponents[GF27] ^= {DirectedInfinity[1], 0, 13, 1, 9, 3, 14, 16, 22, 2, 21, 12, 10, 6, 11, 4, 18, 7, 15, 25, 8, 17, 20, 5, 23, 24, 19} IrreduciblePolynomial[GF27] ^= {1, 2, 0, 1} Order[GF27] ^= 27 Sqrt[GF27[0]] ^:= GF27[0] Sqrt[GF27[1]] ^:= GF27[1] Sqrt[GF27[GaloisField`Private`y$_Integer]] ^:= Block[{GaloisField`Private`a, GaloisField`Private`b}, GaloisField`Private`a = GFExponents[GF27][[GaloisField`Private`y$ + 1]]; If[OddQ[GaloisField`Private`a], GaloisField`Private`b = (GaloisField`Private`a + Order[GF27] - 1)/2; Return[GF27[GFElements[GF27][[GaloisField`Private`b + 2]]]], Return[GF27[GFElements[GF27][[GaloisField`Private`a/2 + 2]]]]]] /; Characteristic[GF27] == 2 Sqrt[GF27[GaloisField`Private`y$_Integer]] ^:= GF27[GFElements[GF27][[GFExponents[GF27][[GaloisField`Private`y$ + 1]]/2 + 2]]] /; EvenQ[GFExponents[GF27][[GaloisField`Private`y$ + 1]]] Attributes[GaloisField`Private`y$] = {Temporary} GaloisField`Private`addi = AdditionGF27 AdditionGF27[GaloisField`Private`x$_Integer, GaloisField`Private`y$_Integer] := Block[{GaloisField`Private`lstab}, GaloisField`Private`lstab = Mod[IntegerDigits[GaloisField`Private`y$, 3, 3] + IntegerDigits[GaloisField`Private`x$, 3, 3], 3]; Return[ChToDecimal[GaloisField`Private`lstab, 3]]; Null] Attributes[GaloisField`Private`x$] = {Temporary} GaloisField`Private`multi = MultipleGF27 MultipleGF27[GaloisField`Private`y$_Integer, GaloisField`Private`z$_Integer] := GFElements[GF27][[Mod[GFExponents[GF27][[GaloisField`Private`y$ + 1]] + GFExponents[GF27][[GaloisField`Private`z$ + 1]], Order[GF27] - 1] + 2]] Attributes[GaloisField`Private`z$] = {Temporary} GaloisField`Private`pwe = PowerGF27 PowerGF27[GaloisField`Private`x$_Integer, GaloisField`Private`y$_Integer] := GFElements[GF27][[Mod[GFExponents[GF27][[GaloisField`Private`x$ + 1]]* GaloisField`Private`y$, Order[GF27] - 1] + 2]]