math: add more fmaf tests
[libc-test.git] / src / math / special / fmaf.h
blobef9957a7286a7c2928fc27956ffc99866dc847d6
1 T(RN, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0)
2 T(RN, -0x0p+0, -0x0p+0, -0x0p+0, 0x0p+0, 0x0p+0, 0)
3 T(RN, -0x0p+0, -0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0)
4 T(RN, -0x0p+0, 0x0p+0, -0x0p+0, -0x0p+0, 0x0p+0, 0)
5 T(RN, 0x0p+0, -0x0p+0, -0x0p+0, -0x0p+0, 0x0p+0, 0)
6 T(RN, -0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0)
7 T(RN, 0x0p+0, -0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0)
8 T(RN, 0x0p+0, 0x0p+0, -0x0p+0, 0x0p+0, 0x0p+0, 0)
9 T(RN, 0x0p+0, 0x0p+0, nan, nan, 0x0p+0, 0)
10 T(RN, 0x0p+0, nan, 0x0p+0, nan, 0x0p+0, 0)
11 T(RN, nan, 0x0p+0, 0x0p+0, nan, 0x0p+0, 0)
12 T(RN, 0x0p+0, 0x0p+0, inf, inf, 0x0p+0, 0)
13 T(RN, 0x0p+0, inf, 0x0p+0, nan, 0x0p+0, INVALID)
14 T(RN, inf, 0x0p+0, 0x0p+0, nan, 0x0p+0, INVALID)
15 T(RN, 0x0p+0, 0x0p+0, -inf, -inf, 0x0p+0, 0)
16 T(RN, 0x0p+0, -inf, 0x0p+0, nan, 0x0p+0, INVALID)
17 T(RN, -inf, 0x0p+0, 0x0p+0, nan, 0x0p+0, INVALID)
18 T(RN, 0x1p+0, inf, inf, inf, 0x0p+0, 0)
19 T(RN, 0x1p+0, inf, -inf, nan, 0x0p+0, INVALID)
20 T(RN, 0x1p+0, -inf, -inf, -inf, 0x0p+0, 0)
21 T(RN, 0x1p+0, -inf, inf, nan, 0x0p+0, INVALID)
22 T(RN, -0x1p+0, inf, inf, nan, 0x0p+0, INVALID)
23 T(RN, -0x1p+0, inf, -inf, -inf, 0x0p+0, 0)
24 T(RN, -0x1p+0, -inf, -inf, nan, 0x0p+0, INVALID)
25 T(RN, -0x1p+0, -inf, inf, inf, 0x0p+0, 0)
26 T(RN, 0x1p+0, 0x1p+0, inf, inf, 0x0p+0, 0)
27 T(RN, 0x1p+0, 0x1p+0, -inf, -inf, 0x0p+0, 0)
28 T(RN, inf, -inf, 0x1p+0, -inf, 0x0p+0, 0)
29 T(RN, -inf, -inf, 0x1p+0, inf, 0x0p+0, 0)
30 T(RN, inf, inf, nan, nan, 0x0p+0, 0)
31 T(RN, inf, nan, inf, nan, 0x0p+0, 0)
32 T(RN, nan, inf, inf, nan, 0x0p+0, 0)
33 // TODO: invalid is optional
34 T(RN, inf, 0x0p+0, nan, nan, 0x0p+0, INVALID)
35 T(RN, 0x0p+0, inf, nan, nan, 0x0p+0, INVALID)
36 T(RN, -inf, 0x0p+0, nan, nan, 0x0p+0, INVALID)
37 T(RN, 0x0p+0, -inf, nan, nan, 0x0p+0, INVALID)
38 T(RN, 0x1p-120, 0x1p-120, 0x1p-149, 0x1p-149, -0x1p-91, INEXACT|UNDERFLOW)
39 T(RN, 0x1p+0, 0x1p+0, -0x1p+0, 0x0p+0, 0x0p+0, 0)
40 T(RN, 0x1p+0, -0x1p+0, 0x1p+0, 0x0p+0, 0x0p+0, 0)
41 T(RN, -0x1p+0, -0x1p+0, -0x1p+0, 0x0p+0, 0x0p+0, 0)
42 T(RD, 0x1p+0, 0x1p+0, -0x1p+0, -0x0p+0, 0x0p+0, 0)
43 T(RD, 0x1p+0, -0x1p+0, 0x1p+0, -0x0p+0, 0x0p+0, 0)
44 T(RD, -0x1p+0, -0x1p+0, -0x1p+0, -0x0p+0, 0x0p+0, 0)
45 T(RD, 0x1p-120, 0x1p-120, 0x1p-149, 0x1p-149, -0x1p-91, INEXACT|UNDERFLOW)
46 T(RU, 0x1p-120, 0x1p-120, 0x1p-149, 0x1p-148, 0x1p+0, INEXACT|UNDERFLOW)
47 T(RZ, 0x1p-120, 0x1p-120, 0x1p-149, 0x1p-149, -0x1p-91, INEXACT|UNDERFLOW)
48 T(RN, -0x1p-100, 0x1.001p-49, 0x1p-126, 0x1.fffffcp-127, 0x1p-12, INEXACT|UNDERFLOW)
49 T(RU, -0x1p-100, 0x1.001p-49, 0x1p-126, 0x1.fffffcp-127, 0x1p-12, INEXACT|UNDERFLOW)
50 T(RD, -0x1p-100, 0x1.001p-49, 0x1p-126, 0x1.fffff8p-127, -0x1.ffep-1, INEXACT|UNDERFLOW)
51 T(RZ, -0x1p-100, 0x1.001p-49, 0x1p-126, 0x1.fffff8p-127, -0x1.ffep-1, INEXACT|UNDERFLOW)
52 T(RN, -0x1.26524ep-54, -0x1.cb7868p+11, 0x1.d10f5ep-29, 0x1.d1179ep-29, -0x1p-1, INEXACT)
53 T(RU, -0x1.26524ep-54, -0x1.cb7868p+11, 0x1.d10f5ep-29, 0x1.d117ap-29, 0x1p-1, INEXACT)
54 T(RD, -0x1.26524ep-54, -0x1.cb7868p+11, 0x1.d10f5ep-29, 0x1.d1179ep-29, -0x1p-1, INEXACT)
55 T(RZ, -0x1.26524ep-54, -0x1.cb7868p+11, 0x1.d10f5ep-29, 0x1.d1179ep-29, -0x1p-1, INEXACT)
56 // double precision x*y+z is a half-way float
57 T(RN, 0x1.000002p+0, 0x1.fffffep+0, 0x1.fffffep-47, 0x1p+1, -0x1p-1, INEXACT)
58 T(RN, 0x1.000002p+0, 0x1.fffffep+0, 0x1p-46, 0x1p+1, -0x1p-1, INEXACT)
59 T(RN, 0x1.000002p+0, 0x1.fffffep+0, 0x1.000002p-46, 0x1.000002p+1, 0x1p-1, INEXACT)
60 T(RN, 0x1.000002p+0, -0x1.fffffep+0, -0x1.fffffep-47, -0x1p+1, 0x1p-1, INEXACT)
61 T(RN, 0x1.000002p+0, -0x1.fffffep+0, -0x1p-46, -0x1p+1, 0x1p-1, INEXACT)
62 T(RN, 0x1.000002p+0, -0x1.fffffep+0, -0x1.000002p-46, -0x1.000002p+1, -0x1p-1, INEXACT)
63 T(RN, 0x1.000004p+0, 0x1.fffffep+0, 0x1.fffffep-46, 0x1.000002p+1, -0x1p-1, INEXACT)
64 T(RN, 0x1.000004p+0, 0x1.fffffep+0, 0x1p-45, 0x1.000004p+1, 0x1p-1, INEXACT)
65 T(RN, 0x1.000004p+0, 0x1.fffffep+0, 0x1.000002p-45, 0x1.000004p+1, 0x1p-1, INEXACT)
66 T(RN, 0x1.000004p+0, -0x1.fffffep+0, -0x1.fffffep-46, -0x1.000002p+1, 0x1p-1, INEXACT)
67 T(RN, 0x1.000004p+0, -0x1.fffffep+0, -0x1p-45, -0x1.000004p+1, -0x1p-1, INEXACT)
68 T(RN, 0x1.000004p+0, -0x1.fffffep+0, -0x1.000002p-45, -0x1.000004p+1, -0x1p-1, INEXACT)