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>
This commit is contained in:
parent
06fa65bd95
commit
b3cb90124b
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user