26 #ifndef CRYPTO3_ALGEBRA_PAIRING_EDWARDS_183_TATE_PRECOMPUTE_G2_HPP
27 #define CRYPTO3_ALGEBRA_PAIRING_EDWARDS_183_TATE_PRECOMPUTE_G2_HPP
37 template<std::
size_t Version = 183>
38 class edwards_ate_precompute_g1;
41 class edwards_ate_precompute_g1<183> {
42 using curve_type = curves::edwards<183>;
44 typedef detail::types_policy<curve_type> policy_type;
46 using g2_type =
typename curve_type::template g2_type<>;
47 using g2_affine_type =
typename curve_type::template g2_type<curves::coordinates::affine>;
52 static typename policy_type::tate_g2_precomp
process(
const typename g2_type::value_type &P) {
54 typename g2_affine_type::value_type Qcopy = Q.to_affine();
55 typename policy_type::tate_g2_precomp result;
56 result.y0 = Qcopy.Y * Qcopy.Z.inversed();
57 result.eta = (Qcopy.Z + Qcopy.Y) * gt::mul_by_non_residue(Qcopy.X).inversed();
typename policy_type::tate_g2_precomp g2_precomputed_type
Definition: tate_precompute_g2.hpp:50
static policy_type::tate_g2_precomp process(const typename g2_type::value_type &P)
Definition: tate_precompute_g2.hpp:52