aboutsummaryrefslogtreecommitdiffstats
path: root/bench
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2016-04-08 15:53:31 +0200
committerMattias Andrée <maandree@kth.se>2016-04-08 15:53:31 +0200
commit52f91804ff67246deab3d98c790f8b6b845afcde (patch)
tree9bb8d3878b8c06d7eaae20a2ed06006b6a906c3f /bench
parentgitignore: blacklist _/, for private files (diff)
downloadlibzahl-52f91804ff67246deab3d98c790f8b6b845afcde.tar.gz
libzahl-52f91804ff67246deab3d98c790f8b6b845afcde.tar.bz2
libzahl-52f91804ff67246deab3d98c790f8b6b845afcde.tar.xz
Some improvements:
- Improve .gitignore - Improve portability of the makefile - Bring the translations, for gmp and tommath, used by the benchmark up to date Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'bench')
-rw-r--r--bench/benchmark.c2
-rw-r--r--bench/libgmp.h14
-rw-r--r--bench/libtommath.h23
3 files changed, 36 insertions, 3 deletions
diff --git a/bench/benchmark.c b/bench/benchmark.c
index 68084f2..6649958 100644
--- a/bench/benchmark.c
+++ b/bench/benchmark.c
@@ -18,7 +18,7 @@
i = FAST ? 1000000L : 1000L;\
clock_gettime(CLOCK_MONOTONIC_RAW, &start);\
while (i--) {\
- INSTRUCTION;\
+ (void)INSTRUCTION;\
}\
clock_gettime(CLOCK_MONOTONIC_RAW, &end);\
end.tv_sec -= start.tv_sec;\
diff --git a/bench/libgmp.h b/bench/libgmp.h
index 7dc74e2..1ea6dcb 100644
--- a/bench/libgmp.h
+++ b/bench/libgmp.h
@@ -37,8 +37,15 @@ zunsetup(void)
}
#define FAST_RANDOM 0
+#define SECURE_RANDOM 0
+#define DEFAULT_RANDOM 0
+#define FASTEST_RANDOM 0
+#define LIBC_RAND_RANDOM 0
+#define LIBC_RANDOM_RANDOM 0
+#define LIBC_RAND48_RANDOM 0
#define QUASIUNIFORM 0
#define UNIFORM 1
+#define MODUNIFORM 2
#define zperror(x) ((void)0)
#define zinit mpz_init
@@ -197,6 +204,13 @@ zrand(z_t r, int dev, int dist, z_t n)
mpz_urandomm(r, _randstate, n);
break;
+ case MODUNIFORM:
+ bits = zbits(n);
+ mpz_urandomb(r, _randstate, bits);
+ if (zcmp(r, n) > 0)
+ zsub(r, r, n);
+ break;
+
default:
abort();
}
diff --git a/bench/libtommath.h b/bench/libtommath.h
index 4a81373..25da3ff 100644
--- a/bench/libtommath.h
+++ b/bench/libtommath.h
@@ -30,8 +30,15 @@ zunsetup(void)
}
#define FAST_RANDOM 0
+#define SECURE_RANDOM 0
+#define DEFAULT_RANDOM 0
+#define FASTEST_RANDOM 0
+#define LIBC_RAND_RANDOM 0
+#define LIBC_RANDOM_RANDOM 0
+#define LIBC_RAND48_RANDOM 0
#define QUASIUNIFORM 0
#define UNIFORM 1
+#define MODUNIFORM 2
#define zperror(x) ((void)0)
#define zinit(a) mp_init(a)
@@ -76,12 +83,18 @@ zunsetup(void)
#define zstr_length(a, b) (mp_radix_size(a, b, &_tmp), _tmp)
#define zstr(a, s) mp_toradix(a, s, 10)
#define zptest(w, a, t) (mp_prime_is_prime(a, t, &_tmp), _tmp) /* Note, the witness is not returned. */
-#define zsave(a, s) ((_tmp = ((s) ? mp_signed_bin_size(a) : mp_to_signed_bin(a, s))))
-#define zload(a, s) mp_read_signed_bin(a, s, _tmp)
+#define zload(a, s) mp_read_signed_bin(a, (unsigned char *)s, _tmp)
#define zdiv(r, a, b) mp_div(a, b, r, 0)
#define zmod(r, a, b) mp_mod(a, b, r)
#define zdivmod(q, r, a, b) mp_div(a, b, q, r)
+static int
+zsave(z_t a, char *buf)
+{
+ _tmp = buf ? mp_signed_bin_size(a) : mp_to_signed_bin(a, (unsigned char *)buf);
+ return _tmp;
+}
+
static void
zsetu(z_t r, unsigned long long int val)
{
@@ -183,6 +196,12 @@ zrand(z_t r, int dev, int dist, z_t n)
}
break;
+ case MODUNIFORM:
+ mp_rand(r, bits);
+ if (zcmp(r, n) > 0)
+ zsub(r, r, n);
+ break;
+
default:
abort();
}