# The multiplication and addition tables are derived from # a Galois field order(2^3), from (0, 1, a, a^2, ... a^6) # where a^3 = a + 1. # # multiply # 0 1 a a^2 a^3 a^4 a^5 a^6 # ------------------------------------------------------ # 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | # |------------------------------------------------ # 1 | 0 | 1 | a | a^2 | a^3 | a^4 | a^5 | a^6 | # |------------------------------------------------ # a | 0 | a | a^2 | a^3 | a^4 | a^5 | a^6 | 1 | # |------------------------------------------------ # a^2| 0 | a^2 | a^3 | a^4 | a^5 | a^6 | 1 | a | # |------------------------------------------------ # a^3| 0 | a^3 | a^4 | a^5 | a^6 | 1 | a | a^2 | # |------------------------------------------------ # a^4| 0 | a^4 | a^5 | a^6 | 1 | a | a^2 | a^3 | # |------------------------------------------------ # a^5| 0 | a^5 | a^6 | 1 | a | a^2 | a^3 | a^4 | # |------------------------------------------------ # a^6| 0 | a^6 | 1 | a | a^2 | a^3 | a^4 | a^5 | # |------------------------------------------------ # # add # # 0 1 a a^2 a^3 a^4 a^5 a^6 # ------------------------------------------------------ # 0 | 0 | 1 | a | a^2 | a^3 | a^4 | a^5 | a^6 | # |------------------------------------------------ # 1 | 1 | 0 | a^3 | a^6 | a | a^5 | a^4 | a^2 | # |------------------------------------------------ # a | a | a^3 | 0 | a^4 | 1 | a^2 | a^6 | a^5 | # |------------------------------------------------ # a^2| a^2 | a^6 | a^4 | 0 | a^5 | a | a^3 | 1 | # |------------------------------------------------ # a^3| a^3 | a | 1 | a^5 | 0 | a^6 | a^2 | a^4 | # |------------------------------------------------ # a^4| a^4 | a^5 | a^2 | a | a^6 | 0 | 1 | a^3 | # |------------------------------------------------ # a^5| a^5 | a^4 | a^6 | a^3 | a^2 | 1 | 0 | a | # |------------------------------------------------ # a^6| a^6 | a^2 | a^5 | 1 | a^4 | a^3 | a | 0 | # |------------------------------------------------ BEGIN { @Field8::mtable = ( [0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 2, 3, 4, 5, 6, 7], [0, 2, 3, 4, 5, 6, 7, 1], [0, 3, 4, 5, 6, 7, 1, 2], [0, 4, 5, 6, 7, 1, 2, 3], [0, 5, 6, 7, 1, 2, 3, 4], [0, 6, 7, 1, 2, 3, 4, 5], [0, 7, 1, 2, 3, 4, 5, 6] ); @Field8::atable = ( [0, 1, 2, 3, 4, 5, 6, 7], [1, 0, 4, 7, 2, 6, 5, 3], [2, 4, 0, 5, 1, 3, 7, 6], [3, 7, 5, 0, 6, 2, 4, 1], [4, 2, 1, 6, 0, 7, 3, 5], [5, 6, 3, 2, 7, 0, 1, 4], [6, 5, 7, 4, 3, 1, 0, 2], [7, 3, 6, 1, 5, 4, 2, 0] ); }