summaryrefslogtreecommitdiff
path: root/src/Coxeter_triangulation
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
parent47988ac2b3ba546e98b01e996d7d7d0bad3b6dd3 (diff)
Use eigen initialization. std::size_t
Diffstat (limited to 'src/Coxeter_triangulation')
-rw-r--r--src/Coxeter_triangulation/include/gudhi/Cell_complex/Hasse_diagram_cell.h19
-rw-r--r--src/Coxeter_triangulation/include/gudhi/Coxeter_triangulation.h18
-rw-r--r--src/Coxeter_triangulation/include/gudhi/Freudenthal_triangulation.h2
3 files changed, 15 insertions, 24 deletions
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 <ostream>
#include <string>
#include <type_traits> // for std::is_same
+#include <cstdlib> // 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<Hasse_diagram_cell*> get_list_of_boundary_elements() {
std::vector<Hasse_diagram_cell*> 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<unsigned> get_list_of_positions_of_boundary_elements() {
std::vector<unsigned> 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<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;
}
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);
}