OPENF4
Library for Gröebner basis computations over finite fields.
 All Classes Namespaces Files Functions Variables Friends Pages
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
F4::ElementGF2Extension< baseType > Class Template Reference

Represent an element of an extension of GF2, this class is a POD (Plain Old Data) because of the alignement required in class Matrix. More...

#include <element-gf2-extension.h>

Public Member Functions

baseType modulo ()
 Set this with a degree lower than MODULO. More...
 
baseType getElement () const
 Return this. More...
 
ElementGF2Extension< baseType > & addMult (ElementGF2Extension< baseType > const &element, ElementGF2Extension< baseType > const &mult)
 Set this+=(mult*element). More...
 
ElementGF2Extension< baseType > & addMultBase2 (ElementGF2Extension< baseType > const &element, ElementGF2Extension< baseType > const &mult)
 Set this+=(mult*element). Use a base of 2. More...
 
ElementGF2Extension< baseType > & addMultBase4 (ElementGF2Extension< baseType > const &element, ElementGF2Extension< baseType > const &mult)
 Set this+=(mult*element). Use a base of 4. More...
 
ElementGF2Extension< baseType > & addMultBase16 (ElementGF2Extension< baseType > const &element, ElementGF2Extension< baseType > const &mult)
 Set this+=(mult*element). Use a base of 16. More...
 
ElementGF2Extension< baseType > & addMultBase256 (ElementGF2Extension< baseType > const &element, ElementGF2Extension< baseType > const &mult)
 Set this+=(mult*element). Use a base of 256. More...
 
ElementGF2Extension< baseType > & inverse ()
 Inverse this according to the base field. More...
 
void printElementGF2Extension (std::ostream &stream) const
 Print the element.
 
bool isZero () const
 Test if this is nul. More...
 
bool isOne () const
 Test if this is one (neutral multiplicative element). More...
 
void setZero ()
 Set the element to zero.
 
void setOne ()
 Set the element to one.
 
ElementGF2Extensionoperator= (baseType const element)
 Overload the operator =. More...
 
ElementGF2Extensionoperator= (std::string element)
 Overload the operator =. More...
 
ElementGF2Extensionoperator*= (ElementGF2Extension const &mult)
 Overload the operator *=. More...
 
ElementGF2ExtensionmultBase2 (ElementGF2Extension const &mult)
 Multiply this by mult using base2 decomposition. More...
 
ElementGF2ExtensionmultBase4 (ElementGF2Extension const &mult)
 Multiply this by mult using base4 decomposition. More...
 
ElementGF2ExtensionmultBase16 (ElementGF2Extension const &mult)
 Multiply this by mult using base16 decomposition. More...
 
ElementGF2ExtensionmultBase256 (ElementGF2Extension const &mult)
 Multiply this by mult using base256 decomposition. More...
 

Static Public Member Functions

static void setModulo (baseType modulo)
 Set the static variable MODULO. More...
 
static void setModulo (std::string modulo)
 Set the static variable MODULO. More...
 
static baseType getModulo ()
 Get the static variable MODULO. More...
 
static void setVariableName (std::string var)
 Set the static variable VARIABLE_NAME. More...
 
static baseType getMask ()
 Get the static variable MASK. More...
 
static baseType getMaskBit ()
 Get the static variable MASK_BIT. More...
 

Public Attributes

baseType _element
 

Static Public Attributes

static baseType MODULO
 
static baseType MASK_BIT
 
static baseType MASK
 
static std::string VARIABLE_NAME
 

Detailed Description

template<typename baseType>
class F4::ElementGF2Extension< baseType >

Represent an element of an extension of GF2, this class is a POD (Plain Old Data) because of the alignement required in class Matrix.

Examples:
tutorial-gf2-extension-method3.cpp.

Definition at line 48 of file element-gf2-extension.h.

Member Function Documentation

template<typename baseType>
ElementGF2Extension<baseType>& F4::ElementGF2Extension< baseType >::addMult ( ElementGF2Extension< baseType > const &  element,
ElementGF2Extension< baseType > const &  mult 
)

Set this+=(mult*element).

Parameters
elementElement of the field GF2[t]/MODULO.
multElement of the field GF2[t]/MODULO.
Precondition
mult has a degree lower than MODULO.
element has a degree lower than MODULO.
Postcondition
this mult has a degree lower than MODULO.
Returns
this.
template<typename baseType>
ElementGF2Extension<baseType>& F4::ElementGF2Extension< baseType >::addMultBase16 ( ElementGF2Extension< baseType > const &  element,
ElementGF2Extension< baseType > const &  mult 
)

Set this+=(mult*element). Use a base of 16.

Parameters
elementElement of the field GF2[t]/MODULO.
multElement of the field GF2[t]/MODULO.
Precondition
mult has a degree lower than MODULO.
element has a degree lower than MODULO.
Postcondition
this mult has a degree lower than MODULO.
Returns
this.
template<typename baseType>
ElementGF2Extension<baseType>& F4::ElementGF2Extension< baseType >::addMultBase2 ( ElementGF2Extension< baseType > const &  element,
ElementGF2Extension< baseType > const &  mult 
)

Set this+=(mult*element). Use a base of 2.

Parameters
elementElement of the field GF2[t]/MODULO.
multElement of the field GF2[t]/MODULO.
Precondition
mult has a degree lower than MODULO.
element has a degree lower than MODULO.
Postcondition
this mult has a degree lower than MODULO.
Returns
this.
template<typename baseType>
ElementGF2Extension<baseType>& F4::ElementGF2Extension< baseType >::addMultBase256 ( ElementGF2Extension< baseType > const &  element,
ElementGF2Extension< baseType > const &  mult 
)

Set this+=(mult*element). Use a base of 256.

Parameters
elementElement of the field GF2[t]/MODULO.
multElement of the field GF2[t]/MODULO.
Precondition
mult has a degree lower than MODULO.
element has a degree lower than MODULO.
Postcondition
this mult has a degree lower than MODULO.
Returns
this.
template<typename baseType>
ElementGF2Extension<baseType>& F4::ElementGF2Extension< baseType >::addMultBase4 ( ElementGF2Extension< baseType > const &  element,
ElementGF2Extension< baseType > const &  mult 
)

Set this+=(mult*element). Use a base of 4.

Parameters
elementElement of the field GF2[t]/MODULO.
multElement of the field GF2[t]/MODULO.
Precondition
mult has a degree lower than MODULO.
element has a degree lower than MODULO.
Postcondition
this mult has a degree lower than MODULO.
Returns
this.
template<typename baseType>
baseType F4::ElementGF2Extension< baseType >::getElement ( ) const

Return this.

Returns
Integer form of this.
template<typename baseType>
static baseType F4::ElementGF2Extension< baseType >::getMask ( )
static

Get the static variable MASK.

Returns
Maximum power of 2 lower than MODULO.
template<typename baseType>
static baseType F4::ElementGF2Extension< baseType >::getMaskBit ( )
static

Get the static variable MASK_BIT.

Returns
Number j such that MASK = 1 << j.
template<typename baseType>
static baseType F4::ElementGF2Extension< baseType >::getModulo ( )
static

Get the static variable MODULO.

Returns
Irreducible polynomial used to construct GF(2^n). MODULO is under bits representation (ex: 0x10011001 = t^7+t^4+t^3+1).
template<typename baseType>
ElementGF2Extension<baseType>& F4::ElementGF2Extension< baseType >::inverse ( )

Inverse this according to the base field.

Precondition
The static variable MODULO must be set beforehand. Beware, baseType must be signed.
Postcondition
this is set in [-MODULO/2, MODULO/2].
Returns
this.
template<typename baseType>
bool F4::ElementGF2Extension< baseType >::isOne ( ) const

Test if this is one (neutral multiplicative element).

Returns
true if this==one.
false otherwise.
template<typename baseType>
bool F4::ElementGF2Extension< baseType >::isZero ( ) const

Test if this is nul.

Returns
true if this==zero.
false otherwise.
template<typename baseType>
baseType F4::ElementGF2Extension< baseType >::modulo ( )

Set this with a degree lower than MODULO.

Postcondition
this with a degree lower than MODULO.
Returns
Integer form of this.
template<typename baseType>
ElementGF2Extension& F4::ElementGF2Extension< baseType >::multBase16 ( ElementGF2Extension< baseType > const &  mult)

Multiply this by mult using base16 decomposition.

Precondition
The static variable MODULO must be set beforehand.
Parameters
elementElement of the field GF2[t]/MODULO.
Precondition
mult has a degree lower than MODULO.
Postcondition
this has a degree lower than MODULO.
Returns
Reference on this.
template<typename baseType>
ElementGF2Extension& F4::ElementGF2Extension< baseType >::multBase2 ( ElementGF2Extension< baseType > const &  mult)

Multiply this by mult using base2 decomposition.

Precondition
The static variable MODULO must be set beforehand.
Parameters
elementElement of the field GF2[t]/MODULO.
Precondition
mult has a degree lower than MODULO.
Postcondition
this has a degree lower than MODULO.
Returns
Reference on this.
template<typename baseType>
ElementGF2Extension& F4::ElementGF2Extension< baseType >::multBase256 ( ElementGF2Extension< baseType > const &  mult)

Multiply this by mult using base256 decomposition.

Precondition
The static variable MODULO must be set beforehand.
Parameters
elementElement of the field GF2[t]/MODULO.
Precondition
mult has a degree lower than MODULO.
Postcondition
this has a degree lower than MODULO.
Returns
Reference on this.
template<typename baseType>
ElementGF2Extension& F4::ElementGF2Extension< baseType >::multBase4 ( ElementGF2Extension< baseType > const &  mult)

Multiply this by mult using base4 decomposition.

Precondition
The static variable MODULO must be set beforehand.
Parameters
elementElement of the field GF2[t]/MODULO.
Precondition
mult has a degree lower than MODULO.
Postcondition
this has a degree lower than MODULO.
Returns
Reference on this.
template<typename baseType>
ElementGF2Extension& F4::ElementGF2Extension< baseType >::operator*= ( ElementGF2Extension< baseType > const &  mult)

Overload the operator *=.

Precondition
The static variable MODULO must be set beforehand.
Parameters
elementElement of the field GF2[t]/MODULO.
Precondition
mult has a degree lower than MODULO.
Postcondition
this has a degree lower than MODULO.
Returns
Reference on this.
template<typename baseType>
ElementGF2Extension& F4::ElementGF2Extension< baseType >::operator= ( baseType const  element)

Overload the operator =.

Parameters
elementElement of GF(2^n) under binary representation.
Returns
Reference on this.
template<typename baseType>
ElementGF2Extension& F4::ElementGF2Extension< baseType >::operator= ( std::string  element)

Overload the operator =.

Precondition
The static variable MODULO must be set beforehand.
Postcondition
this has a degree lower than MODULO.
Parameters
elementElement of GF(2^n) under string representation.
Returns
Reference on this.
template<typename baseType>
static void F4::ElementGF2Extension< baseType >::setModulo ( baseType  modulo)
static

Set the static variable MODULO.

Parameters
moduloIrreducible polynomial used to construct GF(2^n). MODULO is under bits representation (ex: 0x10011001 = t^7+t^4+t^3+1).
template<typename baseType>
static void F4::ElementGF2Extension< baseType >::setModulo ( std::string  modulo)
static

Set the static variable MODULO.

Parameters
moduloIrreducible polynomial used to construct GF(2^n). MODULO is under string representation (ex: "t^7+t^4+t^3+1").
template<typename baseType>
static void F4::ElementGF2Extension< baseType >::setVariableName ( std::string  var)
static

Set the static variable VARIABLE_NAME.

Parameters
varLetter (or string) used to define a polynomial in GF2, default is 't'.

Member Data Documentation

template<typename baseType>
baseType F4::ElementGF2Extension< baseType >::_element

Represent an element of the field GF2[t]/MODULO

Definition at line 274 of file element-gf2-extension.h.

template<typename baseType>
baseType F4::ElementGF2Extension< baseType >::MASK
static

Power of 2 used to test if MODULO must be applied

Definition at line 278 of file element-gf2-extension.h.

template<typename baseType>
baseType F4::ElementGF2Extension< baseType >::MASK_BIT
static

MASK = 1 << MASK_BIT

Definition at line 277 of file element-gf2-extension.h.

template<typename baseType>
baseType F4::ElementGF2Extension< baseType >::MODULO
static

Irreducible polynomial used to construct GF(2^n). MODULO is under bits representation (ex: 0x10011001 = t^7+t^4+t^3+1).

Definition at line 276 of file element-gf2-extension.h.

template<typename baseType>
std::string F4::ElementGF2Extension< baseType >::VARIABLE_NAME
static

Letter (or string) used to define a polynomial in GF2, default is 't'.

Definition at line 279 of file element-gf2-extension.h.


The documentation for this class was generated from the following file: