SFtype __addsf3(SFtype a, SFtype b) { FP_DECL_EX; FP_DECL_S(A); FP_DECL_S(B); FP_DECL_S(R); SFtype r; FP_INIT_ROUNDMODE; FP_UNPACK_SEMIRAW_S(A, a); FP_UNPACK_SEMIRAW_S(B, b); FP_ADD_S(R, A, B); 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; }
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 __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; }