#ifndef INT_TYPES_H
#define INT_TYPES_H
#include "int_endianness.h"
#ifdef si_int
#undef si_int
#endif
si_int;
su_int;
#if UINT_MAX == 0xFFFFFFFF
#define clzsi …
#define ctzsi …
#elif ULONG_MAX == 0xFFFFFFFF
#define clzsi …
#define ctzsi …
#else
#error could not determine appropriate clzsi macro for this system
#endif
di_int;
du_int;
dwords;
udwords;
#if defined(__LP64__) || defined(__wasm__) || defined(__mips64) || \
defined(__SIZEOF_INT128__) || defined(_WIN64)
#define CRT_HAS_128BIT
#endif
#if defined(_MSC_VER) && !defined(__clang__)
#undef CRT_HAS_128BIT
#endif
#ifdef CRT_HAS_128BIT
ti_int __attribute__((mode …));
tu_int __attribute__((mode …));
twords;
utwords;
static __inline ti_int make_ti(di_int h, di_int l) { … }
static __inline tu_int make_tu(du_int h, du_int l) { … }
#endif
#if defined(__FreeBSD__) && defined(_STANDALONE)
#define CRT_HAS_FLOATING_POINT …
#else
#define CRT_HAS_FLOATING_POINT …
#endif
#if CRT_HAS_FLOATING_POINT
float_bits;
double_bits;
uqwords;
#if (defined(__i386__) || defined(__x86_64__)) && \
!(defined(_MSC_VER) || defined(__ANDROID__))
#define HAS_80_BIT_LONG_DOUBLE …
#elif defined(__m68k__) || defined(__ia64__)
#define HAS_80_BIT_LONG_DOUBLE …
#else
#define HAS_80_BIT_LONG_DOUBLE …
#endif
#if HAS_80_BIT_LONG_DOUBLE
xf_float;
xf_bits;
#endif
#ifdef __powerpc64__
typedef long double tf_float;
#define CRT_LDBL_128BIT
#define CRT_HAS_F128
#if __LDBL_MANT_DIG__ == 113 && !defined(__LONG_DOUBLE_IBM128__)
#define CRT_HAS_IEEE_TF
#define CRT_LDBL_IEEE_F128
#endif
#define TF_C …
#elif __LDBL_MANT_DIG__ == 113 || \
(__FLT_RADIX__ == 16 && __LDBL_MANT_DIG__ == 28)
#define CRT_LDBL_128BIT
#define CRT_HAS_F128
#if __LDBL_MANT_DIG__ == 113
#define CRT_HAS_IEEE_TF
#define CRT_LDBL_IEEE_F128
#endif
typedef long double tf_float;
#define TF_C …
#elif defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__)
#define CRT_HAS___FLOAT128_KEYWORD
#define CRT_HAS_F128
#define CRT_HAS_IEEE_TF
tf_float;
#define TF_C(x) …
#endif
#ifdef CRT_HAS_F128
tf_bits;
#endif
#if defined(CRT_HAS_128BIT) && defined(CRT_HAS_F128)
#define CRT_HAS_TF_MODE
#endif
#if __STDC_VERSION__ >= 199901L
Fcomplex;
Dcomplex;
Lcomplex;
#if defined(CRT_LDBL_128BIT)
typedef Lcomplex Qcomplex;
#define CRT_HAS_NATIVE_COMPLEX_F128
#elif defined(CRT_HAS___FLOAT128_KEYWORD)
#if defined(__clang_major__) && __clang_major__ > 10
Qcomplex;
#define CRT_HAS_NATIVE_COMPLEX_F128
#elif defined(__GNUC__) && __GNUC__ >= 7
typedef _Float128 _Complex Qcomplex;
#define CRT_HAS_NATIVE_COMPLEX_F128
#endif
#endif
#define COMPLEX_REAL(x) …
#define COMPLEX_IMAGINARY(x) …
#else
typedef struct {
float real, imaginary;
} Fcomplex;
typedef struct {
double real, imaginary;
} Dcomplex;
typedef struct {
long double real, imaginary;
} Lcomplex;
#define COMPLEX_REAL …
#define COMPLEX_IMAGINARY …
#endif
#ifdef CRT_HAS_NATIVE_COMPLEX_F128
#define COMPLEXTF_REAL(x) …
#define COMPLEXTF_IMAGINARY(x) …
#elif defined(CRT_HAS_F128)
typedef struct {
tf_float real, imaginary;
} Qcomplex;
#define COMPLEXTF_REAL …
#define COMPLEXTF_IMAGINARY …
#endif
#endif
#endif