10 inline constexpr T
inf =
11 std::numeric_limits<T>::is_iec559 ?
12 std::numeric_limits<T>::infinity() :
13 std::numeric_limits<T>::max();
17 std::numeric_limits<T>::is_iec559 ?
18 -std::numeric_limits<T>::infinity() :
19 std::numeric_limits<T>::lowest();
25 inline T
lse(T x, T y)
27 if (x == neg_inf<T>)
return y;
28 if (x == inf<T> && y == inf<T>)
return inf<T>;
29 if (x >= y)
return x + std::log(1. + std::exp(y-x));
30 else return lse(y, x);