diff options
Diffstat (limited to 'Python/fmod.c')
| -rw-r--r-- | Python/fmod.c | 27 | 
1 files changed, 27 insertions, 0 deletions
diff --git a/Python/fmod.c b/Python/fmod.c new file mode 100644 index 0000000000..58f14f7c68 --- /dev/null +++ b/Python/fmod.c @@ -0,0 +1,27 @@ +/* Portable fmod(x, y) implementation for systems that don't have it */ + +#include <math.h> +#include <errno.h> + +extern int errno; + +double +fmod(x, y) +	double x, 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; +}  | 
