← Commit list

01eb5e9da

Denys Vlasenko
Denys Vlasenko
2018-12-22
SUCCESS Duration: 150s

Subject

bc: shrink modular exponentiation code

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

miscutils/bc.c+5 -3
@@ -2503,6 +2503,7 @@ static BC_STATUS zdc_num_modexp(BcNum *a, BcNum *b, BcNum *c, BcNum *restrict d)
{
BcStatus s;
BcNum base, exp, two, temp;
+ BcDig two_digs[2];
if (c->len == 0)
RETURN_STATUS(bc_error("divide by zero"));
@@ -2514,11 +2515,13 @@ static BC_STATUS zdc_num_modexp(BcNum *a, BcNum *b, BcNum *c, BcNum *restrict d)
bc_num_expand(d, c->len);
bc_num_init(&base, c->len);
bc_num_init(&exp, b->len);
- bc_num_init_DEF_SIZE(&two);
bc_num_init(&temp, b->len);
+ two.cap = ARRAY_SIZE(two_digs);
+ two.num = two_digs;
bc_num_one(&two);
- two.num[0] = 2;
+ two_digs[0] = 2;
+
bc_num_one(d);
s = zbc_num_rem(a, c, &base, 0);
@@ -2543,7 +2546,6 @@ static BC_STATUS zdc_num_modexp(BcNum *a, BcNum *b, BcNum *c, BcNum *restrict d)
}
err:
bc_num_free(&temp);
- bc_num_free(&two);
bc_num_free(&exp);
bc_num_free(&base);
RETURN_STATUS(s);