Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
fp12_2over3over2_gadgets.hpp
Go to the documentation of this file.
1 
9 
15 #ifndef LIBSNARK_GADGETLIB1_GADGETS_FIELDS_FP12_2OVER3OVER2_GADGETS_HPP_
16 #define LIBSNARK_GADGETLIB1_GADGETS_FIELDS_FP12_2OVER3OVER2_GADGETS_HPP_
17 
19 
20 namespace libsnark
21 {
22 
23 template<typename Fp12T>
24 class Fp12_2over3over2_variable : public gadget<typename Fp12T::my_Fp>
25 {
26 public:
27  using FieldT = typename Fp12T::my_Fp;
28  using Fp6T = typename Fp12T::my_Fp6;
29  using Fp2T = typename Fp12T::my_Fp2;
30 
33 
35  protoboard<FieldT> &pb, const std::string &annotation_prefix);
38  const Fp12T &el,
39  const std::string &annotation_prefix);
42  const Fp6_3over2_variable<Fp6T> &c0,
43  const Fp6_3over2_variable<Fp6T> &c1,
44  const std::string &annotation_prefix);
45 
46  Fp12_2over3over2_variable<Fp12T> operator*(const Fp2T &fp2_const) const;
47  Fp12_2over3over2_variable<Fp12T> operator*(const Fp12T &fp12_const) const;
50  void evaluate() const;
51  void generate_r1cs_witness(const Fp12T &el);
52  Fp12T get_element() const;
53 };
54 
64 template<typename Fp12T>
68  const std::string &annotation_prefix);
69 
74 template<typename Fp12T>
78  const std::string &annotation_prefix);
79 
91 template<typename Fp12T>
92 class Fp12_2over3over2_square_gadget : public gadget<typename Fp12T::my_Fp>
93 {
94 public:
95  using FieldT = typename Fp12T::my_Fp;
96  using Fp6T = typename Fp12T::my_Fp6;
97 
98  // Let
99  //
100  // \alpha = _A.c0 * _A.c1, and
101  // \beta = (_A.c0 + _A.c1)*(_A.c0 + v*_A.c1)
102  //
103  // then (by the above optimization), we have
104  //
105  // _result.c1 = 2 * \alpha
106  // <=> _alpha = _result.c1 * 2.inverse()
107  //
108  // _result.c0 = \beta - \alpha * v - \alpha
109  // <=> \beta = _result.c0 + \alpha * v - \alpha
114 
119  const std::string &annotation_prefix);
120 
123  void generate_r1cs_witness();
124 };
125 
130 template<typename Fp12T>
131 class Fp12_2over3over2_mul_by_024_gadget : public gadget<typename Fp12T::my_Fp>
132 {
133 public:
134  using FieldT = typename Fp12T::my_Fp;
135  using Fp6T = typename Fp12T::my_Fp6;
136  using Fp2T = typename Fp12T::my_Fp2;
137 
142 
143  // out_z0 = z0*x0 + non_residue * (z1*x2 + z4*x4)
147 
148  // out_z1 = z1*x0 + non_residue * (z2*x2 + z5*x4)
152 
153  // out_z2 = z0*x2 + z2*x0 + z3*x4
156 
157  // out_z3 = z3*x0 + non_residue * (z2*x4 + z4*x2)
160 
161  // out_z4 = z0*x4 + z4*x0 + non_residue * z5*x2
164 
165  // S = z1_x0 - z1_x2 - z3_x0 - z3*x4 - z5_x2 - z5*x4
166  // out_z5 = z1*x4 + z3*x2 + z5*x0
167  // = (z1 + z3 + z5)*(x0 + x2 + x4) - S
168  // => (z1 + z3 + z5)*(x0 + x2 + x4) = out_z5 + S
171 
173 
177  const Fp2_variable<Fp2T> &B_ell_0,
178  const Fp2_variable<Fp2T> &B_ell_vv,
179  const Fp2_variable<Fp2T> &B_ell_vw,
181  const std::string &annotation_prefix);
182 
185  void generate_r1cs_witness();
186 };
187 
189 template<typename Fp12T>
190 class Fp12_2over3over2_mul_gadget : public gadget<typename Fp12T::my_Fp>
191 {
192 public:
193  using FieldT = typename Fp12T::my_Fp;
194  using Fp6T = typename Fp12T::my_Fp6;
195 
202 
208  const std::string &annotation_prefix);
211  void generate_r1cs_witness();
212 };
213 
215 template<typename Fp12T>
216 class Fp12_2over3over2_inv_gadget : public gadget<typename Fp12T::my_Fp>
217 {
218 public:
219  using FieldT = typename Fp12T::my_Fp;
220  using Fp2T = typename Fp12T::my_Fp2;
221  using Fp6T = typename Fp12T::my_Fp6;
222 
226 
231  const std::string &annotation_prefix);
234  void generate_r1cs_witness();
235 };
236 
237 template<typename Fp12T>
239  : public gadget<typename Fp12T::my_Fp>
240 {
241 public:
242  using FieldT = typename Fp12T::my_Fp;
243  using Fp2T = typename Fp12T::my_Fp2;
244  using Fp6T = typename Fp12T::my_Fp6;
245 
248 
249  // Follows the implementation of
250  // libff::Fp12_2over3over2::cyclotomic_squared(), see
251  // libff/algebra/fields/fp12_2over3over2.tcc
252 
253  // result4 = 6 * z0z4 + 2 * z4
254  // <=> z0z4 = 6^{-1} * (result4 - 2*z4)
256 
257  // result0 = 3*t0_L - 3*t0_R - 2*z0
258  // where
259  // t0_L = (z0 + z4) * (z0 + non_residue * z4)
260  // t0_R = z0z4 * (my_Fp2::one() + my_Fp6::non_residue)
261  // <=> 3*(z0 + z4) * (z0 + non_residue * z4)
262  // = result0 + 3*(1 + non_residue)*z0z4 + 2*z0
264 
265  // result5 = 6 * z3z2 + 2 * z5
266  // <=> z3z2 = 6^{-1} * (result5 - 2*z5)
268 
269  // result1 = 3*t2_L - 3*t2_R - 2*z1
270  // where
271  // t2_L = (z3 + z2) * (z3 + non_residue * z2)
272  // t2_R = z3z2 * (1 + non_residue)
273  // <=> 3*(z3 + z2)*(z3 + non_residue * z2)
274  // = result1 + 3*(1 + non_residue)*_z3z2 + 2*z1
276 
277  // result3 = 6 * non_residue * z1z5 + 2*z3
278  // <=> z1z5 = 6^{-1} * non_residue^{-1} * (out3 - 2*z3)
280 
281  // result2 = 3*t4_L - 3*t4_R - 2*z2
282  // where
283  // t4_L = (z1 + z5) * (z1 + non_residue * z5)
284  // t4_R = z1z5 * (1 + non_residue);
285  // <=> 3*(z1 + z5)*(z1 + non_residue * z5)
286  // = result2 + 3*(1 + non_residue)*z1z5 + 2*z2
288 
293  const std::string &annotation_prefix);
294 
297  void generate_r1cs_witness();
298 };
299 
300 } // namespace libsnark
301 
303 
304 #endif // LIBSNARK_GADGETLIB1_GADGETS_FIELDS_FP12_2OVER3OVER2_GADGETS_HPP_
libsnark::Fp12_2over3over2_mul_by_024_gadget::_compute_z4_x4
Fp2_mul_gadget< Fp2T > _compute_z4_x4
Definition: fp12_2over3over2_gadgets.hpp:145
libsnark::Fp12_2over3over2_mul_by_024_gadget::_X_0
Fp2_variable< Fp2T > _X_0
Definition: fp12_2over3over2_gadgets.hpp:139
libsnark::Fp6_3over2_mul_gadget
Definition: fp6_3over2_gadgets.hpp:85
libsnark::Fp12_2over3over2_mul_gadget::_compute_v0
Fp6_3over2_mul_gadget< Fp6T > _compute_v0
Definition: fp12_2over3over2_gadgets.hpp:199
libsnark::Fp12_2over3over2_inv_gadget::_compute_A_times_result
Fp12_2over3over2_mul_gadget< Fp12T > _compute_A_times_result
Definition: fp12_2over3over2_gadgets.hpp:225
libsnark::gadget< Fp12T::my_Fp >::annotation_prefix
const std::string annotation_prefix
Definition: gadget.hpp:20
libsnark::Fp12_2over3over2_mul_by_024_gadget::_X_2
Fp2_variable< Fp2T > _X_2
Definition: fp12_2over3over2_gadgets.hpp:140
libsnark::Fp12_2over3over2_mul_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::Fp12_2over3over2_mul_by_024_gadget::_S
Fp2_variable< Fp2T > _S
Definition: fp12_2over3over2_gadgets.hpp:169
libsnark
Definition: accumulation_vector.hpp:18
libsnark::Fp12_2over3over2_cyclotomic_square_gadget
Definition: fp12_2over3over2_gadgets.hpp:238
libsnark::Fp12_2over3over2_mul_by_024_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::Fp12_2over3over2_mul_gadget::_A
Fp12_2over3over2_variable< Fp12T > _A
Definition: fp12_2over3over2_gadgets.hpp:196
libsnark::fp6_mul_by_non_residue_inverse
Fp6_3over2_variable< typename Fp12T::my_Fp6 > fp6_mul_by_non_residue_inverse(protoboard< typename Fp12T::my_Fp > &pb, const Fp6_3over2_variable< typename Fp12T::my_Fp6 > &c, const std::string &annotation_prefix)
libsnark::Fp2_variable
Definition: fp2_gadgets.hpp:27
libsnark::Fp12_2over3over2_inv_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::Fp12_2over3over2_inv_gadget::result
const Fp12_2over3over2_variable< Fp12T > & result() const
libsnark::Fp12_2over3over2_mul_gadget::_compute_a0_plus_a1_times_b0_plus_b1
Fp6_3over2_mul_gadget< Fp6T > _compute_a0_plus_a1_times_b0_plus_b1
Definition: fp12_2over3over2_gadgets.hpp:201
libsnark::gadget< Fp12T::my_Fp >::pb
protoboard< Fp12T::my_Fp > & pb
Definition: gadget.hpp:19
libsnark::Fp12_2over3over2_mul_by_024_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::Fp12_2over3over2_variable::generate_r1cs_witness
void generate_r1cs_witness(const Fp12T &el)
libsnark::fp6_mul_by_non_residue
Fp6_3over2_variable< typename Fp12T::my_Fp6 > fp6_mul_by_non_residue(protoboard< typename Fp12T::my_Fp > &pb, const Fp6_3over2_variable< typename Fp12T::my_Fp6 > &c, const std::string &annotation_prefix)
libsnark::Fp12_2over3over2_cyclotomic_square_gadget::_compute_z1z5
Fp2_mul_gadget< Fp2T > _compute_z1z5
Definition: fp12_2over3over2_gadgets.hpp:279
fp12_2over3over2_gadgets.tcc
libsnark::Fp12_2over3over2_variable< FqkT >::FieldT
typename FqkT ::my_Fp FieldT
Definition: fp12_2over3over2_gadgets.hpp:27
libsnark::Fp12_2over3over2_cyclotomic_square_gadget::_check_result_1
Fp2_mul_gadget< Fp2T > _check_result_1
Definition: fp12_2over3over2_gadgets.hpp:275
libsnark::Fp12_2over3over2_square_gadget::_compute_alpha
Fp6_3over2_mul_gadget< Fp6T > _compute_alpha
Definition: fp12_2over3over2_gadgets.hpp:112
libsnark::Fp12_2over3over2_inv_gadget::_result
Fp12_2over3over2_variable< Fp12T > _result
Definition: fp12_2over3over2_gadgets.hpp:224
libsnark::Fp12_2over3over2_square_gadget::_result
Fp12_2over3over2_variable< Fp12T > _result
Definition: fp12_2over3over2_gadgets.hpp:111
libsnark::Fp12_2over3over2_variable::Fp12_2over3over2_variable
Fp12_2over3over2_variable(protoboard< FieldT > &pb, const std::string &annotation_prefix)
libsnark::Fp12_2over3over2_mul_by_024_gadget::_compute_z1_x0
Fp2_mul_gadget< Fp2T > _compute_z1_x0
Definition: fp12_2over3over2_gadgets.hpp:151
libsnark::Fp12_2over3over2_square_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::Fp12_2over3over2_square_gadget::result
const Fp12_2over3over2_variable< Fp12T > & result() const
libsnark::Fp12_2over3over2_cyclotomic_square_gadget::_result
Fp12_2over3over2_variable< Fp12T > _result
Definition: fp12_2over3over2_gadgets.hpp:247
libsnark::Fp12_2over3over2_variable::operator*
Fp12_2over3over2_variable< Fp12T > operator*(const Fp2T &fp2_const) const
libsnark::Fp12_2over3over2_cyclotomic_square_gadget::result
const Fp12_2over3over2_variable< Fp12T > & result() const
libsnark::Fp12_2over3over2_mul_by_024_gadget::_X_4
Fp2_variable< Fp2T > _X_4
Definition: fp12_2over3over2_gadgets.hpp:141
libsnark::Fp12_2over3over2_square_gadget::_A
Fp12_2over3over2_variable< Fp12T > _A
Definition: fp12_2over3over2_gadgets.hpp:110
libsnark::Fp12_2over3over2_inv_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::Fp12_2over3over2_mul_by_024_gadget::_compute_z1_x2
Fp2_mul_gadget< Fp2T > _compute_z1_x2
Definition: fp12_2over3over2_gadgets.hpp:144
libsnark::gadget
Definition: gadget.hpp:16
libsnark::Fp12_2over3over2_cyclotomic_square_gadget::_compute_z3z2
Fp2_mul_gadget< Fp2T > _compute_z3z2
Definition: fp12_2over3over2_gadgets.hpp:267
libsnark::Fp12_2over3over2_mul_gadget< FqkT >::FieldT
typename FqkT ::my_Fp FieldT
Definition: fp12_2over3over2_gadgets.hpp:193
libsnark::Fp12_2over3over2_mul_by_024_gadget::_compute_z24_x24
Fp2_mul_gadget< Fp2T > _compute_z24_x24
Definition: fp12_2over3over2_gadgets.hpp:159
libsnark::Fp12_2over3over2_mul_by_024_gadget::result
const Fp12_2over3over2_variable< Fp12T > & result() const
libsnark::Fp12_2over3over2_mul_by_024_gadget::_result
Fp12_2over3over2_variable< Fp12T > _result
Definition: fp12_2over3over2_gadgets.hpp:172
libsnark::Fp6_3over2_variable
Definition: fp6_3over2_gadgets.hpp:21
libsnark::Fp12_2over3over2_mul_gadget::_result
Fp12_2over3over2_variable< Fp12T > _result
Definition: fp12_2over3over2_gadgets.hpp:198
libsnark::Fp12_2over3over2_inv_gadget< FqkT >::Fp6T
typename FqkT ::my_Fp6 Fp6T
Definition: fp12_2over3over2_gadgets.hpp:221
libsnark::Fp12_2over3over2_cyclotomic_square_gadget::_compute_z0z4
Fp2_mul_gadget< Fp2T > _compute_z0z4
Definition: fp12_2over3over2_gadgets.hpp:255
libsnark::Fp12_2over3over2_square_gadget< FqkT >::FieldT
typename FqkT ::my_Fp FieldT
Definition: fp12_2over3over2_gadgets.hpp:95
libsnark::Fp12_2over3over2_variable::get_element
Fp12T get_element() const
libsnark::Fp12_2over3over2_mul_by_024_gadget< FqkT >::FieldT
typename FqkT ::my_Fp FieldT
Definition: fp12_2over3over2_gadgets.hpp:134
libsnark::Fp12_2over3over2_square_gadget
Definition: fp12_2over3over2_gadgets.hpp:92
libsnark::Fp12_2over3over2_mul_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::Fp12_2over3over2_variable::_c0
Fp6_3over2_variable< Fp6T > _c0
Definition: fp12_2over3over2_gadgets.hpp:31
libsnark::Fp12_2over3over2_cyclotomic_square_gadget< FqkT >::Fp2T
typename FqkT ::my_Fp2 Fp2T
Definition: fp12_2over3over2_gadgets.hpp:243
libsnark::Fp12_2over3over2_mul_by_024_gadget::_compute_z3_x4
Fp2_mul_gadget< Fp2T > _compute_z3_x4
Definition: fp12_2over3over2_gadgets.hpp:154
libsnark::Fp12_2over3over2_inv_gadget::Fp12_2over3over2_inv_gadget
Fp12_2over3over2_inv_gadget(protoboard< FieldT > &pb, const Fp12_2over3over2_variable< Fp12T > &A, const Fp12_2over3over2_variable< Fp12T > &result, const std::string &annotation_prefix)
libsnark::Fp12_2over3over2_mul_by_024_gadget< FqkT >::Fp2T
typename FqkT ::my_Fp2 Fp2T
Definition: fp12_2over3over2_gadgets.hpp:136
libsnark::Fp12_2over3over2_inv_gadget::_A
Fp12_2over3over2_variable< Fp12T > _A
Definition: fp12_2over3over2_gadgets.hpp:223
libsnark::Fp12_2over3over2_mul_by_024_gadget::_compute_z5_x4
Fp2_mul_gadget< Fp2T > _compute_z5_x4
Definition: fp12_2over3over2_gadgets.hpp:150
gadgetlib2::power
FElem power(const FElem &base, long exponent)
Definition: variable.cpp:139
libsnark::Fp12_2over3over2_inv_gadget< FqkT >::Fp2T
typename FqkT ::my_Fp2 Fp2T
Definition: fp12_2over3over2_gadgets.hpp:220
libsnark::Fp12_2over3over2_mul_gadget::result
const Fp12_2over3over2_variable< Fp12T > & result() const
libsnark::Fp12_2over3over2_square_gadget::_compute_beta
Fp6_3over2_mul_gadget< Fp6T > _compute_beta
Definition: fp12_2over3over2_gadgets.hpp:113
libsnark::Fp12_2over3over2_variable< FqkT >::Fp2T
typename FqkT ::my_Fp2 Fp2T
Definition: fp12_2over3over2_gadgets.hpp:29
libsnark::Fp12_2over3over2_mul_by_024_gadget< FqkT >::Fp6T
typename FqkT ::my_Fp6 Fp6T
Definition: fp12_2over3over2_gadgets.hpp:135
libsnark::Fp12_2over3over2_mul_by_024_gadget::_compute_z2_x2
Fp2_mul_gadget< Fp2T > _compute_z2_x2
Definition: fp12_2over3over2_gadgets.hpp:149
libsnark::Fp12_2over3over2_mul_by_024_gadget::_compute_z3_x0
Fp2_mul_gadget< Fp2T > _compute_z3_x0
Definition: fp12_2over3over2_gadgets.hpp:158
libsnark::Fp12_2over3over2_cyclotomic_square_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::Fp12_2over3over2_cyclotomic_square_gadget::_check_result_2
Fp2_mul_gadget< Fp2T > _check_result_2
Definition: fp12_2over3over2_gadgets.hpp:287
libsnark::Fp12_2over3over2_mul_by_024_gadget::_compute_z02_x02
Fp2_mul_gadget< Fp2T > _compute_z02_x02
Definition: fp12_2over3over2_gadgets.hpp:155
libsnark::Fp12_2over3over2_mul_gadget::Fp12_2over3over2_mul_gadget
Fp12_2over3over2_mul_gadget(protoboard< FieldT > &pb, const Fp12_2over3over2_variable< Fp12T > &A, const Fp12_2over3over2_variable< Fp12T > &B, const Fp12_2over3over2_variable< Fp12T > &result, const std::string &annotation_prefix)
libsnark::Fp12_2over3over2_mul_by_024_gadget::_compute_z0_x0
Fp2_mul_gadget< Fp2T > _compute_z0_x0
Definition: fp12_2over3over2_gadgets.hpp:146
libsnark::Fp12_2over3over2_cyclotomic_square_gadget::_check_result_0
Fp2_mul_gadget< Fp2T > _check_result_0
Definition: fp12_2over3over2_gadgets.hpp:263
libsnark::Fp12_2over3over2_mul_gadget
Full multiplication of Fp12 variables.
Definition: fp12_2over3over2_gadgets.hpp:190
libsnark::Fp12_2over3over2_cyclotomic_square_gadget::_A
Fp12_2over3over2_variable< Fp12T > _A
Definition: fp12_2over3over2_gadgets.hpp:246
fp6_3over2_gadgets.hpp
libsnark::Fp12_2over3over2_mul_by_024_gadget
Definition: fp12_2over3over2_gadgets.hpp:131
libsnark::Fp12_2over3over2_mul_by_024_gadget::_compute_z04_x04
Fp2_mul_gadget< Fp2T > _compute_z04_x04
Definition: fp12_2over3over2_gadgets.hpp:163
libsnark::Fp12_2over3over2_mul_by_024_gadget::_compute_z5_x2
Fp2_mul_gadget< Fp2T > _compute_z5_x2
Definition: fp12_2over3over2_gadgets.hpp:162
libsnark::Fp12_2over3over2_cyclotomic_square_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::Fp12_2over3over2_mul_gadget::_compute_v1
Fp6_3over2_mul_gadget< Fp6T > _compute_v1
Definition: fp12_2over3over2_gadgets.hpp:200
libsnark::Fp12_2over3over2_variable< FqkT >::Fp6T
typename FqkT ::my_Fp6 Fp6T
Definition: fp12_2over3over2_gadgets.hpp:28
libsnark::Fp12_2over3over2_square_gadget::Fp12_2over3over2_square_gadget
Fp12_2over3over2_square_gadget(protoboard< FieldT > &pb, const Fp12_2over3over2_variable< Fp12T > &A, const Fp12_2over3over2_variable< Fp12T > &result, const std::string &annotation_prefix)
libsnark::Fp12_2over3over2_square_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::Fp12_2over3over2_variable::unitary_inverse
Fp12_2over3over2_variable< Fp12T > unitary_inverse() const
libsnark::Fp12_2over3over2_cyclotomic_square_gadget::Fp12_2over3over2_cyclotomic_square_gadget
Fp12_2over3over2_cyclotomic_square_gadget(protoboard< FieldT > &pb, const Fp12_2over3over2_variable< Fp12T > &A, const Fp12_2over3over2_variable< Fp12T > &result, const std::string &annotation_prefix)
libsnark::Fp12_2over3over2_square_gadget< FqkT >::Fp6T
typename FqkT ::my_Fp6 Fp6T
Definition: fp12_2over3over2_gadgets.hpp:96
libsnark::Fp12_2over3over2_mul_gadget::_B
Fp12_2over3over2_variable< Fp12T > _B
Definition: fp12_2over3over2_gadgets.hpp:197
libsnark::Fp12_2over3over2_variable
Definition: fp12_2over3over2_gadgets.hpp:24
libsnark::Fp12_2over3over2_variable::frobenius_map
Fp12_2over3over2_variable< Fp12T > frobenius_map(size_t power) const
libsnark::Fp12_2over3over2_variable::_c1
Fp6_3over2_variable< Fp6T > _c1
Definition: fp12_2over3over2_gadgets.hpp:32
libsnark::Fp12_2over3over2_mul_by_024_gadget::Fp12_2over3over2_mul_by_024_gadget
Fp12_2over3over2_mul_by_024_gadget(protoboard< FieldT > &pb, const Fp12_2over3over2_variable< Fp12T > &A, const Fp2_variable< Fp2T > &B_ell_0, const Fp2_variable< Fp2T > &B_ell_vv, const Fp2_variable< Fp2T > &B_ell_vw, const Fp12_2over3over2_variable< Fp12T > &result, const std::string &annotation_prefix)
libsnark::Fp12_2over3over2_variable::evaluate
void evaluate() const
libsnark::Fp12_2over3over2_inv_gadget
Inverse of Fp12 variable.
Definition: fp12_2over3over2_gadgets.hpp:216
libsnark::Fp12_2over3over2_cyclotomic_square_gadget< FqkT >::Fp6T
typename FqkT ::my_Fp6 Fp6T
Definition: fp12_2over3over2_gadgets.hpp:244
libsnark::Fp12_2over3over2_mul_by_024_gadget::_Z
Fp12_2over3over2_variable< Fp12T > _Z
Definition: fp12_2over3over2_gadgets.hpp:138
libsnark::Fp12_2over3over2_mul_gadget< FqkT >::Fp6T
typename FqkT ::my_Fp6 Fp6T
Definition: fp12_2over3over2_gadgets.hpp:194
libsnark::Fp12_2over3over2_cyclotomic_square_gadget< FqkT >::FieldT
typename FqkT ::my_Fp FieldT
Definition: fp12_2over3over2_gadgets.hpp:242
libsnark::Fp12_2over3over2_mul_by_024_gadget::_compute_out_z5_plus_S
Fp2_mul_gadget< Fp2T > _compute_out_z5_plus_S
Definition: fp12_2over3over2_gadgets.hpp:170
libsnark::Fp12_2over3over2_inv_gadget< FqkT >::FieldT
typename FqkT ::my_Fp FieldT
Definition: fp12_2over3over2_gadgets.hpp:219
libsnark::protoboard
Definition: pb_variable.hpp:22
libsnark::Fp2_mul_gadget
Definition: fp2_gadgets.hpp:76