diff options
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/WTF/wtf/MathExtras.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Source/WTF/wtf/MathExtras.h b/Source/WTF/wtf/MathExtras.h index f07bce6a3..4ff78df9f 100644 --- a/Source/WTF/wtf/MathExtras.h +++ b/Source/WTF/wtf/MathExtras.h @@ -123,6 +123,7 @@ inline bool signbit(double x) { struct ieee_double *p = (struct ieee_double *)&x #if COMPILER(MSVC) +#if _MSC_VER < 1800 // We must not do 'num + 0.5' or 'num - 0.5' because they can cause precision loss. static double round(double num) { @@ -138,6 +139,7 @@ static float roundf(float num) return integer - num > 0.5f ? integer - 1.0f : integer; return integer - num >= 0.5f ? integer - 1.0f : integer; } +#endif inline long long llround(double num) { return static_cast<long long>(round(num)); } inline long long llroundf(float num) { return static_cast<long long>(roundf(num)); } inline long lround(double num) { return static_cast<long>(round(num)); } @@ -177,7 +179,9 @@ namespace std { inline bool isinf(double num) { return !_finite(num) && !_isnan(num); } inline bool isnan(double num) { return !!_isnan(num); } inline bool isfinite(double x) { return _finite(x); } +#if _MSC_VER < 1800 inline bool signbit(double num) { return _copysign(1.0, num) < 0; } +#endif } // namespace std |
