21#ifndef _gcem_floor_HPP
22#define _gcem_floor_HPP
39 return( (x < T(0)) && (x < x_whole) );
48 return( x_whole -
static_cast<T
>(
floor_resid(x,x_whole)) );
66 return(
abs(x) >= 8388608.f ? \
70 floor_int(x,
float(
static_cast<int>(x))) );
79 return(
abs(x) >= 4503599627370496. ? \
92 return(
abs(x) >= 9223372036854775808.l ? \
133 if (std::is_constant_evaluated()) {
136 return std::floor(x);
constexpr double floor_check_internal< double >(const double x) noexcept
Definition floor.hpp:76
constexpr bool is_nan(const T x) noexcept
Definition is_nan.hpp:39
constexpr int floor_resid(const T x, const T x_whole) noexcept
Definition floor.hpp:36
constexpr T floor_check_internal(const T x) noexcept
Definition floor.hpp:54
constexpr T floor_check(const T x) noexcept
Definition floor.hpp:102
constexpr T floor_int(const T x, const T x_whole) noexcept
Definition floor.hpp:45
constexpr float floor_check_internal< float >(const float x) noexcept
Definition floor.hpp:63
constexpr bool is_finite(const T x) noexcept
Definition is_finite.hpp:37
constexpr long double floor_check_internal< long double >(const long double x) noexcept
Definition floor.hpp:89
constexpr T abs(const T x) noexcept
Compile-time absolute value function.
Definition abs.hpp:40
std::numeric_limits< T > GCLIM
Definition gcem_options.hpp:74
long long int llint_t
Definition gcem_options.hpp:71
typename std::conditional< std::is_integral< T >::value, double, T >::type return_t
Definition gcem_options.hpp:77
constexpr return_t< T > floor(const T x) noexcept
Compile-time floor function.
Definition floor.hpp:130
constexpr int sgn(const T x) noexcept
Compile-time sign function.
Definition sgn.hpp:37
unsigned long long int ullint_t
Definition gcem_options.hpp:69