summaryrefslogtreecommitdiff
path: root/src/common/include/gudhi
diff options
context:
space:
mode:
authorHind <hind.montassif@gmail.com>2021-04-23 09:41:29 +0200
committerHind <hind.montassif@gmail.com>2021-04-23 09:41:29 +0200
commit9df34f942df8417db11c324fb0c4e2c475a5211f (patch)
treeb9d51f16e34fb3b7aa6c6a0e4d8758295ef69c22 /src/common/include/gudhi
parentbf4625f877aee83325812c6c479af4df36a2c7e9 (diff)
Get pi constant from boost instead of cmath (to be replaced with the C++20 standard one eventually)
Diffstat (limited to 'src/common/include/gudhi')
-rw-r--r--src/common/include/gudhi/random_point_generators.h42
1 files changed, 22 insertions, 20 deletions
diff --git a/src/common/include/gudhi/random_point_generators.h b/src/common/include/gudhi/random_point_generators.h
index e02c1ed2..25a10232 100644
--- a/src/common/include/gudhi/random_point_generators.h
+++ b/src/common/include/gudhi/random_point_generators.h
@@ -18,7 +18,7 @@
#include <CGAL/version.h> // for CGAL_VERSION_NR
#include <vector> // for vector<>
-#include <cmath> // for M_PI
+#include <boost/math/constants/constants.hpp> // for pi constant
// Make compilation fail - required for external projects - https://github.com/GUDHI/gudhi-devel/issues/10
#if CGAL_VERSION_NR < 1041101000
@@ -27,6 +27,8 @@
namespace Gudhi {
+constexpr double pi = boost::math::constants::pi<double>();
+
///////////////////////////////////////////////////////////////////////////////
// Note: All these functions have been tested with the CGAL::Epick_d kernel
///////////////////////////////////////////////////////////////////////////////
@@ -165,11 +167,11 @@ std::vector<typename Kernel::Point_d> generate_points_on_torus_3D(std::size_t nu
if (uniform) {
std::size_t k1 = i / num_lines;
std::size_t k2 = i % num_lines;
- u = 2 * M_PI * k1 / num_lines;
- v = 2 * M_PI * k2 / num_lines;
+ u = 2 * pi * k1 / num_lines;
+ v = 2 * pi * k2 / num_lines;
} else {
- u = rng.get_double(0, 2 * M_PI);
- v = rng.get_double(0, 2 * M_PI);
+ u = rng.get_double(0, 2 * pi);
+ v = rng.get_double(0, 2 * pi);
}
Point p = construct_point(k,
(R + r * std::cos(u)) * std::cos(v),
@@ -201,7 +203,7 @@ static void generate_uniform_points_on_torus_d(const Kernel &k, int dim, std::si
(100. + radius_noise_percentage) / 100.);
}
std::vector<typename Kernel::FT> cp2 = current_point;
- double alpha = 2 * M_PI * slice_idx / num_slices;
+ double alpha = 2 * pi * slice_idx / num_slices;
cp2.push_back(radius_noise_ratio * std::cos(alpha));
cp2.push_back(radius_noise_ratio * std::sin(alpha));
generate_uniform_points_on_torus_d(
@@ -235,7 +237,7 @@ std::vector<typename Kernel::Point_d> generate_points_on_torus_d(std::size_t num
std::vector<typename Kernel::FT> pt;
pt.reserve(dim * 2);
for (int curdim = 0; curdim < dim; ++curdim) {
- FT alpha = rng.get_double(0, 2 * M_PI);
+ FT alpha = rng.get_double(0, 2 * pi);
pt.push_back(radius_noise_ratio * std::cos(alpha));
pt.push_back(radius_noise_ratio * std::sin(alpha));
}
@@ -371,7 +373,7 @@ std::vector<typename Kernel::Point_d> generate_points_on_3sphere_and_circle(std:
for (std::size_t i = 0; i < num_points;) {
Point p_sphere = *generator++; // First 3 coords
- FT alpha = rng.get_double(0, 2 * M_PI);
+ FT alpha = rng.get_double(0, 2 * pi);
std::vector<FT> pt(5);
pt[0] = k_coord(p_sphere, 0);
pt[1] = k_coord(p_sphere, 1);
@@ -404,11 +406,11 @@ std::vector<typename Kernel::Point_d> generate_points_on_klein_bottle_3D(std::si
if (uniform) {
std::size_t k1 = i / num_lines;
std::size_t k2 = i % num_lines;
- u = 2 * M_PI * k1 / num_lines;
- v = 2 * M_PI * k2 / num_lines;
+ u = 2 * pi * k1 / num_lines;
+ v = 2 * pi * k2 / num_lines;
} else {
- u = rng.get_double(0, 2 * M_PI);
- v = rng.get_double(0, 2 * M_PI);
+ u = rng.get_double(0, 2 * pi);
+ v = rng.get_double(0, 2 * pi);
}
double tmp = cos(u / 2) * sin(v) - sin(u / 2) * sin(2. * v);
Point p = construct_point(k,
@@ -440,11 +442,11 @@ std::vector<typename Kernel::Point_d> generate_points_on_klein_bottle_4D(std::si
if (uniform) {
std::size_t k1 = i / num_lines;
std::size_t k2 = i % num_lines;
- u = 2 * M_PI * k1 / num_lines;
- v = 2 * M_PI * k2 / num_lines;
+ u = 2 * pi * k1 / num_lines;
+ v = 2 * pi * k2 / num_lines;
} else {
- u = rng.get_double(0, 2 * M_PI);
- v = rng.get_double(0, 2 * M_PI);
+ u = rng.get_double(0, 2 * pi);
+ v = rng.get_double(0, 2 * pi);
}
Point p = construct_point(k,
(a + b * cos(v)) * cos(u) + (noise == 0. ? 0. : rng.get_double(0, noise)),
@@ -479,11 +481,11 @@ generate_points_on_klein_bottle_variant_5D(
if (uniform) {
std::size_t k1 = i / num_lines;
std::size_t k2 = i % num_lines;
- u = 2 * M_PI * k1 / num_lines;
- v = 2 * M_PI * k2 / num_lines;
+ u = 2 * pi * k1 / num_lines;
+ v = 2 * pi * k2 / num_lines;
} else {
- u = rng.get_double(0, 2 * M_PI);
- v = rng.get_double(0, 2 * M_PI);
+ u = rng.get_double(0, 2 * pi);
+ v = rng.get_double(0, 2 * pi);
}
FT x1 = (a + b * cos(v)) * cos(u);
FT x2 = (a + b * cos(v)) * sin(u);