diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-05 19:05:32 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-12-05 19:05:32 +0100 |
commit | b3cb90124bcf1786710c200c00530fd3f213929d (patch) | |
tree | 19f26126ac8b71cb787ec07a1e81a7acce4f08a9 /miscutils | |
parent | 06fa65bd95455e97d2275ee4d74167f9bfd251c0 (diff) |
bc: use unsigned division by 10 instead of signed
function old new delta
bc_num_k 990 988 -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'miscutils')
-rw-r--r-- | miscutils/bc.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c index 07793e9d4..6dc79118a 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c @@ -1657,7 +1657,7 @@ static BcStatus bc_num_k(BcNum *restrict a, BcNum *restrict b, a->len < BC_NUM_KARATSUBA_LEN || b->len < BC_NUM_KARATSUBA_LEN) { size_t i, j, len; - int carry; + unsigned carry; bc_num_expand(c, a->len + b->len + 1); @@ -1668,8 +1668,9 @@ static BcStatus bc_num_k(BcNum *restrict a, BcNum *restrict b, carry = 0; for (j = 0; j < a->len; ++j) { - int in = (int) c->num[i + j]; - in += ((int) a->num[j]) * ((int) b->num[i]) + carry; + unsigned in = c->num[i + j]; + in += ((unsigned) a->num[j]) * ((unsigned) b->num[i]) + carry; + // note: compilers prefer _unsigned_ div/const carry = in / 10; c->num[i + j] = (BcDig)(in % 10); } |