加算は、IEEE 754 (IEC 559) 浮動小数点標準x + x
の乗算によって交換可能ですか、またはより一般的に言えば、常にまったく同じ結果が得られるという保証はありますか?2 * x
case_add
case_mul
#include <limits>
template <typename T>
T case_add(T x, size_t n)
{
static_assert(std::numeric_limits<T>::is_iec559, "invalid type");
T result(x);
for (size_t i = 1; i < n; ++i)
{
result += x;
}
return result;
}
template <typename T>
T case_mul(T x, size_t n)
{
static_assert(std::numeric_limits<T>::is_iec559, "invalid type");
return x * static_cast<T>(n);
}