aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2017-01-27 08:39:04 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2017-01-27 08:52:41 +0800
commit33ec5bad907b2236ee6a97223a686c0257a3b64b (patch)
tree9e551ec2f2f0063b45e77775dfe2ebc1d6082069
parent31129368ae5e61a09a6a16562dd5de17b4c69eea (diff)
downloaddexon-mcl-33ec5bad907b2236ee6a97223a686c0257a3b64b.tar.gz
dexon-mcl-33ec5bad907b2236ee6a97223a686c0257a3b64b.tar.zst
dexon-mcl-33ec5bad907b2236ee6a97223a686c0257a3b64b.zip
compare gmp and llvm of mulPre and sqrPre
-rw-r--r--misc/karatsuba.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/misc/karatsuba.cpp b/misc/karatsuba.cpp
index 021b919..7c150c6 100644
--- a/misc/karatsuba.cpp
+++ b/misc/karatsuba.cpp
@@ -5,6 +5,7 @@
#include <stdio.h>
#include <mcl/fp.hpp>
#include <cybozu/xorshift.hpp>
+#include "../src/proto.hpp"
#include "../src/low_func.hpp"
#ifdef MCL_USE_LLVM
#include "../src/low_func_llvm.hpp"
@@ -41,14 +42,14 @@ void benchKaratsuba()
Unit z[N * 2];
rg.read(z, N);
CYBOZU_BENCH("g:mulPre ", (MulPreCore<N, Gtag>::f), z, z, z);
- CYBOZU_BENCH("g:mulKara", (MulPre<N, Gtag>::karatsuba), z, z, z);
+// CYBOZU_BENCH("g:mulKara", (MulPre<N, Gtag>::karatsuba), z, z, z);
CYBOZU_BENCH("g:sqrPre ", (SqrPreCore<N, Gtag>::f), z, z);
- CYBOZU_BENCH("g:sqrKara", (SqrPre<N, Gtag>::karatsuba), z, z);
+// CYBOZU_BENCH("g:sqrKara", (SqrPre<N, Gtag>::karatsuba), z, z);
#ifdef MCL_USE_LLVM
CYBOZU_BENCH("l:mulPre ", (MulPreCore<N, Ltag>::f), z, z, z);
- CYBOZU_BENCH("l:mulKara", (MulPre<N, Ltag>::karatsuba), z, z, z);
CYBOZU_BENCH("l:sqrPre ", (SqrPreCore<N, Ltag>::f), z, z);
+ CYBOZU_BENCH("l:mulKara", (MulPre<N, Ltag>::karatsuba), z, z, z);
CYBOZU_BENCH("l:sqrKara", (SqrPre<N, Ltag>::karatsuba), z, z);
#endif
}
@@ -58,9 +59,17 @@ CYBOZU_TEST_AUTO(karatsuba)
benchKaratsuba<4>();
benchKaratsuba<6>();
benchKaratsuba<8>();
-#if MCL_MAX_BIT_SIZE == 768
+#if MCL_MAX_BIT_SIZE >= 640
benchKaratsuba<10>();
+#endif
+#if MCL_MAX_BIT_SIZE >= 768
benchKaratsuba<12>();
#endif
+#if MCL_MAX_BIT_SIZE >= 896
+ benchKaratsuba<14>();
+#endif
+#if MCL_MAX_BIT_SIZE >= 1024
+ benchKaratsuba<16>();
+#endif
}