Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
mnt4_pp.cpp
Go to the documentation of this file.
1 
15 
16 namespace libff
17 {
18 
19 const std::string mnt4_pp::name("mnt4");
20 
22 
24 {
25  return mnt4_final_exponentiation(elt);
26 }
27 
29 {
30  return mnt4_precompute_G1(P);
31 }
32 
34 {
35  return mnt4_precompute_G2(Q);
36 }
37 
39  const mnt4_G1_precomp &prec_P, const mnt4_G2_precomp &prec_Q)
40 {
41  return mnt4_miller_loop(prec_P, prec_Q);
42 }
43 
45  const mnt4_G1 &P)
46 {
48 }
49 
51  const mnt4_G2 &Q)
52 {
54 }
55 
59 {
60  return mnt4_affine_ate_miller_loop(prec_P, prec_Q);
61 }
62 
64  const mnt4_affine_ate_G1_precomputation &prec_P1,
65  const mnt4_affine_ate_G2_precomputation &prec_Q1,
66  const mnt4_affine_ate_G1_precomputation &prec_P2,
67  const mnt4_affine_ate_G2_precomputation &prec_Q2)
68 {
69  return mnt4_affine_ate_miller_loop(prec_P1, prec_Q1) *
70  mnt4_affine_ate_miller_loop(prec_P2, prec_Q2).unitary_inverse();
71 }
72 
74  const mnt4_affine_ate_G1_precomputation &prec_P1,
75  const mnt4_affine_ate_G2_precomputation &prec_Q1,
76  const mnt4_affine_ate_G1_precomputation &prec_P2,
77  const mnt4_affine_ate_G2_precomputation &prec_Q2,
78  const mnt4_affine_ate_G1_precomputation &prec_P3,
79  const mnt4_affine_ate_G2_precomputation &prec_Q3)
80 {
81  return (
82  (mnt4_affine_ate_miller_loop(prec_P1, prec_Q1) *
83  mnt4_affine_ate_miller_loop(prec_P2, prec_Q2)) *
84  mnt4_affine_ate_miller_loop(prec_P3, prec_Q3).unitary_inverse());
85 }
86 
88  const mnt4_G1_precomp &prec_P1,
89  const mnt4_G2_precomp &prec_Q1,
90  const mnt4_G1_precomp &prec_P2,
91  const mnt4_G2_precomp &prec_Q2)
92 {
93  return mnt4_double_miller_loop(prec_P1, prec_Q1, prec_P2, prec_Q2);
94 }
95 
97 {
98  return mnt4_pairing(P, Q);
99 }
100 
102 {
103  return mnt4_reduced_pairing(P, Q);
104 }
105 
107 {
108  return mnt4_affine_reduced_pairing(P, Q);
109 }
110 
111 } // namespace libff
libff::mnt4_pp::precompute_G2
static mnt4_G2_precomp precompute_G2(const mnt4_G2 &Q)
Definition: mnt4_pp.cpp:33
libff::mnt4_ate_G2_precomp
Definition: mnt4_pairing.hpp:98
libff::mnt4_G2
Definition: mnt4_g2.hpp:26
libff::mnt4_double_miller_loop
mnt4_Fq4 mnt4_double_miller_loop(const mnt4_G1_precomp &prec_P1, const mnt4_G2_precomp &prec_Q1, const mnt4_G1_precomp &prec_P2, const mnt4_G2_precomp &prec_Q2)
Definition: mnt4_pairing.cpp:711
libff::mnt4_miller_loop
mnt4_Fq4 mnt4_miller_loop(const mnt4_G1_precomp &prec_P, const mnt4_G2_precomp &prec_Q)
Definition: mnt4_pairing.cpp:705
libff::Fp4_model::unitary_inverse
Fp4_model unitary_inverse() const
libff::mnt4_ate_G1_precomp
Definition: mnt4_pairing.hpp:63
libff
Definition: ffi.cpp:8
mnt4_pp.hpp
libff::mnt4_affine_ate_precompute_G1
mnt4_affine_ate_G1_precomputation mnt4_affine_ate_precompute_G1(const mnt4_G1 &P)
Definition: mnt4_pairing.cpp:224
libff::mnt4_pp::affine_ate_precompute_G2
static mnt4_affine_ate_G2_precomputation affine_ate_precompute_G2(const mnt4_G2 &Q)
Definition: mnt4_pp.cpp:50
libff::mnt4_pp::name
static const std::string name
Definition: mnt4_pp.hpp:27
libff::mnt4_pp::affine_reduced_pairing
static mnt4_Fq4 affine_reduced_pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pp.cpp:106
libff::mnt4_pp::double_miller_loop
static mnt4_Fq4 double_miller_loop(const mnt4_G1_precomp &prec_P1, const mnt4_G2_precomp &prec_Q1, const mnt4_G1_precomp &prec_P2, const mnt4_G2_precomp &prec_Q2)
Definition: mnt4_pp.cpp:87
libff::mnt4_G1
Definition: mnt4_g1.hpp:26
libff::init_mnt4_params
void init_mnt4_params()
Definition: mnt4_init.cpp:41
libff::mnt4_pp::affine_ate_precompute_G1
static mnt4_affine_ate_G1_precomputation affine_ate_precompute_G1(const mnt4_G1 &P)
Definition: mnt4_pp.cpp:44
libff::mnt4_pp::affine_ate_e_over_e_miller_loop
static mnt4_Fq4 affine_ate_e_over_e_miller_loop(const mnt4_affine_ate_G1_precomputation &prec_P1, const mnt4_affine_ate_G2_precomputation &prec_Q1, const mnt4_affine_ate_G1_precomputation &prec_P2, const mnt4_affine_ate_G2_precomputation &prec_Q2)
Definition: mnt4_pp.cpp:63
libff::mnt4_reduced_pairing
mnt4_GT mnt4_reduced_pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pairing.cpp:725
libff::mnt4_pp::affine_ate_e_times_e_over_e_miller_loop
static mnt4_Fq4 affine_ate_e_times_e_over_e_miller_loop(const mnt4_affine_ate_G1_precomputation &prec_P1, const mnt4_affine_ate_G2_precomputation &prec_Q1, const mnt4_affine_ate_G1_precomputation &prec_P2, const mnt4_affine_ate_G2_precomputation &prec_Q2, const mnt4_affine_ate_G1_precomputation &prec_P3, const mnt4_affine_ate_G2_precomputation &prec_Q3)
Definition: mnt4_pp.cpp:73
libff::mnt4_pp::init_public_params
static void init_public_params()
Definition: mnt4_pp.cpp:21
libff::mnt4_precompute_G1
mnt4_G1_precomp mnt4_precompute_G1(const mnt4_G1 &P)
Definition: mnt4_pairing.cpp:695
libff::mnt4_pairing
mnt4_Fq4 mnt4_pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pairing.cpp:720
libff::Fp4_model
Definition: fp4.hpp:26
libff::mnt4_affine_ate_precompute_G2
mnt4_affine_ate_G2_precomputation mnt4_affine_ate_precompute_G2(const mnt4_G2 &Q)
Definition: mnt4_pairing.cpp:241
libff::mnt4_pp::affine_ate_miller_loop
static mnt4_Fq4 affine_ate_miller_loop(const mnt4_affine_ate_G1_precomputation &prec_P, const mnt4_affine_ate_G2_precomputation &prec_Q)
Definition: mnt4_pp.cpp:56
libff::mnt4_precompute_G2
mnt4_G2_precomp mnt4_precompute_G2(const mnt4_G2 &Q)
Definition: mnt4_pairing.cpp:700
libff::mnt4_pp::miller_loop
static mnt4_Fq4 miller_loop(const mnt4_G1_precomp &prec_P, const mnt4_G2_precomp &prec_Q)
Definition: mnt4_pp.cpp:38
libff::mnt4_affine_ate_G1_precomputation
Definition: mnt4_pairing.hpp:31
libff::mnt4_pp::reduced_pairing
static mnt4_Fq4 reduced_pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pp.cpp:101
libff::mnt4_pp::pairing
static mnt4_Fq4 pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pp.cpp:96
libff::mnt4_pp::final_exponentiation
static mnt4_GT final_exponentiation(const mnt4_Fq4 &elt)
Definition: mnt4_pp.cpp:23
libff::mnt4_final_exponentiation
mnt4_GT mnt4_final_exponentiation(const mnt4_Fq4 &elt)
Definition: mnt4_pairing.cpp:207
libff::mnt4_affine_ate_miller_loop
mnt4_Fq4 mnt4_affine_ate_miller_loop(const mnt4_affine_ate_G1_precomputation &prec_P, const mnt4_affine_ate_G2_precomputation &prec_Q)
Definition: mnt4_pairing.cpp:318
libff::mnt4_affine_ate_G2_precomputation
Definition: mnt4_pairing.hpp:46
libff::mnt4_pp::precompute_G1
static mnt4_G1_precomp precompute_G1(const mnt4_G1 &P)
Definition: mnt4_pp.cpp:28
libff::mnt4_affine_reduced_pairing
mnt4_GT mnt4_affine_reduced_pairing(const mnt4_G1 &P, const mnt4_G2 &Q)
Definition: mnt4_pairing.cpp:730