floor.c 305 B

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