libzahl

big integer library
git clone git://git.suckless.org/libzahl
Log | Files | Refs | README | LICENSE

commit 247dffb6c9a24894f094392ce62f2aa2e81a8acc
parent fdc75a358e4c20116640c08f4e8ce7a09dc3cebd
Author: Mattias Andrée <maandree@kth.se>
Date:   Sat,  7 May 2016 03:17:44 +0200

Fix zsave translation for tomsfastmath and libtommath

Signed-off-by: Mattias Andrée <maandree@kth.se>

Diffstat:
MSTATUS | 8+++++---
Mbench/libtfm.h | 2+-
Mbench/libtommath.h | 2+-
3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/STATUS b/STATUS @@ -1,11 +1,13 @@ Optimisation progress for libzahl. Benchmarks are done in the -range 1 to 4097 bits. So far all benchmarks are done with the -following combinations of cc and libc: +range 1 to 4097 bits. So far all benchmarks on libzahl are +done with the following combinations of cc and libc: gcc + glibc gcc + musl clang + glibc +Benchmarks on the other libraries are done with gcc and glibc. + All benchmarks are done on an x86-64 (specifically an Intel Core 2 Quad CPU Q9300), without any extensions turned on during compilation, and without any use of extensions in @@ -63,7 +65,7 @@ zand .................... fastest until ~900, alternating with gmp zor ..................... fastest until ~1750, alternating with gmp (gcc) and tomsfastmath (clang) zxor .................... fastest until ~700, alternating with gmp (gcc+glibc) znot .................... always fastest -zsave ................... fastest until ~300, then tomsfastmath; libtommath is suspicious +zsave ................... always fastest zload ................... always fastest diff --git a/bench/libtfm.h b/bench/libtfm.h @@ -325,7 +325,7 @@ zxor(z_t r, z_t a, z_t b) static inline size_t zsave(z_t a, char *s) { - _tmp = s ? fp_signed_bin_size(a) : (fp_to_signed_bin(a, (unsigned char *)s), 0); + _tmp = !s ? fp_signed_bin_size(a) : (fp_to_signed_bin(a, (unsigned char *)s), 0); return _tmp; } diff --git a/bench/libtommath.h b/bench/libtommath.h @@ -377,7 +377,7 @@ zptest(z_t w, z_t a, int t) static inline size_t zsave(z_t a, char *b) { - _tmp = b ? mp_signed_bin_size(a) : mp_to_signed_bin(a, (unsigned char *)b); + _tmp = !b ? mp_signed_bin_size(a) : mp_to_signed_bin(a, (unsigned char *)b); return _tmp; }