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

MGBlockLanczosSolver Class Template Reference

#include <mg-block-lanczos.h>

List of all members.


Detailed Description

template<class Field, class Matrix = DenseMatrixBase<typename Field::Element>>
class LinBox::MGBlockLanczosSolver< Field, Matrix >

Block Lanczos iteration.

@doc This is a blocked version of the iteration given in @Ref{LanczosSolver}. The essential difference is that, rather than applying the black box $A$ to a single vector $v$ during each iteration, the block box $A$ is applied to an $n\times N$ matrix $V$ or, equivalently, to $N$ vectors $v_1, \ldots, v_N$ Scalars in the original iteration become $N\times N$ matrices in the blocked version. The resulting iteration is a natural extension of the basic theory of the original Lanczos iteration, c.f. (Montgomery 1995). This has the advantage of more flexible parallelization, and does not break down as often when used over small fields.

Currently, only dense vectors are supported for this iteration, and it is unlikely any other vector archetypes will be supported in the future.


Public Types

typedef Field::Element Element

Public Methods

 MGBlockLanczosSolver (const Field &F, const SolverTraits< BlockLanczosTraits > &traits)
 MGBlockLanczosSolver (const Field &F, const SolverTraits< BlockLanczosTraits > &traits, typename Field::RandIter r)
template<class Blackbox, class Vector> bool solve (const Blackbox &A, Vector &x, const Vector &b)
template<class Blackbox, class Matrix1> unsigned int sampleNullspace (const Blackbox &A, Matrix1 &x)
bool runSelfCheck () const

Protected Methods

template<class Matrix1> bool isAlmostIdentity (const Matrix1 &M) const
bool test_compute_Winv_S_mul (int n) const
bool test_compute_Winv_S_mulin (int n) const
bool test_mul_SST (int n) const
bool test_mul_ABSST (int n) const
bool test_mulTranspose (int m, int n) const
bool test_mulTranspose_ABSST (int n) const
bool test_mulin_ABSST (int n) const
bool test_addin_ABSST (int n) const


Member Typedef Documentation

typedef Field::Element Element
 


Constructor & Destructor Documentation

MGBlockLanczosSolver const Field   F,
const SolverTraits< BlockLanczosTraits > &    traits
[inline]
 

Constructor

Parameters:
F  Field over which to operate
traits  @Ref{SolverTraits} structure describing user options for the solver

MGBlockLanczosSolver const Field   F,
const SolverTraits< BlockLanczosTraits > &    traits,
typename Field::RandIter    r
[inline]
 

Constructor with a random iterator

Parameters:
F  Field over which to operate
traits  @Ref{SolverTraits} structure describing user options for the solver
r  Random iterator to use for randomization


Member Function Documentation

bool isAlmostIdentity const Matrix1 &    M const [protected]
 

bool runSelfCheck  
 

unsigned int sampleNullspace const Blackbox   A,
Matrix1 &    x
 

Sample uniformly from the (right) nullspace of A

Parameters:
A  Black box for the matrix A
x  Matrix into whose columns to store nullspace elements
Returns:
Number of nullspace vectors found

bool solve const Blackbox   A,
Vector   x,
const Vector   b
 

Solve the linear system Ax = b.

If the system is nonsingular, this method computes the unique solution to the system Ax = b. If the system is singular, it computes a random solution.

If the matrix A is nonsymmetric, this method preconditions the matrix A with the preconditioner D_1 A^T D_2 A D_1, where D_1 and D_2 are random nonsingular diagonal matrices. If the matrix A is symmetric, this method preconditions the system with A D, where D is a random diagonal matrix.

Parameters:
A  Black box for the matrix A
x  Vector in which to store solution
b  Right-hand side of system
Returns:
true on success and false on failure

bool test_addin_ABSST int    n const [protected]
 

bool test_compute_Winv_S_mul int    n const [protected]
 

bool test_compute_Winv_S_mulin int    n const [protected]
 

bool test_mul_ABSST int    n const [protected]
 

bool test_mul_SST int    n const [protected]
 

bool test_mulin_ABSST int    n const [protected]
 

bool test_mulTranspose int    m,
int    n
const [protected]
 

bool test_mulTranspose_ABSST int    n const [protected]
 


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