Performs a QR step on a tridiagonal symmetric matrix represented as a pair of two vectors diag and subdiag.
For compilation efficiency reasons, this procedure does not use eigen expression for its arguments.
Implemented from Golub's "Matrix Computations", algorithm 8.3.2: "implicit symmetric QR step with Wilkinson shift"
816 JacobiRotation<RealScalar>
rot;
817 rot.makeGivens(
x, z);
826 subdiag[
k] =
rot.c() * sdk -
rot.s() * dkp1;
828 if (
k >
start) subdiag[
k - 1] =
rot.c() * subdiag[
k - 1] -
rot.s() * z;
833 z = -
rot.s() * subdiag[
k + 1];
834 subdiag[
k + 1] =
rot.c() * subdiag[
k + 1];
840 Map<Matrix<Scalar, Dynamic, Dynamic, StorageOrder> >
q(matrixQ,
n,
n);
841 q.applyOnTheRight(
k,
k + 1,
rot);
AnnoyingScalar abs(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:135
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Array< double, 1, 3 > e(1./3., 0.5, 2.)
NumTraits< Scalar >::Real RealScalar
Definition: bench_gemm.cpp:46
static constexpr lastp1_t end
Definition: IndexedViewHelper.h:79
EIGEN_BLAS_FUNC() rot(int *n, Scalar *px, int *incx, Scalar *py, int *incy, Scalar *pc, Scalar *ps)
Definition: level1_real_impl.h:88
const char const char const char * diag
Definition: level2_impl.h:86
char char char int int * k
Definition: level2_impl.h:374
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool is_exactly_zero(const X &x)
Definition: Meta.h:592
EIGEN_DEVICE_FUNC const Scalar & q
Definition: SpecialFunctionsImpl.h:2019
EIGEN_DEVICE_FUNC bool abs2(bool x)
Definition: MathFunctions.h:1102
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
std::complex< double > mu
Definition: time_harmonic_fourier_decomposed_linear_elasticity/cylinder/cylinder.cc:52
void start(const unsigned &i)
(Re-)start i-th timer
Definition: oomph_utilities.cc:243
list x
Definition: plotDoE.py:28