linbox
RingAbstract Class Referenceabstract

Abstract ring base class. More...

#include <abstract.h>

+ Inheritance diagram for RingAbstract:

Public Member Functions

Object Management

There are no public constructors for this class.

It should only be used in tandem with FieldArchetype.

virtual FieldAbstractclone () const =0
 Virtual copy constructor. More...
 
virtual Elementinit (Element &x, const integer &y) const =0
 Initialization of field element from an integer. More...
 
virtual integerconvert (integer &x, const Element &y) const =0
 Conversion of field element to an integer. More...
 
virtual Elementassign (Element &x, const Element &y) const =0
 Assignment of one field element to another. More...
 
virtual integercardinality (integer &c) const =0
 Cardinality. More...
 
virtual integercharacteristic (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 Elementadd (Element &x, const Element &y, const Element &z) const =0
 Addition. More...
 
virtual Elementsub (Element &x, const Element &y, const Element &z) const =0
 Subtraction. More...
 
virtual Elementmul (Element &x, const Element &y, const Element &z) const =0
 Multiplication. More...
 
virtual Elementdiv (Element &x, const Element &y, const Element &z) const =0
 Division. More...
 
virtual Elementneg (Element &x, const Element &y) const =0
 Additive Inverse (Negation). More...
 
virtual Elementinv (Element &x, const Element &y) const =0
 Multiplicative Inverse. More...
 
virtual Elementaxpy (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 bool isMOne (const Element &x) const =0
 MOne equality. More...
 
virtual Elementaddin (Element &x, const Element &y) const =0
 Inplace Addition. More...
 
virtual Elementsubin (Element &x, const Element &y) const =0
 Inplace Subtraction. More...
 
virtual Elementmulin (Element &x, const Element &y) const =0
 Inplace Multiplication. More...
 
virtual Elementdivin (Element &x, const Element &y) const =0
 Inplace Division. More...
 
virtual Elementnegin (Element &x) const =0
 Inplace Additive Inverse (Inplace Negation). More...
 
virtual Elementinvin (Element &x) const =0
 Inplace Multiplicative Inverse. More...
 
virtual Elementaxpyin (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::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...
 

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)
 Destructor. More...
 
virtual bool isUnit (const Element &x) const =0
 Virtual copy constructor. More...
 
virtual bool isZeroDivisor (const Element &x) const =0
 Divisibility of zero test. More...
 

Detailed Description

Abstract ring base class.

Found in the file

See Also
{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.

Constructor & Destructor Documentation

virtual ~RingAbstract ( void  )
inlinevirtual

Destructor.

Required because of virtual member functions. Virtual.

Member Function Documentation

virtual bool isUnit ( const Element x) 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.

Returns
pointer to new object in dynamic memory. Invertibility test. Test if ring element is invertible. This function assumes the ring element has already been constructed and initialized. Purely virtual.
boolean true if invertible, false if not.
Parameters
xring element.

Implemented in RingEnvelope< Field >.

virtual bool isZeroDivisor ( const Element x) const
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.

Returns
boolean true if divides zero, false if not.
Parameters
xring element.

Implemented in RingEnvelope< Field >.

virtual FieldAbstract* clone ( ) const
pure virtualinherited

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< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.

virtual Element& init ( Element x,
const integer y 
) const
pure virtualinherited

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
xfield element to contain output (reference returned).
yinteger.

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

virtual integer& convert ( integer x,
const Element y 
) const
pure virtualinherited

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
xreference to interger to contain output (reference returned).
yconstant field element.

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

virtual Element& assign ( Element x,
const Element y 
) const
pure virtualinherited

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
xfield element (reference returned).
yfield element.

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

virtual integer& cardinality ( integer c) const
pure virtualinherited

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< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.

virtual integer& characteristic ( integer c) const
pure virtualinherited

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< Field >, FieldEnvelope< Ring >, and RingEnvelope< Field >.

virtual bool areEqual ( const Element x,
const Element y 
) const
pure virtualinherited

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
xfield element
yfield element

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

virtual Element& add ( Element x,
const Element y,
const Element z 
) const
pure virtualinherited

Addition.

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

Returns
reference to x.
Parameters
xfield element (reference returned).
yfield element.
zfield element.

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

virtual Element& sub ( Element x,
const Element y,
const Element z 
) const
pure virtualinherited

Subtraction.

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

Returns
reference to x.
Parameters
xfield element (reference returned).
yfield element.
zfield element.

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

virtual Element& mul ( Element x,
const Element y,
const Element z 
) const
pure virtualinherited

Multiplication.

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

Returns
reference to x.
Parameters
xfield element (reference returned).
yfield element.
zfield element.

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

virtual Element& div ( Element x,
const Element y,
const Element z 
) const
pure virtualinherited

Division.

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

Returns
reference to x.
Parameters
xfield element (reference returned).
yfield element.
zfield element.

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

virtual Element& neg ( Element x,
const Element y 
) const
pure virtualinherited

Additive Inverse (Negation).

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

Returns
reference to x.
Parameters
xfield element (reference returned).
yfield element.

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

virtual Element& inv ( Element x,
const Element y 
) const
pure virtualinherited

Multiplicative Inverse.

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

Returns
reference to x.
Parameters
xfield element (reference returned).
yfield element.

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

virtual Element& axpy ( Element r,
const Element a,
const Element x,
const Element y 
) const
pure virtualinherited

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
rfield element (reference returned).
afield element.
xfield element.
yfield element.

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

virtual bool isZero ( const Element x) const
pure virtualinherited

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
xfield element.

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

virtual bool isOne ( const Element x) const
pure virtualinherited

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
xfield element.

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

virtual bool isMOne ( const Element x) const
pure virtualinherited

MOne 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
xfield element.

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

virtual Element& addin ( Element x,
const Element y 
) const
pure virtualinherited

Inplace Addition.

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

Returns
reference to x.
Parameters
xfield element (reference returned).
yfield element.

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

virtual Element& subin ( Element x,
const Element y 
) const
pure virtualinherited

Inplace Subtraction.

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

Returns
reference to x.
Parameters
xfield element (reference returned).
yfield element.

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

virtual Element& mulin ( Element x,
const Element y 
) const
pure virtualinherited

Inplace Multiplication.

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

Returns
reference to x.
Parameters
xfield element (reference returned).
yfield element.

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

virtual Element& divin ( Element x,
const Element y 
) const
pure virtualinherited

Inplace Division.

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

Returns
reference to x.
Parameters
xfield element (reference returned).
yfield element.

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

virtual Element& negin ( Element x) const
pure virtualinherited

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
xfield element (reference returned).

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

virtual Element& invin ( Element x) const
pure virtualinherited

Inplace Multiplicative Inverse.

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

Returns
reference to x.
Parameters
xfield element (reference returned).

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

virtual Element& axpyin ( Element r,
const Element a,
const Element x 
) const
pure virtualinherited

Inplace AXPY.

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

Returns
reference to r.
Parameters
rfield element (reference returned).
afield element.
xfield element.

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

virtual std::ostream& write ( std::ostream &  os) const
pure virtualinherited

Print field.

Purely virtual.

Returns
output stream to which field is written.
Parameters
osoutput stream to which field is written.

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

virtual std::ostream& write ( std::ostream &  os,
const Element x 
) const
pure virtualinherited

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
osoutput stream to which field element is written.
xfield element.

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

virtual std::istream& read ( std::istream &  is,
Element x 
) const
pure virtualinherited

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
isinput stream from which field element is read.
xfield element.

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


The documentation for this class was generated from the following file: