linbox
|
field base class. More...
#include <abstract.h>
Public Types | |
typedef ElementAbstract | Element |
element type. | |
typedef RandIterAbstract | RandIter |
Random iterator generator type. | |
Public Member Functions | |
Object Management | |
There are no public constructors for this class. It should only be used in tandem with FieldArchetype. | |
virtual | ~FieldAbstract (void) |
Destructor. More... | |
virtual FieldAbstract * | clone () const =0 |
Virtual copy constructor. More... | |
virtual FieldAbstract & | operator= (const FieldAbstract &F)=0 |
Assignment operator. More... | |
virtual Element & | init (Element &x, const integer &y) const =0 |
Initialization of field element from an integer. More... | |
virtual integer & | convert (integer &x, const Element &y) const =0 |
Conversion of field element to an integer. More... | |
virtual Element & | assign (Element &x, const Element &y) const =0 |
Assignment of one field element to another. More... | |
virtual integer & | cardinality (integer &c) const =0 |
Cardinality. More... | |
virtual integer & | characteristic (integer &c) const =0 |
Characteristic. More... | |
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 elements will give undefined results. | |
virtual bool | areEqual (const Element &x, const Element &y) const =0 |
Equality of two elements. More... | |
virtual Element & | add (Element &x, const Element &y, const Element &z) const =0 |
Addition. More... | |
virtual Element & | sub (Element &x, const Element &y, const Element &z) const =0 |
Subtraction. More... | |
virtual Element & | mul (Element &x, const Element &y, const Element &z) const =0 |
Multiplication. More... | |
virtual Element & | div (Element &x, const Element &y, const Element &z) const =0 |
Division. More... | |
virtual Element & | neg (Element &x, const Element &y) const =0 |
Additive Inverse (Negation). More... | |
virtual Element & | inv (Element &x, const Element &y) const =0 |
Multiplicative Inverse. More... | |
virtual Element & | axpy (Element &r, const Element &a, const Element &x, const Element &y) const =0 |
Natural AXPY. More... | |
Inplace Arithmetic Operations | |
x <- x op y; x <- op x | |
virtual bool | isZero (const Element &x) const =0 |
Zero equality. More... | |
virtual bool | isOne (const Element &x) const =0 |
One equality. More... | |
virtual Element & | addin (Element &x, const Element &y) const =0 |
Inplace Addition. More... | |
virtual Element & | subin (Element &x, const Element &y) const =0 |
Inplace Subtraction. More... | |
virtual Element & | mulin (Element &x, const Element &y) const =0 |
Inplace Multiplication. More... | |
virtual Element & | divin (Element &x, const Element &y) const =0 |
Inplace Division. More... | |
virtual Element & | negin (Element &x) const =0 |
Inplace Additive Inverse (Inplace Negation). More... | |
virtual Element & | invin (Element &x) const =0 |
Inplace Multiplicative Inverse. More... | |
virtual Element & | axpyin (Element &r, const Element &a, const Element &x) const =0 |
Inplace AXPY. More... | |
Input/Output Operations | |
virtual std::ostream & | write (std::ostream &os) const =0 |
Print field. More... | |
virtual std::istream & | read (std::istream &is)=0 |
Read field. More... | |
virtual std::ostream & | write (std::ostream &os, const Element &x) const =0 |
Print field element. More... | |
virtual std::istream & | read (std::istream &is, Element &x) const =0 |
Read field element. More... | |
Protected Member Functions | |
FieldAbstract () | |
Default Constructor. More... | |
Friends | |
class | FieldArchetype |
FieldArchetype is friend. | |
field base class.
Found in the file
If a template is instantiated on the field archetype, we can change the field it is using by changing the derived class of this class. This allows us to change the field used in a template without having to reinstantiate it. This minimizes code bloat, but it also introduces indirection through the use of pointers and virtual functions which is inefficient.
|
inlinevirtual |
Destructor.
Required because of virtual member functions. Virtual.
|
inlineprotected |
Default Constructor.
Required by derived classes, but protected because this class should never be constructed by itself.
|
pure virtual |
Virtual copy constructor.
Required because constructors cannot be virtual. Passes construction on to derived classes. Purely virtual. This function is not part of the common object interface.
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
|
pure virtual |
Assignment operator.
Purely virtual.
F | constant reference to FieldAbstract object |
Implemented in RingEnvelope< Field >, FieldEnvelope< Field >, and FieldEnvelope< Ring >.
Initialization of field element from an integer.
Behaves like C++ allocator construct. This function assumes the output field element x has already been constructed, but that it is not already initialized. Purely virtual.
x | field element to contain output (reference returned). |
y | integer. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Conversion of field element to an integer.
This function assumes the output field element x has already been constructed, but that it is not already initialized. Purely virtual.
x | reference to interger to contain output (reference returned). |
y | constant field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Assignment of one field element to another.
This function assumes both field elements have already been constructed and initialized. Purely virtual.
x | field element (reference returned). |
y | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
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. Purely virtual.
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
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. Purely virtual.
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Equality of two elements.
This function assumes both field elements have already been constructed and initialized. Purely virtual.
x | field element |
y | field element |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Addition.
x = y + z This function assumes all the field elements have already been constructed and initialized. Purely virtual.
x | field element (reference returned). |
y | field element. |
z | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Subtraction.
x = y - z This function assumes all the field elements have already been constructed and initialized. Purely virtual.
x | field element (reference returned). |
y | field element. |
z | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Multiplication.
x = y * z This function assumes all the field elements have already been constructed and initialized. Purely virtual.
x | field element (reference returned). |
y | field element. |
z | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Division.
x = y / z This function assumes all the field elements have already been constructed and initialized. Purely virtual.
x | field element (reference returned). |
y | field element. |
z | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Additive Inverse (Negation).
x = - y This function assumes both field elements have already been constructed and initialized. Purely virtual.
x | field element (reference returned). |
y | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Multiplicative Inverse.
x = 1 / y This function assumes both field elements have already been constructed and initialized. Purely virtual.
x | field element (reference returned). |
y | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
|
pure virtual |
Natural AXPY.
r = a * x + y 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. |
y | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
|
pure virtual |
Zero equality.
Test if field element is equal to zero. This function assumes the field element has already been constructed and initialized. Purely virtual.
x | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
|
pure virtual |
One equality.
Test if field element is equal to one. This function assumes the field element has already been constructed and initialized. Purely virtual.
x | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Inplace Addition.
x += y This function assumes both field elements have already been constructed and initialized. Purely virtual.
x | field element (reference returned). |
y | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Inplace Subtraction.
x -= y This function assumes both field elements have already been constructed and initialized. Purely virtual.
x | field element (reference returned). |
y | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Inplace Multiplication.
x *= y This function assumes both field elements have already been constructed and initialized. Purely virtual.
x | field element (reference returned). |
y | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Inplace Division.
x /= y This function assumes both field elements have already been constructed and initialized. Purely virtual.
x | field element (reference returned). |
y | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Inplace Additive Inverse (Inplace Negation).
x = - x This function assumes the field element has already been constructed and initialized. Purely virtual.
x | field element (reference returned). |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
Inplace Multiplicative Inverse.
x = 1 / x This function assumes the field elementhas already been constructed and initialized. Purely virtual.
x | field element (reference returned). |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
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. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
|
pure virtual |
Print field.
Purely virtual.
os | output stream to which field is written. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
|
pure virtual |
Read field.
Purely virtual.
is | input stream from which field is read. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
|
pure virtual |
Print field element.
This function assumes the field element has already been constructed and initialized. Purely virtual.
os | output stream to which field element is written. |
x | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.
|
pure virtual |
Read field element.
This function assumes the field element has already been constructed and initialized. Purely virtual.
is | input stream from which field element is read. |
x | field element. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.