Given a general linear operator , find matrices , and such that
where and are orthogonal bases for the column span and row span of , respectively, and is a bidiagonal matrix.
Algorithmic Features
References
call bidiagonalization(A, U, V, B, info [, kstart] [, kend] [, tol])
A : Linear operator derived from one the base types provided by the
AbstractLinops module. It is an intent(inout) argument.
U : Array of types derived from one the base types provided by the AbstractVectors
module. It needs to be consistent with the type of A. On exit, it contains the
the computed Krylov vectors for the column span of A. The first entry U(1)
is the starting vector for the Lanczos factorization. Additionally, the
maximum number of Lanczos steps is equal to size(X) - 1.
It is an intent(inout) argument.
V : Array of types derived from one the base types provided by the AbstractVectors
module. It needs to be consistent with the type of A. On exit, it contains the
the computed Krylov vectors for the row span of A. It is an intent(inout)
argument.
B : real or complex rank-2 array. On exit, it contains the
bidiagonal matrix computed from the Lanczos factorization. It is an intent(inout)
argument.
info : integer variable. It is the LightKrylov information flag. On exit, if
info > 0, the Lanczos factorization experienced a lucky breakdown.
kstart (optional) : integer value determining the index of the first Lanczos
step to be computed. It is an optional intent(in) argument.
By default, kstart = 1.
kend (optional) : integer value determining the index of the last Lanczos step
to be computed. It is an optional intent(in) argument.
By default, kend = size(X) - 1.
tol (optional) : Numerical tolerance below which a subspace is considered
to be -invariant. It is an optional intent(in) argument.
By default tol = atol_sp or tol = atol_rp depending on the
kind of A.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_cdp), | intent(inout) | :: | A |
Linear operator to be factorized. |
||
| class(abstract_vector_cdp), | intent(inout) | :: | U(:) |
Orthonormal basis for the column span of . On entry, |
||
| class(abstract_vector_cdp), | intent(inout) | :: | V(:) |
Orthonormal basis for the row span of . |
||
| complex(kind=dp), | intent(inout) | :: | B(:,:) |
Bidiagonal matrix. |
||
| integer, | intent(out) | :: | info |
Information flag. |
||
| integer, | intent(in), | optional | :: | kstart |
Starting index for the Lanczos factorization (default 1). |
|
| integer, | intent(in), | optional | :: | kend |
Final index for the Lanczos factorization (default 1). |
|
| real(kind=dp), | intent(in), | optional | :: | tol |
Tolerance to determine whether invariant subspaces have been computed or not. |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_csp), | intent(inout) | :: | A |
Linear operator to be factorized. |
||
| class(abstract_vector_csp), | intent(inout) | :: | U(:) |
Orthonormal basis for the column span of . On entry, |
||
| class(abstract_vector_csp), | intent(inout) | :: | V(:) |
Orthonormal basis for the row span of . |
||
| complex(kind=sp), | intent(inout) | :: | B(:,:) |
Bidiagonal matrix. |
||
| integer, | intent(out) | :: | info |
Information flag. |
||
| integer, | intent(in), | optional | :: | kstart |
Starting index for the Lanczos factorization (default 1). |
|
| integer, | intent(in), | optional | :: | kend |
Final index for the Lanczos factorization (default 1). |
|
| real(kind=sp), | intent(in), | optional | :: | tol |
Tolerance to determine whether invariant subspaces have been computed or not. |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_rdp), | intent(inout) | :: | A |
Linear operator to be factorized. |
||
| class(abstract_vector_rdp), | intent(inout) | :: | U(:) |
Orthonormal basis for the column span of . On entry, |
||
| class(abstract_vector_rdp), | intent(inout) | :: | V(:) |
Orthonormal basis for the row span of . |
||
| real(kind=dp), | intent(inout) | :: | B(:,:) |
Bidiagonal matrix. |
||
| integer, | intent(out) | :: | info |
Information flag. |
||
| integer, | intent(in), | optional | :: | kstart |
Starting index for the Lanczos factorization (default 1). |
|
| integer, | intent(in), | optional | :: | kend |
Final index for the Lanczos factorization (default 1). |
|
| real(kind=dp), | intent(in), | optional | :: | tol |
Tolerance to determine whether invariant subspaces have been computed or not. |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_linop_rsp), | intent(inout) | :: | A |
Linear operator to be factorized. |
||
| class(abstract_vector_rsp), | intent(inout) | :: | U(:) |
Orthonormal basis for the column span of . On entry, |
||
| class(abstract_vector_rsp), | intent(inout) | :: | V(:) |
Orthonormal basis for the row span of . |
||
| real(kind=sp), | intent(inout) | :: | B(:,:) |
Bidiagonal matrix. |
||
| integer, | intent(out) | :: | info |
Information flag. |
||
| integer, | intent(in), | optional | :: | kstart |
Starting index for the Lanczos factorization (default 1). |
|
| integer, | intent(in), | optional | :: | kend |
Final index for the Lanczos factorization (default 1). |
|
| real(kind=sp), | intent(in), | optional | :: | tol |
Tolerance to determine whether invariant subspaces have been computed or not. |