DFtype __adddf3(DFtype a, DFtype b) { FP_DECL_EX; FP_DECL_D(A); FP_DECL_D(B); FP_DECL_D(R); DFtype r; FP_INIT_ROUNDMODE; FP_UNPACK_SEMIRAW_D(A, a); FP_UNPACK_SEMIRAW_D(B, b); FP_ADD_D(R, A, B); FP_PACK_SEMIRAW_D(r, R); FP_HANDLE_EXCEPTIONS; return r; }
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; }
DFtype __trunctfdf2 (TFtype a) { FP_DECL_EX; FP_DECL_Q (A); FP_DECL_D (R); DFtype 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; }