#ifndef FP_EXTEND_HEADER
#define FP_EXTEND_HEADER
#include "int_lib.h"
#if defined SRC_SINGLE
src_t;
src_rep_t;
#define SRC_REP_C …
static const int srcBits = …;
static const int srcSigFracBits = …;
static const int srcExpBits = …;
#define src_rep_t_clz …
#elif defined SRC_DOUBLE
typedef double src_t;
typedef uint64_t src_rep_t;
#define SRC_REP_C …
static const int srcBits = sizeof(src_t) * CHAR_BIT;
static const int srcSigFracBits = 52;
static const int srcExpBits = 11;
static inline int src_rep_t_clz_impl(src_rep_t a) { return __builtin_clzll(a); }
#define src_rep_t_clz …
#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_HALF
#ifdef COMPILER_RT_HAS_FLOAT16
typedef _Float16 src_t;
#else
typedef uint16_t src_t;
#endif
typedef uint16_t src_rep_t;
#define SRC_REP_C …
static const int srcBits = sizeof(src_t) * CHAR_BIT;
static const int srcSigFracBits = 10;
static const int srcExpBits = 5;
static inline int src_rep_t_clz_impl(src_rep_t a) {
return __builtin_clz(a) - 16;
}
#define src_rep_t_clz …
#elif defined SRC_BFLOAT16
#ifdef COMPILER_RT_HAS_BFLOAT16
typedef __bf16 src_t;
#else
typedef uint16_t src_t;
#endif
typedef uint16_t src_rep_t;
#define SRC_REP_C …
static const int srcBits = sizeof(src_t) * CHAR_BIT;
static const int srcSigFracBits = 7;
static const int srcExpBits = 8;
#define src_rep_t_clz …
#else
#error Source should be half, single, or double precision!
#endif
#if 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_DOUBLE
dst_t;
dst_rep_t;
#define DST_REP_C …
static const int dstBits = …;
static const int dstSigFracBits = …;
static const int dstExpBits = …;
#elif defined DST_QUAD
typedef tf_float dst_t;
typedef __uint128_t dst_rep_t;
#define DST_REP_C …
static const int dstBits = sizeof(dst_t) * CHAR_BIT;
static const int dstSigFracBits = 112;
static const int dstExpBits = 15;
#else
#error Destination should be single, double, or quad 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) { … }
#ifdef src_rep_t_clz
static inline int clz_in_sig_frac(src_rep_t sigFrac) { … }
#endif
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