summaryrefslogtreecommitdiffstats
path: root/lib/libF77/r_mod.c
diff options
context:
space:
mode:
authorljo <ljo@FreeBSD.org>1994-10-26 18:17:41 +0000
committerljo <ljo@FreeBSD.org>1994-10-26 18:17:41 +0000
commit2195d627fb793fec6c00bdddf1c4d46982b9f27f (patch)
treec2961f38c1507b80baefaca1d568747c113f28c0 /lib/libF77/r_mod.c
parent80b2e1963004e4ae0173b4f9bc965518ba81d3b0 (diff)
downloadFreeBSD-src-2195d627fb793fec6c00bdddf1c4d46982b9f27f.zip
FreeBSD-src-2195d627fb793fec6c00bdddf1c4d46982b9f27f.tar.gz
Library for f2c (part 2 of 2)
Obtained from: netlib.att.com
Diffstat (limited to 'lib/libF77/r_mod.c')
-rw-r--r--lib/libF77/r_mod.c40
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 0000000..7adb44c
--- /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
+}
OpenPOWER on IntegriCloud