From faeb8717e196422bf94b3943819aa94f260631b2 Mon Sep 17 00:00:00 2001 From: ROUVREAU Vincent Date: Thu, 24 Sep 2020 10:35:46 +0200 Subject: Use eigen initialization. std::size_t --- .../include/gudhi/Cell_complex/Hasse_diagram_cell.h | 19 ++++++++++--------- .../include/gudhi/Coxeter_triangulation.h | 18 ++++-------------- .../include/gudhi/Freudenthal_triangulation.h | 2 +- 3 files changed, 15 insertions(+), 24 deletions(-) (limited to 'src/Coxeter_triangulation/include') diff --git a/src/Coxeter_triangulation/include/gudhi/Cell_complex/Hasse_diagram_cell.h b/src/Coxeter_triangulation/include/gudhi/Cell_complex/Hasse_diagram_cell.h index 9847a6d3..24045c0c 100644 --- a/src/Coxeter_triangulation/include/gudhi/Cell_complex/Hasse_diagram_cell.h +++ b/src/Coxeter_triangulation/include/gudhi/Cell_complex/Hasse_diagram_cell.h @@ -16,6 +16,7 @@ #include #include #include // for std::is_same +#include // for std::size_t namespace Gudhi { namespace Hasse_diagram { @@ -162,7 +163,7 @@ class Hasse_diagram_cell { void remove_deleted_elements_from_boundary_and_coboundary() { Cell_range new_boundary; new_boundary.reserve(this->boundary.size()); - for (size_t bd = 0; bd != this->boundary.size(); ++bd) { + for (std::size_t bd = 0; bd != this->boundary.size(); ++bd) { if (!this->boundary[bd].first->deleted()) { new_boundary.push_back(this->boundary[bd]); } @@ -171,7 +172,7 @@ class Hasse_diagram_cell { Cell_range new_coBoundary; new_coBoundary.reserve(this->coBoundary.size()); - for (size_t cbd = 0; cbd != this->coBoundary.size(); ++cbd) { + for (std::size_t cbd = 0; cbd != this->coBoundary.size(); ++cbd) { if (!this->coBoundary[cbd].first->deleted()) { new_coBoundary.push_back(this->coBoundary[cbd]); } @@ -187,7 +188,7 @@ class Hasse_diagram_cell { // cout << "position : " << c.position << ", dimension : " << c.dimension << ", filtration: " << c.filtration << ", // size of boudary : " << c.boundary.size() << "\n"; out << c.position << " " << c.dimension << " " << c.filtration << std::endl; - for (size_t bd = 0; bd != c.boundary.size(); ++bd) { + for (std::size_t bd = 0; bd != c.boundary.size(); ++bd) { // do not write out the cells that has been deleted if (c.boundary[bd].first->deleted()) continue; out << c.boundary[bd].first->position << " " << c.boundary[bd].second << " "; @@ -201,9 +202,9 @@ class Hasse_diagram_cell { **/ inline std::vector get_list_of_boundary_elements() { std::vector result; - size_t size_of_boundary = this->boundary.size(); + std::size_t size_of_boundary = this->boundary.size(); result.reserve(size_of_boundary); - for (size_t bd = 0; bd != size_of_boundary; ++bd) { + for (std::size_t bd = 0; bd != size_of_boundary; ++bd) { result.push_back(this->boundary[bd].first); } return result; @@ -214,9 +215,9 @@ class Hasse_diagram_cell { **/ inline std::vector get_list_of_positions_of_boundary_elements() { std::vector result; - size_t size_of_boundary = this->boundary.size(); + std::size_t size_of_boundary = this->boundary.size(); result.reserve(size_of_boundary); - for (size_t bd = 0; bd != size_of_boundary; ++bd) { + for (std::size_t bd = 0; bd != size_of_boundary; ++bd) { result.push_back(this->boundary[bd].first->position); } return result; @@ -244,14 +245,14 @@ class Hasse_diagram_cell { result += std::to_string(this->additional_info); } result += " boundary "; - for (size_t bd = 0; bd != this->boundary.size(); ++bd) { + for (std::size_t bd = 0; bd != this->boundary.size(); ++bd) { result += "( " + std::to_string(this->boundary[bd].first->position); result += " " + std::to_string(this->boundary[bd].second); result += ") "; } result += " coBoundary "; - for (size_t cbd = 0; cbd != this->coBoundary.size(); ++cbd) { + for (std::size_t cbd = 0; cbd != this->coBoundary.size(); ++cbd) { result += "( " + std::to_string(this->coBoundary[cbd].first->position); result += " " + std::to_string(this->coBoundary[cbd].second); result += ") "; 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 i + 1) cartan(i, j) = 0; Eigen::SelfAdjointEigenSolver 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(); + Matrix result = (lower * saes.eigenvectors() * sqrt_diag.asDiagonal()).inverse(); return result; } diff --git a/src/Coxeter_triangulation/include/gudhi/Freudenthal_triangulation.h b/src/Coxeter_triangulation/include/gudhi/Freudenthal_triangulation.h index 43b33d1f..6c4bb534 100644 --- a/src/Coxeter_triangulation/include/gudhi/Freudenthal_triangulation.h +++ b/src/Coxeter_triangulation/include/gudhi/Freudenthal_triangulation.h @@ -198,7 +198,7 @@ class Freudenthal_triangulation { */ Eigen::VectorXd barycenter(const Simplex_handle& simplex, double scale = 1) const { Eigen::VectorXd res_vector(dimension_); - for (size_t i = 0; i < dimension_; ++i) res_vector(i) = 0; + res_vector.setZero(dimension_, 1); for (auto v : simplex.vertex_range()) { res_vector += cartesian_coordinates(v, scale); } -- cgit v1.2.3