Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
Public Member Functions | Public Attributes | Friends | List of all members
libff::bn128_ate_G2_precomp Struct Reference

#include <bn128_pairing.hpp>

Public Member Functions

bool operator== (const bn128_ate_G2_precomp &other) const
 

Public Attributes

bn::Fp2 Q [3]
 
std::vector< bn128_ate_ell_coeffscoeffs
 

Friends

std::ostream & operator<< (std::ostream &out, const bn128_ate_G2_precomp &prec_Q)
 
std::istream & operator>> (std::istream &in, bn128_ate_G2_precomp &prec_Q)
 

Detailed Description

Definition at line 34 of file bn128_pairing.hpp.

Member Function Documentation

◆ operator==()

bool libff::bn128_ate_G2_precomp::operator== ( const bn128_ate_G2_precomp other) const

Definition at line 54 of file bn128_pairing.cpp.

55 {
56  if (!(this->Q[0] == other.Q[0] && this->Q[1] == other.Q[1] &&
57  this->Q[2] == other.Q[2] &&
58  this->coeffs.size() == other.coeffs.size())) {
59  return false;
60  }
61 
62  /* work around for upstream serialization bug */
63  for (size_t i = 0; i < this->coeffs.size(); ++i) {
64  std::stringstream this_ss, other_ss;
65  this_ss << this->coeffs[i];
66  other_ss << other.coeffs[i];
67  if (this_ss.str() != other_ss.str()) {
68  return false;
69  }
70  }
71 
72  return true;
73 }

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  out,
const bn128_ate_G2_precomp prec_Q 
)
friend

Definition at line 75 of file bn128_pairing.cpp.

76 {
77  for (size_t i = 0; i < 3; ++i) {
78 #ifndef BINARY_OUTPUT
79  out << prec_Q.Q[i].a_ << "\n";
80  out << prec_Q.Q[i].b_ << "\n";
81 #else
82  out.write((char *)&prec_Q.Q[i].a_, sizeof(prec_Q.Q[i].a_));
83  out.write((char *)&prec_Q.Q[i].b_, sizeof(prec_Q.Q[i].b_));
84 #endif
85  }
86 
87  out << prec_Q.coeffs.size() << "\n";
88 
89  for (size_t i = 0; i < prec_Q.coeffs.size(); ++i) {
90 #ifndef BINARY_OUTPUT
91  out << prec_Q.coeffs[i].a_.a_ << "\n";
92  out << prec_Q.coeffs[i].a_.b_ << "\n";
93  out << prec_Q.coeffs[i].b_.a_ << "\n";
94  out << prec_Q.coeffs[i].b_.b_ << "\n";
95  out << prec_Q.coeffs[i].c_.a_ << "\n";
96  out << prec_Q.coeffs[i].c_.b_ << "\n";
97 #else
98  out.write(
99  (char *)&prec_Q.coeffs[i].a_.a_, sizeof(prec_Q.coeffs[i].a_.a_));
100  out.write(
101  (char *)&prec_Q.coeffs[i].a_.b_, sizeof(prec_Q.coeffs[i].a_.b_));
102  out.write(
103  (char *)&prec_Q.coeffs[i].b_.a_, sizeof(prec_Q.coeffs[i].b_.a_));
104  out.write(
105  (char *)&prec_Q.coeffs[i].b_.b_, sizeof(prec_Q.coeffs[i].b_.b_));
106  out.write(
107  (char *)&prec_Q.coeffs[i].c_.a_, sizeof(prec_Q.coeffs[i].c_.a_));
108  out.write(
109  (char *)&prec_Q.coeffs[i].c_.b_, sizeof(prec_Q.coeffs[i].c_.b_));
110 #endif
111  }
112 
113  return out;
114 }

◆ operator>>

std::istream& operator>> ( std::istream &  in,
bn128_ate_G2_precomp prec_Q 
)
friend

Definition at line 116 of file bn128_pairing.cpp.

117 {
118  for (size_t i = 0; i < 3; ++i) {
119 #ifndef BINARY_OUTPUT
120  in >> prec_Q.Q[i].a_;
121  consume_newline(in);
122  in >> prec_Q.Q[i].b_;
123  consume_newline(in);
124 #else
125  in.read((char *)&prec_Q.Q[i].a_, sizeof(prec_Q.Q[i].a_));
126  in.read((char *)&prec_Q.Q[i].b_, sizeof(prec_Q.Q[i].b_));
127 #endif
128  }
129 
130  size_t count;
131  in >> count;
132  consume_newline(in);
133  prec_Q.coeffs.resize(count);
134  for (size_t i = 0; i < count; ++i) {
135 #ifndef BINARY_OUTPUT
136  in >> prec_Q.coeffs[i].a_.a_;
137  consume_newline(in);
138  in >> prec_Q.coeffs[i].a_.b_;
139  consume_newline(in);
140  in >> prec_Q.coeffs[i].b_.a_;
141  consume_newline(in);
142  in >> prec_Q.coeffs[i].b_.b_;
143  consume_newline(in);
144  in >> prec_Q.coeffs[i].c_.a_;
145  consume_newline(in);
146  in >> prec_Q.coeffs[i].c_.b_;
147  consume_newline(in);
148 #else
149  in.read(
150  (char *)&prec_Q.coeffs[i].a_.a_, sizeof(prec_Q.coeffs[i].a_.a_));
151  in.read(
152  (char *)&prec_Q.coeffs[i].a_.b_, sizeof(prec_Q.coeffs[i].a_.b_));
153  in.read(
154  (char *)&prec_Q.coeffs[i].b_.a_, sizeof(prec_Q.coeffs[i].b_.a_));
155  in.read(
156  (char *)&prec_Q.coeffs[i].b_.b_, sizeof(prec_Q.coeffs[i].b_.b_));
157  in.read(
158  (char *)&prec_Q.coeffs[i].c_.a_, sizeof(prec_Q.coeffs[i].c_.a_));
159  in.read(
160  (char *)&prec_Q.coeffs[i].c_.b_, sizeof(prec_Q.coeffs[i].c_.b_));
161 #endif
162  }
163  return in;
164 }

Member Data Documentation

◆ coeffs

std::vector<bn128_ate_ell_coeffs> libff::bn128_ate_G2_precomp::coeffs

Definition at line 36 of file bn128_pairing.hpp.

◆ Q

bn::Fp2 libff::bn128_ate_G2_precomp::Q[3]

Definition at line 35 of file bn128_pairing.hpp.


The documentation for this struct was generated from the following files:
libff::bn128_ate_G2_precomp::coeffs
std::vector< bn128_ate_ell_coeffs > coeffs
Definition: bn128_pairing.hpp:36
libff::bn128_ate_G2_precomp::Q
bn::Fp2 Q[3]
Definition: bn128_pairing.hpp:35
libff::consume_newline
void consume_newline(std::istream &in)