linbox
1
|
Fast arithmetic mod 2^32, including gcd. More...
#include <local2_32.h>
Inherits UnparametricField< K >.
Static Protected Member Functions | |
static Element & | HGCD (Element &g, Element &s, const Element &a, const Element &b) |
Half GCD g = gcd (a, b). exists t, such that: s * a + t * b = g. return g. |
Additional Inherited Members | |
![]() | |
typedef K | Element |
typedef UnparametricRandIter< K > | RandIter |
Type of random field element generators. | |
![]() | |
template<> | |
NTL::zz_p & | init (NTL::zz_p &x, const integer &y) const |
template<> | |
integer & | convert (integer &x, const NTL::zz_p &y) const |
template<> | |
integer & | cardinality (integer &c) const |
template<> | |
integer & | characteristic (integer &c) const |
template<> | |
NTL::zz_p & | inv (NTL::zz_p &x, const NTL::zz_p &y) const |
template<> | |
bool | isZero (const NTL::zz_p &x) const |
template<> | |
bool | isOne (const NTL::zz_p &x) const |
template<> | |
NTL::zz_p & | invin (NTL::zz_p &x) const |
template<> | |
std::ostream & | write (std::ostream &os) const |
template<> | |
std::ostream & | write (std::ostream &os) const |
template<> | |
std::ostream & | write (std::ostream &os) const |
UnparametricField (integer q=0, size_t e=1) | |
UnparametricField (const UnparametricField &F) | |
construct this field as copy of F. | |
~UnparametricField () | |
const UnparametricField & | operator= (const UnparametricField &F) const |
Element & | init (Element &x, const integer &y=0) const |
x := y. Caution: it is via cast to long. Good candidate for specialization. | |
integer & | convert (integer &x, const Element &y) const |
x := y. Caution: it is via cast to long. Good candidate for specialization. | |
double & | convert (double &x, const Element &y) const |
x := y. Caution: it is via cast to long. Good candidate for specialization. –dpritcha | |
Element & | assign (Element &x, const Element &y) const |
integer & | cardinality (integer &c) const |
c := cardinality of this field (-1 if infinite). | |
integer & | characteristic (integer &c) const |
c := characteristic of this field (zero or prime). | |
bool | areEqual (const Element &x, const Element &y) const |
x == y | |
bool | isZero (const Element &x) const |
x == 0 | |
bool | isOne (const Element &x) const |
x == 1 | |
Element & | add (Element &x, const Element &y, const Element &z) const |
x := y + z | |
Element & | sub (Element &x, const Element &y, const Element &z) const |
x := y - z | |
Element & | mul (Element &x, const Element &y, const Element &z) const |
x := y*z | |
Element & | div (Element &x, const Element &y, const Element &z) const |
x := y/z | |
Element & | neg (Element &x, const Element &y) const |
x := -y | |
Element & | inv (Element &x, const Element &y) const |
x := 1/y | |
Element & | axpy (Element &z, const Element &a, const Element &x, const Element &y) const |
z := a*x + y | |
Element & | addin (Element &x, const Element &y) const |
x := x + y | |
Element & | subin (Element &x, const Element &y) const |
x := x - y | |
Element & | mulin (Element &x, const Element &y) const |
x := x*y | |
Element & | divin (Element &x, const Element &y) const |
x := x/y | |
Element & | negin (Element &x) const |
x := -x | |
Element & | invin (Element &x) const |
x := 1/x | |
Element & | axpyin (Element &y, const Element &a, const Element &x) const |
y := a*x + y | |
std::ostream & | write (std::ostream &os) const |
std::istream & | read (std::istream &is) const |
std::ostream & | write (std::ostream &os, const Element &x) const |
std::istream & | read (std::istream &is, Element &x) const |
UnparametricField (const K &A) | |
Default constructor. | |
const K & | operator() (void) const |
K & | operator() (void) |
template<> | |
NTL::RR & | init (NTL::RR &x, const integer &y) const |
template<> | |
integer & | convert (integer &x, const NTL::RR &y) const |
template<> | |
NTL::RR & | inv (NTL::RR &x, const NTL::RR &y) const |
template<> | |
bool | isZero (const NTL::RR &x) const |
template<> | |
bool | isOne (const NTL::RR &x) const |
template<> | |
NTL::RR & | invin (NTL::RR &x) const |
template<> | |
std::ostream & | write (std::ostream &os) const |
template<> | |
UnparametricField (integer q, size_t e) | |
template<> | |
NTL::ZZ_p & | init (NTL::ZZ_p &x, const integer &y) const |
template<> | |
integer & | convert (integer &x, const NTL::ZZ_p &y) const |
template<> | |
integer & | cardinality (integer &c) const |
template<> | |
integer & | characteristic (integer &c) const |
template<> | |
NTL::ZZ_p & | inv (NTL::ZZ_p &x, const NTL::ZZ_p &y) const |
template<> | |
bool | isZero (const NTL::ZZ_p &x) const |
template<> | |
bool | isOne (const NTL::ZZ_p &x) const |
template<> | |
NTL::ZZ_p & | invin (NTL::ZZ_p &x) const |
template<> | |
std::ostream & | write (std::ostream &os) const |
Fast arithmetic mod 2^32, including gcd.
Extend UnparametricField<uint32> 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.