com.google.zxing.common.reedsolomon

## 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).

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static GenericGF` | `AZTEC_DATA_10`
    `static GenericGF` | `AZTEC_DATA_12`
    `static GenericGF` | `AZTEC_DATA_6`
    `static GenericGF` | `AZTEC_DATA_8`
    `static GenericGF` | `AZTEC_PARAM`
    `static GenericGF` | `DATA_MATRIX_FIELD_256`
    `static GenericGF` | `MAXICODE_FIELD_64`
    `static GenericGF` | `QR_CODE_FIELD_256`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GenericGF(int primitive, int size, int b)` Create a representation of GF(size) using the given primitive polynomial.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `(package private) static int` | `addOrSubtract(int a, int b)` Implements both addition and subtraction -- they are the same in GF(size).
    `(package private) GenericGFPoly` | `buildMonomial(int degree, int coefficient)`
    `(package private) int` | `exp(int a)`
    `int` | `getGeneratorBase()`
    `(package private) GenericGFPoly` | `getOne()`
    `int` | `getSize()`
    `(package private) GenericGFPoly` | `getZero()`
    `(package private) int` | `inverse(int a)`
    `(package private) int` | `log(int a)`
    `(package private) int` | `multiply(int a, int b)`
    `String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### AZTEC_DATA_10

          public static final GenericGF AZTEC_DATA_10

    - #### AZTEC_DATA_12

          public static final GenericGF AZTEC_DATA_12

    - #### AZTEC_DATA_6

          public static final GenericGF AZTEC_DATA_6

    - #### AZTEC_DATA_8

          public static final GenericGF AZTEC_DATA_8

    - #### AZTEC_PARAM

          public static final GenericGF AZTEC_PARAM

    - #### DATA_MATRIX_FIELD_256

          public static final GenericGF DATA_MATRIX_FIELD_256

    - #### MAXICODE_FIELD_64

          public static final GenericGF MAXICODE_FIELD_64

    - #### QR_CODE_FIELD_256

          public static final GenericGF QR_CODE_FIELD_256

  - ### 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

    - #### 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

    - #### buildMonomial

          GenericGFPoly buildMonomial(int degree,
                                      int coefficient)

      Returns:
        the monomial representing coefficient * x^degree

    - #### exp

          int exp(int a)

      Returns:
        2 to the power of a in GF(size)

    - #### getGeneratorBase

          public int getGeneratorBase()

    - #### getOne

          GenericGFPoly getOne()

    - #### getSize

          public int getSize()

    - #### getZero

          GenericGFPoly getZero()

    - #### inverse

          int inverse(int a)

      Returns:
        multiplicative inverse of a

    - #### log

          int log(int a)

      Returns:
        base 2 log of a in GF(size)

    - #### multiply

          int multiply(int a,
                       int b)

      Returns:
        product of a and b in GF(size)

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`