Iros
 
Loading...
Searching...
No Matches
constants.h
Go to the documentation of this file.
1#pragma once
2
4#include "di/meta/language.h"
5#include "di/types/floats.h"
6
7namespace di::numbers {
8// NOTE: a 128 bit float has between 33 to 36 digits of precision. So we should define each
9// constant with 36 significant digits.
10
11template<concepts::FloatingPoint T>
12constexpr inline auto e_v = T(2.71828182845904523536028747135266249);
13
14template<concepts::FloatingPoint T>
15constexpr inline auto log2e_v = T(1.44269504088896340735992468100189213);
16
17template<concepts::FloatingPoint T>
18constexpr inline auto log10e_v = T(0.434294481903251827651128918916605082);
19
20template<concepts::FloatingPoint T>
21constexpr inline auto pi_v = T(3.14159265358979323846264338327950288);
22
23template<concepts::FloatingPoint T>
24constexpr inline auto inv_pi_v = T(0.318309886183790671537767526745028724);
25
26template<concepts::FloatingPoint T>
27constexpr inline auto inv_pisqrt_v = T(0.564189583547756286948079451560772585);
28
29template<concepts::FloatingPoint T>
30constexpr inline auto ln2_v = T(0.693147180559945309417232121458176568);
31
32template<concepts::FloatingPoint T>
33constexpr inline auto ln10_v = T(2.30258509299404568401799145468436420);
34
35template<concepts::FloatingPoint T>
36constexpr inline auto sqrt2_v = T(1.41421356237309504880168872420969807);
37
38template<concepts::FloatingPoint T>
39constexpr inline auto sqrt3_v = T(1.73205080756887729352744634150587236);
40
41template<concepts::FloatingPoint T>
42constexpr inline auto inv_sqrt3_v = T(0.577350269189625764509148780501957455);
43
44template<concepts::FloatingPoint T>
45constexpr inline auto egamma_v = T(0.577215664901532860606512090082402431);
46
47template<concepts::FloatingPoint T>
48constexpr inline auto phi_v = T(1.61803398874989484820458683436563811);
49
50constexpr inline auto e = e_v<f64>;
51constexpr inline auto log2e = log2e_v<f64>;
52constexpr inline auto log10e = log10e_v<f64>;
53constexpr inline auto pi = pi_v<f64>;
54constexpr inline auto inv_pi = inv_pi_v<f64>;
55constexpr inline auto inv_pisqrt = inv_pisqrt_v<f64>;
56constexpr inline auto ln2 = ln2_v<f64>;
57constexpr inline auto ln10 = ln10_v<f64>;
58constexpr inline auto sqrt2 = sqrt2_v<f64>;
59constexpr inline auto sqrt3 = sqrt3_v<f64>;
60constexpr inline auto inv_sqrt3 = inv_sqrt3_v<f64>;
61constexpr inline auto egamma = egamma_v<f64>;
62constexpr inline auto phi = phi_v<f64>;
63
64constexpr inline auto infinity = NumericLimits<f64>::infinity;
67}
Definition constants.h:7
constexpr auto egamma
Definition constants.h:61
constexpr auto sqrt3
Definition constants.h:59
constexpr auto ln2_v
Definition constants.h:30
constexpr auto ln10_v
Definition constants.h:33
constexpr auto log10e
Definition constants.h:52
constexpr auto inv_pi
Definition constants.h:54
constexpr auto sqrt2
Definition constants.h:58
constexpr auto egamma_v
Definition constants.h:45
constexpr auto log10e_v
Definition constants.h:18
constexpr auto inv_sqrt3
Definition constants.h:60
constexpr auto infinity
Definition constants.h:64
constexpr auto inv_sqrt3_v
Definition constants.h:42
constexpr auto log2e_v
Definition constants.h:15
constexpr auto quiet_nan
Definition constants.h:65
constexpr auto ln10
Definition constants.h:57
constexpr auto inv_pi_v
Definition constants.h:24
constexpr auto phi_v
Definition constants.h:48
constexpr auto sqrt2_v
Definition constants.h:36
constexpr auto signaling_nan
Definition constants.h:66
constexpr auto ln2
Definition constants.h:56
constexpr auto sqrt3_v
Definition constants.h:39
constexpr auto inv_pisqrt_v
Definition constants.h:27
constexpr auto pi
Definition constants.h:53
constexpr auto log2e
Definition constants.h:51
constexpr auto inv_pisqrt
Definition constants.h:55
constexpr auto phi
Definition constants.h:62
constexpr auto e
Definition constants.h:50
constexpr auto e_v
Definition constants.h:12
constexpr auto pi_v
Definition constants.h:21
Definition numeric_limits.h:7