summaryrefslogtreecommitdiff
path: root/src/Coxeter_triangulation/include/gudhi/Coxeter_triangulation.h
diff options
context:
space:
mode:
authorROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-09-24 10:35:46 +0200
committerROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-09-24 10:35:46 +0200
commitfaeb8717e196422bf94b3943819aa94f260631b2 (patch)
tree3e382553a88122484a0526ffca90cfea9e094910 /src/Coxeter_triangulation/include/gudhi/Coxeter_triangulation.h
parent47988ac2b3ba546e98b01e996d7d7d0bad3b6dd3 (diff)
Use eigen initialization. std::size_t
Diffstat (limited to 'src/Coxeter_triangulation/include/gudhi/Coxeter_triangulation.h')
-rw-r--r--src/Coxeter_triangulation/include/gudhi/Coxeter_triangulation.h18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/Coxeter_triangulation/include/gudhi/Coxeter_triangulation.h b/src/Coxeter_triangulation/include/gudhi/Coxeter_triangulation.h
index 2a57666d..de68acb6 100644
--- a/src/Coxeter_triangulation/include/gudhi/Coxeter_triangulation.h
+++ b/src/Coxeter_triangulation/include/gudhi/Coxeter_triangulation.h
@@ -46,28 +46,18 @@ class Coxeter_triangulation : public Freudenthal_triangulation<Permutahedral_rep
using Matrix = Eigen::MatrixXd;
Matrix root_matrix(unsigned d) {
- Matrix cartan(d, d);
- for (unsigned i = 0; i < d; i++) {
- cartan(i, i) = 1.0;
- }
+ Matrix cartan(Matrix::Identity(d, d));
for (unsigned i = 1; i < d; i++) {
cartan(i - 1, i) = -0.5;
cartan(i, i - 1) = -0.5;
}
- for (unsigned i = 0; i < d; i++)
- for (unsigned j = 0; j < d; j++)
- if (j + 1 < i || j > i + 1) cartan(i, j) = 0;
Eigen::SelfAdjointEigenSolver<Matrix> saes(cartan);
Eigen::VectorXd sqrt_diag(d);
for (unsigned i = 0; i < d; ++i) sqrt_diag(i) = std::sqrt(saes.eigenvalues()[i]);
- Matrix lower(d, d);
- for (unsigned i = 0; i < d; i++)
- for (unsigned j = 0; j < d; j++)
- if (i < j)
- lower(i, j) = 0;
- else
- lower(i, j) = 1;
+ Matrix lower(Matrix::Ones(d, d));
+ lower = lower.triangularView<Eigen::Lower>();
+
Matrix result = (lower * saes.eigenvectors() * sqrt_diag.asDiagonal()).inverse();
return result;
}