FLINT3.7.0-dev

_dfloat_platt_smk, _dfloat_platt_smk_dd

Synopsis#include <flint/dfloat.h>
int _dfloat_platt_smk(acb_ptr S_table, const fmpz * smk_points, const arb_t t0, slong A, slong B, ulong J, slong K, int pn, ulong M, slong prec)source
int _dfloat_platt_smk_dd(double * S5, const fmpz * smk_points, const arb_t t0, slong A, slong B, ulong J, slong K, int pn, ulong M)source

The sums over j in Platt's multi-evaluation of the scaled Lambda function (acb_dirichlet_platt_multieval): for the buckets m < AB of the j \le J with smk_points[m] \le j < smk_points[m+1], sets entry kAB + m to \sum_j z_j b_j^k for 0 \le k < K, where z_j = j^{-1/2} e^{-i t_0 \log(j\sqrt{\pi})} and b_j = \log(j\sqrt{\pi})/(2\pi) - m/B. Return 1 on success and 0 if pn is not 3 or 4 or the module is not supported.

_dfloat_platt_smk_dd omits the common factor c = e^{-it_0\log\sqrt{\pi}} and writes compact balls of five doubles per entry (the real and imaginary midpoints as double-words and a common radius): S5[5 (k N + m) + 0..4] holds Re hi, Re lo, Im hi, Im lo and the radius, with N = AB. M bounds the table of terms (0 for the default \min(J/2, 5 \cdot 10^6)).

The rest of the multi-evaluation amplifies an error in the moment k by about 2^{24 + 8.6k}, while |S_k| decreases like 2^{-13k}. So the terms j^{-s} and b_j are d3b balls (with phases in d3b or d4b), S_0 is summed in d3b balls, and the moments 1 \le k < 14 are computed in plain double-double arithmetic and k \ge 14 in double arithmetic, vectorised over the j of a block, with an a priori error bound added per bucket. The terms are obtained by sieving: f(j) = f(d) f(j/d) and \log j = \log d + \log(j/d) for the smallest prime factor d, from a table for j \le M and by splitting j = xy with x, y \le M beyond. The work is split into chunks computed in parallel and summed in a fixed order, so the result does not depend on the number of threads. At the height of the 10^{15}-th zero this takes about 0.42 microseconds per j on one thread, against 7.7 for the arb_t version at 228 bits.

Cite this page

The FLINT team, “_dfloat_platt_smk, _dfloat_platt_smk_dd (dfloat.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/dfloat/_dfloat_platt_smk.html (generated 2026-10-20).