Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00008
00009 #if !defined(MATHTOOLBOX_HPP)
00010 #define MATHTOOLBOX_HPP
00011
00012 #include <math.h>
00013 #include <cmath>
00014 #include "../BasicDatatypes.hpp"
00015
00016
00017 extern double hypot(double x, double y, double z);
00018
00020 extern const double NaN_double;
00021
00023
00028 inline bool fuzzyCompare (double a, double b)
00029 {
00030 return std::abs(a - b) < 1E-11;
00031 }
00032
00033
00034
00035
00036 inline double sqr(double val)
00037 {
00038 return val * val;
00039 }
00040
00042
00047 inline bool fuzzyCompare(float a, float b)
00048 {
00049 return std::abs(a - b) < 1E-6f;
00050 }
00051
00052
00053
00054 double normalizeRadians (double radians);
00055
00057
00062 template<typename floatT>
00063 inline bool isNaN (floatT x)
00064 {
00065 return (x != x);
00066 }
00067
00069
00073 template<typename IntT>
00074 inline IntT round_to_int (float floatValue)
00075 {
00076
00077
00078
00079 return IntT (floatValue + (floatValue >= 0.0f ? + 0.5f : -0.5f));
00080 }
00081
00083
00087 template<typename IntT>
00088 inline IntT round_to_int (double floatValue)
00089 {
00090
00091
00092
00093 return IntT (floatValue + (floatValue >= 0.0 ? + 0.5 : -0.5));
00094 }
00095
00096
00097 #endif // MATHTOOLBOX