home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / Programming / Python2 / Python20_source / Python / fmod.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-10-25  |  433 b   |  28 lines

  1.  
  2. /* Portable fmod(x, y) implementation for systems that don't have it */
  3.  
  4. #include "config.h"
  5.  
  6. #include "pyport.h"
  7. #include <errno.h>
  8.  
  9. double
  10. fmod(double x, double y)
  11. {
  12.     double i, f;
  13.     
  14.     if (y == 0.0) {
  15.         errno = EDOM;
  16.         return 0.0;
  17.     }
  18.     
  19.     /* return f such that x = i*y + f for some integer i
  20.        such that |f| < |y| and f has the same sign as x */
  21.     
  22.     i = floor(x/y);
  23.     f = x - i*y;
  24.     if ((x < 0.0) != (y < 0.0))
  25.         f = f-y;
  26.     return f;
  27. }
  28.