math: add more fmaf tests
[libc-test] / src / math / special / fmaf.h
index e034279..ef9957a 100644 (file)
@@ -53,3 +53,16 @@ T(RN, -0x1.26524ep-54, -0x1.cb7868p+11,  0x1.d10f5ep-29,  0x1.d1179ep-29,
 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)