00001 #ifndef GLOBAL_H_IS_INCLUDED
00002 #define GLOBAL_H_IS_INCLUDED
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <cmath>
00021 #include <cstdio>
00022 #include <cstdlib>
00023 #include <cassert>
00024
00025 #include "std/support.H"
00026
00027
00028
00029
00030
00031 namespace mlib {
00032
00033
00034 #if defined(WIN32) || defined(__KCC)
00035 #define M_PI 3.14159265358979323846
00036 #define M_PI_2 1.57079632679489661923
00037 #define M_LN2 0.69314718055994530942
00038 #define M_SQRT2 1.41421356237309504880
00039 #endif
00040
00041 #if !defined(TWO_PI)
00042 #define TWO_PI (2*M_PI)
00043 #endif
00044
00045
00046
00047 inline double deg2rad(double degrees) { return degrees * (M_PI/180); }
00048
00049 inline double rad2deg(double radians) { return radians * (180/M_PI); }
00050
00051
00052
00053
00054
00055
00056
00057 extern double gEpsAbsMath;
00058 extern double gEpsAbsSqrdMath;
00059 extern const double gEpsNorMath;
00060 extern const double gEpsNorSqrdMath;
00061 extern const double gEpsZeroMath;
00062
00063
00064
00065
00066
00067
00068
00069
00070 inline double epsAbsMath () { return gEpsAbsMath; }
00071 inline double epsAbsSqrdMath() { return gEpsAbsSqrdMath; }
00072
00073 inline double epsNorMath () { return gEpsNorMath; }
00074 inline double epsNorSqrdMath() { return gEpsNorSqrdMath; }
00075
00076 inline double epsZeroMath () { return gEpsZeroMath; }
00077
00078
00079 inline bool isZero(double x) { return std::fabs(x) < epsZeroMath(); }
00080
00081 inline bool isEqual(double x, double y) { return isZero(x-y); }
00082
00083
00084
00085 extern void setEpsAbsMath(double eps);
00086
00087
00088
00089
00090
00091
00092 #ifdef __KCC
00093 #define sqrt(x) std::sqrt(double(x))
00094 #define log(x) std::log(double(x))
00095 #define pow(x,y) std::pow(double(x),double(y))
00096 #endif
00097
00098
00099
00100
00101
00102
00103 inline double Acos(double x) { return std::acos(clamp(x, -1.0, 1.0)); }
00104
00105 #if defined(_AIX) || defined(__GNUC__)
00106 #define MLIB_INLINE inline
00107 #else
00108 #define MLIB_INLINE
00109 #endif
00110
00111
00112
00113 void fn_gdb_will_recognize_so_i_can_set_a_fuggin_breakpoint();
00114
00115 }
00116
00117 #endif // GLOBAL_H_IS_INCLUDED