change type of z from mpz_class to const char*

dev
MITSUNARI Shigeo 8 years ago
parent 702e3e685a
commit 9a061f819f
  1. 17
      include/mcl/bn.hpp

@ -20,18 +20,19 @@ struct CurveParam {
v^3 = xi
w^2 = v
*/
mpz_class z;
const char *z;
int b; // y^2 = x^3 + b
int xi_a; // xi = xi_a + i
bool operator==(const CurveParam& rhs) const { return z == rhs.z && b == rhs.b && xi_a == rhs.xi_a; }
bool operator!=(const CurveParam& rhs) const { return !operator==(rhs); }
};
const CurveParam CurveSNARK1 = { mpz_class("4965661367192848881"), 3, 9 };
//const CurveParam CurveSNARK2 = { 4965661367192848881, 82, 9 };
const CurveParam CurveFp254BNb = { mpz_class("-0x4080000000000001"), 2, 1 }; // -(2^62 + 2^55 + 1)
const CurveParam CurveFp382_1 = { mpz_class("-0x400011000000000000000001"), 2, 1 }; // -(2^94 + 2^76 + 2^72 + 1) // A Family of Implementation-Friendly BN Elliptic Curves
const CurveParam CurveFp382_2 = { mpz_class("-0x400040090001000000000001"), 2, 1 }; // -(2^94 + 2^78 + 2^67 + 2^64 + 2^48 + 1) // used in relic-toolkit
const CurveParam CurveSNARK1 = { "4965661367192848881", 3, 9 };
//const CurveParam CurveSNARK2 = { "4965661367192848881", 82, 9 };
const CurveParam CurveFp254BNb = { "-0x4080000000000001", 2, 1 }; // -(2^62 + 2^55 + 1)
// provisional(experimental) param with maxBitSize = 384
const CurveParam CurveFp382_1 = { "-0x400011000000000000000001", 2, 1 }; // -(2^94 + 2^76 + 2^72 + 1) // A Family of Implementation-Friendly BN Elliptic Curves
const CurveParam CurveFp382_2 = { "-0x400040090001000000000001", 2, 1 }; // -(2^94 + 2^78 + 2^67 + 2^64 + 2^48 + 1) // used in relic-toolkit
template<class Vec>
void convertToBinary(Vec& v, const mpz_class& x)
@ -241,8 +242,8 @@ struct ParamT {
void init(const CurveParam& cp = CurveFp254BNb, fp::Mode mode = fp::FP_AUTO)
{
isCurveFp254BNb = cp == CurveFp254BNb;
z = cp.z;
isNegative = cp.z < 0;
z = mpz_class(cp.z);
isNegative = z < 0;
if (isNegative) {
abs_z = -z;
} else {

Loading…
Cancel
Save