1 /* $OpenBSD: modf_test.c,v 1.1 2023/08/13 07:02:36 miod Exp $ */
2
3 /*
4 * Written by Willemijn Coene. Public domain
5 */
6
7 #include <assert.h>
8 #include <math.h>
9
10 void
modff_infnan(void)11 modff_infnan(void)
12 {
13 float f, i;
14
15 f = modff(__builtin_inff(), &i);
16 assert(isinf(i));
17 assert(signbit(i) == 0);
18 assert(f == 0.0f);
19
20 f = modff(-__builtin_inff(), &i);
21 assert(isinf(i));
22 assert(signbit(i) != 0);
23 assert(f == -0.0f);
24
25 f = modff(NAN, &i);
26 assert(isnan(i));
27 assert(signbit(i) == 0);
28 assert(isnan(f));
29 assert(signbit(f) == 0);
30
31 f = modff(-NAN, &i);
32 assert(isnan(i));
33 assert(signbit(i) != 0);
34 assert(isnan(f));
35 assert(signbit(f) != 0);
36 }
37
38 void
modfl_infnan(void)39 modfl_infnan(void)
40 {
41 long double f, i;
42
43 f = modfl(__builtin_infl(), &i);
44 assert(isinf(i));
45 assert(signbit(i) == 0);
46 assert(f == 0.0L);
47
48 f = modfl(-__builtin_infl(), &i);
49 assert(isinf(i));
50 assert(signbit(i) != 0);
51 assert(f == -0.0L);
52
53 f = modfl(NAN, &i);
54 assert(isnan(i));
55 assert(signbit(i) == 0);
56 assert(isnan(f));
57 assert(signbit(f) == 0);
58
59 f = modfl(-NAN, &i);
60 assert(isnan(i));
61 assert(signbit(i) != 0);
62 assert(isnan(f));
63 assert(signbit(f) != 0);
64 }
65
66 int
main(void)67 main(void)
68 {
69 modff_infnan();
70 modfl_infnan();
71 }
72