Updated to fedora-glibc-20050523T1354
[kopensolaris-gnu/glibc.git] / math / bug-nexttoward.c
1 #include <fenv.h>
2 #include <math.h>
3 #include <float.h>
4 #include <stdlib.h>
5 #include <stdio.h>
6
7 int
8 main (void)
9 {
10   int result = 0;
11
12   long double tl = (long double) FLT_MAX + 0x1.0p128L;
13   float fi = INFINITY;
14   float m = FLT_MAX;
15   feclearexcept (FE_ALL_EXCEPT);
16   if (nexttowardf (m, tl) != fi)
17     {
18       puts ("nexttowardf+ failed");
19       ++result;
20     }
21   if (fetestexcept (FE_OVERFLOW) == 0)
22     {
23       puts ("nexttowardf+ did not overflow");
24       ++result;
25     }
26   feclearexcept (FE_ALL_EXCEPT);
27   if (nexttowardf (-m, -tl) != -fi)
28     {
29       puts ("nexttowardf- failed");
30       ++result;
31     }
32   if (fetestexcept (FE_OVERFLOW) == 0)
33     {
34       puts ("nexttowardf- did not overflow");
35       ++result;
36     }
37
38   tl = (long double) DBL_MAX + 1.0e305L;
39   double di = INFINITY;
40   double dm = DBL_MAX;
41   feclearexcept (FE_ALL_EXCEPT);
42   if (nexttoward (dm, tl) != di)
43     {
44       puts ("nexttoward+ failed");
45       ++result;
46     }
47   if (fetestexcept (FE_OVERFLOW) == 0)
48     {
49       puts ("nexttoward+ did not overflow");
50       ++result;
51     }
52   feclearexcept (FE_ALL_EXCEPT);
53   if (nexttoward (-dm, -tl) != -di)
54     {
55       puts ("nexttoward- failed");
56       ++result;
57     }
58   if (fetestexcept (FE_OVERFLOW) == 0)
59     {
60       puts ("nexttoward- did not overflow");
61       ++result;
62     }
63
64   return result;
65 }