Class GenericGF


  • public final class GenericGF
    extends 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).

    Author:
    Sean Owen, David Olivier
    • 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
    • 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()