Main Page | Modules | Namespace List | Class Hierarchy | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages

Modular< int32 > Class Template Reference
[linbox/fieldlinbox/field]

#include <modular-int32.h>

Inheritance diagram for Modular< int32 >:

FieldInterface FieldInterface PIRModular< int32 >

Detailed Description

template<>
class LinBox::Modular< int32 >

template <>

Efficient element operations for dot product, mul, axpy, by using floating point inverse of modulus (borrowed from NTL) and some use of non-normalized intermediate values.

For some uses this is the most efficient field for primes in the range from half word to 2^30.

Requires: Modulus < 2^30. Intended use: 2^15 < prime modulus < 2^30.


Public Types

typedef int32 Element
typedef ModularRandIter< int32RandIter
typedef int32 Element
typedef ModularRandIter< int32RandIter

Public Member Functions

 Modular ()
 Modular (int32 value, int exp=1)
 Modular (const Modular< int32 > &mf)
const Modularoperator= (const Modular< int32 > &F)
integercardinality (integer &c) const
integercharacteristic (integer &c) const
integerconvert (integer &x, const Element &y) const
std::ostream & write (std::ostream &os) const
std::istream & read (std::istream &is)
std::ostream & write (std::ostream &os, const Element &x) const
std::istream & read (std::istream &is, Element &x) const
Elementinit (Element &x, const integer &y) const
Elementinit (Element &x, int y=0) const
Elementinit (Element &x, long y) const
Elementassign (Element &x, const Element &y) const
bool areEqual (const Element &x, const Element &y) const
bool isZero (const Element &x) const
bool isOne (const Element &x) const
Elementadd (Element &x, const Element &y, const Element &z) const
Elementsub (Element &x, const Element &y, const Element &z) const
Elementmul (Element &x, const Element &y, const Element &z) const
Elementdiv (Element &x, const Element &y, const Element &z) const
Elementneg (Element &x, const Element &y) const
Elementinv (Element &x, const Element &y) const
Elementaxpy (Element &r, const Element &a, const Element &x, const Element &y) const
Elementaddin (Element &x, const Element &y) const
Elementsubin (Element &x, const Element &y) const
Elementmulin (Element &x, const Element &y) const
Elementdivin (Element &x, const Element &y) const
Elementnegin (Element &x) const
Elementinvin (Element &x) const
Elementaxpyin (Element &r, const Element &a, const Element &x) const
 Modular ()
 Modular (int32 value, int32 exp=1)
 Modular (const Modular< int32 > &mf)
const Modularoperator= (const Modular< int32 > &F)
integercardinality (integer &c) const
integercharacteristic (integer &c) const
integerconvert (integer &x, const Element &y) const
double & convert (double &x, const Element &y) const
std::ostream & write (std::ostream &os) const
std::istream & read (std::istream &is)
std::ostream & write (std::ostream &os, const Element &x) const
std::istream & read (std::istream &is, Element &x) const
Elementinit (Element &x, const double &y) const
template<class Element1> Elementinit (Element &x, const Element1 &y) const
Elementinit (Element &x, const integer &y) const
Elementinit (Element &x, int y=0) const
Elementinit (Element &x, long y) const
Elementassign (Element &x, const Element &y) const
bool areEqual (const Element &x, const Element &y) const
bool isZero (const Element &x) const
bool isOne (const Element &x) const
Elementadd (Element &x, const Element &y, const Element &z) const
Elementsub (Element &x, const Element &y, const Element &z) const
Elementmul (Element &x, const Element &y, const Element &z) const
Elementdiv (Element &x, const Element &y, const Element &z) const
Elementneg (Element &x, const Element &y) const
Elementinv (Element &x, const Element &y) const
Elementaxpy (Element &r, const Element &a, const Element &x, const Element &y) const
Elementaddin (Element &x, const Element &y) const
Elementsubin (Element &x, const Element &y) const
Elementmulin (Element &x, const Element &y) const
Elementdivin (Element &x, const Element &y) const
Elementnegin (Element &x) const
Elementinvin (Element &x) const
Elementaxpyin (Element &r, const Element &a, const Element &x) const

Static Public Member Functions

int32 getMaxModulus ()

Protected Attributes

int32 modulus
int32 halfmodulus
int32 nhalfmodulus
double modulusinv
int32 _two64

Friends

class FieldAXPY< Modular< int32 > >
class DotProductDomain< Modular< int32 > >
class MVProductDomain< Modular< int32 > >


Member Typedef Documentation

typedef int32 Element
 

Reimplemented in PIRModular< int32 >.

typedef ModularRandIter<int32> RandIter
 

Reimplemented in PIRModular< int32 >.

typedef int32 Element
 

Reimplemented in PIRModular< int32 >.

typedef ModularRandIter<int32> RandIter
 

Reimplemented in PIRModular< int32 >.


Member Function Documentation

Modular  )  [inline]
 

Modular int32  value,
int  exp = 1
[inline]
 

Modular const Modular< int32 > &  mf  )  [inline]
 

const Modular& operator= const Modular< int32 > &  F  )  [inline]
 

integer& cardinality integer c  )  const [inline]
 

integer& characteristic integer c  )  const [inline]
 

integer& convert integer x,
const Element y
const [inline]
 

std::ostream& write std::ostream &  os  )  const [inline]
 

std::istream& read std::istream &  is  )  [inline]
 

std::ostream& write std::ostream &  os,
const Element x
const [inline]
 

std::istream& read std::istream &  is,
Element x
const [inline]
 

Element& init Element x,
const integer y
const [inline]
 

Element& init Element x,
int  y = 0
const [inline]
 

Element& init Element x,
long  y
const [inline]
 

Element& assign Element x,
const Element y
const [inline]
 

bool areEqual const Element x,
const Element y
const [inline]
 

bool isZero const Element x  )  const [inline]
 

bool isOne const Element x  )  const [inline]
 

Element& add Element x,
const Element y,
const Element z
const [inline]
 

Element& sub Element x,
const Element y,
const Element z
const [inline]
 

Element& mul Element x,
const Element y,
const Element z
const [inline]
 

Element& div Element x,
const Element y,
const Element z
const [inline]
 

Reimplemented in PIRModular< int32 >.

Element& neg Element x,
const Element y
const [inline]
 

Element& inv Element x,
const Element y
const [inline]
 

Element& axpy Element r,
const Element a,
const Element x,
const Element y
const [inline]
 

Element& addin Element x,
const Element y
const [inline]
 

Element& subin Element x,
const Element y
const [inline]
 

Element& mulin Element x,
const Element y
const [inline]
 

Element& divin Element x,
const Element y
const [inline]
 

Reimplemented in PIRModular< int32 >.

Element& negin Element x  )  const [inline]
 

Element& invin Element x  )  const [inline]
 

Element& axpyin Element r,
const Element a,
const Element x
const [inline]
 

Modular  )  [inline]
 

Modular int32  value,
int32  exp = 1
[inline]
 

Modular const Modular< int32 > &  mf  )  [inline]
 

const Modular& operator= const Modular< int32 > &  F  )  [inline]
 

integer& cardinality integer c  )  const [inline]
 

integer& characteristic integer c  )  const [inline]
 

integer& convert integer x,
const Element y
const [inline]
 

double& convert double &  x,
const Element y
const [inline]
 

std::ostream& write std::ostream &  os  )  const [inline]
 

std::istream& read std::istream &  is  )  [inline]
 

std::ostream& write std::ostream &  os,
const Element x
const [inline]
 

std::istream& read std::istream &  is,
Element x
const [inline]
 

Element& init Element x,
const double &  y
const [inline]
 

Element& init Element x,
const Element1 &  y
const [inline]
 

Element& init Element x,
const integer y
const [inline]
 

Element& init Element x,
int  y = 0
const [inline]
 

Element& init Element x,
long  y
const [inline]
 

Element& assign Element x,
const Element y
const [inline]
 

bool areEqual const Element x,
const Element y
const [inline]
 

bool isZero const Element x  )  const [inline]
 

bool isOne const Element x  )  const [inline]
 

Element& add Element x,
const Element y,
const Element z
const [inline]
 

Element& sub Element x,
const Element y,
const Element z
const [inline]
 

Element& mul Element x,
const Element y,
const Element z
const [inline]
 

Element& div Element x,
const Element y,
const Element z
const [inline]
 

Reimplemented in PIRModular< int32 >.

Element& neg Element x,
const Element y
const [inline]
 

Element& inv Element x,
const Element y
const [inline]
 

Element& axpy Element r,
const Element a,
const Element x,
const Element y
const [inline]
 

Element& addin Element x,
const Element y
const [inline]
 

Element& subin Element x,
const Element y
const [inline]
 

Element& mulin Element x,
const Element y
const [inline]
 

Element& divin Element x,
const Element y
const [inline]
 

Reimplemented in PIRModular< int32 >.

Element& negin Element x  )  const [inline]
 

Element& invin Element x  )  const [inline]
 

Element& axpyin Element r,
const Element a,
const Element x
const [inline]
 

int32 getMaxModulus  )  [inline, static]
 


Friends And Related Function Documentation

FieldAXPY< Modular< int32 > > [friend]
 

DotProductDomain< Modular< int32 > > [friend]
 

friend class MVProductDomain< Modular< int32 > > [friend]
 


Field Documentation

int32 modulus [protected]
 

int32 halfmodulus [protected]
 

int32 nhalfmodulus [protected]
 

double modulusinv [protected]
 

int32 _two64 [protected]
 


Generated on Fri Jul 8 10:29:52 2005 for linbox by doxygen 1.3.7