| 
									
										
										
										
											1991-02-19 12:39:46 +00:00
										 |  |  | /***********************************************************
 | 
					
						
							| 
									
										
										
										
											2000-06-30 23:50:40 +00:00
										 |  |  | Copyright (c) 2000, BeOpen.com. | 
					
						
							|  |  |  | Copyright (c) 1995-2000, Corporation for National Research Initiatives. | 
					
						
							|  |  |  | Copyright (c) 1990-1995, Stichting Mathematisch Centrum. | 
					
						
							|  |  |  | All rights reserved. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | See the file "Misc/COPYRIGHT" for information on usage and | 
					
						
							|  |  |  | redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. | 
					
						
							| 
									
										
										
										
											1991-02-19 12:39:46 +00:00
										 |  |  | ******************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1990-10-14 12:07:46 +00:00
										 |  |  | /* Portable fmod(x, y) implementation for systems that don't have it */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-02-27 10:15:10 +00:00
										 |  |  | #include "config.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-07-31 15:28:04 +00:00
										 |  |  | #include "pyport.h"
 | 
					
						
							| 
									
										
										
										
											1990-10-14 12:07:46 +00:00
										 |  |  | #include <errno.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | double | 
					
						
							| 
									
										
										
										
											1995-02-27 10:15:10 +00:00
										 |  |  | fmod(double x, double y) | 
					
						
							| 
									
										
										
										
											1990-10-14 12:07:46 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 	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; | 
					
						
							|  |  |  | } |