ldiv.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* ldiv.c - ldiv file for stdlib  */
  2. /* Copyright 1992-2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01f,25sep01,gls  fixed ldiv_r to check for negative numerator (SPR #30636)
  7. 01e,08feb93,jdi  documentation cleanup for 5.1.
  8. 01d,20sep92,smb  documentation additions.
  9. 01c,24jul92,smb  corrected parameter ordering.
  10. 01b,24jul92,smb  added reentrant version of ldiv()
  11. 01a,19jul92,smb  written.
  12. */
  13. /*
  14. DESCRIPTION
  15. INCLUDE FILES: stdlib.h
  16. SEE ALSO: American National Standard X3.159-1989
  17. NOMANUAL
  18. */
  19. #include "vxWorks.h"
  20. #include "stdlib.h"
  21. /*******************************************************************************
  22. *
  23. * ldiv - compute the quotient and remainder of the division (ANSI)
  24. *
  25. * This routine computes the quotient and remainder of <numer>/<denom>.
  26. * This routine is similar to div(), except that the arguments and the
  27. * elements of the returned structure are all of type `long'.
  28. *
  29. * INCLUDE FILES: stdlib.h 
  30. *
  31. * RETURNS:
  32. * A structure of type `ldiv_t', containing both the quotient and the 
  33. * remainder. 
  34. */
  35. ldiv_t ldiv 
  36.     (
  37.     long numer,  /* numerator */
  38.     long denom /* denominator */
  39.     ) 
  40.     {
  41.     static ldiv_t divStruct;
  42.     ldiv_r (numer, denom, &divStruct); 
  43.     return (divStruct);
  44.     }
  45.  
  46. /*******************************************************************************
  47. *
  48. * ldiv_r - compute a quotient and remainder (reentrant)
  49. *
  50. * This routine computes the quotient and remainder of <numer>/<denom>.
  51. * The quotient and remainder are stored in the `ldiv_t' structure
  52. * `divStructPtr'.
  53. *
  54. * This routine is the reentrant version of ldiv().
  55. *
  56. * INCLUDE FILES: stdlib.h 
  57. *
  58. * RETURNS: N/A
  59. */
  60. void ldiv_r
  61.     (
  62.     long     numer,          /* numerator */
  63.     long     denom,          /* denominator */
  64.     ldiv_t * divStructPtr    /* ldiv_t structure */
  65.     )
  66.     {
  67.     /* calculate quotient */
  68.     divStructPtr->quot = numer / denom;
  69.  
  70.     /* calculate remainder */
  71.     divStructPtr->rem = numer - (denom * divStructPtr->quot);
  72.     /* check for negative numerator */
  73.     if ((numer < 0) && (divStructPtr->rem > 0))
  74.         {
  75.         divStructPtr->quot++;
  76.         divStructPtr->rem -= denom;
  77.         }
  78.     }