summaryrefslogtreecommitdiff
path: root/lib/ultralib/src/libc/ldiv.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ultralib/src/libc/ldiv.c')
-rwxr-xr-xlib/ultralib/src/libc/ldiv.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/ultralib/src/libc/ldiv.c b/lib/ultralib/src/libc/ldiv.c
new file mode 100755
index 0000000..59644e9
--- /dev/null
+++ b/lib/ultralib/src/libc/ldiv.c
@@ -0,0 +1,33 @@
+#include "stdlib.h"
+
+// TODO: these come from headers
+#ident "$Revision: 1.34 $"
+#ident "$Revision: 1.5 $"
+
+ldiv_t ldiv(long num, long denom) {
+ ldiv_t ret;
+
+ ret.quot = num / denom;
+ ret.rem = num - denom * ret.quot;
+
+ if (ret.quot < 0 && ret.rem > 0) {
+ ret.quot++;
+ ret.rem -= denom;
+ }
+
+ return ret;
+}
+
+lldiv_t lldiv(long long num, long long denom) {
+ lldiv_t ret;
+
+ ret.quot = num / denom;
+ ret.rem = num - denom * ret.quot;
+
+ if (ret.quot < 0 && ret.rem > 0) {
+ ret.quot++;
+ ret.rem -= denom;
+ }
+
+ return ret;
+}