diff options
author | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2020-03-20 12:06:28 +0100 |
---|---|---|
committer | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2020-03-20 12:06:28 +0100 |
commit | 3737a65526f080d5ec31f32f50196a9cf4a8471c (patch) | |
tree | 8f90acf1e612ffefa124d9b3a8b63714560b983f /tune | |
parent | 610f37abf2e1b3082b8f9b5d6789d042c09e9e23 (diff) | |
download | gmp-3737a65526f080d5ec31f32f50196a9cf4a8471c.tar.gz |
tune: New mesurable speed, mpz_nextprime_1.
Diffstat (limited to 'tune')
-rw-r--r-- | tune/common.c | 6 | ||||
-rw-r--r-- | tune/speed.c | 1 | ||||
-rw-r--r-- | tune/speed.h | 47 |
3 files changed, 54 insertions, 0 deletions
diff --git a/tune/common.c b/tune/common.c index c8b17fced..b7e243e88 100644 --- a/tune/common.c +++ b/tune/common.c @@ -1770,6 +1770,12 @@ speed_mpz_nextprime (struct speed_params *s) } double +speed_mpz_nextprime_1 (struct speed_params *s) +{ + SPEED_ROUTINE_MPZ_UNARY_1 (mpz_nextprime); +} + +double speed_mpz_jacobi (struct speed_params *s) { SPEED_ROUTINE_MPZ_JACOBI (mpz_jacobi); diff --git a/tune/speed.c b/tune/speed.c index 1708e4ca1..e0d961e22 100644 --- a/tune/speed.c +++ b/tune/speed.c @@ -317,6 +317,7 @@ const struct routine_t { #endif { "mpz_nextprime", speed_mpz_nextprime }, + { "mpz_nextprime_1", speed_mpz_nextprime_1, FLAG_R_OPTIONAL }, { "mpz_jacobi", speed_mpz_jacobi }, { "mpn_jacobi_base", speed_mpn_jacobi_base }, diff --git a/tune/speed.h b/tune/speed.h index f23bacb1e..f6f532e00 100644 --- a/tune/speed.h +++ b/tune/speed.h @@ -408,6 +408,7 @@ double speed_mpz_fib2_ui (struct speed_params *); double speed_mpz_init_clear (struct speed_params *); double speed_mpz_init_realloc_clear (struct speed_params *); double speed_mpz_nextprime (struct speed_params *); +double speed_mpz_nextprime_1 (struct speed_params *); double speed_mpz_jacobi (struct speed_params *); double speed_mpz_lucnum_ui (struct speed_params *); double speed_mpz_lucnum2_ui (struct speed_params *); @@ -2575,6 +2576,52 @@ int speed_routine_count_zeros_setup (struct speed_params *, mp_ptr, int, int); #define SPEED_ROUTINE_MPZ_LUCNUM_UI(function) SPEED_ROUTINE_MPZ_UI(function) +#define SPEED_ROUTINE_MPZ_UNARY_1(function) \ + { \ + mpz_t z, a; \ + unsigned i; \ + mp_limb_t ls; \ + double t; \ + \ + SPEED_RESTRICT_COND (s->size >= 0); \ + \ + mpz_init (z); \ + ls = s->size; \ + mpz_roinit_n (a, &ls, s->size != 0); \ + \ + if (s->r < 2) \ + { \ + speed_starttime (); \ + i = s->reps; \ + do \ + function (z, a); \ + while (--i != 0); \ + t = speed_endtime (); \ + } \ + else \ + { \ + speed_starttime (); \ + i = s->reps; \ + do \ + { \ + int j = s->r; \ + mpz_set (z, a); \ + do \ + { \ + function (z, z); \ + } \ + while (--j != 0); \ + } \ + while (--i != 0); \ + t = speed_endtime (); \ + s->time_divisor = s->r; \ + } \ + \ + mpz_clear (z); \ + return t; \ + } + + #define SPEED_ROUTINE_MPZ_2_UI(function) \ { \ mpz_t z, z2; \ |