12#ifndef TLAPACK_UNGBR_HH
13#define TLAPACK_UNGBR_HH
47template <
class T, TLAPACK_SMATRIX matrix_t, TLAPACK_SVECTOR vector_t>
57 const idx_t m = nrows(
A);
91template <
class T, TLAPACK_SMATRIX matrix_t, TLAPACK_SVECTOR vector_t>
101 const idx_t n = ncols(
A);
140 const idx_t m = nrows(
A);
150 for (idx_t j = m - 1; j > 0; --j) {
152 for (idx_t i = j + 1; i < m; ++i)
153 A(i, j) =
A(i, j - 1);
156 for (idx_t i = 1; i < m; ++i)
200template <TLAPACK_SMATRIX matrix_t, TLAPACK_SVECTOR vector_t>
214 std::vector<T>
work_;
245 const idx_t n = ncols(
A);
260 for (idx_t i = 1; i < n; ++i) {
263 for (idx_t j = 1; j < n; ++j) {
264 for (idx_t i = j - 1; i > 0; --i) {
265 A(i, j) =
A(i - 1, j);
310template <TLAPACK_SMATRIX matrix_t, TLAPACK_SVECTOR vector_t>
324 std::vector<T>
work_;
#define TLAPACK_SVECTOR
Macro for tlapack::concepts::SliceableVector compatible with C++17.
Definition concepts.hpp:909
#define TLAPACK_SMATRIX
Macro for tlapack::concepts::SliceableMatrix compatible with C++17.
Definition concepts.hpp:899
#define TLAPACK_WORKSPACE
Macro for tlapack::concepts::Workspace compatible with C++17.
Definition concepts.hpp:912
int ungbr_q(const size_type< matrix_t > k, matrix_t &A, const vector_t &tau, const UngbrOpts &opts={})
Generates the unitary matrix Q determined by gebrd when reducing a matrix A to bidiagonal form: A = Q...
Definition ungbr.hpp:201
int ungbr_p(const size_type< matrix_t > k, matrix_t &A, const vector_t &tau, const UngbrOpts &opts={})
Generates the unitary matrix P**H determined by gebrd when reducing a matrix A to bidiagonal form: A ...
Definition ungbr.hpp:311
int ungbr_p_work(const size_type< matrix_t > k, matrix_t &A, const vector_t &tau, work_t &work, const UngbrOpts &opts={})
Generates the unitary matrix P**H determined by gebrd when reducing a matrix A to bidiagonal form: A ...
Definition ungbr.hpp:231
int ungq_work(direction_t direction, storage_t storeMode, matrix_t &A, const vector_t &tau, work_t &work, const UngqOpts &opts={})
Generates a matrix Q that is the product of elementary reflectors. Workspace is provided as an argu...
Definition ungq.hpp:138
int ungbr_q_work(const size_type< matrix_t > k, matrix_t &A, const vector_t &tau, work_t &work, const UngbrOpts &opts={})
Generates the unitary matrix Q determined by gebrd when reducing a matrix A to bidiagonal form: A = Q...
Definition ungbr.hpp:126
constexpr WorkInfo ungbr_p_worksize(const size_type< matrix_t > k, matrix_t &A, const vector_t &tau, const UngbrOpts &opts={})
Worspace query of ungbr_p()
Definition ungbr.hpp:92
constexpr WorkInfo ungbr_q_worksize(const size_type< matrix_t > k, matrix_t &A, const vector_t &tau, const UngbrOpts &opts={})
Worspace query of ungbr_q()
Definition ungbr.hpp:48
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
constexpr internal::RowwiseStorage ROWWISE_STORAGE
Rowwise storage.
Definition types.hpp:416
constexpr internal::Forward FORWARD
Forward direction.
Definition types.hpp:381
constexpr internal::ColumnwiseStorage COLUMNWISE_STORAGE
Columnwise storage.
Definition types.hpp:414
Options struct for ungbr.
Definition ungbr.hpp:23
size_t nb
Block size.
Definition ungbr.hpp:24
Output information in the workspace query.
Definition workspace.hpp:16