10#ifndef TLAPACK_FRANCIS_OPTS_HH
11#define TLAPACK_FRANCIS_OPTS_HH
27 [](
size_t n,
size_t nh) ->
size_t {
30 if (n < 150)
return 10;
31 if (n < 590)
return size_t(n / std::log2(n));
32 if (n < 3000)
return 64;
33 if (n < 6000)
return 128;
40 [](
size_t n,
size_t nh) ->
size_t {
43 if (n < 150)
return 10;
44 if (n < 590)
return size_t(n / std::log2(n));
45 if (n < 3000)
return 96;
46 if (n < 6000)
return 192;
80 enable_if_t<is_complex<type_t<vector_t> >,
int> = 0>
83 size_type<matrix_t> ilo,
84 size_type<matrix_t> ihi,
94 enable_if_t<is_complex<type_t<vector_t> >,
int> = 0>
97 size_type<matrix_t> ilo,
98 size_type<matrix_t> ihi,
99 size_type<matrix_t> nw,
103 const size_type<matrix_t>& ns,
104 const size_type<matrix_t>& nd,
105 const FrancisOpts& opts = {});
110 enable_if_t<is_complex<type_t<vector_t> >,
int> = 0>
113 size_type<matrix_t> ilo,
114 size_type<matrix_t> ihi,
115 size_type<matrix_t> nw,
119 size_type<matrix_t>& ns,
120 size_type<matrix_t>& nd,
#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
void aggressive_early_deflation_work(bool want_t, bool want_z, size_type< matrix_t > ilo, size_type< matrix_t > ihi, size_type< matrix_t > nw, matrix_t &A, vector_t &s, matrix_t &Z, size_type< matrix_t > &ns, size_type< matrix_t > &nd, work_t &work, FrancisOpts &opts)
aggressive_early_deflation accepts as input an upper Hessenberg matrix H and performs an orthogonal s...
Definition aggressive_early_deflation.hpp:168
int multishift_qr_work(bool want_t, bool want_z, size_type< matrix_t > ilo, size_type< matrix_t > ihi, matrix_t &A, vector_t &w, matrix_t &Z, work_t &work, FrancisOpts &opts)
multishift_qr computes the eigenvalues and optionally the Schur factorization of an upper Hessenberg ...
Definition multishift_qr.hpp:114
WorkInfo multishift_qr_worksize(bool want_t, bool want_z, size_type< matrix_t > ilo, size_type< matrix_t > ihi, const matrix_t &A, const vector_t &w, const matrix_t &Z, const FrancisOpts &opts={})
Worspace query of multishift_qr()
Definition multishift_qr.hpp:72
WorkInfo aggressive_early_deflation_worksize(bool want_t, bool want_z, size_type< matrix_t > ilo, size_type< matrix_t > ihi, size_type< matrix_t > nw, const matrix_t &A, const vector_t &s, const matrix_t &Z, const size_type< matrix_t > &ns, const size_type< matrix_t > &nd, const FrancisOpts &opts)
Worspace query of aggressive_early_deflation().
Definition aggressive_early_deflation.hpp:119
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 multishift_qr().
Definition FrancisOpts.hpp:23
int n_sweep
number of sweeps used
Definition FrancisOpts.hpp:53
std::function< size_t(size_t, size_t)> nshift_recommender
Function that returns the number of shifts to use for a given matrix size.
Definition FrancisOpts.hpp:26
std::function< size_t(size_t, size_t)> deflation_window_recommender
Function that returns the number of shifts to use for a given matrix size.
Definition FrancisOpts.hpp:39
size_t nmin
Threshold to switch between blocked and unblocked code.
Definition FrancisOpts.hpp:57
int n_shifts_total
total number of shifts used
Definition FrancisOpts.hpp:54
int n_aed
number of times AED was called
Definition FrancisOpts.hpp:52
size_t nibble
Threshold of percent of AED window that must converge to skip a sweep.
Definition FrancisOpts.hpp:59
Output information in the workspace query.
Definition workspace.hpp:16