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)9double 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