#pragma once #include #include #include namespace xrpl { constexpr auto kMuldivMax = std::numeric_limits::max(); /** * Return value*mul/div accurately. * * Computes the result of the multiplication and division in * a single step, avoiding overflow and retaining precision. * * @throws None * @return `std::nullopt` if the calculation overflows. Otherwise, * `value * mul / div`. */ std::optional mulDiv(std::uint64_t value, std::uint64_t mul, std::uint64_t div); } // namespace xrpl