From 8e2d1c7f2a099df5701a605ec884e786dcedae8b Mon Sep 17 00:00:00 2001 From: John Emmas Date: Fri, 19 Aug 2016 12:56:34 +0100 Subject: Move 'round()' / 'trunc()' etc so that they won't conflict with any versions already available in MSVC --- libs/pbd/msvc/msvc_pbd.cc | 100 +++++++++++++++++++++++----------------------- 1 file changed, 50 insertions(+), 50 deletions(-) (limited to 'libs/pbd/msvc/msvc_pbd.cc') diff --git a/libs/pbd/msvc/msvc_pbd.cc b/libs/pbd/msvc/msvc_pbd.cc index 68596e3463..20065fff26 100644 --- a/libs/pbd/msvc/msvc_pbd.cc +++ b/libs/pbd/msvc/msvc_pbd.cc @@ -223,121 +223,121 @@ ssize_t ret; return (ret); } +#if defined(_MSC_VER) && (_MSC_VER < 1800) //*************************************************************** // -// roundf() +// expm1() // -// Emulates roundf() using floorf(). +// Emulates C99 expm1() using exp(). // // Returns: // -// On Success: The largest integer that is less than or -// equal to 'x'. -// On Failure: None +// On Success: (('e' raised to the power of 'x') - 1) +// (e.g. expm1(1) == 1.7182818). +// On Failure: None, except that calling exp(x) should generate +// an appropriate error for us (such as INF etc). // -LIBPBD_API float PBD_APICALLTYPE -roundf(float x) +LIBPBD_API double PBD_APICALLTYPE +expm1(double x) { - return (floorf(x)); + return (exp(x) - (double)1.0); } //*************************************************************** // -// round() +// log1p() // -// Emulates round() using floor(). +// Emulates C99 log1p() using log(). // // Returns: // -// On Success: The largest integer that is less than or -// equal to 'x'. -// On Failure: None +// On Success: The natural logarithm of (1 + x) +// (e.g. log1p(1) == 0.69314718). +// On Failure: None, except that calling log(x) should generate +// an appropriate error for us (such as ERANGE etc). // LIBPBD_API double PBD_APICALLTYPE -round(double x) +log1p(double x) { - return (floor(x)); + return (log(x + (double)1.0)); } //*************************************************************** // -// trunc() +// roundf() // -// Emulates trunc() using floor() and ceil(). +// Emulates roundf() using floorf(). // // Returns: // -// On Success: The largest integer whose magnitude is less -// than or equal to 'x' (regardless of sign). +// On Success: The largest integer that is less than or +// equal to 'x'. // On Failure: None // -LIBPBD_API double PBD_APICALLTYPE -trunc(double x) +LIBPBD_API float PBD_APICALLTYPE +roundf(float x) { - if (x < 0) - return (ceil(x)); - - return (floor(x)); + return (floorf(x)); } -#if defined(_MSC_VER) && (_MSC_VER < 1800) //*************************************************************** // -// expm1() +// round() // -// Emulates C99 expm1() using exp(). +// Emulates round() using floor(). // // Returns: // -// On Success: (('e' raised to the power of 'x') - 1) -// (e.g. expm1(1) == 1.7182818). -// On Failure: None, except that calling exp(x) should generate -// an appropriate error for us (such as INF etc). +// On Success: The largest integer that is less than or +// equal to 'x'. +// On Failure: None // LIBPBD_API double PBD_APICALLTYPE -expm1(double x) +round(double x) { - return (exp(x) - (double)1.0); + return (floor(x)); } +#endif +#if defined(_MSC_VER) && (_MSC_VER < 1900) //*************************************************************** // -// log1p() +// log2() // -// Emulates C99 log1p() using log(). +// Emulates C99 log2() using log(). // // Returns: // -// On Success: The natural logarithm of (1 + x) -// (e.g. log1p(1) == 0.69314718). +// On Success: The binary (base-2) logarithm of 'x' +// (e.g. log2(1024) == 10). // On Failure: None, except that calling log(x) should generate // an appropriate error for us (such as ERANGE etc). // LIBPBD_API double PBD_APICALLTYPE -log1p(double x) +log2(double x) { - return (log(x + (double)1.0)); + return (log(x) / log((double)2.0)); } -#endif -#if defined(_MSC_VER) && (_MSC_VER < 1900) //*************************************************************** // -// log2() +// trunc() // -// Emulates C99 log2() using log(). +// Emulates trunc() using floor() and ceil(). // // Returns: // -// On Success: The binary (base-2) logarithm of 'x' -// (e.g. log2(1024) == 10). -// On Failure: None, except that calling log(x) should generate -// an appropriate error for us (such as ERANGE etc). +// On Success: The largest integer whose magnitude is less +// than or equal to 'x' (regardless of sign). +// On Failure: None // LIBPBD_API double PBD_APICALLTYPE -log2(double x) +trunc(double x) { - return (log(x) / log((double)2.0)); + if (x < 0) + return (ceil(x)); + + return (floor(x)); } #endif -- cgit v1.2.3