linbox
1
|
field base class.Found in the file {linbox/field/abstract.h}. Abstract base class used to implement the field archetype to minimize code bloat. All public member functions of this class are purely virtual and must be implemented by all derived classes. 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) |
virtual FieldAbstract * | clone () const =0 |
virtual FieldAbstract & | operator= (const FieldAbstract &F)=0 |
virtual Element & | init (Element &x, const integer &y) const =0 |
virtual integer & | convert (integer &x, const Element &y) const =0 |
virtual Element & | assign (Element &x, const Element &y) const =0 |
virtual integer & | cardinality (integer &c) const =0 |
virtual integer & | characteristic (integer &c) const =0 |
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 |
virtual Element & | add (Element &x, const Element &y, const Element &z) const =0 |
virtual Element & | sub (Element &x, const Element &y, const Element &z) const =0 |
virtual Element & | mul (Element &x, const Element &y, const Element &z) const =0 |
virtual Element & | div (Element &x, const Element &y, const Element &z) const =0 |
virtual Element & | neg (Element &x, const Element &y) const =0 |
virtual Element & | inv (Element &x, const Element &y) const =0 |
virtual Element & | axpy (Element &r, const Element &a, const Element &x, const Element &y) const =0 |
Inplace Arithmetic Operations | |
x <- x op y; x <- op x | |
virtual bool | isZero (const Element &x) const =0 |
virtual bool | isOne (const Element &x) const =0 |
virtual Element & | addin (Element &x, const Element &y) const =0 |
virtual Element & | subin (Element &x, const Element &y) const =0 |
virtual Element & | mulin (Element &x, const Element &y) const =0 |
virtual Element & | divin (Element &x, const Element &y) const =0 |
virtual Element & | negin (Element &x) const =0 |
virtual Element & | invin (Element &x) const =0 |
virtual Element & | axpyin (Element &r, const Element &a, const Element &x) const =0 |
Input/Output Operations | |
virtual std::ostream & | write (std::ostream &os) const =0 |
virtual std::istream & | read (std::istream &is)=0 |
virtual std::ostream & | write (std::ostream &os, const Element &x) const =0 |
virtual std::istream & | read (std::istream &is, Element &x) const =0 |
Protected Member Functions | |
FieldAbstract () | |
Friends | |
class | FieldArchetype |
FieldArchetype is friend. |
field base class.
Found in the file {linbox/field/abstract.h}. Abstract base class used to implement the field archetype to minimize code bloat. All public member functions of this class are purely virtual and must be implemented by all derived classes.
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.
virtual ~FieldAbstract | ( | void | ) | [inline, virtual] |
Destructor. Required because of virtual member functions. Virtual.
FieldAbstract | ( | ) | [inline, protected] |
Default Constructor. Required by derived classes, but protected because this class should never be constructed by itself.
virtual FieldAbstract* clone | ( | ) | const [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< Ring >.
virtual FieldAbstract& operator= | ( | const FieldAbstract & | F | ) | [pure virtual] |
Assignment operator. Purely virtual.
F | constant reference to FieldAbstract object |
Implemented in RingEnvelope< Ring >, 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< Ring >.
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< Ring >.
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< Ring >.
virtual integer& cardinality | ( | integer & | c | ) | const [pure virtual] |
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< Ring >.
virtual integer& characteristic | ( | integer & | c | ) | const [pure virtual] |
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< Ring >.
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< Ring >.
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< Ring >.
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< Ring >.
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< Ring >.
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< Ring >.
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< Ring >.
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< Ring >.
virtual Element& axpy | ( | Element & | r, |
const Element & | a, | ||
const Element & | x, | ||
const Element & | y | ||
) | const [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< Ring >.
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< Ring >.
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< Ring >.
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< Ring >.
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< Ring >.
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< Ring >.
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< Ring >.
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< Ring >.
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< Ring >.
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< Ring >.
virtual std::ostream& write | ( | std::ostream & | os | ) | const [pure virtual] |
Print field. Purely virtual.
os | output stream to which field is written. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Ring >.
virtual std::istream& read | ( | std::istream & | is | ) | [pure virtual] |
Read field. Purely virtual.
is | input stream from which field is read. |
Implemented in FieldEnvelope< Field >, FieldEnvelope< Ring >, and RingEnvelope< Ring >.
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< Ring >.
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< Ring >.