#ifndef FP_TRUNC_HEADER
#define FP_TRUNC_HEADER
#include "int_lib.h"
#if defined SRC_SINGLE
typedef float src_t;
typedef uint32_t src_rep_t;
#define SRC_REP_C …
static const int srcBits = sizeof(src_t) * CHAR_BIT;
static const int srcSigFracBits = 23;
static const int srcExpBits = 8;
#elif defined SRC_DOUBLE
src_t;
src_rep_t;
#define SRC_REP_C …
static const int srcBits = …;
static const int srcSigFracBits = …;
static const int srcExpBits = …;
#elif defined SRC_80
typedef xf_float src_t;
typedef __uint128_t src_rep_t;
#define SRC_REP_C …
static const int srcBits = 80;
static const int srcSigFracBits = 63;
static const int srcExpBits = 15;
#elif defined SRC_QUAD
typedef tf_float src_t;
typedef __uint128_t src_rep_t;
#define SRC_REP_C …
static const int srcBits = sizeof(src_t) * CHAR_BIT;
static const int srcSigFracBits = 112;
static const int srcExpBits = 15;
#else
#error Source should be double precision or quad precision!
#endif
#if defined DST_DOUBLE
typedef double dst_t;
typedef uint64_t dst_rep_t;
#define DST_REP_C …
static const int dstBits = sizeof(dst_t) * CHAR_BIT;
static const int dstSigFracBits = 52;
static const int dstExpBits = 11;
#elif defined DST_80
typedef xf_float dst_t;
typedef __uint128_t dst_rep_t;
#define DST_REP_C …
static const int dstBits = 80;
static const int dstSigFracBits = 63;
static const int dstExpBits = 15;
#elif defined DST_SINGLE
typedef float dst_t;
typedef uint32_t dst_rep_t;
#define DST_REP_C …
static const int dstBits = sizeof(dst_t) * CHAR_BIT;
static const int dstSigFracBits = 23;
static const int dstExpBits = 8;
#elif defined DST_HALF
#ifdef COMPILER_RT_HAS_FLOAT16
dst_t;
#else
typedef uint16_t dst_t;
#endif
dst_rep_t;
#define DST_REP_C …
static const int dstBits = …;
static const int dstSigFracBits = …;
static const int dstExpBits = …;
#elif defined DST_BFLOAT
typedef __bf16 dst_t;
typedef uint16_t dst_rep_t;
#define DST_REP_C …
static const int dstBits = sizeof(dst_t) * CHAR_BIT;
static const int dstSigFracBits = 7;
static const int dstExpBits = 8;
#else
#error Destination should be single precision or double precision!
#endif
static inline src_rep_t extract_sign_from_src(src_rep_t x) { … }
static inline src_rep_t extract_exp_from_src(src_rep_t x) { … }
static inline src_rep_t extract_sig_frac_from_src(src_rep_t x) { … }
static inline dst_rep_t construct_dst_rep(dst_rep_t sign, dst_rep_t exp, dst_rep_t sigFrac) { … }
static inline src_rep_t srcToRep(src_t x) { … }
static inline dst_t dstFromRep(dst_rep_t x) { … }
#endif