Toggle table of contents sidebar
Numeric traitsΒΆDefined in header <Kokkos_NumericTraits.hpp>
which is included from <Kokkos_Core.hpp>
Provides a replacement for numeric_limits
from the standard library header <limits>
. Implements a new facility that is being added to the C++23 standard library and that breaks the monolithic numeric_limits
class template apart into individual trait templates. For details, please refer to P1841.
Numeric traits are defined in the Kokkos::Experimental
namespace since Kokkos 3.5
See below the list of available traits.
trait*
denotes traits that were added in Kokkos 3.6
trait* denotes traits that were removed in Kokkos 4.0
Numeric distinguished value traits infinity
finite_min
finite_max
epsilon
round_error
norm_min
denorm_min*
reciprocal_overflow_threshold* quiet_NaN*
signaling_NaN*
Numeric characteristics traits digits
digits10
max_digits10
radix
min_exponent
min_exponent10
max_exponent
max_exponent10
Standard library
Kokkos with C++17
std::numeric_limits<Integral>::min()
finite_min_v<Integral>
std::numeric_limits<FloatingPoint>::min()
norm_min_v<FloatingPoint>
std::numeric_limits<Arithmetic>::lowest()
finite_min_v<Arithmetic>
std::numeric_limits<Arithmetic>::max()
finite_max_v<Arithmetic>
std::numeric_limits<FloatingPoint>::epsilon()
epsilon_v<FloatingPoint>
std::numeric_limits<FloatingPoint>::round_error()
round_error_v<FloatingPoint>
std::numeric_limits<FloatingPoint>::infinity()
infinity_v<FloatingPoint>
std::numeric_limits<FloatingPoint>::quiet_NaN()
quiet_NaN_v<FloatingPoint>
(since 3.6)
std::numeric_limits<FloatingPoint>::signaling_NaN()
signaling_NaN_v<FloatingPoint>
(since 3.6)
std::numeric_limits<FloatingPoint>::denorm_min()
denorm_min_v<FloatingPoint>
(since 3.6)
std::numeric_limits<Arithmetic>::digits
digits_v<Arithmetic>
std::numeric_limits<Arithmetic>::digits10
digits10_v<Arithmetic>
std::numeric_limits<FloatingPoint>::max_digits10
max_digits10_v<FloatingPoint>
std::numeric_limits<Arithmetic>::radix
radix_v<Arithmetic>
std::numeric_limits<FloatingPoint>::min_exponent
min_exponent_v<FloatingPoint>
std::numeric_limits<FloatingPoint>::min_exponent10
min_exponent10_v<FloatingPoint>
std::numeric_limits<FloatingPoint>::max_exponent
max_exponent_v<FloatingPoint>
std::numeric_limits<FloatingPoint>::max_exponent10
max_exponent10_v<FloatingPoint>
Individual traits have value
member constant that can be used with C++14 (e.g. epsilon<float>::value
).
Individual traits are SFINAE-friendly, you can detect value presence/absence.
template <class T> constexpr auto has_infinity(T) -> decltype(Kokkos::Experimental::infinity<T>::value, std::true_type{}) { return {}; } constexpr std::false_type has_infinity(...) { return {}; } template <class T> KOKKOS_FUNCTION constexpr std::enable_if_t<has_infinity(T{}), T> legacy_std_numeric_limits_infinity() { return Kokkos::Experimental::infinity<T>::value; } template <class T> KOKKOS_FUNCTION constexpr std::enable_if_t<!has_infinity(T{}), T> legacy_std_numeric_limits_infinity() { return T(); }
See also
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4