use larger A at lower T

This commit is contained in:
p15-git-acc 2020-09-20 20:44:08 -05:00
parent fafce0f7b3
commit f2183f9709

View file

@ -1349,7 +1349,8 @@ _create_heuristic_context(const fmpz_t n, slong prec)
slong kbits;
fmpz_t T, k;
arb_t g, h, H, logT;
double dlogJ, dK, dgrid, dh, dH, x;
double dlogJ, dK, dgrid, dh, dH;
double x, x2, x3;
fmpz_init(T);
fmpz_init(k);
@ -1368,46 +1369,48 @@ _create_heuristic_context(const fmpz_t n, slong prec)
_arb_get_lbound_fmpz(T, g, prec + kbits);
arb_log_fmpz(logT, T, prec);
x = arf_get_d(arb_midref(logT), ARF_RND_NEAR);
x2 = x*x;
x3 = x2*x;
if (_fmpz_cmp_a_10exp_b(n, 1, 4) < 0)
{
goto finish;
}
else if (_fmpz_cmp_a_10exp_b(n, 1, 7) <= 0)
else if (_fmpz_cmp_a_10exp_b(n, 1, 7) < 0)
{
A = 8;
B = 4096;
Ns_max = 200;
sigma_interp = 25;
dlogJ = -0.0615445533817 + 0.451722545820*x + 0.00122002154215*x*x;
dK = 91.1899134881 + -4.00880690488*x + 0.120415406812*x*x;
dgrid = 435.203636324 + 160.801297871*x + -3.83793292606*x*x;
dh = 189.300555621 + -18.9197620910*x + 0.830573279739*x*x;
dH = 0.996344708432 + 0.00726343756987*x + 0.000214553523479*x*x;
dlogJ = 0.88323 + 0.21392*x + 0.020846*x2 + -0.00053151*x3;
dK = 137.27 + -15.609*x + 1.0778*x2 + -0.025927*x3;
dgrid = -1711.1 + 701.03*x + -48.424*x2 + 1.2075*x3;
dh = 448.2 + -84.087*x + 6.2089*x2 + -0.14565*x3;
dH = 0.94123 + 0.021136*x + -0.00093042*x2 + 3.1007e-05*x3;
}
else if (_fmpz_cmp_a_10exp_b(n, 1, 17) <= 0)
else if (_fmpz_cmp_a_10exp_b(n, 1, 15) < 0)
{
A = 8;
B = 4096;
Ns_max = 200;
sigma_interp = _fmpz_cmp_a_10exp_b(n, 1, 15) < 0 ? 25 : 23;
dlogJ = -0.423690477891 + 0.493860619333*x + 3.05508800339e-06*x*x;
dK = 73.6420428629 + -0.972844461115*x + -0.00363528642217*x*x;
dgrid = 1985.95184794 + 3.38195103878*x + -0.136620071052*x*x;
dh = 94.8311227685 + -0.883336123977*x + 0.0556261501085*x*x;
dH = 1.18099035487 + -0.0119992923413*x + 0.00073741022749*x*x;
sigma_interp = _fmpz_cmp_a_10exp_b(n, 1, 14) < 0 ? 25 : 23;
dlogJ = -0.41749 + 0.49307*x + 3.58e-05*x2 + -4.3698e-07*x3;
dK = 74.703 + -1.1419*x + 0.0049926*x2 + -0.00014087*x3;
dgrid = 2002.4 + 2.1248*x + -0.12517*x2 + 0.00043982*x3;
dh = 70.494 + 2.0738*x + -0.058873*x2 + 0.0014192*x3;
dH = 0.8426 + 0.027256*x + -0.00068874*x2 + 1.62e-05*x3;
}
else if (_fmpz_cmp_a_10exp_b(n, 1, 37) <= 0)
else if (_fmpz_cmp_a_10exp_b(n, 1, 37) < 0)
{
A = 16;
B = 8192;
Ns_max = 300;
sigma_interp = _fmpz_cmp_a_10exp_b(n, 1, 27) < 0 ? 19 : 17;
dlogJ = -0.510731356439 + 0.497749405271*x + 4.7480897930e-07*x*x;
dK = 98.3296668968 + -0.629042293257*x + -0.00158584251152*x*x;
dgrid = 3810.92686930 + 9.86688705118*x + -0.132241869233*x*x;
dh = 189.640536974 + -1.94782986530*x + 0.0342403597641*x*x;
dH = 0.897872657566 + -0.0100363606454*x + 0.000170869048778*x*x;
dlogJ = -0.512 + 0.4978*x + -1.6775e-07*x2 + 2.4238e-09*x3;
dK = 102.76 + -0.85449*x + 0.0021411*x2 + -2.0049e-05*x3;
dgrid = 4344.8 + -18.795*x + 0.3634*x2 + -0.0027694*x3;
dh = 87.505 + 3.535*x + -0.060599*x2 + 0.00053014*x3;
dH = 0.4151 + 0.015926*x + -0.00027885*x2 + 2.5168e-06*x3;
}
else
{