Class GenericGF

java.lang.Object
com.google.zxing.common.reedsolomon.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 Details

  • Constructor Details

    • 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 Details

    • getZero

      GenericGFPoly getZero()
    • getOne

      GenericGFPoly getOne()
    • 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 String toString()
      Overrides:
      toString in class Object