xref: /openbsd-src/regress/lib/libc/modf/modf_test.c (revision 46035553bfdd96e63c94e32da0210227ec2e3cf1)
1 /* Public domain, 2014, Tobias Ulmer <tobiasu@tmux.org> */
2 
3 /* Test for bug introduced in 4.4BSD modf() on sparc */
4 
5 #include <math.h>
6 
7 #define BIGFLOAT (5e15) /* Number large enough to trigger the "big" case */
8 
9 int
10 main(void)
11 {
12 	double f, i;
13 
14 	f = modf(BIGFLOAT, &i);
15 	if (i != BIGFLOAT)
16 		return 1;
17 	if (f != 0.0)
18 		return 1;
19 
20 	/* Repeat, maybe we were lucky */
21 	f = modf(BIGFLOAT, &i);
22 	if (i != BIGFLOAT)
23 		return 1;
24 	if (f != 0.0)
25 		return 1;
26 
27 	/* With negative number, for good measure */
28 	f = modf(-BIGFLOAT, &i);
29 	if (i != -BIGFLOAT)
30 		return 1;
31 	if (f != 0.0)
32 		return 1;
33 
34 	return 0;
35 }
36