aboutsummaryrefslogtreecommitdiffstats
path: root/src/zsub.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/zsub.c')
-rw-r--r--src/zsub.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/src/zsub.c b/src/zsub.c
index 437e329..d1c54f6 100644
--- a/src/zsub.c
+++ b/src/zsub.c
@@ -1,9 +1,6 @@
/* See LICENSE file for copyright and license details. */
#include "internals"
-#include <stdlib.h>
-#include <string.h>
-
void
zsub_unsigned(z_t a, z_t b, z_t c)
@@ -18,16 +15,14 @@ zsub_unsigned(z_t a, z_t b, z_t c)
SET_SIGNUM(a, 0);
return;
}
- if (a != c)
- zset(a, c);
- *subtrahend = *b;
+ SET(a, c);
+ *s = *b;
} else {
- if (a != b)
- zset(a, b);
- *subtrahend = *c;
+ SET(a, b);
+ *s = *c;
}
- n = a->used < s->used ? a->used : s->used;
+ n = MIN(a->used, s->used);
for (i = 0; i < n; i++) {
carry[~i & 1] = carry[i & 1] ? (a->chars[i] <= s->chars[i]) : (a->chars[i] < s->chars[i]);
@@ -51,8 +46,7 @@ zsub(z_t a, z_t b, z_t c)
} else if (zzero(b)) {
zneg(a, c);
} else if (zzero(c)) {
- if (a != b)
- zset(a, b);
+ SET(a, b);
} else if ((zsignum(b) | zsignum(c)) < 0) {
if (zsignum(b) < 0) {
if (zsignum(c) < 0) {