17namespace raptor::logspace
20constexpr double ln_2{0.693147180559945309417232121458176568L};
26[[nodiscard]]
inline double add(
double const log_x,
double const log_y)
noexcept
28 double const max{
std::max(log_x, log_y)};
29 return max == negative_inf ? negative_inf : max +
std::log1p(
std::exp(-std::abs(log_x - log_y)));
33template <
typename... types>
34[[nodiscard]]
double add(
double const log_x,
double const log_y, types... logs)
noexcept
36 return add(
add(log_y, log_x), logs...);
41[[nodiscard]]
inline double substract(
double const log_x,
double const log_y)
noexcept
43 double const difference{log_y - log_x};
49 [[nodiscard]]
double operator()(
double const log_x,
double const log_y)
const noexcept
51 return add(log_x, log_y);
double substract(double const log_x, double const log_y) noexcept
The log of a difference of two log terms. (log_x - log_y)
Definition: logspace.hpp:41
double add(double const log_x, double const log_y) noexcept
The log of a sum of two log terms.
Definition: logspace.hpp:26
Definition: logspace.hpp:48