diff --git a/include/osg/Math b/include/osg/Math index 487255581..b59ef4ca1 100644 --- a/include/osg/Math +++ b/include/osg/Math @@ -14,109 +14,11 @@ #ifndef __OSG_MATH #define __OSG_MATH -#include +#include +#include #include -//certain math functions were not defined until 10.2 -//so this code checks the version so it can add in workarounds for older versions. -#ifdef __APPLE__ -// Using std::isnan will work for OS X, but use of -// and std:: are not necessarily portible with other systems so -// the include of is isolated here. -#include -#include -#if !defined(MAC_OS_X_VERSION_10_2) || (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_2) - // One extra check to verify the gcc version. - // The assumption is that there is no possible way to use gcc 4+ - // on anything less than 10.3.9. So if gcc 4 is in use, this means - // pre-10.2 support is not intended and we need not define APPLE_PRE_10_2. - // The reason for this extra check is that if the user relies on default - // settings, MAC_OS_X_VERSION_MIN_REQUIRED will be set to 1010 and hit - // this code path, but this is probably not what they want if using gcc 4+. - #if (__GNUC__ < 4) - #define APPLE_PRE_10_2 - #endif - - #if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6) - #define APPLE_PRE_10_6 - #endif - -#endif -#endif - -#if defined(_MSC_VER) - #include -#endif - -#if defined (sun) || \ - defined (APPLE_PRE_10_6) || \ - (defined (_AIX) && defined (__GNUC__)) - - #include - - #ifndef acosf - inline float acosf(float value) { return static_cast(acos(value)); } - #endif - - #ifndef asinf - inline float asinf(float value) { return static_cast(asin(value)); } - #endif - - #ifndef cosf - inline float cosf(float value) { return static_cast(cos(value)); } - #endif - - #ifndef sinf - inline float sinf(float value) { return static_cast(sin(value)); } - #endif - - #ifndef logf - inline float logf(float value) { return static_cast(log(value)); } - #endif - - #ifndef powf - inline float powf(float value1,float value2) { return static_cast(pow(value1,value2)); } - #endif - - #ifndef sqrtf - inline float sqrtf(float value) { return static_cast(sqrt(value)); } - #endif - - #ifndef fabsf - inline float fabsf(float value) { return static_cast(fabs(value)); } - #endif - - #ifndef atan2f - inline float atan2f(float value1, float value2) { return static_cast(atan2(value1,value2)); } - #endif - - #ifndef fmodf - inline float fmodf(float value1, float value2) { return static_cast(fmod(value1,value2)); } - #endif - - #ifndef tanf - inline float tanf(float value) { return static_cast(tan(value)); } - #endif - -#endif - - -#if defined (sun) || \ - defined (__hpux) || \ - defined (APPLE_PRE_10_2) || \ - (defined (_AIX) && defined (__GNUC__)) - - #ifndef floorf - inline float floorf(float value) { return static_cast(floor(value)); } - #endif - - #ifndef ceilf - inline float ceilf(float value) { return static_cast(ceil(value)); } - #endif - -#endif - namespace osg { // define the standard trig values @@ -168,8 +70,7 @@ template inline T maximum(T lhs,T rhs) { return lhs>rhs?lhs:rhs; } template -inline T clampTo(T v,T minimum,T maximum) - { return vmaximum?maximum:v; } +inline T clampTo(T v,T minimum,T maximum) { return vmaximum?maximum:v; } template inline T clampAbove(T v,T minimum) { return v=0.0f?floorf(v+0.5f):ceilf(v-0.5f); } inline double round(double v) { return v>=0.0?floor(v+0.5):ceil(v-0.5); } -#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MWERKS__) - inline bool isNaN(float v) { return _isnan(v)!=0; } +#if defined(_MSC_VER) inline bool isNaN(double v) { return _isnan(v)!=0; } #else - #if defined(__APPLE__) - inline bool isNaN(float v) { return std::isnan(v); } - inline bool isNaN(double v) { return std::isnan(v); } - #else - #ifdef isnan - inline bool isNaN(float v) { return isnan(v); } - inline bool isNaN(double v) { return isnan(v); } - #else - // Need to use to std::isnan to avoid undef problem from - inline bool isNaN(float v) { return std::isnan(v); } - inline bool isNaN(double v) { return std::isnan(v); } - #endif - #endif + inline bool isNaN(float v) { return std::isnan(v); } + inline bool isNaN(double v) { return std::isnan(v); } #endif