12#ifndef TLAPACK_TREVC3_FORWARDSOLVE_HH
13#define TLAPACK_TREVC3_FORWARDSOLVE_HH
44 const idx_t n = nrows(T);
61 for (idx_t
k = 0;
k <
nk;) {
127 if (T(
be,
be - 1) !=
TT(0)) {
137 for (idx_t
k = 0;
k <
nk;) {
141 if (T(
ks +
k + 1,
ks +
k) !=
TT(0)) {
151 for (idx_t i = 0; i < nb;) {
154 if (
T_ii(i + 1, i) !=
TT(0)) {
162 for (idx_t j = 0; j < i; ++j) {
166 X_ii(i + 1,
k + 1) -=
210 for (idx_t j = 0; j < i; ++j) {
239 for (idx_t i = 0; i < nb; ++i) {
240 for (idx_t j = 0; j < i; ++j) {
256 if (
T_ii(i + 1, i) !=
TT(0)) {
264 for (idx_t j = 0; j < i; ++j) {
289 for (idx_t j = 0; j < i; ++j) {
#define TLAPACK_WORKSPACE
Macro for tlapack::concepts::Workspace compatible with C++17.
Definition concepts.hpp:912
#define TLAPACK_VECTOR
Macro for tlapack::concepts::Vector compatible with C++17.
Definition concepts.hpp:906
#define TLAPACK_MATRIX
Macro for tlapack::concepts::Matrix compatible with C++17.
Definition concepts.hpp:896
void laset(uplo_t uplo, const type_t< matrix_t > &alpha, const type_t< matrix_t > &beta, matrix_t &A)
Initializes a matrix to diagonal and off-diagonal values.
Definition laset.hpp:38
void gemm(Op transA, Op transB, const alpha_t &alpha, const matrixA_t &A, const matrixB_t &B, const beta_t &beta, matrixC_t &C)
General matrix-matrix multiply:
Definition gemm.hpp:61
#define tlapack_check(cond)
Throw an error if cond is false.
Definition exceptionHandling.hpp:98
Sort the numbers in D in increasing order (if ID = 'I') or in decreasing order (if ID = 'D' ).
Definition arrayTraits.hpp:15
typename traits::real_type_traits< Types..., int >::type real_type
The common real type of the list of types.
Definition scalar_type_traits.hpp:113
void trevc_forwardsolve_double(const matrix_T_t &T, vector_v_t &v_r, vector_v_t &v_i, const size_type< matrix_T_t > k, const vector_colN_t &colN)
Calculate the k-th left eigenvector pair of T using forward substitution.
Definition trevc_forwardsolve.hpp:371
constexpr T conj(const T &x) noexcept
Extends std::conj() to real datatypes.
Definition utils.hpp:100
void trevc_forwardsolve_single(const matrix_T_t &T, vector_v_t &v, const size_type< matrix_T_t > k, const vector_colN_t &colN)
Calculate the k-th left eigenvector of T using forward substitution.
Definition trevc_forwardsolve.hpp:73
@ ConjTrans
conjugate transpose
@ General
0 <= i <= m, 0 <= j <= n.
void trevc3_forwardsolve(const matrix_T_t &T, matrix_X_t &X, vector_colN_t &colN, work_t &work, size_type< matrix_T_t > ks, size_type< matrix_T_t > ke, size_type< matrix_T_t > blocksize)
Calculate the ks-th through ke-th (not inclusive) left eigenvector of T using a blocked backsubstitut...
Definition trevc3_forwardsolve.hpp:31