T(RN, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0)
T(RN, -0x0p+0, -0x0p+0, -0x0p+0, 0x0p+0, 0x0p+0, 0)
T(RN, -0x0p+0, -0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0)
T(RN, -0x0p+0, 0x0p+0, -0x0p+0, -0x0p+0, 0x0p+0, 0)
T(RN, 0x0p+0, -0x0p+0, -0x0p+0, -0x0p+0, 0x0p+0, 0)
T(RN, -0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0)
T(RN, 0x0p+0, -0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0)
T(RN, 0x0p+0, 0x0p+0, -0x0p+0, 0x0p+0, 0x0p+0, 0)
T(RN, 0x0p+0, 0x0p+0, nan, nan, 0x0p+0, 0)
T(RN, 0x0p+0, nan, 0x0p+0, nan, 0x0p+0, 0)
T(RN, nan, 0x0p+0, 0x0p+0, nan, 0x0p+0, 0)
T(RN, 0x0p+0, 0x0p+0, inf, inf, 0x0p+0, 0)
T(RN, 0x0p+0, inf, 0x0p+0, nan, 0x0p+0, INVALID)
T(RN, inf, 0x0p+0, 0x0p+0, nan, 0x0p+0, INVALID)
T(RN, 0x0p+0, 0x0p+0, -inf, -inf, 0x0p+0, 0)
T(RN, 0x0p+0, -inf, 0x0p+0, nan, 0x0p+0, INVALID)
T(RN, -inf, 0x0p+0, 0x0p+0, nan, 0x0p+0, INVALID)
T(RN, 0x1p+0, inf, inf, inf, 0x0p+0, 0)
T(RN, 0x1p+0, inf, -inf, nan, 0x0p+0, INVALID)
T(RN, 0x1p+0, -inf, -inf, -inf, 0x0p+0, 0)
T(RN, 0x1p+0, -inf, inf, nan, 0x0p+0, INVALID)
T(RN, -0x1p+0, inf, inf, nan, 0x0p+0, INVALID)
T(RN, -0x1p+0, inf, -inf, -inf, 0x0p+0, 0)
T(RN, -0x1p+0, -inf, -inf, nan, 0x0p+0, INVALID)
T(RN, -0x1p+0, -inf, inf, inf, 0x0p+0, 0)
T(RN, 0x1p+0, 0x1p+0, inf, inf, 0x0p+0, 0)
T(RN, 0x1p+0, 0x1p+0, -inf, -inf, 0x0p+0, 0)
T(RN, inf, -inf, 0x1p+0, -inf, 0x0p+0, 0)
T(RN, -inf, -inf, 0x1p+0, inf, 0x0p+0, 0)
T(RN, inf, inf, nan, nan, 0x0p+0, 0)
T(RN, inf, nan, inf, nan, 0x0p+0, 0)
T(RN, nan, inf, inf, nan, 0x0p+0, 0)
// TODO: invalid is optional
T(RN, inf, 0x0p+0, nan, nan, 0x0p+0, INVALID)
T(RN, 0x0p+0, inf, nan, nan, 0x0p+0, INVALID)
T(RN, -inf, 0x0p+0, nan, nan, 0x0p+0, INVALID)
T(RN, 0x0p+0, -inf, nan, nan, 0x0p+0, INVALID)
T(RN, 0x1p-120, 0x1p-120, 0x1p-149, 0x1p-149, -0x1p-91, INEXACT|UNDERFLOW)
T(RN, 0x1p+0, 0x1p+0, -0x1p+0, 0x0p+0, 0x0p+0, 0)
T(RN, 0x1p+0, -0x1p+0, 0x1p+0, 0x0p+0, 0x0p+0, 0)
T(RN, -0x1p+0, -0x1p+0, -0x1p+0, 0x0p+0, 0x0p+0, 0)
T(RD, 0x1p+0, 0x1p+0, -0x1p+0, -0x0p+0, 0x0p+0, 0)
T(RD, 0x1p+0, -0x1p+0, 0x1p+0, -0x0p+0, 0x0p+0, 0)
T(RD, -0x1p+0, -0x1p+0, -0x1p+0, -0x0p+0, 0x0p+0, 0)
T(RD, 0x1p-120, 0x1p-120, 0x1p-149, 0x1p-149, -0x1p-91, INEXACT|UNDERFLOW)
T(RU, 0x1p-120, 0x1p-120, 0x1p-149, 0x1p-148, 0x1p+0, INEXACT|UNDERFLOW)
T(RZ, 0x1p-120, 0x1p-120, 0x1p-149, 0x1p-149, -0x1p-91, INEXACT|UNDERFLOW)
T(RN, -0x1p-100, 0x1.001p-49, 0x1p-126, 0x1.fffffcp-127, 0x1p-12, INEXACT|UNDERFLOW)
T(RU, -0x1p-100, 0x1.001p-49, 0x1p-126, 0x1.fffffcp-127, 0x1p-12, INEXACT|UNDERFLOW)
T(RD, -0x1p-100, 0x1.001p-49, 0x1p-126, 0x1.fffff8p-127, -0x1.ffep-1, INEXACT|UNDERFLOW)
T(RZ, -0x1p-100, 0x1.001p-49, 0x1p-126, 0x1.fffff8p-127, -0x1.ffep-1, INEXACT|UNDERFLOW)
T(RN, -0x1.26524ep-54, -0x1.cb7868p+11, 0x1.d10f5ep-29, 0x1.d1179ep-29, -0x1p-1, INEXACT)
T(RU, -0x1.26524ep-54, -0x1.cb7868p+11, 0x1.d10f5ep-29, 0x1.d117ap-29, 0x1p-1, INEXACT)
T(RD, -0x1.26524ep-54, -0x1.cb7868p+11, 0x1.d10f5ep-29, 0x1.d1179ep-29, -0x1p-1, INEXACT)
T(RZ, -0x1.26524ep-54, -0x1.cb7868p+11, 0x1.d10f5ep-29, 0x1.d1179ep-29, -0x1p-1, INEXACT)
// double precision x*y+z is a half-way float
T(RN, 0x1.000002p+0, 0x1.fffffep+0, 0x1.fffffep-47, 0x1p+1, -0x1p-1, INEXACT)
T(RN, 0x1.000002p+0, 0x1.fffffep+0, 0x1p-46, 0x1p+1, -0x1p-1, INEXACT)
T(RN, 0x1.000002p+0, 0x1.fffffep+0, 0x1.000002p-46, 0x1.000002p+1, 0x1p-1, INEXACT)
T(RN, 0x1.000002p+0, -0x1.fffffep+0, -0x1.fffffep-47, -0x1p+1, 0x1p-1, INEXACT)
T(RN, 0x1.000002p+0, -0x1.fffffep+0, -0x1p-46, -0x1p+1, 0x1p-1, INEXACT)
T(RN, 0x1.000002p+0, -0x1.fffffep+0, -0x1.000002p-46, -0x1.000002p+1, -0x1p-1, INEXACT)
T(RN, 0x1.000004p+0, 0x1.fffffep+0, 0x1.fffffep-46, 0x1.000002p+1, -0x1p-1, INEXACT)
T(RN, 0x1.000004p+0, 0x1.fffffep+0, 0x1p-45, 0x1.000004p+1, 0x1p-1, INEXACT)
T(RN, 0x1.000004p+0, 0x1.fffffep+0, 0x1.000002p-45, 0x1.000004p+1, 0x1p-1, INEXACT)
T(RN, 0x1.000004p+0, -0x1.fffffep+0, -0x1.fffffep-46, -0x1.000002p+1, 0x1p-1, INEXACT)
T(RN, 0x1.000004p+0, -0x1.fffffep+0, -0x1p-45, -0x1.000004p+1, -0x1p-1, INEXACT)
T(RN, 0x1.000004p+0, -0x1.fffffep+0, -0x1.000002p-45, -0x1.000004p+1, -0x1p-1, INEXACT)