diff --git a/acb_dirichlet/platt_local_hardy_z_zeros.c b/acb_dirichlet/platt_local_hardy_z_zeros.c index 489ef93c..872a76b7 100644 --- a/acb_dirichlet/platt_local_hardy_z_zeros.c +++ b/acb_dirichlet/platt_local_hardy_z_zeros.c @@ -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 {