linbox
1
|
Abstract ring base class.Found in the file {linbox/ring/abstract.h}. Abstract base class used to implement the ring 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 FieldAbstract::Element | Element |
element type. | |
typedef FieldAbstract::RandIter | RandIter |
Random iterator generator type. | |
![]() | |
![]() | |
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 |
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 |
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 |
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 |
Object Management | |
There are no public constructors for this class. It should only be used in tandem with {FieldArchetype}. | |
class | RingArchetype |
FieldArchetype is friend. | |
virtual | ~RingAbstract (void) |
virtual bool | isUnit (const Element &x) const =0 |
virtual bool | isZeroDivisor (const Element &x) const =0 |
Additional Inherited Members | |
![]() | |
FieldAbstract () |
Abstract ring base class.
Found in the file {linbox/ring/abstract.h}. Abstract base class used to implement the ring 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 ring archetype, we can change the ring it is using by changing the derived class of this class. This allows us to change the ring 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.
|
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.
x | ring element. |
Implemented in RingEnvelope< Ring >.
|
pure virtual |
Divisibility of zero test. Test if ring element is a zero divisor. This function assumes the ring element has already been constructed and initialized. Purely virtual.
x | ring element. |
Implemented in RingEnvelope< Ring >.