de.flexiprovider.common.math.codingtheory
Class PolynomialRingGF2

java.lang.Object
  |
  +--de.flexiprovider.common.math.codingtheory.PolynomialRingGF2

public final class PolynomialRingGF2
extends java.lang.Object

This class describes operations with polynomials over finite field GF(2), i e polynomial ring R = GF(2)[X]. All operations are defined only for polynomials with degree <=32. For the polynomial representation the map f: R->Z, poly(X)->poly(2) is used, where integers have the binary representation. For example: X^7+X^3+X+1 -> (00...0010001011)=139 Also for polynomials type Integer is used.

Author:
Elena Klintsevich
See Also:
GF2mField

Method Summary
static int add(int p, int q)
          Return sum of two polyomials
static int degree(int p)
          Return the degree of a polynomial
static int degree(long p)
          Return the degree of a polynomial
static int gcd(int p, int q)
          Return the greatest common divisor of two polynomials
static int getIrreduciblePolynomial(int deg)
          Creates irreducible polynomial with degree d
static boolean isIrreducible(int p)
          Checking polynomial for irreducibility
static int modMultiply(int a, int b, int r)
          Compute the product of two polynomials modulo a third polynomial.
static long multiply(int p, int q)
          Return product of two polynomials
static int remainder(int p, int q)
          Return the remainder of a polynomial division of two polynomials.
static int rest(long p, int q)
          Return the rest of devision two polynomials
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

add

public static int add(int p,
                      int q)
Return sum of two polyomials
Parameters:
p - polynomial
q - polynomial
Returns:
p+q

multiply

public static long multiply(int p,
                            int q)
Return product of two polynomials
Parameters:
p - polynomial
q - polynomial
Returns:
p*q

modMultiply

public static int modMultiply(int a,
                              int b,
                              int r)
Compute the product of two polynomials modulo a third polynomial.
Parameters:
a - the first polynomial
b - the second polynomial
r - the reduction polynomial
Returns:
a * b mod r

degree

public static int degree(int p)
Return the degree of a polynomial
Parameters:
p - polynomial p
Returns:
degree(p)

degree

public static int degree(long p)
Return the degree of a polynomial
Parameters:
p - polynomial p
Returns:
degree(p)

remainder

public static int remainder(int p,
                            int q)
Return the remainder of a polynomial division of two polynomials.
Parameters:
p - dividend
q - divisor
Returns:
p mod q

rest

public static int rest(long p,
                       int q)
Return the rest of devision two polynomials
Parameters:
p - polinomial
q - polinomial
Returns:
p mod q

gcd

public static int gcd(int p,
                      int q)
Return the greatest common divisor of two polynomials
Parameters:
p - polinomial
q - polinomial
Returns:
GCD(p,q)

isIrreducible

public static boolean isIrreducible(int p)
Checking polynomial for irreducibility
Parameters:
p - polinomial
Returns:
true if p is irreducible and false otherwise

getIrreduciblePolynomial

public static int getIrreduciblePolynomial(int deg)
Creates irreducible polynomial with degree d
Parameters:
deg - polynomial degree
Returns:
irreducible polynomial p