10#ifndef MATH_DEFINES_HEADER
11#define MATH_DEFINES_HEADER
15#define MATH_NAMESPACE_BEGIN namespace math {
16#define MATH_NAMESPACE_END }
18#define MATH_ALGO_NAMESPACE_BEGIN namespace algo {
19#define MATH_ALGO_NAMESPACE_END }
21#define MATH_GEOM_NAMESPACE_BEGIN namespace geom {
22#define MATH_GEOM_NAMESPACE_END }
24#define MATH_INTERNAL_NAMESPACE_BEGIN namespace internal {
25#define MATH_INTERNAL_NAMESPACE_END }
42#define MATH_PI 3.14159265358979323846264338327950288
43#define MATH_PI_2 1.57079632679489661923132169163975144
44#define MATH_PI_4 0.785398163397448309615660845819875721
45#define MATH_1_PI 0.318309886183790671537767526745028724
46#define MATH_2_PI 0.636619772367581343075535053490057448
47#define MATH_TAU 6.283185307179586476925286766559005768
49#define MATH_SQRT2 1.41421356237309504880168872420969808
50#define MATH_SQRT3 1.7320508075688772935274463415058723669
51#define MATH_1_SQRT_2 0.707106781186547524400844362104849039
52#define MATH_2_SQRT_PI 1.12837916709551257389615890312154517
53#define MATH_SQRT_PI 1.7724538509055160272981674833411451828
54#define MATH_SQRT_2PI 2.506628274631000502415765284811045253
56#define MATH_E 2.71828182845904523536028747135266250
57#define MATH_LOG2E 1.44269504088896340735992468100189214
58#define MATH_LOG10E 0.434294481903251827651128918916605082
59#define MATH_LOG102 0.301029995663981195213738894724493026
60#define MATH_LN2 0.693147180559945309417232121458176568
61#define MATH_LN10 2.30258509299404568401799145468436421
64#define MATH_POS_INF (std::numeric_limits<double>::infinity())
65#define MATH_NEG_INF (-MATH_POS_INF)
68#define MATH_POW2(x) ((x) * (x))
69#define MATH_POW3(x) (MATH_POW2(x) * (x))
70#define MATH_POW4(x) (MATH_POW2(MATH_POW2(x)))
71#define MATH_POW5(x) (MATH_POW4(x) * (x))
72#define MATH_POW6(x) (MATH_POW3(MATH_POW2(x)))
73#define MATH_POW7(x) (MATH_POW6(x) * (x))
74#define MATH_POW8(x) (MATH_POW4(MATH_POW2(x)))
77#define MATH_RAD2DEG(x) ((x) * (180.0 / MATH_PI))
78#define MATH_DEG2RAD(x) ((x) * (MATH_PI / 180.0))
82# define __FLT_MIN__ 1.17549435e-38f
85# define __DBL_MIN__ 2.2250738585072014e-308
87#define MATH_FLT_MIN __FLT_MIN__
88#define MATH_DBL_MIN __DBL_MIN__
89#define MATH_FLT_EPS (MATH_FLT_MIN * 1e8f)
90#define MATH_DBL_EPS (MATH_DBL_MIN * 1e58)
93#define MATH_SIGN(x) ((x) < 0 ? -1 : 1)
96#define MATH_EPSILON_EQ(x,v,eps) (((v - eps) <= x) && (x <= (v + eps)))
97#define MATH_EPSILON_LESS(x,v,eps) ((x + eps) < v)
98#define MATH_FLOAT_EQ(x,v) MATH_EPSILON_EQ(x,v,MATH_FLT_EPS)
99#define MATH_DOUBLE_EQ(x,v) MATH_EPSILON_EQ(x,v,MATH_DBL_EPS)
100#define MATH_FLOAT_LESS(x,v) MATH_EPSILON_LESS(x,v,MATH_FLT_EPS)
101#define MATH_DOUBLE_LESS(x,v) MATH_EPSILON_LESS(x,v,MATH_DBL_EPS)
104#define MATH_ISNAN(x) (x != x)
105#define MATH_ISINF(x) (!MATH_ISNAN(x) && MATH_ISNAN(x - x))
106#define MATH_NAN_CHECK(x) if (MATH_ISNAN(x)) { \
107 std::cout << "NAN error in " << __FILE__ << ":" << __LINE__ << std::endl; }
110#define MATH_MAX_SIZE_T ((std::size_t)-1)
111#define MATH_MAX_UINT ((unsigned int)-1)
#define MATH_INTERNAL_NAMESPACE_BEGIN
#define MATH_GEOM_NAMESPACE_BEGIN
#define MATH_NAMESPACE_BEGIN
#define MATH_NAMESPACE_END
#define MATH_INTERNAL_NAMESPACE_END
#define MATH_ALGO_NAMESPACE_BEGIN
#define MATH_GEOM_NAMESPACE_END
#define MATH_ALGO_NAMESPACE_END