10#ifndef TLAPACK_HOUSEHOLDER_Q_MUL_HH
11#define TLAPACK_HOUSEHOLDER_Q_MUL_HH
90 if (opts.variant == HouseholderQMulVariant::Level2)
91 return unmq_level2_worksize<T>(side, trans, direction, storeMode, V,
94 return unmq_worksize<T>(side, trans, direction, storeMode, V, tau, C,
124 if (opts.variant == HouseholderQMulVariant::Level2)
128 return unmq_work(side, trans, direction, storeMode, V, tau, C, work,
242 if (opts.variant == HouseholderQMulVariant::Level2)
243 return unmq_level2(side, trans, direction, storeMode, V, tau, C);
245 return unmq(side, trans, direction, storeMode, V, tau, C, opts);
#define TLAPACK_SVECTOR
Macro for tlapack::concepts::SliceableVector compatible with C++17.
Definition concepts.hpp:909
#define TLAPACK_STOREV
Macro for tlapack::concepts::StoreV compatible with C++17.
Definition concepts.hpp:936
#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_DIRECTION
Macro for tlapack::concepts::Direction compatible with C++17.
Definition concepts.hpp:930
#define TLAPACK_OP
Macro for tlapack::concepts::Op compatible with C++17.
Definition concepts.hpp:933
#define TLAPACK_WORKSPACE
Macro for tlapack::concepts::Workspace compatible with C++17.
Definition concepts.hpp:912
int unmq_level2(side_t side, trans_t trans, direction_t direction, storage_t storeMode, const matrixV_t &V, const vector_t &tau, matrixC_t &C)
Applies unitary matrix Q to a matrix C.
Definition unmq_level2.hpp:308
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 unmq_level2_work(side_t side, trans_t trans, direction_t direction, storage_t storeMode, const matrixV_t &V, const vector_t &tau, matrixC_t &C, work_t &work)
Applies unitary matrix Q to a matrix C. Workspace is provided as an argument.
Definition unmq_level2.hpp:109
int unmq_work(side_t side, trans_t trans, direction_t direction, storage_t storeMode, const matrixV_t &V, const vector_t &tau, matrixC_t &C, work_t &work, const UnmqOpts &opts={})
Applies unitary matrix Q to a matrix C. Workspace is provided as an argument.
Definition unmq.hpp:131
int householder_q_mul_work(side_t side, trans_t trans, direction_t direction, storage_t storeMode, const matrixV_t &V, const vector_t &tau, matrixC_t &C, work_t &work, const HouseholderQMulOpts &opts={})
Applies unitary matrix Q to a matrix C. Workspace is provided as an argument.
Definition householder_q_mul.hpp:114
int householder_q_mul(side_t side, trans_t trans, direction_t direction, storage_t storeMode, const matrixV_t &V, const vector_t &tau, matrixC_t &C, const HouseholderQMulOpts &opts={})
Applies unitary matrix Q to a matrix C.
Definition householder_q_mul.hpp:233
constexpr WorkInfo householder_q_mul_worksize(side_t side, trans_t trans, direction_t direction, storage_t storeMode, const matrixV_t &V, const vector_t &tau, const matrixC_t &C, const HouseholderQMulOpts &opts={})
Workspace query of householder_q_mul()
Definition householder_q_mul.hpp:80
HouseholderQMulVariant
Variants of the algorithm to multiply by the unitary matrix Q, defined by a set of Householder reflec...
Definition householder_q_mul.hpp:21
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 householder_q_mul()
Definition householder_q_mul.hpp:24
Options struct for unmq.
Definition unmq.hpp:25
Output information in the workspace query.
Definition workspace.hpp:16