/* @(#)z_floor.c 1.0 98/08/13 */ /* FUNCTION <>, <>, <>, <>---floor and ceiling INDEX floor INDEX floorf INDEX ceil INDEX ceilf SYNOPSIS #include double floor(double <[x]>); float floorf(float <[x]>); double ceil(double <[x]>); float ceilf(float <[x]>); DESCRIPTION <> and <> find @tex $\lfloor x \rfloor$, @end tex the nearest integer less than or equal to <[x]>. <> and <> find @tex $\lceil x\rceil$, @end tex the nearest integer greater than or equal to <[x]>. RETURNS <> and <> return the integer result as a double. <> and <> return the integer result as a float. PORTABILITY <> and <> are ANSI. <> and <> are extensions. */ /***************************************************************** * floor * * Input: * x - floating point value * * Output: * Smallest integer less than x. * * Description: * This routine returns the smallest integer less than x. * *****************************************************************/ #include "fdlibm.h" #include "zmath.h" #ifndef _DOUBLE_IS_32BITS double floor (double x) { double f, y; if (x > -1.0 && x < 1.0) return (x >= 0 ? 0 : -1.0); y = modf (x, &f); if (y == 0.0) return (x); return (x >= 0 ? f : f - 1.0); } #endif /* _DOUBLE_IS_32BITS */