diff options
-rw-r--r-- | tune/speed.c | 2 | ||||
-rw-r--r-- | tune/speed.h | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/tune/speed.c b/tune/speed.c index 4f5a348ae..b861fa491 100644 --- a/tune/speed.c +++ b/tune/speed.c @@ -417,7 +417,7 @@ const struct routine_t { { "mpz_2fac_ui", speed_mpz_2fac_ui, FLAG_NODATA }, { "mpz_mfac_uiui", speed_mpz_mfac_uiui, FLAG_NODATA | FLAG_R_OPTIONAL }, { "mpz_primorial_ui", speed_mpz_primorial_ui, FLAG_NODATA }, - { "mpz_powm", speed_mpz_powm }, + { "mpz_powm", speed_mpz_powm, FLAG_R_OPTIONAL }, { "mpz_powm_mod", speed_mpz_powm_mod }, { "mpz_powm_redc", speed_mpz_powm_redc }, { "mpz_powm_sec", speed_mpz_powm_sec }, diff --git a/tune/speed.h b/tune/speed.h index 18f54600a..d66a79418 100644 --- a/tune/speed.h +++ b/tune/speed.h @@ -2638,7 +2638,10 @@ int speed_routine_count_zeros_setup (struct speed_params *, mp_ptr, int, int); SPEED_RESTRICT_COND (s->size >= 1); \ \ mpz_init (r); \ - mpz_init_set_n (b, s->xp, s->size); \ + if (s->r < 2) \ + mpz_init_set_n (b, s->xp, s->size); \ + else \ + mpz_init_set_ui (b, s->r); \ mpz_init_set_n (m, s->yp, s->size); \ mpz_setbit (m, 0); /* force m to odd */ \ mpz_init_set_n (e, s->xp_block, 6); \ |