22 #ifndef FIFE_UTIL_FIFE_MATH_H
23 #define FIFE_UTIL_FIFE_MATH_H
40 #define ABS(x) ((x)<0?-(x):(x))
45 #if defined( WIN32 ) && defined( _MSC_VER )
46 inline double round(
const double x) {
47 return x < 0.0 ? ceil(x - 0.5) : floor(x + 0.5);
54 static const float FLT_STD_MAX = std::numeric_limits<float>::max();
56 static const float FLT_PI = 4.0f*std::atan(1.0f);
69 static const double DBL_STD_MAX = std::numeric_limits<double>::max();
71 static const double DBL_PI = 4.0*std::atan(1.0);
124 template <
typename T>
145 static T
ACos(T _val);
146 static T
ASin(T _val);
147 static T
ATan(T _val);
148 static T
ATan2(T _x, T _y);
149 static T
Ceil(T _val);
150 static T
Cos(T _val);
151 static T
Exp(T _val);
152 static T
FAbs(T _val);
153 static T
Floor(T _val);
154 static T
FMod (T _x, T _y);
156 static T
Log(T _val);
157 static T
Log2(T _val);
158 static T
Log10(T _val);
159 static T
Pow(T _base, T _exponent);
160 static T
Sin(T _val);
161 static T
Sqr(T _val);
162 static T
Sqrt(T _val);
163 static T
Tan(T _val);
164 static bool Equal(T _val1, T _val2);
172 if (-static_cast<T>(1) < _val) {
173 if (_val < static_cast<T>(1)) {
174 return static_cast<T
>(std::acos(_val));
177 return static_cast<T
>(0);
187 if (-static_cast<T>(1) < _val) {
188 if (_val < static_cast<T>(1)) {
189 return static_cast<T
>(std::asin(_val));
202 return static_cast<T
>(std::atan(_val));
207 return static_cast<T
>(std::atan2(_x, _y));
212 return static_cast<T
>(std::ceil(_val));
217 return static_cast<T
>(std::cos(_val));
222 return static_cast<T
>(std::exp(_val));
227 return static_cast<T
>(std::fabs(_val));
232 return static_cast<T
>(std::floor(_val));
237 return static_cast<T
>(std::fmod(_x, _y));
242 return static_cast<T
>(1/std::sqrt(_val));
247 return static_cast<T
>(std::log(_val));
252 return invLog2() *
static_cast<T
>(std::log(_val));
257 return invLog10() *
static_cast<T
>(std::log(_val));
262 return static_cast<T
>(std::pow(_base, _exponent));
267 return static_cast<T
>(std::sin(_val));
277 return static_cast<T
>(std::sqrt(_val));
282 return static_cast<T
>(std::tan(_val));
287 return std::fabs(_val1 - _val2) < epsilon();
304 #endif // FIFE_UTIL_FIFE_MATH_H
static T ATan2(T _x, T _y)
static float_type inverseTwoPi()
static num_type invLog10()
static const double DBL_PI
static float_type invLog2()
static const double DBL_LOG_10
static num_type radToDeg()
static const float FLT_TWO_PI
static float_type invLog2()
static const double DBL_STD_MAX
static float_type twoPi()
unsigned nextPow2(unsigned x)
Returns the next higher power of 2 based on the passed argument.
static float_type epsilon()
static const float FLT_DEG_TO_RAD
static float_type invLog10()
static const float FLT_INVERSE_PI
static float_type inversePi()
static const float FLT_LOG_2
static const double DBL_INV_LOG_10
static float_type inverseTwoPi()
static float_type zeroTolerance()
static float_type invLog10()
static float_type radToDeg()
static const double DBL_LOG_2
static num_type zeroTolerance()
static float_type log10()
static num_type degToRad()
static const float FLT_HALF_PI
static const float FLT_INV_LOG_10
static T Pow(T _base, T _exponent)
static bool Equal(T _val1, T _val2)
static const float FLT_INVERSE_TWO_PI
static float_type twoPi()
static const double DBL_INVERSE_TWO_PI
static num_type inverseTwoPi()
static const double DBL_TWO_PI
static const double DBL_DEG_TO_RAD
static const double DBL_HALF_PI
static float_type log10()
static const double DBL_STD_EPSILON
static const float FLT_RAD_TO_DEG
static float_type degToRad()
static const double DBL_ZERO_TOLERANCE
static const double DBL_INVERSE_PI
static const double DBL_INV_LOG_2
static num_type epsilon()
static float_type inversePi()
static const float FLT_INV_LOG_2
static const float FLT_PI
static float_type halfPi()
static const double DBL_RAD_TO_DEG
static float_type radToDeg()
static const float FLT_ZERO_TOLERANCE
static const float FLT_STD_EPSILON
static const float FLT_STD_MAX
static float_type zeroTolerance()
float_traits< num_type > traits_type
static float_type degToRad()
static float_type halfPi()
static num_type invLog2()
static num_type inversePi()
static T FMod(T _x, T _y)
static float_type epsilon()
static const float FLT_LOG_10