11#ifndef TLAPACK_UNMQL_HH
12#define TLAPACK_UNMQL_HH
82 using idx_t = size_type<matrixC_t>;
83 using matrixT_t = matrix_type<matrixA_t, tau_t>;
84 using range = pair<idx_t, idx_t>;
87 const idx_t k = size(tau);
88 const idx_t nb = min<idx_t>(opts.nb, k);
92 (is_same_v<T, type_t<matrixT_t>>) ? WorkInfo(nb, nb) : WorkInfo(0);
97 const idx_t m = nrows(C);
98 const idx_t n = ncols(C);
99 const idx_t nA = (side == Side::Left) ? m : n;
102 auto&& V = slice(A, range{0, nA}, range{0, nb});
103 auto&& matrixT = slice(A, range{0, nb}, range{0, nb});
106 workinfo += larfb_worksize<T>(side, trans, BACKWARD, COLUMNWISE_STORAGE,
178 return unmq(side, trans, BACKWARD, COLUMNWISE_STORAGE, A, tau, C,
#define TLAPACK_SVECTOR
Macro for tlapack::concepts::SliceableVector compatible with C++17.
Definition concepts.hpp:909
#define TLAPACK_SIDE
Macro for tlapack::concepts::Side compatible with C++17.
Definition concepts.hpp:927
#define TLAPACK_SMATRIX
Macro for tlapack::concepts::SliceableMatrix compatible with C++17.
Definition concepts.hpp:899
#define TLAPACK_OP
Macro for tlapack::concepts::Op compatible with C++17.
Definition concepts.hpp:933
int unmq(side_t side, trans_t trans, direction_t direction, storage_t storeMode, const matrixV_t &V, const vector_t &tau, matrixC_t &C, const UnmqOpts &opts={})
Applies unitary matrix Q to a matrix C.
Definition unmq.hpp:282
int unmql(side_t side, trans_t trans, const matrixA_t &A, const tau_t &tau, matrixC_t &C, const UnmqlOpts &opts={})
Applies orthogonal matrix op(Q) to a matrix C using a blocked code.
Definition unmql.hpp:171
constexpr WorkInfo unmql_worksize(side_t side, trans_t trans, const matrixA_t &A, const tau_t &tau, const matrixC_t &C, const UnmqlOpts &opts={})
Applies unitary matrix Q from an QL factorization to a matrix C.
Definition unmql.hpp:75
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
Options struct for unmql.
Definition unmql.hpp:22
size_t nb
Block size.
Definition unmql.hpp:23
Output information in the workspace query.
Definition workspace.hpp:16