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

Butterfly Class Template Reference
[linbox/blackbox]

#include <butterfly.h>

Inheritance diagram for Butterfly:

BlackboxInterface List of all members.

Detailed Description

template<class _Field, class Switch>
class LinBox::Butterfly< _Field, Switch >

Butterfly Switching Network based BlackBox Matrix. A good preconditioner. @doc Implements butterfly switching network on a LinBox vector as a black box matrix through the use of a switch object.

This is a blackbox matrix object, and it implements all purely virtual methods of the abstract base class. See \Ref{BlackboxArchetype} for the specification of these methods.

This matrix requires a dense vector to be used. Sparse vectors must somehow be converted to dense vectors before this matrix may be applied to them.

Parameters:
Vector  LinBox dense vector type
Switch  switch object type


Butterfly

Butterfly preconditioner and supporting function

 Butterfly (const Field &F, size_t n, typename Switch::Factory &factory)
template<class OutVector, class InVector> OutVector & apply (OutVector &y, const InVector &x) const
template<class OutVector, class InVector> OutVector & applyTranspose (OutVector &y, const InVector &x) const

Public Types

typedef _Field Field
typedef Field::Element Element

Public Methods

 ~Butterfly ()
size_t rowdim () const
size_t coldim () const
const Fieldfield () const


Member Typedef Documentation

typedef Field::Element Element
 

typedef _Field Field
 


Constructor & Destructor Documentation

Butterfly const Field   F,
size_t    n,
typename Switch::Factory &    factory
[inline]
 

Constructor from an integer and a switch object. The switch object is an object that is applied to two references to elements to switch them. It must have both an apply and an applyTranspose method. It must contain all information needed by the switch other than the elements themselves. This includes any random numbers or sequences of values. It must also be able to be applied as many times as needed. In particular, it must be able to create new random elements or repeat a stored sequence of values. This is not required by the abstract base class.

Parameters:
n  integer size of vectors to be applied to
S  switch predicate object object

~Butterfly   [inline]
 


Member Function Documentation

OutVector & apply OutVector &    y,
const InVector &    x
const [inline]
 

OutVector & applyTranspose OutVector &    y,
const InVector &    x
const [inline]
 

size_t coldim   const [inline]
 

const Field& field   const [inline]
 

size_t rowdim   const [inline]
 


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