/* Copyright (C) 2008 Tobi Vollebregt 2010 Mark Vejvoda You can redistribute this code and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version ============================================================== */ /* Conditionally include streflop depending on STREFLOP_* #defines: If one of those is present, #include "streflop.h", otherwise #include When faced with ambiguous call errors with e.g. fabs, use math::function. Add it to math namespace if it doesn't exist there yet. */ #ifndef STREFLOP_COND_H #define STREFLOP_COND_H #if defined(STREFLOP_X87) || defined(STREFLOP_SSE) || defined(STREFLOP_SOFT) #include using namespace streflop; namespace math { using namespace streflop; } #else #include namespace math { using std::fabs; // using std::sqrt; using std::sin; using std::cos; using std::sinh; using std::cosh; using std::tan; using std::tanh; using std::asin; using std::acos; using std::atan; using std::atan2; using std::ceil; using std::floor; using std::fmod; using std::pow; using std::log; using std::log10; using std::exp; using std::frexp; using std::ldexp; // the following are C99 functions -> not supported by VS C #if !defined(_MSC_VER) || _MSC_VER < 1500 using std::isnan; using std::isinf; using std::isfinite; #elif __cplusplus template inline bool isnan(T value) { return value != value; } // requires include template inline bool isinf(T value) { return std::numeric_limits::has_infinity && value == std::numeric_limits::infinity(); } // requires include template inline bool isfinite(T value) { return !isinf(value); } #endif } #endif #endif // STREFLOP_COND_H