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 | |
| 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 | |
| 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 >, RingEnvelope< Ring >, and FieldEnvelope< Ring >.
| virtual FieldAbstract& operator= | ( | const FieldAbstract & | F | ) | [pure virtual] |
Assignment operator. Purely virtual.
| F | constant reference to FieldAbstract object |
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 >, RingEnvelope< Ring >, and FieldEnvelope< 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 >, RingEnvelope< Ring >, and FieldEnvelope< 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 >, RingEnvelope< Ring >, and FieldEnvelope< Ring >.