bn/shootout/test.cpp

45 lines
1.4 KiB
C++

#include "common/default_types/r1cs_ppzksnark_pp.hpp"
#include "common/profiling.hpp"
// CXXFLAGS="-fPIC -DBINARY_OUTPUT -DNO_PT_COMPRESSION=1" make lib CURVE=ALT_BN128 MULTICORE=1 NO_PROCPS=1 NO_GTEST=1 NO_DOCS=1 STATIC=1 NO_SUPERCOP=1 FEATUREFLAGS=-DMONTGOMERY_OUTPUT
// g++ -std=c++11 -O3 test.cpp -o test -Isrc/ -DMULTICORE -fopenmp -DBINARY_OUTPUT -DCURVE_ALT_BN128 -DSTATIC -L. -lsnark -lgmp -lsodium
typedef libsnark::default_r1cs_ppzksnark_pp curve_pp;
typedef libsnark::default_r1cs_ppzksnark_pp::G1_type curve_G1;
typedef libsnark::default_r1cs_ppzksnark_pp::G2_type curve_G2;
typedef libsnark::default_r1cs_ppzksnark_pp::GT_type curve_GT;
typedef libsnark::default_r1cs_ppzksnark_pp::Fp_type curve_Fr;
int main() {
curve_pp::init_public_params();
libsnark::inhibit_profiling_info = true;
libsnark::inhibit_profiling_counters = true;
curve_G1 a = curve_G1::one();
curve_G2 b = curve_G2::one();
curve_Fr c = curve_Fr("1901").inverse();
curve_Fr d = curve_Fr("2344").inverse();
curve_GT acc1 = curve_GT::one();
for (size_t i = 0; i < 10000; i++) {
acc1 = acc1 * curve_pp::reduced_pairing(a, b);
a = c * a;
b = d * b;
}
a = curve_G1::one();
b = curve_G2::one();
curve_GT acc2 = curve_GT::one();
for (size_t i = 0; i < 10000; i++) {
acc2 = acc2 * curve_pp::reduced_pairing(a, b);
a = d * a;
b = c * b;
}
assert(acc1 == acc2);
}