linbox
|
Fast arithmetic mod 2^32, including gcd. More...
#include <local2_32.h>
Inherits UnparametricField< uint32_t >.
Public Types | |
Common Object Interface for a LinBox Field. | |
These methods and member types are required of all LinBox fields. See FieldArchetype for detailed specifications. | |
typedef UnparametricRandIter< K > | RandIter |
Type of random field element generators. | |
Public Member Functions | |
Field Object Basics. | |
Element & | inv (Element &x, const Element &y) const |
c := characteristic of this field (zero or prime). | |
Element & | invin (Element &x) const |
c := characteristic of this field (zero or prime). | |
std::ostream & | write (std::ostream &os) const |
c := characteristic of this field (zero or prime). | |
std::ostream & | write (std::ostream &os, const Element &p) const |
c := characteristic of this field (zero or prime). | |
bool | isZero (const Element &x) const |
c := characteristic of this field (zero or prime). | |
bool | isOne (const Element &x) const |
c := characteristic of this field (zero or prime). | |
long unsigned int | characteristic (long unsigned int &p) const |
c := characteristic of this field (zero or prime). | |
long unsigned int | characteristic () const |
c := characteristic of this field (zero or prime). | |
integer & | characteristic (integer &c) const |
c := characteristic of this field (zero or prime). | |
long unsigned int | cardinality () const |
c := characteristic of this field (zero or prime). | |
integer & | cardinality (integer &c) const |
c := cardinality of this field (-1 if infinite). | |
template<typename Src > | |
Element & | init (Element &x, const Src &s) const |
c := characteristic of this field (zero or prime). | |
Element & | init (Element &x) const |
c := characteristic of this field (zero or prime). | |
std::istream & | read (std::istream &is, Element &x) const |
c := characteristic of this field (zero or prime). | |
std::istream & | read (std::istream &is) const |
c := characteristic of this field (zero or prime). | |
template<typename T > | |
T & | convert (T &x, const Element &y) const |
c := characteristic of this field (zero or prime). | |
Implementation-Specific Methods. | |
These methods are not required of all LinBox fields and are included only for the implementation of this field template. | |
const K & | operator() (void) const |
Constant access operator. | |
K & | operator() (void) |
Access operator. | |
Static Protected Member Functions | |
static Element & | HGCD (Element &g, Element &s, const Element &a, const Element &b) |
Half GCD g = gcd (a, b). |
Fast arithmetic mod 2^32, including gcd.
Extend UnparametricField<uint32_t> which is a representation of Z_2^32. It is especially fast because it uses hardware arithmetic directly. This ring is a Local Principal Ideal Ring.
These needed PIR functions are added: gcdin(), isUnit(), also inv() is modified to work correctly. The type Exponent is added: more effective rep of the powers of 2, which are important because gcds are powers of 2). This entails some new versions of divin(), mulin(), isUnit().
Those are the function needed for the LocalSmith algorithm. Further appropriate PIR functions may be added later.
static Element& HGCD | ( | Element & | g, |
Element & | s, | ||
const Element & | a, | ||
const Element & | b | ||
) | [inline, static, protected] |
Half GCD g = gcd (a, b).
exists t, such that: s * a + t * b = g. return g.
const K& operator() | ( | void | ) | const [inline, inherited] |
Constant access operator.
K& operator() | ( | void | ) | [inline, inherited] |
Access operator.