Main Page | Modules | Namespace List | Class Hierarchy | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages

BlockLanczosSolver Class Template Reference

#include <block-lanczos.h>


Detailed Description

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

Block Lanczos iteration

This is a blocked version of the iteration given in {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 N$ matrix $V$ or, equivalently, to $N$ vectors $v_1, , v_N$ Scalars in the original iteration become $N 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 Member Functions

 BlockLanczosSolver (const Field &F, const SolverTraits< BlockLanczosTraits > &traits)
 BlockLanczosSolver (const Field &F, const SolverTraits< BlockLanczosTraits > &traits, typename Field::RandIter r)
template<class Blackbox, class Vector> Vectorsolve (const Blackbox &A, Vector &x, const Vector &b)
bool runSelfCheck () const

Protected Member Functions

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

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

Constructor

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

BlockLanczosSolver 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 {SolverTraits} structure describing user options for the solver
r Random iterator to use for randomization


Member Function Documentation

Vector& 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:
Reference to solution vector

bool isAlmostIdentity const Matrix1 &  M  )  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_SST int  n  )  const [protected]
 

bool test_mul_ABSST int  n  )  const [protected]
 

bool test_mulTranspose int  m,
int  n
const [protected]
 

bool test_mulTranspose_ABSST int  n  )  const [protected]
 

bool test_mulin_ABSST int  n  )  const [protected]
 

bool test_addin_ABSST int  n  )  const [protected]
 

bool runSelfCheck  )  const
 


Generated on Fri Jul 8 10:29:44 2005 for linbox by doxygen 1.3.7