Public Types |
enum | { size_rep = sizeof(Residu_t)
} |
typedef uint32_t | Residu_t |
typedef uint32_t | Rep |
typedef uint32_t | Element |
typedef GIV_randIter
< Montgomery< Std32 >, Rep > | randIter |
Public Member Functions |
| Montgomery () |
| Montgomery (Residu_t p, int=1) |
| Montgomery (const Montgomery< Std32 > &F) |
int | operator== (const Montgomery< Std32 > &BC) const |
int | operator!= (const Montgomery< Std32 > &BC) const |
Montgomery< Std32 > & | operator= (const Montgomery< Std32 > &F) |
Residu_t | residu () const |
Residu_t | size () const |
Rep | access (const Rep a) const |
Residu_t | characteristic () const |
Residu_t | characteristic (Residu_t p) const |
Residu_t | cardinality () const |
Rep & | init (Rep &a) const |
Rep & | init (Rep &r, const long a) const |
Rep & | init (Rep &r, const unsigned long a) const |
Rep & | init (Rep &a, const int i) const |
Rep & | init (Rep &a, const unsigned int i) const |
Rep & | init (Rep &r, const Integer &residu) const |
Rep & | init (Rep &a, const double i) const |
Rep & | init (Rep &a, const float i) const |
unsigned long int & | convert (unsigned long int &r, const Rep a) const |
uint32_t & | convert (uint32_t &r, const Rep a) const |
int32_t & | convert (int32_t &r, const Rep a) const |
long int & | convert (long int &r, const Rep a) const |
Integer & | convert (Integer &i, const Rep a) const |
float & | convert (float &r, const Rep a) const |
double & | convert (double &r, const Rep a) const |
int | isZero (const Rep a) const |
int | isOne (const Rep a) const |
size_t | length (const Rep a) const |
int | areEqual (const Rep &a, const Rep &b) const |
Rep & | mul (Rep &r, const Rep a, const Rep b) const |
Rep & | div (Rep &r, const Rep a, const Rep b) const |
Rep & | add (Rep &r, const Rep a, const Rep b) const |
Rep & | sub (Rep &r, const Rep a, const Rep b) const |
Rep & | neg (Rep &r, const Rep a) const |
Rep & | inv (Rep &r, const Rep a) const |
Rep & | mulin (Rep &r, const Rep a) const |
Rep & | divin (Rep &r, const Rep a) const |
Rep & | addin (Rep &r, const Rep a) const |
Rep & | subin (Rep &r, const Rep a) const |
Rep & | negin (Rep &r) const |
Rep & | invin (Rep &r) const |
Rep & | axpy (Rep &r, const Rep a, const Rep b, const Rep c) const |
Rep & | axpyin (Rep &r, const Rep a, const Rep b) const |
Rep & | axmy (Rep &r, const Rep a, const Rep b, const Rep c) const |
Rep & | axmyin (Rep &r, const Rep a, const Rep b) const |
Rep & | maxpy (Rep &r, const Rep a, const Rep b, const Rep c) const |
Rep & | maxpyin (Rep &r, const Rep a, const Rep b) const |
Rep & | assign (Rep &r, const Rep a) const |
template<class RandIter > |
Rep & | random (RandIter &, Rep &r) const |
template<class RandIter > |
Rep & | random (RandIter &, Rep &r, long s) const |
template<class RandIter > |
Rep & | random (RandIter &, Rep &r, const Rep &b) const |
template<class RandIter > |
Rep & | nonzerorandom (RandIter &, Rep &r) const |
template<class RandIter > |
Rep & | nonzerorandom (RandIter &, Rep &r, long s) const |
template<class RandIter > |
Rep & | nonzerorandom (RandIter &, Rep &r, const Rep &b) const |
std::istream & | read (std::istream &s) |
std::ostream & | write (std::ostream &s) const |
std::istream & | read (std::istream &s, Rep &a) const |
std::ostream & | write (std::ostream &s, const Rep a) const |
Data Fields |
const Rep | zero |
const Rep | one |
Protected Member Functions |
int32_t & | gcdext (int32_t &d, int32_t &u, int32_t &v, const int32_t a, const int32_t b) const |
int32_t & | invext (int32_t &u, const int32_t a, const int32_t b) const |
int32_t | invext (const int32_t a, const int32_t b) const |
Element & | redc (Element &, const Element) const |
Element | redcal (const Element) const |
Element | redcsal (const Element) const |
Element & | redcin (Element &) const |
Element & | redcs (Element &, const Element) const |
Element & | redcsin (Element &) const |
Static Protected Member Functions |
static void | Init () |
static void | End () |
Protected Attributes |
Residu_t | _p |
Residu_t | _Bp |
Residu_t | _B2p |
Residu_t | _B3p |
Residu_t | _nim |
double | _dp |
template<>
class Givaro::Montgomery< Std32 >
This class implements the standard arithmetic with Modulo Elements.
Reduction is made through Montgomery's reduction. Representation of a is by storing (aB).
- We must have p>2
- We must have
, i.e.
for
.
- Examples:
-
examples/FiniteField/all_field.C, examples/FiniteField/ff_arith.C, and examples/Polynomial/PolynomialCRT.C.