Implement blocked tridiagonalization for large matrices

libeigen/eigen!2482

Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com>
This commit is contained in:
Rasmus Munk Larsen
2026-04-26 17:10:09 -07:00
co-authored by Rasmus Munk Larsen
parent ae04638fea
commit 62ac66afa2
3 changed files with 184 additions and 2 deletions
+13
View File
@@ -156,6 +156,17 @@ void ctms_decompositions() {
jSVD.compute(A);
}
template <typename Scalar>
void selfadjoint_eigensolver_large_fixed_no_malloc() {
typedef Eigen::Matrix<Scalar, 96, 96> Matrix;
Matrix A = Matrix::Random();
Matrix saA = A.adjoint() * A;
Eigen::SelfAdjointEigenSolver<Matrix> solver;
solver.compute(saA);
VERIFY_IS_EQUAL(solver.info(), Eigen::Success);
}
void test_zerosized() {
// default constructors:
Eigen::MatrixXd A;
@@ -219,6 +230,8 @@ EIGEN_DECLARE_TEST(nomalloc) {
// Check decomposition modules with dynamic matrices that have a known compile-time max size (ctms)
CALL_SUBTEST_4(ctms_decompositions<float>());
CALL_SUBTEST_4(selfadjoint_eigensolver_large_fixed_no_malloc<float>());
CALL_SUBTEST_4(selfadjoint_eigensolver_large_fixed_no_malloc<double>());
CALL_SUBTEST_5(test_zerosized());