double _Q_qtod(const long double a) { FP_DECL_EX; FP_DECL_Q(A); FP_DECL_D(R); double r; FP_INIT_ROUNDMODE; FP_UNPACK_SEMIRAW_Q(A, a); #if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q FP_TRUNC(D,Q,2,4,R,A); #else FP_TRUNC(D,Q,1,2,R,A); #endif FP_PACK_SEMIRAW_D(r, R); FP_HANDLE_EXCEPTIONS; return r; }
SFtype __trunctfsf2(TFtype a) { FP_DECL_EX; FP_DECL_Q(A); FP_DECL_S(R); SFtype r; FP_INIT_ROUNDMODE; FP_UNPACK_SEMIRAW_Q(A, a); #if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q FP_TRUNC(S,Q,1,4,R,A); #else FP_TRUNC(S,Q,1,2,R,A); #endif FP_PACK_SEMIRAW_S(r, R); FP_HANDLE_EXCEPTIONS; return r; }
SFtype __truncdfsf2(DFtype a) { FP_DECL_EX; FP_DECL_D(A); FP_DECL_S(R); SFtype r; FP_INIT_ROUNDMODE; FP_UNPACK_SEMIRAW_D(A, a); #if _FP_W_TYPE_SIZE < _FP_FRACBITS_D FP_TRUNC(S,D,1,2,R,A); #else FP_TRUNC(S,D,1,1,R,A); #endif FP_PACK_SEMIRAW_S(r, R); FP_HANDLE_EXCEPTIONS; return r; }
float _q_qtos(const long double a) { FP_DECL_EX; FP_DECL_Q(A); FP_DECL_S(R); float r; FP_INIT_ROUNDMODE; FP_UNPACK_SEMIRAW_Q(A, a); #if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q FP_TRUNC(S,Q,1,4,R,A); #else FP_TRUNC(S,Q,1,2,R,A); #endif FP_PACK_SEMIRAW_S(r, R); FP_HANDLE_EXCEPTIONS; return r; }
XFtype __trunctfxf2 (TFtype a) { FP_DECL_EX; FP_DECL_Q (A); FP_DECL_E (R); XFtype r; FP_INIT_ROUNDMODE; FP_UNPACK_SEMIRAW_Q (A, a); #if _FP_W_TYPE_SIZE < 64 FP_TRUNC (E, Q, 4, 4, R, A); #else FP_TRUNC (E, Q, 2, 2, R, A); #endif FP_PACK_SEMIRAW_E (r, R); FP_HANDLE_EXCEPTIONS; return r; }
float __fsubl (_Float128 x, _Float128 y) { FP_DECL_EX; FP_DECL_Q (X); FP_DECL_Q (Y); FP_DECL_Q (R); FP_DECL_S (RN); float ret; FP_INIT_ROUNDMODE; FP_UNPACK_SEMIRAW_Q (X, x); FP_UNPACK_SEMIRAW_Q (Y, y); FP_SUB_Q (R, X, Y); #if _FP_W_TYPE_SIZE < 64 FP_TRUNC (S, Q, 1, 4, RN, R); #else FP_TRUNC (S, Q, 1, 2, RN, R); #endif FP_PACK_SEMIRAW_S (ret, RN); FP_HANDLE_EXCEPTIONS; CHECK_NARROW_SUB (ret, x, y); return ret; }