diff --git a/libeft.hxx b/libeft.hxx index 8ce86ea..9d430af 100644 --- a/libeft.hxx +++ b/libeft.hxx @@ -169,13 +169,17 @@ private: // ** Split // Splitting factor used by split -template constexpr const Real splitFactor = 0. / 0.; // NaN +template struct splitFactor {}; // Double precision: ((2^27)+1), where 27 = sup(53/2) -template<> constexpr const double splitFactor = 134217729; +template<> struct splitFactor { + enum { value = 134217729 }; +}; // Single precision: ((2^12)+1), where 12 = 24/2 -template<> constexpr const float splitFactor = 4097; +template<> struct splitFactor { + enum { value = 4097 }; +}; // a = x + y // x = hi(a) @@ -185,7 +189,7 @@ static inline void split(const Intrinsic& ia, Intrinsic& ix, Intrins typedef const Intrinsic I; stopInstr(); - I ic = I(EFT::splitFactor) * ia; + I ic = I(EFT::splitFactor::value) * ia; ix = ic - (ic-ia); iy = ia - ix; startInstr();