diff options
author | MITSUNARI Shigeo <herumi@nifty.com> | 2017-03-26 16:34:31 +0800 |
---|---|---|
committer | MITSUNARI Shigeo <herumi@nifty.com> | 2017-03-26 16:34:34 +0800 |
commit | 45b01494cce6f0a8f87092757197932843bee7af (patch) | |
tree | 7bf7c466dcd3b897afaa92263fba292cd8cb18c4 /test/glv_test.cpp | |
parent | fb56ae482e8d477f432b47d2b8a84d64f56c100c (diff) | |
download | tangerine-mcl-45b01494cce6f0a8f87092757197932843bee7af.tar.gz tangerine-mcl-45b01494cce6f0a8f87092757197932843bee7af.tar.zst tangerine-mcl-45b01494cce6f0a8f87092757197932843bee7af.zip |
start to imple GLV for G1
Diffstat (limited to 'test/glv_test.cpp')
-rw-r--r-- | test/glv_test.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/test/glv_test.cpp b/test/glv_test.cpp new file mode 100644 index 0000000..bfce1c3 --- /dev/null +++ b/test/glv_test.cpp @@ -0,0 +1,44 @@ +#include <cybozu/test.hpp> +#include <cybozu/xorshift.hpp> +#include <cybozu/benchmark.hpp> + +#if 1 +#include <mcl/bn384.hpp> +using namespace mcl::bn384; +#else +#include <mcl/bn256.hpp> +using namespace mcl::bn256; +#endif + +#define PUT(x) std::cout << #x "=" << (x) << std::endl; + +void testGLV(const mcl::bn::CurveParam& cp) +{ + bn384init(cp); + G1::setCompressedExpression(false); + + G1 P0, P1, P2; + cybozu::XorShift rg; + mcl::bn::GLV<Fp> glv; + glv.init(BN::param.r, BN::param.z, BN::param.isNegative); + for (int i = 1; i < 100; i++) { + BN::mapToG1(P0, i); + Fr s; + s.setRand(rg); + mpz_class ss = s.getMpz(); + G1::mul(P1, P0, ss); + glv.mul(P2, P0, ss); + CYBOZU_TEST_EQUAL(P1, P2); + } + Fr s; + BN::mapToG1(P0, 123); + CYBOZU_BENCH_C("Ec::mul", 100, P1 = P0; s.setRand(rg); G1::mul, P2, P1, s.getMpz()); + CYBOZU_BENCH_C("Ec::glv", 100, P1 = P0; s.setRand(rg); glv.mul, P2, P1, s.getMpz()); +} + +CYBOZU_TEST_AUTO(glv) +{ + testGLV(mcl::bn::CurveFp382_1); + testGLV(mcl::bn::CurveFp382_2); + testGLV(mcl::bn::CurveFp254BNb); +} |