summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tune/speed.c2
-rw-r--r--tune/speed.h5
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); \