From 01eb5e9da1546f5410831d3a5a8d268d630d2653 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sat, 22 Dec 2018 23:59:21 +0100 Subject: bc: shrink modular exponentiation code function old new delta zdc_program_modexp 721 694 -27 Signed-off-by: Denys Vlasenko --- miscutils/bc.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'miscutils/bc.c') diff --git a/miscutils/bc.c b/miscutils/bc.c index 8cd67b0f5..25150a9eb 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c @@ -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); -- cgit v1.2.3