linbox
1
|
Ring of elements modulo some power of two. More...
#include <poweroftwomodular.h>
Classes | |
struct | RandIter |
Public Types | |
typedef Ints | Element |
Public Member Functions | |
Object Management | |
PowerOfTwoModular (void) | |
integer & | convert (integer &x, const Element &y) const |
Element & | init (Element &x, const Ints &y=0) const |
Element & | assign (Element &x, const Element &y) const |
integer & | cardinality (integer &c) const |
integer & | characteristic (integer &c) const |
int & | poweroftwo (int &c) |
Arithmetic Operations | |
x <- y op z; x <- op y These operations require all elements, including x, to be initialized before the operation is called. Uninitialized field base elements will give undefined results. | |
bool | areEqual (const Element &x, const Element &y) const |
bool | isZero (const Element &x) const |
bool | isOne (const Element &x) const |
bool | isUnit (const Element &x) const |
bool | isZeroDivisor (const Element &x) const |
Element & | gcd_poweroftwo (Element &x, const Element &y) const |
bool | doesdivide (const Element &x, const Element &y) const |
int | poweroftwoinx (const Element &x) const |
Element & | bezout (const Element &x, const Element &y, Element &gcd, Element &u, Element &v) const |
Element & | add (Element &x, const Element &y, const Element &z) const |
Element & | sub (Element &x, const Element &y, const Element &z) const |
Element & | mul (Element &x, const Element &y, const Element &z) const |
Element & | div (Element &x, const Element &y, const Element &z) const |
Element & | neg (Element &x, const Element &y) const |
Element & | inv (Element &x, const Element &y) const |
Element & | inv2 (Element &x, const Element &y) const |
Element & | axpy (Element &r, const Element &a, const Element &x, const Element &y) const |
Input/Output Operations | |
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 |
Inplace Arithmetic Operations | |
x <- x op y; x <- op x | |
Element & | addin (Element &x, const Element &y) const |
Element & | subin (Element &x, const Element &y) const |
Element & | mulin (Element &x, const Element &y) const |
Element & | divin (Element &x, const Element &y) const |
Element & | negin (Element &x) const |
Element & | invin (Element &x) const |
Element & | axpyin (Element &r, const Element &a, const Element &x) const |
Protected Attributes | |
Element | _poweroftwo |
Private (non-static) element for modulus. |
Ring of elements modulo some power of two.
element | Element type, e.g. long or integer |
Intermediate | Type to use for intermediate computations. This should be a data type that can support integers twice the length of the maximal modulus used |
typedef Ints Element |
Element type
PowerOfTwoModular | ( | void | ) | [inline] |
Default constructor.
Conversion of field base element to a template class T. This function assumes the output field base element x has already been constructed, but that it is not already initialized.
x | template class T to contain output (reference returned). |
y | constant field base element. |
Initialization of field base element from an integer. Behaves like C++ allocator construct. This function assumes the output field base element x has already been constructed, but that it is not already initialized. This is not a specialization of the template function because such a specialization is not allowed inside the class declaration.
x | field base element to contain output (reference returned). |
y | integer. |
Assignment of one field base element to another. This function assumes both field base elements have already been constructed and initialized.
x | field base element (reference returned). |
y | field base element. |
integer& cardinality | ( | integer & | c | ) | const [inline] |
Cardinality. Return integer representing cardinality of the domain. Returns a non-negative integer for all domains with finite cardinality, and returns -1 to signify a domain of infinite cardinality.
integer& characteristic | ( | integer & | c | ) | const [inline] |
Characteristic. Return integer representing characteristic of the domain. Returns a positive integer to all domains with finite characteristic, and returns 0 to signify a domain of infinite characteristic.
int& poweroftwo | ( | int & | c | ) | [inline] |
poweroftwo
Equality of two elements. This function assumes both field base elements have already been constructed and initialized.
x | field base element |
y | field base element |
Zero equality. Test if field base element is equal to zero. This function assumes the field base element has already been constructed and initialized.
x | field base element. |
One equality. Test if field base element is equal to one. This function assumes the field base element has already been constructed and initialized.
x | field base element. |
Element& gcd_poweroftwo | ( | Element & | x, |
const Element & | y | ||
) | const [inline] |
Gcd with 2^_poweroftwo * Valid for Ints up to 32 bits * Specialization is required for bigger Ints
bool doesdivide | ( | const Element & | x, |
const Element & | y | ||
) | const [inline] |
Does x divide y
int poweroftwoinx | ( | const Element & | x | ) | const [inline] |
Power of two in x Input Element x = 2^n*y where y is odd Output n
std::ostream& write | ( | std::ostream & | os | ) | const [inline] |
Print field.
os | output stream to which field is written. |
std::istream& read | ( | std::istream & | is | ) | [inline] |
Read field.
is | input stream from which field is read. |
Print field base element. This function assumes the field base element has already been constructed and initialized.
os | output stream to which field base element is written. |
x | field base element. |
Read field base element. This function assumes the field base element has already been constructed and initialized.
is | input stream from which field base element is read. |
x | field base element. |
Addition. x = y + z This function assumes all the field base elements have already been constructed and initialized.
x | field base element (reference returned). |
y | field base element. |
z | field base element. |
Subtraction. x = y - z This function assumes all the field base elements have already been constructed and initialized.
x | field base element (reference returned). |
y | field base element. |
z | field base element. |
Multiplication. x = y * z This function assumes all the field base elements have already been constructed and initialized.
x | field base element (reference returned). |
y | field base element. |
z | field base element. |
Division. x = y / z This function assumes all the field base elements have already been constructed and initialized. This fonction assumes that x divides y. That can be verified by using doesdivide(x,y)
x | field base element (reference returned). |
y | field base element. |
z | field base element. |
Additive Inverse (Negation). x = - y This function assumes both field base elements have already been constructed and initialized.
x | field base element (reference returned). |
y | field base element. |
Multiplicative Inverse. x = 1 / y This function assumes both field base elements have already been constructed and initialized. This function assumes that y is odd (ie 1/y exists)
x | field base element (reference returned). |
y | field base element. |
Multiplicative Inverse 2. x = 1 / y This function assumes both field base elements have already been constructed and initialized.
x | field base element (reference returned). |
y | field base element. |
Element& axpy | ( | Element & | r, |
const Element & | a, | ||
const Element & | x, | ||
const Element & | y | ||
) | const [inline] |
Natural AXPY. r = a * x + y This function assumes all field elements have already been constructed and initialized.
r | field element (reference returned). |
a | field element. |
x | field element. |
y | field element. |
Inplace Addition. x += y This function assumes both field base elements have already been constructed and initialized.
x | field base element (reference returned). |
y | field base element. |
Inplace Subtraction. x -= y This function assumes both field base elements have already been constructed and initialized.
x | field base element (reference returned). |
y | field base element. |
Inplace Multiplication. x *= y This function assumes both field base elements have already been constructed and initialized.
x | field base element (reference returned). |
y | field base element. |
Inplace Division. x /= y This function assumes both field base elements have already been constructed and initialized.
x | field base element (reference returned). |
y | field base element. |
Inplace Additive Inverse (Inplace Negation). x = - x This function assumes the field base element has already been constructed and initialized.
x | field base element (reference returned). |
Inplace Multiplicative Inverse. x = 1 / x This function assumes the field base elementhas already been constructed and initialized.
x | field base element (reference returned). |
Inplace AXPY. r += a * x This function assumes all field elements have already been constructed and initialized. Purely virtual
r | field element (reference returned). |
a | field element. |
x | field element. |