Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
bn128_pp.cpp
Go to the documentation of this file.
1 
10 
11 namespace libff
12 {
13 
14 const std::string bn128_pp::name("bn128");
15 
17 
19 {
20  return bn128_final_exponentiation(elt);
21 }
22 
24 {
25  return bn128_ate_precompute_G1(P);
26 }
27 
29 {
30  return bn128_ate_precompute_G2(Q);
31 }
32 
34  const bn128_ate_G1_precomp &prec_P, const bn128_ate_G2_precomp &prec_Q)
35 {
36  enter_block("Call to miller_loop<bn128_pp>");
37  bn128_Fq12 result = bn128_ate_miller_loop(prec_P, prec_Q);
38  leave_block("Call to miller_loop<bn128_pp>");
39  return result;
40 }
41 
43  const bn128_ate_G1_precomp &prec_P1,
44  const bn128_ate_G2_precomp &prec_Q1,
45  const bn128_ate_G1_precomp &prec_P2,
46  const bn128_ate_G2_precomp &prec_Q2)
47 {
48  enter_block("Call to double_miller_loop<bn128_pp>");
49  bn128_Fq12 result =
50  bn128_double_ate_miller_loop(prec_P1, prec_Q1, prec_P2, prec_Q2);
51  leave_block("Call to double_miller_loop<bn128_pp>");
52  return result;
53 }
54 
56 {
57  enter_block("Call to pairing<bn128_pp>");
60 
61  bn128_Fq12 result = bn128_pp::miller_loop(prec_P, prec_Q);
62  leave_block("Call to pairing<bn128_pp>");
63  return result;
64 }
65 
67 {
68  enter_block("Call to reduced_pairing<bn128_pp>");
69  const bn128_Fq12 f = bn128_pp::pairing(P, Q);
70  const bn128_GT result = bn128_pp::final_exponentiation(f);
71  leave_block("Call to reduced_pairing<bn128_pp>");
72  return result;
73 }
74 
75 } // namespace libff
libff::bn128_GT
Definition: bn128_gt.hpp:23
libff::enter_block
void enter_block(const std::string &msg, const bool indent)
Definition: profiling.cpp:271
libff::bn128_pp::precompute_G2
static bn128_ate_G2_precomp precompute_G2(const bn128_G2 &Q)
Definition: bn128_pp.cpp:28
libff
Definition: ffi.cpp:8
libff::bn128_G1
Definition: bn128_g1.hpp:23
libff::bn128_pp::miller_loop
static bn128_Fq12 miller_loop(const bn128_ate_G1_precomp &prec_P, const bn128_ate_G2_precomp &prec_Q)
Definition: bn128_pp.cpp:33
libff::bn128_ate_G2_precomp
Definition: bn128_pairing.hpp:34
libff::bn128_pp::init_public_params
static void init_public_params()
Definition: bn128_pp.cpp:16
libff::bn128_pp::reduced_pairing
static bn128_GT reduced_pairing(const bn128_G1 &P, const bn128_G2 &Q)
Definition: bn128_pp.cpp:66
libff::bn128_ate_G1_precomp
Definition: bn128_pairing.hpp:22
libff::bn128_pp::final_exponentiation
static bn128_GT final_exponentiation(const bn128_Fq12 &elt)
Definition: bn128_pp.cpp:18
libff::bn128_ate_precompute_G1
bn128_ate_G1_precomp bn128_ate_precompute_G1(const bn128_G1 &P)
Definition: bn128_pairing.cpp:166
libff::bn128_ate_precompute_G2
bn128_ate_G2_precomp bn128_ate_precompute_G2(const bn128_G2 &Q)
Definition: bn128_pairing.cpp:179
libff::bn128_pp::double_miller_loop
static bn128_Fq12 double_miller_loop(const bn128_ate_G1_precomp &prec_P1, const bn128_ate_G2_precomp &prec_Q1, const bn128_ate_G1_precomp &prec_P2, const bn128_ate_G2_precomp &prec_Q2)
Definition: bn128_pp.cpp:42
libff::bn128_final_exponentiation
bn128_GT bn128_final_exponentiation(const bn128_Fq12 &elt)
Definition: bn128_pairing.cpp:212
libff::bn128_double_ate_miller_loop
bn128_Fq12 bn128_double_ate_miller_loop(const bn128_ate_G1_precomp &prec_P1, const bn128_ate_G2_precomp &prec_Q1, const bn128_ate_G1_precomp &prec_P2, const bn128_ate_G2_precomp &prec_Q2)
Definition: bn128_pairing.cpp:200
libff::init_bn128_params
void init_bn128_params()
Definition: bn128_init.cpp:29
profiling.hpp
libff::leave_block
void leave_block(const std::string &msg, const bool indent)
Definition: profiling.cpp:305
libff::bn128_ate_miller_loop
bn128_Fq12 bn128_ate_miller_loop(const bn128_ate_G1_precomp &prec_P, const bn128_ate_G2_precomp &prec_Q)
Definition: bn128_pairing.cpp:192
libff::bn128_pp::pairing
static bn128_GT pairing(const bn128_G1 &P, const bn128_G2 &Q)
Definition: bn128_pp.cpp:55
libff::bn128_pp::name
static const std::string name
Definition: bn128_pp.hpp:23
bn128_pp.hpp
libff::bn128_G2
Definition: bn128_g2.hpp:24
libff::bn128_pp::precompute_G1
static bn128_ate_G1_precomp precompute_G1(const bn128_G1 &P)
Definition: bn128_pp.cpp:23