/* Portable fmod(x, y) implementation for systems that don't have it */ | |
#include "pyconfig.h" | |
#include "pyport.h" | |
#include <errno.h> | |
double | |
fmod(double x, double y) | |
{ | |
double i, f; | |
if (y == 0.0) { | |
errno = EDOM; | |
return 0.0; | |
} | |
/* return f such that x = i*y + f for some integer i | |
such that |f| < |y| and f has the same sign as x */ | |
i = floor(x/y); | |
f = x - i*y; | |
if ((x < 0.0) != (y < 0.0)) | |
f = f-y; | |
return f; | |
} |