Ancillary files for "Cross-Energy of Dirichlet Partial Sums. Part 20: The Euler cross-energy, Weil positivity and a one-variable form of the Riemann hypothesis" Pedro Caceres, Universidad Europea de Valencia. Python 3 with NumPy, SciPy and Matplotlib. All scripts must be in the same folder (they import each other). Results are written to folders resultados_* next to the scripts. Double precision, except the two certificate scripts (positividad_arb.py: Arb ball arithmetic, positividad_rigurosa.py: interval arithmetic). sumideros_c2fr.py Evaluation of zeta and of the Davenport-Heilbronn function f (Hurwitz sums), zeros on the line by sign changes of Z (imported by the others). pesos_primos_c2.py Section 3 (prime weights): weights 1, Lambda, Lambda/log k, primes for zeta and the Davenport-Heilbronn analogues, N up to 2e6 (Table 'primeweights', Figure 'primeweights'). The coefficients b(n) of -f'/f are computed the first time (several minutes) and saved as coef_b_f_2500000.npy. logs/pesos_primos.log pozos_primos.py Section 3.1 (the depth of the prime wells): primes up to 1e7, 649 zeros below 1000 (Table 'wells', Figure 'wells'). logs/pozos.log forma_weil_c2.py Section 4: check of the explicit formulas for zeta and f against their zeros, Weil's form Q_N on Dirichlet polynomials, N <= 1000, eps = 0.005, first N with a negative eigenvalue for f, least eigenvectors (Table 'weil', Figure 'weil'). logs/forma_weil.log cuenta_ceros_c2e.py Section 5: S(t) from the Euler cross-energy at thirteen scales, the count of all the zeros at the midpoints of Gram intervals against the sign changes of Z, for zeta and f (Table 'turing', Figure 'turing'). logs/cuenta_ceros.log raiz_weil.py Section 6: the triangular root of Q_N and its Dirichlet structure, the Toeplitz form on a uniform grid and the atoms recovered by the matrix pencil (Table 'root', Figure 'root'). logs/raiz_weil.log resto_raiz.py Section 6: the remainder of the triangular root by pieces (Table 'remainder', Figure 'remainder'). logs/resto_raiz.log factorizacion_local.py Section 6: Cholesky fill-in, additive and multiplicative local roots, local symbols, least eigenvalues of each part, pivots (Figure 'local'). logs/factorizacion_local.log teorema_primos.py Section 7: Theorem 'coherent' on the vector a_m = m^{-1/2}: the sum S_N, its lower bound, the prime part, the archimedean part and the full form, for zeta and f (Table 'coherent'). logs/teorema_primos.log cuadrado_mas_resto.py Section 7.2: best constant c_N^2(X) = lambda_min(Q_N, B_X) in Q_N >= c^2 ||X k||^2 for the smoothed mollifier of length y (mu(n) for zeta, Dirichlet inverse of a_n for f), Table 'square', and the spectrum of the minimizer against the zeros (Figure 'square'). About one minute. logs/cuadrado_mas_resto.log fejer_c2.py Section 8 (Proposition 'fejer', Figure 'fejer'): the Euler energy C_N(t) with the Cesaro weights Lambda(n) log(N/n), the remainder R_N(t) (pole, conductor, Gauss integral for psi), the check of R - C against the zeros of zeta, and the margin R - C on the grid (N, t) for zeta and f. logs/fejer_c2.log (several minutes) fejer_ventanas.py Section 8 (Table 'fejer', Figure 'windows'): the same for the windows Fejer, Jackson, Hann. logs/fejer_ventanas.log (about half an hour) paso2_bloques.py Sections 8.1-8.2: the closed form of R_N(0) (check), the margin M(N) at t = 0 from the prime powers below 10^8 by blocks (primes, squares, higher powers), against 4 sum (1 - cos(gamma log N))/gamma^2 from the zeros below 5000, and its spectrum in log N (Figure 'wave'). logs/paso2_bloques.log sandwich_xi.py Section 8.1 (Corollary 'sandwich'): (log xi)''(1/2) from zeta at 1/2 (finite differences), against 2 sum 1/gamma^2, and the least, largest and mean margin M(N) for N <= 10^8. logs/sandwich_xi.log laboratorio_curvas.py Section 9.1 (Proposition 'curves'): the Fejer identity for an elliptic and a genus-2 curve over F_1009 (N_1, N_2 by brute force), the fake curve 1 - 69T + 1009T^2, Toeplitz/Rosati eigenvalues, the Stepanov-Bombieri bound for the curves and their twists (Figure 'curves'). logs/laboratorio_curvas.log stepanov_bombieri.py Section 9.1: the Bombieri-Stepanov auxiliary function built explicitly for y^2 = x^3 + x + 1 over F_{p^2}, p = 7, 11, 13. logs/stepanov_bombieri.log pesos_potencia.py Section 9.2 (Proposition 'powerweights'): G(y)/y^beta for b = chi_{-4} and b = 1, beta = 1/4, 1/2, against B(beta + 1/2). logs/pesos_potencia.log banco_pruebas.py Section 9.3 (Proposition 'beurlingcont', Table 'bench', Figure 'bench'): the test bench for positivity structures. Objects: zeta, Davenport-Heilbronn f, continuous Beurling systems with zeta_B = (s - beta)/(s - 1), beta = 3/4 and 0.6, the parity twin Lambda(n)(1 - lambda(n)), and perturbations of zeta. Tests T1-T7 applied to the Weil form and to four candidates that each break one requirement. Imports fejer_c2, forma_weil_c2, sumideros_c2fr. logs/banco_pruebas.log prolato_semilocal.py Section 9.4 (Proposition 'inertia', Figure 'semilocal'): the semilocal Weil form of Connes-Consani on [0, L] with cubic B-splines (Toeplitz form q(m) = W(h N_7(./h - m)), Gram h N_7(i - j)), checked against the Fejer margin (p = 0) and the sum over the zeros (p = 3). Least eigenvalues and inertia for zeta, f, the Beurling system and the parity twin, and the zeros of the near-null eigenvector against the zeros of zeta and of f (on and off the line). logs/prolato_semilocal.log sandwich_banco.py Section 8.1 (after Corollary 'sandwich', Figure 'sandwichbench'): the two-sided window 0 <= M <= 4 (log xi)''(1/2) for zeta (primes up to 10^8) and its perturbations, for f (coefficients up to 2*10^7 and a zeros model to log N = 40), the Beurling system, the parity twin and three curves over F_1009. logs/sandwich_banco.log minimos_chebyshev.py Section 8.1 (after Corollary 'sandwich'): r''(t) = 2 sqrt N (1 - 1/(N(N^2-1))), the interior minima M(N*) = H(N*) + 2 B_k between prime powers below 10^7, and the identity C(x) = 8 sqrt x - 4 log x - 8 + 2 log x + 2 I(x) with I a weighted integral of psi(u) - u. logs/minimos_chebyshev.log analisis_R.py Section 8.1 (after Corollary 'sandwich', Figure 'Rshape'): C(N) as Cesaro integrals of C_2^Lambda and C_2^E, c_1 = 2 zeta'/zeta(1/2), c_0 = -8 + psi_1(5/4)/2, the pieces and critical points of R, R = M on 1 < N < 2 against the zeros, the Laplace transform of R, and the mean and standard deviation of M for N <= 10^8. logs/analisis_R.log certificado_sandwich.py Section 8.4 (Proposition 'verified' (1)): 0 < M(N) < 0.14 for all real 1 < N <= X0 with Python's decimal arithmetic (34 digits, correctly rounded): analytic lemma near N = 1, monotone subintervals on (1, 2], convexity between consecutive prime powers. logs/certificado_sandwich.log (X0 = 10^8) certificado_segmentado.py the same certificate with a segmented sieve and checkpoints, used for X0 = 10^10 (455,062,595 prime powers, about 4 hours in two runs). logs/certificado_segmentado_1e10.log and logs/ejecucion_1e10.out. The version fingerprint check was added after the run; the arithmetic is unchanged. certificado_ceros.py Section 8.4 (Proposition 'verified' (2)): M(N) >= W(log N) - 8(3 + sqrt N) S_H on [10^8, 10^15] with the 4520 zeros below 5000 (Platt-Trudgian and Proposition 'uncond'). logs/certificado_ceros.log margen_sigma.py Section 8.1 (the margin at s = sigma, Figure 'sigma'): M_sigma(N) = R_sigma(N) - C_sigma(N) from the primes below 10^8 for sigma = 0.3 ... 0.9, against 2 sum_rho (N^{rho-sigma} - 1)/(rho - sigma)^2. logs/margen_sigma.log limite_sigma1.py Section 8.1 (the limit at sigma = 1): M_1(N) from the prime powers below 10^8 against its limit 2 (2 lambda_1 - p_2) = 0.0923086, M_1/2(N) at the same N, and Mertens' product. Imports paso2_bloques, puente_H_M. logs/limite_sigma1.log puente_H_M.py helper for limite_sigma1.py (the margin M(N) on a grid from the prime powers below 10^8). xi_en_u.py helper for puente_H_M.py (H(y) = xi(s)); the material of former Sections 8.3-8.4 is in Part 21. clases_mod6.py (not in the text) the prime energy split into the classes 6k+1 and 6k-1: the sum carries the zeros of zeta, the difference those of L(s, chi_-3). logs/clases_mod6.log cota_incondicional.py Section 8.4 (Proposition 'uncond'): S_H for H = 3*10^12 with Trudgian's bound for N(T), the unconditional bound 8 (3 + sqrt N) S_H, its refinement with the zero-free region of Mossinghoff-Trudgian-Yang (Figure 'uncond'). logs/cota_incondicional.log positividad_arb.py Section 7.1 (Proposition 'certified'): the certificate of Q_N > 0 with Arb ball arithmetic (pip install python-flint numpy). Every exp, log, cos, sin, cosh, sqrt and the complex digamma is an Arb ball (96 bits), converted outwards to a float interval, and only sums and products are done in double precision with Rump's midpoint-radius bound. Pole, conductor, primes with tail bound, archimedean integral as eps^2 h (C diag(g) C^T + S diag(g) S^T) with the Trefethen-Weideman bound, then congruence V^T [Q] V + Gershgorin + Sylvester's law of inertia. About one minute. Certified for 2 <= N <= 179 at eps = 0.005, no hypothesis on the libm. logs/positividad_arb.log (run by the author on Windows, Python 3.13, python-flint) positividad_rigurosa.py Earlier version of the same certificate, numpy only, under the hypothesis that numpy exp, log, cos, arctan are accurate to 8 ulps (certified up to N = 176). logs/positividad_rigurosa.log