<T>LAPACK 0.1.2
C++ Template Linear Algebra PACKage
Loading...
Searching...
No Matches
tkhnv.hpp
2#include "tik_qr.hpp"
3#include "tik_svd.hpp"
5
6using namespace tlapack;
7
9enum class TikVariant : char { QR = 'Q', Elden = 'E', SVD = 'S' };
10
11struct TikOpts {
12 TikVariant variant = TikVariant::QR;
13
14 constexpr TikOpts(TikVariant v = TikVariant::QR) : variant(v) {}
15};
16
21void tkhnv(matrixA_t& A, matrixb_t& b, real_t lambda, const TikOpts& opts = {})
22{
23 tlapack_check(nrows(A) >= ncols(A));
24
25 if (opts.variant == TikVariant::QR)
26 tik_qr(A, b, lambda);
27 else if (opts.variant == TikVariant::Elden)
28 tik_bidiag_elden(A, b, lambda);
29 else
30 tik_svd(A, b, lambda);
31}
#define TLAPACK_MATRIX
Macro for tlapack::concepts::Matrix compatible with C++17.
Definition concepts.hpp:896
#define TLAPACK_REAL
Macro for tlapack::concepts::Real compatible with C++17.
Definition concepts.hpp:918
#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
Definition tkhnv.hpp:11
Solves a Tikhonov regularized least squares problem using Eldén's bidiagonalization algorithm.
Solves a Tikhonov regularized least squares problem using QR factorization.
void tik_qr(matrixA_t &A, matrixb_t &b, real_t lambda)
Solves Tikhonov regularized least squares using QR factorization.
Definition tik_qr.hpp:37
Solves a Tikhonov regularized least squares problem using SVD decompisition.