#include <la-block-lanczos.h>
This is a biorthogonalising variant of Montgomery's block Lanczos iteration. The goal is to avoid having to symmetrise the input matrix by constructing two sequences of block vectors that have mutual orthogonality properties. This algorithm was proposed by Bradford Hovinen.
Public Types | |
typedef Field::Element | Element |
Public Methods | |
LABlockLanczosSolver (const Field &F, const SolverTraits< BlockLanczosTraits > &traits) | |
LABlockLanczosSolver (const Field &F, const SolverTraits< BlockLanczosTraits > &traits, typename Field::RandIter r) | |
~LABlockLanczosSolver () | |
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) |
template<class Blackbox> unsigned int | rank (const Blackbox &A) |
Friends | |
class | BasisTransformation |
|
|
|
Constructor
|
|
Constructor with a random iterator
|
|
Destructor |
|
Estimate the rank of A
|
|
Sample uniformly from the (right) nullspace of A
|
|
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.
|
|
|