6#if defined(__STDCPP_FLOAT16_T__)
13#define MIM_1_8_16_32_64(X) X(1) X(8) X(16) X(32) X(64)
14#define MIM_8_16_32_64(X) X(8) X(16) X(32) X(64)
15#if defined(__STDCPP_FLOAT16_T__)
16# define MIM_F16_32_64(X) X(16) X(32) X(64)
18# define MIM_F16_32_64(X) X(32) X(64)
25 using s ## i = int ## i ##_t; \
26 using u ## i = uint ## i ##_t;
31#if defined(__STDCPP_FLOAT16_T__)
32using f16 = std::float16_t;
46template<
int>
struct w2u_ {
using type = void; };
47template<
int>
struct w2s_ {
using type = void; };
48template<
int>
struct w2f_ {
using type = void; };
49template<>
struct w2u_<1> {
using type = bool; };
50template<>
struct w2s_<1> {
using type = bool; };
53 template<> struct w2u_<i> { using type = u ## i; }; \
54 template<> struct w2s_<i> { using type = s ## i; };
59 template<> struct w2f_<i> { using type = f ## i; };
66template<
int w>
using w2u =
typename detail::w2u_<w>::type;
67template<
int w>
using w2s =
typename detail::w2s_<w>::type;
68template<
int w>
using w2f =
typename detail::w2f_<w>::type;
74 constexpr s ## i operator""_s ## i(unsigned long long int s) { return s ## i(s); } \
75 constexpr u ## i operator""_u ## i(unsigned long long int u) { return u ## i(u); }
79constexpr nat_t operator""_n(
unsigned long long int i) {
return nat_t(i); }
84#if defined(__STDCPP_FLOAT16_T__)
85inline f16
rem(f16 a, f16 b) {
return std::fmod(a, b); }
87inline float rem(
float a,
float b) {
return std::fmod(a, b); }
88inline double rem(
double a,
double b) {
return std::fmod(a, b); }
89inline long double rem(
long double a,
long double b) {
return std::fmod(a, b); }
typename detail::w2f_< w >::type w2f
float rem(float a, float b)
typename detail::w2s_< w >::type w2s
typename detail::w2u_< w >::type w2u
#define MIM_8_16_32_64(X)