21 0, 1, 0x1p-16445L, FE_INEXACT|FE_UNDERFLOW,
22 0, -1, -0x1p-16445L, FE_INEXACT|FE_UNDERFLOW,
23 -0.0, 1, 0x1p-16445L, FE_INEXACT|FE_UNDERFLOW,
24 -0.0, -1, -0x1p-16445L, FE_INEXACT|FE_UNDERFLOW,
25 0x1p-16445L, INFINITY, 0x1p-16444L, FE_INEXACT|FE_UNDERFLOW,
26 0x1p-16445L, -INFINITY, 0, FE_INEXACT|FE_UNDERFLOW,
27 -0x1p-16445L, INFINITY, -0.0, FE_INEXACT|FE_UNDERFLOW,
28 -0x1p-16445L, -INFINITY, -0x1p-16444L, FE_INEXACT|FE_UNDERFLOW,
29 0x1p-16440L, -0x1p-16444L, 0x1.fp-16441L, FE_INEXACT|FE_UNDERFLOW,
30 0x1p-16440L, 0x1p-16444L, 0x1.fp-16441L, FE_INEXACT|FE_UNDERFLOW,
31 0x1p-16440L, 0x1p-16430L, 0x1.08p-16440L, FE_INEXACT|FE_UNDERFLOW,
32 LDBL_MIN, 0, 0x1.fffffffffffffffcp-16383L, FE_INEXACT|FE_UNDERFLOW,
33 -LDBL_MIN, 0,-0x1.fffffffffffffffcp-16383L, FE_INEXACT|FE_UNDERFLOW,
34 0x1.fffffffffffffffcp-16383L, 1, LDBL_MIN, 0,
35 -0x1.fffffffffffffffcp-16383L, -1, -LDBL_MIN, 0,
36 1, 2, 0x1.0000000000000002p+0L, 0,
37 1, -2, 0x1.fffffffffffffffep-1L, 0,
38 1, 0.5, 0x1.fffffffffffffffep-1L, 0,
39 0x1p1023, 0x1p1000, 0x1.fffffffffffffffep+1022L, 0,
40 0x1p1023, INFINITY, 0x1.0000000000000002p+1023L, 0,
41 -1.5, -2.5, -0x1.8000000000000002p+0L, 0,
42 -1.5, 2.5, -0x1.7ffffffffffffffep+0L, 0,
43 1.5, -2.5, 0x1.7ffffffffffffffep+0L, 0,
44 LDBL_MAX, INFINITY, INFINITY, FE_INEXACT|FE_OVERFLOW,
45 INFINITY, INFINITY, INFINITY, 0,
46 -LDBL_MAX, -INFINITY, -INFINITY, FE_INEXACT|FE_OVERFLOW,
47 -INFINITY, -INFINITY, -INFINITY, 0,
52 void test_nextafterl()
57 for (i = 0; i < sizeof t/sizeof *t; i++) {
58 feclearexcept(FE_ALL_EXCEPT);
59 z = nextafterl(t[i].x, t[i].y);
60 f = fetestexcept(FE_INVALID|FE_DIVBYZERO|FE_OVERFLOW|FE_UNDERFLOW|FE_INEXACT);
62 if (z != t[i].z && !(isnan(z) && isnan(t[i].z)))
63 error("%d nextafterl(%La, %La) want %La got %La\n", i, t[i].x, t[i].y, t[i].z, z);
65 error("%d nextafterl(%La, %La)==%La want except=%s got except=%s\n",
66 i, t[i].x, t[i].y, t[i].z, strdup(strexcept(t[i].except)), strdup(strexcept(f)));
70 void bench_nextafterl_normal(int N)
73 volatile long double z;
75 for (i = 0; i < N; i++) {
76 z = nextafterl(1.25, 4);
80 void bench_nextafterl_subnormal(int N)
83 volatile long double z;
85 for (i = 0; i < N; i++) {
86 z = nextafterl(0x1p-16440L, -0x1p-16444L);