void init_ecpp_gcds(void) { if (_gcdinit == 0) { mpz_init(_gcd_small); mpz_init(_gcd_large); _GMP_pn_primorial(_gcd_small, 3000); _GMP_pn_primorial(_gcd_large, 20000); mpz_divexact(_gcd_large, _gcd_large, _gcd_small); mpz_divexact_ui(_gcd_small, _gcd_small, 2*3*5); mpz_init(_lcm_small); _GMP_lcm_of_consecutive_integers(300, _lcm_small); _gcdinit = 1; } }
void init_ecpp_gcds(UV nsize) { if (_gcdinit == 0) { mpz_init(_gcd_small); mpz_init(_gcd_large); _GMP_pn_primorial(_gcd_small, 3000); /* This is never re-adjusted -- first number proved sets the size */ nsize *= 20; if (nsize < 20000) nsize = 20000; else if (nsize > 500000) nsize = 500000; _GMP_pn_primorial(_gcd_large, nsize); mpz_divexact(_gcd_large, _gcd_large, _gcd_small); mpz_divexact_ui(_gcd_small, _gcd_small, 2*3*5); _gcdinit = 1; } }