aboutsummaryrefslogtreecommitdiffstats
path: root/include/mcl/bn.hpp
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2016-12-23 10:22:56 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2016-12-23 10:22:56 +0800
commitb51a57b547b8eef77861a8c4ea06334ccc8b92ff (patch)
treee9411fd9b9de3001c47d77f7307959673fb12e2f /include/mcl/bn.hpp
parent28b211149ccc7bf7a78ef06f17ba1f19df6a7749 (diff)
downloaddexon-mcl-b51a57b547b8eef77861a8c4ea06334ccc8b92ff.tar.gz
dexon-mcl-b51a57b547b8eef77861a8c4ea06334ccc8b92ff.tar.zst
dexon-mcl-b51a57b547b8eef77861a8c4ea06334ccc8b92ff.zip
use Frobenius3
Diffstat (limited to 'include/mcl/bn.hpp')
-rw-r--r--include/mcl/bn.hpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/include/mcl/bn.hpp b/include/mcl/bn.hpp
index 97c4e94..4275069 100644
--- a/include/mcl/bn.hpp
+++ b/include/mcl/bn.hpp
@@ -357,6 +357,21 @@ struct BNT {
}
#endif
}
+ static void Frobenius3(Fp12& y, const Fp12& x)
+ {
+#if 0
+ Frobenius(y, x);
+ Frobenius(y, y);
+ Frobenius(y, y);
+#else
+ for (int i = 0; i < 6; i++) {
+ Frobenius(y.getFp2()[i], x.getFp2()[i]);
+ }
+ for (int i = 1; i < 6; i++) {
+ y.getFp2()[i] *= param.g3[i - 1];
+ }
+#endif
+ }
/*
p mod 6 = 1, w^6 = xi
Frob(x', y') = phi Frob phi^-1(x', y')
@@ -754,13 +769,10 @@ struct BNT {
Fp12::mul(c0, a, a2);
c0 *= x;
Frobenius(c1, b);
- Frobenius(c2, a);
- Frobenius(c2, c2);
+ Frobenius2(c2, a);
unitaryInv(c3, x);
c3 *= b;
- Frobenius(c3, c3);
- Frobenius(c3, c3);
- Frobenius(c3, c3);
+ Frobenius3(c3, c3);
Fp12::mul(y, c0, c1);
y *= c2;
y *= c3;