Made Kahan Sum cross compile

This commit is contained in:
2019-06-12 10:02:20 +02:00
parent 96c63ac3ec
commit 09e57292f6

View File

@@ -49,10 +49,15 @@ public:
private:
#define NO_OPT __attribute__((optimize("-O0")))
#ifdef _MSC_VER
#pragma optimize( "", off )
#else
#pragma GCC push_options
#pragma GCC optimize ("O0")
#endif
/** adjust the sum */
void add(const T val) NO_OPT {
void add(const T val) {
const T y = val - comp;
const T t = sum + y;
comp = (t-sum) - y; // very important line
@@ -60,13 +65,19 @@ private:
}
/** adjust the sum */
void sub(const T val) NO_OPT {
void sub(const T val) {
const T y = val - comp;
const T t = sum - y;
comp = (t-sum) + y; // very important line
sum = t;
}
#ifdef _MSC_VER
#pragma optimize( "", on )
#else
#pragma GCC pop_options
#endif
public:
static T get(const std::vector<T>& values, const T zero = T()) {