示例#1
0
			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)
					;
			}
示例#2
0
			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))
					;
			}
示例#3
0
			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)
					;
			}
示例#4
0
文件: iround.hpp 项目: Fadis/Sprout
		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))
				;
		}
示例#5
0
			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)))
					;
			}