1 #ifndef INCG_PHI_CORE_MATH_CONSTANTS_HPP 2 #define INCG_PHI_CORE_MATH_CONSTANTS_HPP 4 #include "phi/phi_config.hpp" 6 #if PHI_HAS_EXTENSION_PRAGMA_ONCE() 10 #include "phi/compiler_support/constexpr.hpp" 11 #include "phi/compiler_support/inline.hpp" 12 #include "phi/compiler_support/nodiscard.hpp" 13 #include "phi/compiler_support/noexcept.hpp" 14 #include "phi/core/types.hpp" 15 #include "phi/core/unsafe_cast.hpp" 16 #include "phi/preprocessor/glue.hpp" 18 #define DETAIL_PHI_DECLARE_CONSTANT(name, value) \ 19 template <typename TypeT> \ 20 PHI_NODISCARD PHI_ALWAYS_INLINE PHI_CONSTEXPR TypeT PHI_GLUE(name, _v)() PHI_NOEXCEPT \ 22 return ::phi::unsafe_cast<TypeT>(value); \ 25 PHI_NODISCARD PHI_ALWAYS_INLINE PHI_CONSTEXPR ::phi::f64 name() PHI_NOEXCEPT \ 27 return ::phi::PHI_GLUE(name, _v)<f64>(); \ 29 PHI_NODISCARD PHI_ALWAYS_INLINE PHI_CONSTEXPR ::phi::f64 PHI_GLUE(name, _64)() PHI_NOEXCEPT \ 31 return ::phi::PHI_GLUE(name, _v)<f64>(); \ 33 PHI_NODISCARD PHI_ALWAYS_INLINE PHI_CONSTEXPR ::phi::f32 PHI_GLUE(name, _32)() PHI_NOEXCEPT \ 35 return ::phi::PHI_GLUE(name, _v)<f32>(); \ 38 DETAIL_PHI_BEGIN_NAMESPACE()
41 DETAIL_PHI_DECLARE_CONSTANT(
43 2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138217852516642742746
L)
46 DETAIL_PHI_DECLARE_CONSTANT(
48 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651
L)
51 DETAIL_PHI_DECLARE_CONSTANT(
53 6.28318530717958647692528676655900576839433879875021164194988918461563281257241799725606965068423413596429617303
L)
56 DETAIL_PHI_DECLARE_CONSTANT(
58 1.77245385090551602729816748334114518279754945612238712821380778985291128459103218137495065673854466541622682362
L)
61 DETAIL_PHI_DECLARE_CONSTANT(
63 1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404326
L)
66 DETAIL_PHI_DECLARE_CONSTANT(three_over_two_pi, 4.71238898038468985769396507491925432
L)
69 DETAIL_PHI_DECLARE_CONSTANT(quarter_pi, 0.785398163397448309615660845819875721
L)
72 DETAIL_PHI_DECLARE_CONSTANT(one_over_pi, 0.318309886183790671537767526745028724
L)
75 DETAIL_PHI_DECLARE_CONSTANT(one_over_two_pi, 0.159154943091895335768883763372514362
L)
78 DETAIL_PHI_DECLARE_CONSTANT(two_over_pi, 0.636619772367581343075535053490057448
L)
81 DETAIL_PHI_DECLARE_CONSTANT(four_over_pi, 1.273239544735162686151070106980114898
L)
84 DETAIL_PHI_DECLARE_CONSTANT(two_over_sqrt_pi, 1.12837916709551257389615890312154517
L)
87 DETAIL_PHI_DECLARE_CONSTANT(one_over_sqrt_two, 0.707106781186547524400844362104849039
L)
90 DETAIL_PHI_DECLARE_CONSTANT(
92 1.25331413731550025120788264240552262650349337030496915831496178817114682730392098747329791918902863305800498633
L)
95 DETAIL_PHI_DECLARE_CONSTANT(
97 2.50662827463100050241576528481104525300698674060993831662992357634229365460784197494659583837805726611600997267
L)
100 DETAIL_PHI_DECLARE_CONSTANT(
102 1.41421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157
L)
105 DETAIL_PHI_DECLARE_CONSTANT(
107 1.7320508075688772935274463415058723669428052538103806280558069794519330169088000370811461867572485756756261414154
L)
109 DETAIL_PHI_DECLARE_CONSTANT(
111 0.017453292519943295769236907684886127134428718885417254560971914401710091146034494436822415696345095
L)
113 DETAIL_PHI_DECLARE_CONSTANT(
115 57.295779513082320876798154814105170332405472466564321549160243861202847148321552632440968995851111
L)
118 DETAIL_PHI_DECLARE_CONSTANT(golden_ratio,
119 1.6180339887498948482045868343656381177203091798057628621
L)
122 DETAIL_PHI_DECLARE_CONSTANT(cos_one_over_two, 0.877582561890372716130286068203503191
L)
124 DETAIL_PHI_END_NAMESPACE()
126 #undef DETAIL_PHI_DECLARE_CONSTANT 128 #endif // INCG_PHI_CORE_MATH_CONSTANTS_HPP Definition: is_nothrow_constructible.test.cpp:149