view Python/fmod.c @ 33714:635dd8a9ebd9 legacy-trunk

Revert rev 2.35. It was based on erroneous reasoning -- the current thread's id can't get duplicated, because (of course!) the current thread is still running. The code should work either way, but reverting the gratuitous change should make backporting easier, and gets the bad reasoning out of 2.35's new comments.
author Tim Peters <tim.peters@gmail.com>
date Sun, 10 Oct 2004 05:30:40 +0000
parents 2dea40e40d9d
children
line wrap: on
line source


/* 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;
}