long double _Q_stoq(const float a) { FP_DECL_EX; FP_DECL_S(A); FP_DECL_Q(C); long double c; FP_UNPACK_RAW_S(A, a); #if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q FP_EXTEND(Q,S,4,1,C,A); #else FP_EXTEND(Q,S,2,1,C,A); #endif FP_PACK_RAW_Q(c, C); FP_HANDLE_EXCEPTIONS; return c; }
long double _q_dtoq(const double a) { FP_DECL_EX; FP_DECL_D(A); FP_DECL_Q(C); long double c; FP_INIT_ROUNDMODE; FP_UNPACK_RAW_D(A, a); #if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q FP_EXTEND(Q,D,4,2,C,A); #else FP_EXTEND(Q,D,2,1,C,A); #endif FP_PACK_RAW_Q(c, C); FP_HANDLE_EXCEPTIONS; return c; }
TFtype __extenddftf2(DFtype a) { FP_DECL_EX; FP_DECL_D(A); FP_DECL_Q(R); TFtype r; FP_INIT_ROUNDMODE; FP_UNPACK_RAW_D(A, a); #if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q FP_EXTEND(Q,D,4,2,R,A); #else FP_EXTEND(Q,D,2,1,R,A); #endif FP_PACK_RAW_Q(r, R); FP_HANDLE_EXCEPTIONS; return r; }
DFtype __extendsfdf2(SFtype a) { FP_DECL_EX; FP_DECL_S(A); FP_DECL_D(R); DFtype r; FP_INIT_ROUNDMODE; FP_UNPACK_RAW_S(A, a); #if _FP_W_TYPE_SIZE < _FP_FRACBITS_D FP_EXTEND(D,S,2,1,R,A); #else FP_EXTEND(D,S,1,1,R,A); #endif FP_PACK_RAW_D(r, R); FP_HANDLE_EXCEPTIONS; return r; }
TFtype __extendhftf2 (HFtype a) { FP_DECL_EX; FP_DECL_H (A); FP_DECL_Q (R); TFtype r; FP_INIT_EXCEPTIONS; FP_UNPACK_RAW_H (A, a); #if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q FP_EXTEND (Q, H, 4, 1, R, A); #else FP_EXTEND (Q, H, 2, 1, R, A); #endif FP_PACK_RAW_Q (r, R); FP_HANDLE_EXCEPTIONS; return r; }
void _Qp_stoq(long double *c, const float a) { FP_DECL_EX; FP_DECL_S(A); FP_DECL_Q(C); FP_INIT_ROUNDMODE; FP_UNPACK_RAW_S(A, a); #if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q FP_EXTEND(Q,S,4,1,C,A); #else FP_EXTEND(Q,S,2,1,C,A); #endif FP_PACK_RAW_QP(c, C); QP_HANDLE_EXCEPTIONS(__asm ( " fstoq %1, %%f60\n" " std %%f60, [%0]\n" " std %%f62, [%0+8]\n" " " : : "r" (c), "f" (a) : QP_CLOBBER)); }
TFtype __extenddftf2 (DFtype a) { FP_DECL_EX; FP_DECL_D (A); FP_DECL_Q (R); TFtype r; FP_INIT_EXCEPTIONS; FP_UNPACK_RAW_D (A, a); #if _FP_W_TYPE_SIZE < 64 FP_EXTEND (Q, D, 4, 2, R, A); #else FP_EXTEND (Q, D, 2, 1, R, A); #endif FP_PACK_RAW_Q (r, R); FP_HANDLE_EXCEPTIONS; return r; }
TFtype __extendxftf2 (XFtype a) { FP_DECL_EX; FP_DECL_E (A); FP_DECL_Q (R); TFtype r; FP_INIT_TRAPPING_EXCEPTIONS; FP_UNPACK_RAW_E (A, a); #if _FP_W_TYPE_SIZE < 64 FP_EXTEND (Q, E, 4, 4, R, A); #else FP_EXTEND (Q, E, 2, 2, R, A); #endif FP_PACK_RAW_Q (r, R); FP_HANDLE_EXCEPTIONS; return r; }