include/meltpooldg/utilities/numbers.hpp Source File

Developer Documentation: include/meltpooldg/utilities/numbers.hpp Source File
Developer Documentation
numbers.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cmath>
4#include <numbers>
5
7{
8 // @note We did not use std::numeric_limits<double>::lowest() on purpose.
9 // @p invalid_double should serve as a default value for an optional parameter.
10 // During parsing, the ParameterHandler converts the default value (e.g.
11 // set to invalid_double) to a string via Patterns::Tools::to_string<double>()
12 // and then back to a double value. This entails a loss in the number of decimal
13 // places and thus round-off errors.
14 constexpr double invalid_double = -1e100;
15
16 // Check if a @p number is invalid, if @p number is smaller or equal to
17 // numbers::invalid_double.
18 inline bool
19 is_invalid(const double &number)
20 {
21 return number <= invalid_double;
22 }
23
35 template <typename number>
36 number
37 compute_angle_in_radians(const number angle_deg)
38 {
39 return angle_deg * number(std::numbers::pi_v<number> / 180.0);
40 }
41
43 constexpr double sqrt_pi = std::numbers::pi_v<double> * std::numbers::inv_sqrtpi_v<double>;
44} // namespace MeltPoolDG::numbers
Definition numbers.hpp:7
number compute_angle_in_radians(const number angle_deg)
Convert an angle from degrees to radians.
Definition numbers.hpp:37
bool is_invalid(const double &number)
Definition numbers.hpp:19
constexpr double sqrt_pi
Square root of pi.
Definition numbers.hpp:43
constexpr double invalid_double
Definition numbers.hpp:14