19 0, 1, 0x1p-1074, FE_INEXACT|FE_UNDERFLOW,
20 0, -1, -0x1p-1074, FE_INEXACT|FE_UNDERFLOW,
21 -0.0, 1, 0x1p-1074, FE_INEXACT|FE_UNDERFLOW,
22 -0.0, -1, -0x1p-1074, FE_INEXACT|FE_UNDERFLOW,
23 0x1p-1074, INFINITY, 0x1p-1073, FE_INEXACT|FE_UNDERFLOW,
24 0x1p-1074, -INFINITY, 0, FE_INEXACT|FE_UNDERFLOW,
25 -0x1p-1074, INFINITY, -0.0, FE_INEXACT|FE_UNDERFLOW,
26 -0x1p-1074, -INFINITY, -0x1p-1073, FE_INEXACT|FE_UNDERFLOW,
27 DBL_MIN, 0, 0x0.fffffffffffffp-1022, FE_INEXACT|FE_UNDERFLOW,
28 -DBL_MIN, 0, -0x0.fffffffffffffp-1022, FE_INEXACT|FE_UNDERFLOW,
29 1, 2, 0x1.0000000000001p+0, 0,
30 1, -2, 0x1.fffffffffffffp-1, 0,
31 1, 0.5, 0x1.fffffffffffffp-1, 0,
32 0x1p1023, 0x1p1000, 0x1.fffffffffffffp+1022, 0,
33 0x1p1023, INFINITY, 0x1.0000000000001p+1023, 0,
34 -1.5, -2.5, -0x1.8000000000001p+0, 0,
35 -1.5, 2.5, -0x1.7ffffffffffffp+0, 0,
36 1.5, -2.5, 0x1.7ffffffffffffp+0, 0,
37 DBL_MAX, INFINITY, INFINITY, FE_INEXACT|FE_OVERFLOW,
38 INFINITY, INFINITY, INFINITY, 0,
39 -DBL_MAX, -INFINITY, -INFINITY, FE_INEXACT|FE_OVERFLOW,
40 -INFINITY, -INFINITY, -INFINITY, 0,
50 for (i = 0; i < sizeof t/sizeof *t; i++) {
51 feclearexcept(FE_ALL_EXCEPT);
52 z = nextafter(t[i].x, t[i].y);
53 f = fetestexcept(FE_INVALID|FE_DIVBYZERO|FE_OVERFLOW|FE_UNDERFLOW|FE_INEXACT);
55 if (z != t[i].z && !(isnan(z) && isnan(t[i].z)))
56 error("nextafter(%a, %a) want %a got %a\n", t[i].x, t[i].y, t[i].z, z);
58 error("nextafter(%a, %a)==%a want except=%s got except=%s\n",
59 t[i].x, t[i].y, t[i].z, strdup(strexcept(t[i].except)), strdup(strexcept(f)));
63 void bench_nextafter_normal(int N)
68 for (i = 0; i < N; i++) {
69 z = nextafter(1.25, 4);
73 void bench_nextafter_subnormal(int N)
78 for (i = 0; i < N; i++) {
79 z = nextafter(0x1p-1070, -0x1p-1071);