20namespace alpaka::math::internal
22 template<
typename T_A,
typename T_B>
23 requires(std::is_arithmetic_v<T_A> && std::is_arithmetic_v<T_B>)
24 struct Min::Op<StlMath, T_A, T_B>
26 constexpr auto operator()(StlMath, T_A
const& a, T_B
const& b)
const
28 if constexpr(std::is_integral_v<T_A> && std::is_integral_v<T_B>)
41 static_assert(!
sizeof(T_A),
"Unsupported data type");
47 template<
typename T_A,
typename T_B>
48 requires(std::is_arithmetic_v<T_A> && std::is_arithmetic_v<T_B>)
49 struct Max::Op<StlMath, T_A, T_B>
51 constexpr auto operator()(StlMath, T_A
const& a, T_B
const& b)
const
53 if constexpr(std::is_integral_v<T_A> && std::is_integral_v<T_B>)
66 static_assert(!
sizeof(T_A),
"Unsupported data type");
74 template<std::
floating_po
int T_Arg>
75 struct Isnan::Op<StlMath, T_Arg>
77 constexpr auto operator()(StlMath, T_Arg
const& arg)
const ->
bool
79 return ieeeIsnan(arg);
85 template<std::
floating_po
int T_Arg>
86 struct Isinf::Op<StlMath, T_Arg>
88 constexpr auto operator()(StlMath, T_Arg
const& arg)
const ->
bool
90 return ieeeIsinf(arg);
96 template<std::
floating_po
int T_Arg>
97 struct Isfinite::Op<StlMath, T_Arg>
99 constexpr auto operator()(StlMath, T_Arg
const& arg)
const ->
bool
101 return ieeeIsfinite(arg);
#define ALPAKA_UNREACHABLE(...)
Before CUDA 11.5 nvcc is unable to correctly identify return statements in 'if constexpr' branches....
constexpr auto min(auto const &a, auto const &b)
constexpr auto max(auto const &a, auto const &b)
constexpr auto is_decayed_v
Provides a decaying wrapper around std::is_same. Example: is_decayed_v<volatile float,...