floor.c
上传用户:baixin
上传日期:2008-03-13
资源大小:4795k
文件大小:1k
开发平台:

MultiPlatform

  1. /* floor.c - floor math routine */
  2. /* Copyright 1992-1993 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01g,17nov00,tkt  return itself if it is ZERO or INF.
  7. 01g,04may01,agf  fix return value of INF
  8. 01f,05feb93,jdi  doc changes based on kdl review.
  9. 01e,02dec92,jdi  doc tweaks.
  10. 01d,28oct92,jdi  documentation cleanup.
  11. 01c,20sep92,smb  documentation additions
  12. 01b,30jul92,kdl  changed _d_type() calls to fpTypeGet().
  13. 01a,08jul92,smb  documentation.
  14. */
  15. /*
  16. DESCRIPTION
  17. SEE ALSO: American National Standard X3.159-1989
  18. NOMANUAL
  19. */
  20. #include "vxWorks.h"
  21. #include "math.h"
  22. #include "stddef.h"
  23. #include "errno.h"
  24. #include "private/mathP.h"
  25. /*******************************************************************************
  26. *
  27. * floor - compute the largest integer less than or equal to a specified value (ANSI)
  28. *
  29. * This routine returns the largest integer less than or equal to <v>, in
  30. * double precision.
  31. * INCLUDE FILES: math.h
  32. *
  33. * RETURNS:
  34. * The largest integral value less than or equal to <v>, in double precision.
  35. *
  36. * SEE ALSO: mathALib
  37. */
  38. double floor
  39.     (
  40.     double v /* value to find the floor of */
  41.     )
  42.     {
  43.     double r;
  44.     switch (fpTypeGet (v, &r)) /* find out the type of v */
  45. {
  46. case ZERO: return (0);
  47. case INF:
  48. case NAN: return (v);
  49. case INTEGER: return (v);
  50. case REAL: return (((v < 0.0) && (v != r)) ? (r - 1.0) : (r));
  51. default: return (0); /* this should never happen */
  52. }
  53.     }