xref: /inferno-os/libkern/floor.c (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1 #include <lib9.h>
2 /*
3  * floor and ceil-- greatest integer <= arg
4  * (resp least >=)
5  */
6 
7 double
floor(double d)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
ceil(double d)23 ceil(double d)
24 {
25 	return -floor(-d);
26 }
27