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