25#ifndef _SOPLEX_STABLE_SUM_H_
26#define _SOPLEX_STABLE_SUM_H_
37 typename std::remove_const<T>::type
sum;
53 operator typename std::remove_const<T>::type()
const
60#if defined(_MSC_VER) || defined(__INTEL_COMPILER)
61#pragma float_control(precise, on, push)
69#ifdef SOPLEX_CHECK_STABLESUM
79#ifdef SOPLEX_CHECK_STABLESUM
82 double t =
sum + input;
84 double y = (
sum - (t - z)) + (input - z);
95 operator double()
const
97#ifdef SOPLEX_CHECK_STABLESUM
100 printf(
"stablesum viol: %g, rel: %g, checksum: %g\n",
spxAbs(checksum - (
sum + c)),
104 assert(
spxAbs(checksum - (
sum + c)) < 1e-6);
110#if defined(_MSC_VER) || defined(__INTEL_COMPILER)
111#pragma float_control(pop)
118 s << static_cast<T>(sum);
void operator-=(double input)
void operator+=(double input)
void operator-=(const T &input)
std::remove_const< T >::type sum
void operator+=(const T &input)
Everything should be within this namespace.
std::ostream & operator<<(std::ostream &s, const VectorBase< R > &vec)
Output operator.