inline SPROUT_CONSTEXPR To iceil_impl(FloatType x) { return std::numeric_limits<To>::max() < x || std::numeric_limits<To>::min() > x ? SPROUT_MATH_THROW_LARGE_FLOAT_ROUNDING(std::runtime_error("iceil: large float rounding."), static_cast<To>(x)) : static_cast<To>(x) ; }
inline SPROUT_CONSTEXPR To ifloor(FloatType x) { return x == 0 ? To(0) : std::numeric_limits<To>::max() < x || std::numeric_limits<To>::min() > x ? SPROUT_MATH_THROW_LARGE_FLOAT_ROUNDING(std::runtime_error("ifloor: large float rounding."), static_cast<To>(x)) : sprout::math::detail::ifloor_impl(x, static_cast<To>(x)) ; }
inline SPROUT_CONSTEXPR To itrunc(FloatType x) { return sprout::math::isnan(x) || sprout::math::isinf(x) ? sprout::numeric_limits<To>::min() : x == 0 ? To(0) : sprout::numeric_limits<To>::max() < x || sprout::numeric_limits<To>::min() > x ? SPROUT_MATH_THROW_LARGE_FLOAT_ROUNDING(std::runtime_error("itrunc: large float rounding."), static_cast<To>(x)) : static_cast<To>(x) ; }
inline SPROUT_CONSTEXPR To iround(FloatType x) { return sprout::math::isnan(x) || sprout::math::isinf(x) ? sprout::numeric_limits<To>::min() : x == 0 ? To(0) : sprout::numeric_limits<To>::max() < x || sprout::numeric_limits<To>::min() > x ? SPROUT_MATH_THROW_LARGE_FLOAT_ROUNDING(std::runtime_error("iround: large float irounding."), x) : x < 0 ? sprout::math::detail::iround_impl_nagative(x, static_cast<To>(x)) : sprout::math::detail::iround_impl_positive(x, static_cast<To>(x)) ; }
inline SPROUT_CONSTEXPR FloatType ceil(FloatType x) { return x == 0 ? FloatType(0) : x == std::numeric_limits<FloatType>::infinity() ? std::numeric_limits<FloatType>::infinity() : x == -std::numeric_limits<FloatType>::infinity() ? -std::numeric_limits<FloatType>::infinity() : std::numeric_limits<std::uintmax_t>::max() < x || std::numeric_limits<std::uintmax_t>::max() < -x ? SPROUT_MATH_THROW_LARGE_FLOAT_ROUNDING(std::runtime_error("ceil: large float rounding."), x) : x < 0 ? -static_cast<FloatType>(static_cast<std::uintmax_t>(-x)) : sprout::math::detail::ceil_impl(x, static_cast<FloatType>(static_cast<std::uintmax_t>(x))) ; }