bc: move ^C check fro power calculation to multiplication
function old new delta bc_num_k 971 990 +19 bc_num_p 507 478 -29 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/1 up/down: 19/-29) Total: -10 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
b692c2faf1
commit
06fa65bd95
@ -1676,6 +1676,10 @@ static BcStatus bc_num_k(BcNum *restrict a, BcNum *restrict b,
|
||||
|
||||
c->num[i + j] += (BcDig) carry;
|
||||
len = BC_MAX(len, i + j + !!carry);
|
||||
|
||||
// a=2^1000000
|
||||
// a*a <- without check below, this will not be interruptible
|
||||
if (G_interrupt) return BC_STATUS_FAILURE;
|
||||
}
|
||||
|
||||
c->len = len;
|
||||
@ -1935,11 +1939,11 @@ static BcStatus bc_num_p(BcNum *a, BcNum *b, BcNum *restrict c, size_t scale)
|
||||
powrdx <<= 1;
|
||||
s = bc_num_mul(©, ©, ©, powrdx);
|
||||
if (s) goto err;
|
||||
// It is too slow to handle ^C only after entire "2^1000000" completes
|
||||
if (G_interrupt) {
|
||||
s = BC_STATUS_FAILURE;
|
||||
goto err;
|
||||
}
|
||||
// Not needed: bc_num_mul() has a check for ^C:
|
||||
//if (G_interrupt) {
|
||||
// s = BC_STATUS_FAILURE;
|
||||
// goto err;
|
||||
//}
|
||||
}
|
||||
|
||||
bc_num_copy(c, ©);
|
||||
@ -1955,11 +1959,11 @@ static BcStatus bc_num_p(BcNum *a, BcNum *b, BcNum *restrict c, size_t scale)
|
||||
s = bc_num_mul(c, ©, c, resrdx);
|
||||
if (s) goto err;
|
||||
}
|
||||
// It is too slow to handle ^C only after entire "2^1000000" completes
|
||||
if (G_interrupt) {
|
||||
s = BC_STATUS_FAILURE;
|
||||
goto err;
|
||||
}
|
||||
// Not needed: bc_num_mul() has a check for ^C:
|
||||
//if (G_interrupt) {
|
||||
// s = BC_STATUS_FAILURE;
|
||||
// goto err;
|
||||
//}
|
||||
}
|
||||
|
||||
if (neg) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user