Initial revision
[official-gcc.git] / gcc / f / runtime / libF77 / d_mod.c
blob23f19299168edf53ef54faf79cb19335b1e6b32a
1 #include "f2c.h"
3 #ifdef KR_headers
4 #ifdef IEEE_drem
5 double drem();
6 #else
7 double floor();
8 #endif
9 double d_mod(x,y) doublereal *x, *y;
10 #else
11 #ifdef IEEE_drem
12 double drem(double, double);
13 #else
14 #undef abs
15 #include <math.h>
16 #endif
17 double d_mod(doublereal *x, doublereal *y)
18 #endif
20 #ifdef IEEE_drem
21 double xa, ya, z;
22 if ((ya = *y) < 0.)
23 ya = -ya;
24 z = drem(xa = *x, ya);
25 if (xa > 0) {
26 if (z < 0)
27 z += ya;
29 else if (z > 0)
30 z -= ya;
31 return z;
32 #else
33 double quotient;
34 if( (quotient = *x / *y) >= 0)
35 quotient = floor(quotient);
36 else
37 quotient = -floor(-quotient);
38 return(*x - (*y) * quotient );
39 #endif