diff --git a/Frameworks/SSEQPlayer/SSEQPlayer/Channel.cpp b/Frameworks/SSEQPlayer/SSEQPlayer/Channel.cpp index c454e109c..44c9054b6 100644 --- a/Frameworks/SSEQPlayer/SSEQPlayer/Channel.cpp +++ b/Frameworks/SSEQPlayer/SSEQPlayer/Channel.cpp @@ -52,6 +52,29 @@ double Channel::window_lut[Channel::SINC_SAMPLES + 1]; static const double M_PI = 3.14159265358979323846; #endif +#if !defined(MAC_OS_X_VERSION_10_13) || (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_13) +// Code from http://hbfs.wordpress.com/2008/08/05/branchless-equivalents-of-simple-functions/ +inline int32_t sex(int32_t x) +{ + union + { + // let us suppose long is twice as wide as int + int64_t w; + + // should be hi,lo on a big endian machine + struct { int32_t lo, hi; } s; + } z; + z.w = x; + + return z.s.hi; +} + +inline uint32_t abs(int32_t x) +{ + return (x ^ sex(x)) - sex(x); +} +#endif + // Code from http://learningcppisfun.blogspot.com/2010/04/comparing-floating-point-numbers.html template inline bool fEqual(T x, T y, int N = 1) {