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