1*3e12c5d1SDavid du Colombier #include <u.h> 2*3e12c5d1SDavid du Colombier #include <libc.h> 3*3e12c5d1SDavid du Colombier /* 4*3e12c5d1SDavid du Colombier * floor and ceil-- greatest integer <= arg 5*3e12c5d1SDavid du Colombier * (resp least >=) 6*3e12c5d1SDavid du Colombier */ 7*3e12c5d1SDavid du Colombier 8*3e12c5d1SDavid du Colombier double floor(double d)9*3e12c5d1SDavid du Colombierfloor(double d) 10*3e12c5d1SDavid du Colombier { 11*3e12c5d1SDavid du Colombier double fract; 12*3e12c5d1SDavid du Colombier 13*3e12c5d1SDavid du Colombier if(d < 0) { 14*3e12c5d1SDavid du Colombier fract = modf(-d, &d); 15*3e12c5d1SDavid du Colombier if(fract != 0.0) 16*3e12c5d1SDavid du Colombier d += 1; 17*3e12c5d1SDavid du Colombier d = -d; 18*3e12c5d1SDavid du Colombier } else 19*3e12c5d1SDavid du Colombier modf(d, &d); 20*3e12c5d1SDavid du Colombier return d; 21*3e12c5d1SDavid du Colombier } 22*3e12c5d1SDavid du Colombier 23*3e12c5d1SDavid du Colombier double ceil(double d)24*3e12c5d1SDavid du Colombierceil(double d) 25*3e12c5d1SDavid du Colombier { 26*3e12c5d1SDavid du Colombier return -floor(-d); 27*3e12c5d1SDavid du Colombier } 28