commit 94c7cf77618aa33b2befe785101eaf0e876bedfc
Author: Mattias Andrée <[email protected]>
AuthorDate: Thu May 5 13:55:57 2016 +0200
Commit: Mattias Andrée <[email protected]>
CommitDate: Thu May 5 13:55:57 2016 +0200
Update STATUS
Signed-off-by: Mattias Andrée <[email protected]>
diff --git a/STATUS b/STATUS
index bf716e8..a5f664e 100644
--- 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)