11#ifndef TLAPACK_UNMQR_HH
12#define TLAPACK_UNMQR_HH
69 using idx_t = size_type<matrixC_t>;
70 using matrixT_t = matrix_type<matrixA_t, tau_t>;
71 using range = pair<idx_t, idx_t>;
74 const idx_t k = size(tau);
75 const idx_t nb = min<idx_t>(opts.nb, k);
79 (is_same_v<T, type_t<matrixT_t>>) ? WorkInfo(nb, nb) : WorkInfo(0);
84 const idx_t m = nrows(C);
85 const idx_t n = ncols(C);
86 const idx_t nA = (side == Side::Left) ? m : n;
89 auto&& V = slice(A, range{0, nA}, range{0, nb});
90 auto&& matrixT = slice(A, range{0, nb}, range{0, nb});
93 workinfo += larfb_worksize<T>(side, trans, FORWARD, COLUMNWISE_STORAGE,
165 return unmq(side, trans, FORWARD, 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 unmqr(side_t side, trans_t trans, const matrixA_t &A, const tau_t &tau, matrixC_t &C, const UnmqrOpts &opts={})
Applies orthogonal matrix op(Q) to a matrix C using a blocked code.
Definition unmqr.hpp:158
constexpr WorkInfo unmqr_worksize(side_t side, trans_t trans, const matrixA_t &A, const tau_t &tau, const matrixC_t &C, const UnmqrOpts &opts={})
Worspace query of unmqr()
Definition unmqr.hpp:62
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 unmqr.
Definition unmqr.hpp:22
size_t nb
Block size.
Definition unmqr.hpp:23
Output information in the workspace query.
Definition workspace.hpp:16