libzahl

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

commit 94c7cf77618aa33b2befe785101eaf0e876bedfc
parent deae42eb4190a0512ac7887b9c9dd3e7de1bfe0b
Author: Mattias Andrée <maandree@kth.se>
Date:   Thu,  5 May 2016 13:55:57 +0200

Update STATUS

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

Diffstat:
MSTATUS | 40++++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/STATUS b/STATUS @@ -6,45 +6,45 @@ left column. Double-parenthesis means there may be a better way to do it. Inside square-brackets, there are some comments on multi-bit comparisons. -zset .................... fastest [always (gcc); until ~250 (clang)] +zset .................... fastest [always] zseti ................... tomsfastmath is faster [always] zsetu ................... tomsfastmath is faster [always] -zneg(a, b) .............. fastest [always (gcc); until ~250 (clang)] +zneg(a, b) .............. fastest [always] zneg(a, a) .............. fastest [always] (shared with gmp) -zabs(a, b) .............. fastest [always (gcc); until ~250 (clang)] +zabs(a, b) .............. fastest [always] zabs(a, a) .............. tomsfastmath is faster [always] -zadd_unsigned ........... fastest [always (gcc+glibc); until 1400~1600 (gcc+musl); until ~600 (clang+glibc)] +zadd_unsigned ........... fastest [always] zsub_unsigned ........... fastest [always] -zadd .................... fastest [almost never] +zadd .................... fastest [after ~100, tomsfastmath before] (shared with gmp) zsub .................... fastest [always] -zand .................... 77 % of tomsfastmath [until ~150, then gmp] -zor ..................... 65 % of tomsfastmath [until ~250, then gmp] -zxor .................... 87 % of tomsfastmath [until ~500, then gmp] +zand .................... 77 % of tomsfastmath [until ~900, alternating with gmp] +zor ..................... 65 % of tomsfastmath [until ~1750, alternating with gmp (gcc) and tomsfastmath (clang)] +zxor .................... 87 % of tomsfastmath [until ~700, alternating with gmp (gcc+clangs),] znot .................... fastest [always] zeven ................... fastest [always] zodd .................... fastest [always] zeven_nonzero ........... fastest [always] zodd_nonzero ............ fastest [always] -zzero ................... fastest [always] (shared with gmp and libtommath) +zzero ................... fastest [always] (shared with gmp) zsignum ................. fastest [always] (shared with gmp) zbits ................... fastest [always] zlsb .................... fastest [always] zswap ................... fastest [always] -zlsh .................... fastest [until ~300, then gmp (gcc); until ~100 (clang)] +zlsh .................... fastest [until ~1000, then gmp] zrsh .................... fastest [almost never] -ztrunc(a, b, c) ......... fastest [until 750~2000, then gmp (gcc); until 1~500 (clang)] -ztrunc(a, a, b) ......... fastest [until ~150, then 77 % of tomsfastmath] -zsplit .................. fastest [until 100~200, then gmp] +ztrunc(a, b, c) ......... fastest [always; alternating with gmp between 1400~3000 (clang)] +ztrunc(a, a, b) ......... fastest [until ~150, then 77 % of tomsfastmath; slightly slower than gmp (clang)] +zsplit .................. fastest [alternating with gmp and slightly slow than gmp] zcmpmag ................. fastest [always] zcmp .................... fastest [almost never] -zcmpi(a, +) ............. fastest -zcmpi(a, -) ............. fastest -zcmpu ................... fastest -zbset(a, b, 1) .......... fastest [always (gcc+glibc); until 3500~3750 (gcc+musl); until ~100 (clang+glibc)] +zcmpi(a, +) ............. fastest [always] +zcmpi(a, -) ............. fastest [always] +zcmpu ................... fastest [always] +zbset(a, b, 1) .......... fastest [always] zbset(a, a, 1) .......... fastest [always] -zbset(a, b, 0) .......... fastest [until 3300~3800 (gcc); until ~800 (clang)] +zbset(a, b, 0) .......... fastest [always] zbset(a, a, 0) .......... fastest [always] -zbset(a, b, -1) ......... fastest [until 3100~3400 (gcc); until ~200 (clang)] +zbset(a, b, -1) ......... fastest [always] zbset(a, a, -1) ......... fastest [always] zbtest .................. fastest [always] zgcd .................... 21 % of gmp (zcmpmag) @@ -63,7 +63,7 @@ zstr_length(a, 10) ...... gmp is faster [always] (zdiv, zsqr) zstr(a, b, n) ........... 8 % of gmp, 59 % of hebimath zrand(default uniform) .. 51 % of gmp zptest .................. slowest (zrand, zmodpow, zsqr, zmod) -zsave ................... fastest [until ~600, then tomsfastmath; libtommath is suspicious] +zsave ................... fastest [until ~250, then tomsfastmath; libtommath is suspicious] zload ................... fastest [always] zdiv(big denum) ......... tomsfastmath and naïve hebimath implementation are faster (zdivmod) zmod(big denum) ......... fastest (zdivmod)