diff options
| author | L Jonas Olsson <ljo@FreeBSD.org> | 1994-10-26 18:17:41 +0000 |
|---|---|---|
| committer | L Jonas Olsson <ljo@FreeBSD.org> | 1994-10-26 18:17:41 +0000 |
| commit | 09c656ca68c8876f0dddec7eda2626d8dc897f2e (patch) | |
| tree | acab27bd987cb8ba603a6389fb43d9b4df06310b /lib/libF77/r_mod.c | |
| parent | 876f9d834708020dda68772a4812b6143bbbc16e (diff) | |
Notes
Diffstat (limited to 'lib/libF77/r_mod.c')
| -rw-r--r-- | lib/libF77/r_mod.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/libF77/r_mod.c b/lib/libF77/r_mod.c new file mode 100644 index 000000000000..7adb44cdbec0 --- /dev/null +++ b/lib/libF77/r_mod.c @@ -0,0 +1,40 @@ +#include "f2c.h" + +#ifdef KR_headers +#ifdef IEEE_drem +double drem(); +#else +double floor(); +#endif +double r_mod(x,y) real *x, *y; +#else +#ifdef IEEE_drem +double drem(double, double); +#else +#undef abs +#include "math.h" +#endif +double r_mod(real *x, real *y) +#endif +{ +#ifdef IEEE_drem + double xa, ya, z; + if ((ya = *y) < 0.) + ya = -ya; + z = drem(xa = *x, ya); + if (xa > 0) { + if (z < 0) + z += ya; + } + else if (z > 0) + z -= ya; + return z; +#else + double quotient; + if( (quotient = (double)*x / *y) >= 0) + quotient = floor(quotient); + else + quotient = -floor(-quotient); + return(*x - (*y) * quotient ); +#endif +} |
