Class GenericGF


  • public final class GenericGF
    extends java.lang.Object

    This class contains utility methods for performing mathematical operations over the Galois Fields. Operations use a given primitive polynomial in calculations.

    Throughout this package, elements of the GF are represented as an int for convenience and speed (but at the cost of memory).

    The size of the GF is assumed to be a power of two.

    • Field Detail

      • AZTEC_DATA_12

        public static final GenericGF AZTEC_DATA_12
      • AZTEC_DATA_10

        public static final GenericGF AZTEC_DATA_10
      • AZTEC_DATA_6

        public static final GenericGF AZTEC_DATA_6
      • AZTEC_PARAM

        public static final GenericGF AZTEC_PARAM
      • QR_CODE_FIELD_256

        public static final GenericGF QR_CODE_FIELD_256
      • DATA_MATRIX_FIELD_256

        public static final GenericGF DATA_MATRIX_FIELD_256
      • AZTEC_DATA_8

        public static final GenericGF AZTEC_DATA_8
      • MAXICODE_FIELD_64

        public static final GenericGF MAXICODE_FIELD_64
      • expTable

        private final int[] expTable
      • logTable

        private final int[] logTable
      • size

        private final int size
      • primitive

        private final int primitive
      • generatorBase

        private final int generatorBase
    • Constructor Detail

      • GenericGF

        public GenericGF​(int primitive,
                         int size,
                         int b)
        Create a representation of GF(size) using the given primitive polynomial.
        Parameters:
        primitive - irreducible polynomial whose coefficients are represented by the bits of an int, where the least-significant bit represents the constant coefficient
        size - the size of the field
        b - the factor b in the generator polynomial can be 0- or 1-based (g(x) = (x+a^b)(x+a^(b+1))...(x+a^(b+2t-1))). In most cases it should be 1, but for QR code it is 0.
    • Method Detail

      • buildMonomial

        GenericGFPoly buildMonomial​(int degree,
                                    int coefficient)
        Returns:
        the monomial representing coefficient * x^degree
      • addOrSubtract

        static int addOrSubtract​(int a,
                                 int b)
        Implements both addition and subtraction -- they are the same in GF(size).
        Returns:
        sum/difference of a and b
      • exp

        int exp​(int a)
        Returns:
        2 to the power of a in GF(size)
      • log

        int log​(int a)
        Returns:
        base 2 log of a in GF(size)
      • inverse

        int inverse​(int a)
        Returns:
        multiplicative inverse of a
      • multiply

        int multiply​(int a,
                     int b)
        Returns:
        product of a and b in GF(size)
      • getSize

        public int getSize()
      • getGeneratorBase

        public int getGeneratorBase()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object