#undef LIBECC_M #define LIBECC_M 8009 #include "sys.h" #include "debug.h" #include #include "../polynomial/mk.h" unsigned int const m = libecc::field_extension_degree; unsigned int const k = libecc::reduction_polynomial_exponents::k; unsigned int const k1 = libecc::reduction_polynomial_exponents::k1; unsigned int const k2 = libecc::reduction_polynomial_exponents::k2; using std::cout; using std::endl; using std::flush; using libecc::bitset_base; using libecc::bitset_digit_t; typedef libecc::bitset bitset; typedef libecc::polynomial poly; poly a("0"); poly b("0x3F636F6420707520732774616857"); mpz_class n; typedef libecc::point point; using libecc::bitset_digit_t; int main() { mpz_t q; mpz_init(q); mpz_ui_pow_ui(q, 2, 8009); n = mpz_class(q); n += 1; mpz_class c("-173781496855947505026635002869635953808229335381570056464621193940895056863504783294021995065119636064037744458121824706256101375092227785899279859382375508813512228452707543448804227830350453630318289993429955048544858271431235554925925218016021462976522604806199992629607633615399045665748120403497295724818612705811737001932873239713976031333307121192031140124936716110261344299992343462618094707883381239575692354062675177743128084928704789927053902757527426178584350294618098340414692085330411964582201095084463986891949680756772569455776175298098419627580620230881405697016837843911732490034219592736044382123314677929838172853537747054427942739774461484712209985999476777494287080574838937079674483708654377667748782232512309071885437433718460626024619545730229857335859452961591499827794731180323396776774693997980749628390806053785208509477197767399825222359144733258976844620499589156331646085956322156871493279308734719611148013330484292242206852555894563150429003330357185835857959827198598539336567401817103005203941979959470708629753376721197597388299770441615351946293827847496574699722624775864568852009210270915236395433004819982461492543540766219587259634877029770317456234950616362600955"); n -= c; libecc::rds::pool_type seed("1"); libecc::rds random_source(seed, false); point P; for (int i = 0; i < 100; ++i) { cout << i << endl; P.randomize(random_source); P.MULTIPLY_and_assign(P, n); assert(P.is_zero()); } }