diff options
Diffstat (limited to 'bench')
| -rw-r--r-- | bench/benchmark.c | 2 | ||||
| -rw-r--r-- | bench/libgmp.h | 14 | ||||
| -rw-r--r-- | bench/libtommath.h | 23 |
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(); } |
