1 #include "f2c.h"
2 
3 #ifdef KR_headers
4 #ifdef IEEE_drem
5 double remainder();
6 #else
7 double floor();
8 #endif
r_mod(x,y)9 double r_mod(x,y) real *x, *y;
10 #else
11 #ifdef IEEE_drem
12 double remainder(double, double);
13 #else
14 #undef abs
15 #include "mathh.h"
16 #endif
17 double r_mod(real *x, real *y)
18 #endif
19 {
20 #ifdef IEEE_drem
21 	double xa, ya, z;
22 	if ((ya = *y) < 0.)
23 		ya = -ya;
24 	z = remainder(xa = *x, ya);
25 	if (xa > 0) {
26 		if (z < 0)
27 			z += ya;
28 		}
29 	else if (z > 0)
30 		z -= ya;
31 	return z;
32 #else
33 	double quotient;
34 	if( (quotient = (double)*x / *y) >= 0)
35 		quotient = floor(quotient);
36 	else
37 		quotient = -floor(-quotient);
38 	return(*x - (*y) * quotient );
39 #endif
40 }
41