xref: /inferno-os/libkern/floor.c (revision 7ef44d652ae9e5e1f5b3465d73684e4a54de73c0)
1 #include <lib9.h>
2 /*
3  * floor and ceil-- greatest integer <= arg
4  * (resp least >=)
5  */
6 
7 double
8 floor(double d)
9 {
10 	double fract;
11 
12 	if(d < 0) {
13 		fract = modf(-d, &d);
14 		if(fract != 0.0)
15 			d += 1;
16 		d = -d;
17 	} else
18 		modf(d, &d);
19 	return d;
20 }
21 
22 double
23 ceil(double d)
24 {
25 	return -floor(-d);
26 }
27