Main Page   Modules   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

FieldAbstract Class Reference

#include <abstract.h>

Inheritance diagram for FieldAbstract:

FieldEnvelope FieldEnvelope< Ring > RingAbstract RingEnvelope RingEnvelope List of all members.

Detailed Description

Abstract field base class. Found in the file \URL{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.


Public Types

typedef ElementAbstract Element
 element type.

typedef RandIterAbstract RandIter
 Random iterator generator type.


Public Methods

Object Management
There are no public constructors for this class. It should only be used in tandem with \Ref{FieldArchetype}.

virtual ~FieldAbstract (void)
virtual FieldAbstract * clone () const=0
virtual FieldAbstract & operator= (const FieldAbstract &F)=0
virtual Elementinit (Element &x, const integer &y) const=0
virtual integerconvert (integer &x, const Element &y) const=0
virtual Elementassign (Element &x, const Element &y) const=0
virtual integercardinality (integer &c) const=0
virtual integercharacteristic (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.

Object virtual Management bool areEqual (const Element &x, const Element &y) const=0
virtual Elementadd (Element &x, const Element &y, const Element &z) const=0
virtual Elementsub (Element &x, const Element &y, const Element &z) const=0
virtual Elementmul (Element &x, const Element &y, const Element &z) const=0
virtual Elementdiv (Element &x, const Element &y, const Element &z) const=0
virtual Elementneg (Element &x, const Element &y) const=0
virtual Elementinv (Element &x, const Element &y) const=0
virtual Elementaxpy (Element &r, const Element &a, const Element &x, const Element &y) const=0
Inplace Arithmetic Operations
x <- x op y; x <- op x

Arithmetic virtual Operations
bool 
isZero (const Element &x) const=0
virtual bool isOne (const Element &x) const=0
virtual Elementaddin (Element &x, const Element &y) const=0
virtual Elementsubin (Element &x, const Element &y) const=0
virtual Elementmulin (Element &x, const Element &y) const=0
virtual Elementdivin (Element &x, const Element &y) const=0
virtual Elementnegin (Element &x) const=0
virtual Elementinvin (Element &x) const=0
virtual Elementaxpyin (Element &r, const Element &a, const Element &x) const=0
Input/Output Operations
Inplace Arithmetic virtual
Operations 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 Methods

 FieldAbstract ()

Friends

class FieldArchetype
 FieldArchetype is friend.


Member Typedef Documentation

typedef ElementAbstract Element
 

element type.

Reimplemented in FieldEnvelope, RingAbstract, RingEnvelope, and FieldEnvelope< Ring >.

typedef RandIterAbstract RandIter
 

Random iterator generator type.

Reimplemented in FieldEnvelope, RingAbstract, RingEnvelope, and FieldEnvelope< Ring >.


Constructor & Destructor Documentation

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.


Member Function Documentation

virtual Element& add Element   x,
const Element   y,
const Element   z
const [pure virtual]
 

Addition. x = y + z This function assumes all the field elements have already been constructed and initialized. Purely virtual.

Returns:
reference to x.
Parameters:
x  field element (reference returned).
y  field element.
z  field element.

virtual Element& addin Element   x,
const Element   y
const [pure virtual]
 

Inplace Addition. x += y This function assumes both field elements have already been constructed and initialized. Purely virtual.

Returns:
reference to x.
Parameters:
x  field element (reference returned).
y  field element.

Object virtual Management bool areEqual const Element   x,
const Element   y
const [pure virtual]
 

Equality of two elements. This function assumes both field elements have already been constructed and initialized. Purely virtual.

Returns:
boolean true if equal, false if not.
Parameters:
x  field element
y  field element

virtual Element& assign Element   x,
const Element   y
const [pure virtual]
 

Assignment of one field element to another. This function assumes both field elements have already been constructed and initialized. Purely virtual.

Returns:
reference to x
Parameters:
x  field element (reference returned).
y  field element.

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.

Returns:
reference to r.
Parameters:
r  field element (reference returned).
a  field element.
x  field element.
y  field element.

virtual Element& axpyin Element   r,
const Element   a,
const Element   x
const [pure virtual]
 

Inplace AXPY. r += a * x This function assumes all field elements have already been constructed and initialized. Purely virtual

Returns:
reference to r.
Parameters:
r  field element (reference returned).
a  field element.
x  field element.

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.

Returns:
integer representing cardinality of the domain

Implemented in FieldEnvelope, RingEnvelope, and FieldEnvelope< 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.

Returns:
integer representing characteristic of the domain.

Implemented in FieldEnvelope, RingEnvelope, and FieldEnvelope< Ring >.

virtual FieldAbstract* clone   [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.

Returns:
pointer to new object in dynamic memory.

Implemented in FieldEnvelope, RingEnvelope, and FieldEnvelope< Ring >.

virtual integer& convert integer   x,
const Element   y
const [pure virtual]
 

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.

Returns:
reference to integer.
Parameters:
x  reference to interger to contain output (reference returned).
y  constant field element.

virtual Element& div Element   x,
const Element   y,
const Element   z
const [pure virtual]
 

Division. x = y / z This function assumes all the field elements have already been constructed and initialized. Purely virtual.

Returns:
reference to x.
Parameters:
x  field element (reference returned).
y  field element.
z  field element.

virtual Element& divin Element   x,
const Element   y
const [pure virtual]
 

Inplace Division. x /= y This function assumes both field elements have already been constructed and initialized. Purely virtual.

Returns:
reference to x.
Parameters:
x  field element (reference returned).
y  field element.

virtual Element& init Element   x,
const integer   y
const [pure virtual]
 

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.

Returns:
reference to field element.
Parameters:
x  field element to contain output (reference returned).
y  integer.

virtual Element& inv Element   x,
const Element   y
const [pure virtual]
 

Multiplicative Inverse. x = 1 / y This function assumes both field elements have already been constructed and initialized. Purely virtual.

Returns:
reference to x.
Parameters:
x  field element (reference returned).
y  field element.

virtual Element& invin Element   x const [pure virtual]
 

Inplace Multiplicative Inverse. x = 1 / x This function assumes the field elementhas already been constructed and initialized. Purely virtual.

Returns:
reference to x.
Parameters:
x  field element (reference returned).

virtual bool isOne const Element   x const [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.

Returns:
boolean true if equals one, false if not.
Parameters:
x  field element.

Arithmetic virtual Operations bool isZero const Element   x const [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.

Returns:
boolean true if equals zero, false if not.
Parameters:
x  field element.

virtual Element& mul Element   x,
const Element   y,
const Element   z
const [pure virtual]
 

Multiplication. x = y * z This function assumes all the field elements have already been constructed and initialized. Purely virtual.

Returns:
reference to x.
Parameters:
x  field element (reference returned).
y  field element.
z  field element.

virtual Element& mulin Element   x,
const Element   y
const [pure virtual]
 

Inplace Multiplication. x *= y This function assumes both field elements have already been constructed and initialized. Purely virtual.

Returns:
reference to x.
Parameters:
x  field element (reference returned).
y  field element.

virtual Element& neg Element   x,
const Element   y
const [pure virtual]
 

Additive Inverse (Negation). x = - y This function assumes both field elements have already been constructed and initialized. Purely virtual.

Returns:
reference to x.
Parameters:
x  field element (reference returned).
y  field element.

virtual Element& negin Element   x const [pure virtual]
 

Inplace Additive Inverse (Inplace Negation). x = - x This function assumes the field element has already been constructed and initialized. Purely virtual.

Returns:
reference to x.
Parameters:
x  field element (reference returned).

virtual FieldAbstract& operator= const FieldAbstract &    F [pure virtual]
 

Assignment operator. Purely virtual.

Returns:
reference to self
Parameters:
F  constant reference to FieldAbstract object

Implemented in FieldEnvelope, RingEnvelope, and FieldEnvelope< Ring >.

virtual std::istream& read std::istream &    is,
Element   x
const [pure virtual]
 

Read field element. This function assumes the field element has already been constructed and initialized. Purely virtual.

Returns:
input stream from which field element is read.
Parameters:
is  input stream from which field element is read.
x  field element.

virtual std::istream& read std::istream &    is [pure virtual]
 

Read field. Purely virtual.

Returns:
input stream from which field is read.
Parameters:
is  input stream from which field is read.

Implemented in FieldEnvelope, RingEnvelope, and FieldEnvelope< Ring >.

virtual Element& sub Element   x,
const Element   y,
const Element   z
const [pure virtual]
 

Subtraction. x = y - z This function assumes all the field elements have already been constructed and initialized. Purely virtual.

Returns:
reference to x.
Parameters:
x  field element (reference returned).
y  field element.
z  field element.

virtual Element& subin Element   x,
const Element   y
const [pure virtual]
 

Inplace Subtraction. x -= y This function assumes both field elements have already been constructed and initialized. Purely virtual.

Returns:
reference to x.
Parameters:
x  field element (reference returned).
y  field element.

virtual std::ostream& write std::ostream &    os,
const Element   x
const [pure virtual]
 

Print field element. This function assumes the field element has already been constructed and initialized. Purely virtual.

Returns:
output stream to which field element is written.
Parameters:
os  output stream to which field element is written.
x  field element.

Inplace Arithmetic virtual Operations std::ostream& write std::ostream &    os const [pure virtual]
 

Print field. Purely virtual.

Returns:
output stream to which field is written.
Parameters:
os  output stream to which field is written.

Implemented in FieldEnvelope, RingEnvelope, and FieldEnvelope< Ring >.


Friends And Related Function Documentation

friend class FieldArchetype [friend]
 

FieldArchetype is friend.


Generated on Mon Jun 20 09:16:54 2005 for linbox by doxygen1.2.18