| 
    Crypto++ 8.9
    
   Free C++ class library of cryptographic schemes 
   | 
 
Polynomial with Coefficients in GF(2) More...
#include <gf2n.h>
Classes | |
| class | DivideByZero | 
| Exception thrown when divide by zero is encountered.  More... | |
ENUMS, EXCEPTIONS, and TYPEDEFS | |
| typedef unsigned int | RandomizationParameter | 
INPUT/OUTPUT | |
| class | GF2NT | 
| class | GF2NT233 | 
| std::ostream & | operator<< (std::ostream &out, const PolynomialMod2 &a) | 
CREATORS | |
| PolynomialMod2 () | |
| Construct the zero polynomial.  | |
| PolynomialMod2 (const PolynomialMod2 &t) | |
| Copy construct a PolynomialMod2.  | |
| PolynomialMod2 (word value, size_t bitLength=WORD_BITS) | |
| Construct a PolynomialMod2 from a word.   | |
| PolynomialMod2 (const byte *encodedPoly, size_t byteCount) | |
| Construct a PolynomialMod2 from big-endian byte array.   | |
| PolynomialMod2 (BufferedTransformation &encodedPoly, size_t byteCount) | |
| Construct a PolynomialMod2 from big-endian form stored in a BufferedTransformation.   | |
| PolynomialMod2 (RandomNumberGenerator &rng, size_t bitcount) | |
| Create a uniformly distributed random polynomial.   | |
| static PolynomialMod2 | Monomial (size_t i) | 
| Provides x^i.   | |
| static PolynomialMod2 | Trinomial (size_t t0, size_t t1, size_t t2) | 
| Provides x^t0 + x^t1 + x^t2.   | |
| static PolynomialMod2 | Pentanomial (size_t t0, size_t t1, size_t t2, size_t t3, size_t t4) | 
| Provides x^t0 + x^t1 + x^t2 + x^t3 + x^t4.   | |
| static PolynomialMod2 | AllOnes (size_t n) | 
| Provides x^(n-1) + ... + x + 1.   | |
| static const PolynomialMod2 & | Zero () | 
| The Zero polinomial.   | |
| static const PolynomialMod2 & | One () | 
| The One polinomial.   | |
ENCODE/DECODE | |
| unsigned int | MinEncodedSize () const | 
| minimum number of bytes to encode this polynomial   | |
| void | Encode (byte *output, size_t outputLen) const | 
| encode in big-endian format   | |
| void | Encode (BufferedTransformation &bt, size_t outputLen) const | 
| void | Decode (const byte *input, size_t inputLen) | 
| void | Decode (BufferedTransformation &bt, size_t inputLen) | 
| void | DEREncodeAsOctetString (BufferedTransformation &bt, size_t length) const | 
| encode value as big-endian octet string  | |
| void | BERDecodeAsOctetString (BufferedTransformation &bt, size_t length) | 
| decode value as big-endian octet string  | |
ACCESSORS | |
| unsigned int | BitCount () const | 
| number of significant bits = Degree() + 1  | |
| unsigned int | ByteCount () const | 
| number of significant bytes = ceiling(BitCount()/8)  | |
| unsigned int | WordCount () const | 
| number of significant words = ceiling(ByteCount()/sizeof(word))  | |
| bool | GetBit (size_t n) const | 
| return the n-th bit, n=0 being the least significant bit   | |
| byte | GetByte (size_t n) const | 
| return the n-th byte  | |
| signed int | Degree () const | 
| the zero polynomial will return a degree of -1   | |
| unsigned int | CoefficientCount () const | 
| degree + 1   | |
| int | GetCoefficient (size_t i) const | 
| return coefficient for x^i   | |
| int | operator[] (unsigned int i) const | 
| return coefficient for x^i   | |
| bool | IsZero () const | 
| bool | Equals (const PolynomialMod2 &rhs) const | 
MANIPULATORS | |
| PolynomialMod2 & | operator= (const PolynomialMod2 &t) | 
| PolynomialMod2 & | operator&= (const PolynomialMod2 &t) | 
| PolynomialMod2 & | operator^= (const PolynomialMod2 &t) | 
| PolynomialMod2 & | operator+= (const PolynomialMod2 &t) | 
| PolynomialMod2 & | operator-= (const PolynomialMod2 &t) | 
| PolynomialMod2 & | operator*= (const PolynomialMod2 &t) | 
| PolynomialMod2 & | operator/= (const PolynomialMod2 &t) | 
| PolynomialMod2 & | operator%= (const PolynomialMod2 &t) | 
| PolynomialMod2 & | operator<<= (unsigned int) | 
| PolynomialMod2 & | operator>>= (unsigned int) | 
| void | Randomize (RandomNumberGenerator &rng, size_t bitcount) | 
| void | SetBit (size_t i, int value=1) | 
| void | SetByte (size_t n, byte value) | 
| set the n-th byte to value  | |
| void | SetCoefficient (size_t i, int value) | 
| void | swap (PolynomialMod2 &a) | 
UNARY OPERATORS | |
| bool | operator! () const | 
| PolynomialMod2 | operator+ () const | 
| PolynomialMod2 | operator- () const | 
BINARY OPERATORS | |
| PolynomialMod2 | And (const PolynomialMod2 &b) const | 
| PolynomialMod2 | Xor (const PolynomialMod2 &b) const | 
| PolynomialMod2 | Plus (const PolynomialMod2 &b) const | 
| PolynomialMod2 | Minus (const PolynomialMod2 &b) const | 
| PolynomialMod2 | Times (const PolynomialMod2 &b) const | 
| PolynomialMod2 | DividedBy (const PolynomialMod2 &b) const | 
| PolynomialMod2 | Modulo (const PolynomialMod2 &b) const | 
| PolynomialMod2 | operator>> (unsigned int n) const | 
| PolynomialMod2 | operator<< (unsigned int n) const | 
OTHER ARITHMETIC FUNCTIONS | |
| unsigned int | Parity () const | 
| sum modulo 2 of all coefficients  | |
| bool | IsIrreducible () const | 
| check for irreducibility  | |
| PolynomialMod2 | Doubled () const | 
| is always zero since we're working modulo 2   | |
| PolynomialMod2 | Squared () const | 
| bool | IsUnit () const | 
| only 1 is a unit   | |
| PolynomialMod2 | MultiplicativeInverse () const | 
| return inverse if *this is a unit, otherwise return 0   | |
| PolynomialMod2 | InverseMod (const PolynomialMod2 &) const | 
| calculate multiplicative inverse of *this mod n  | |
| static PolynomialMod2 | Gcd (const PolynomialMod2 &a, const PolynomialMod2 &n) | 
| greatest common divisor  | |
| static void | Divide (PolynomialMod2 &r, PolynomialMod2 &q, const PolynomialMod2 &a, const PolynomialMod2 &d) | 
| calculate r and q such that (a == d*q + r) && (deg(r) < deg(d))  | |
Construct a PolynomialMod2 from a word.
value should be encoded with the least significant bit as coefficient to x^0 and most significant bit as coefficient to x^(WORD_BITS-1) bitLength denotes how much memory to allocate initially
      
  | 
  inline | 
Construct a PolynomialMod2 from big-endian byte array.
      
  | 
  inline | 
Construct a PolynomialMod2 from big-endian form stored in a BufferedTransformation.
      
  | 
  inline | 
      
  | 
  static | 
Provides x^i.
      
  | 
  static | 
Provides x^t0 + x^t1 + x^t2.
t0 > t1 > t2.
      
  | 
  static | 
Provides x^t0 + x^t1 + x^t2 + x^t3 + x^t4.
t0 > t1 > t2 > t3 > t4.
      
  | 
  static | 
Provides x^(n-1) + ... + x + 1.
      
  | 
  static | 
The Zero polinomial.
      
  | 
  static | 
The One polinomial.
      
  | 
  inline | 
| void PolynomialMod2::Encode | ( | byte * | output, | 
| size_t | outputLen | ||
| ) | const | 
encode in big-endian format
if outputLen < MinEncodedSize, the most significant bytes will be dropped if outputLen > MinEncodedSize, the most significant bytes will be padded
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline |