From 55dbb6ea5e54d014a8207ed90348aa362a920ddc Mon Sep 17 00:00:00 2001 From: Jean Kieffer Date: Tue, 11 Feb 2025 17:49:40 +0100 Subject: [PATCH] Remove nb argument in sum_work --- src/acb_theta.h | 4 ++-- src/acb_theta/sum.c | 2 +- src/acb_theta/sum_jet.c | 4 ++-- src/acb_theta/sum_work.c | 24 +++++++++++------------- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/acb_theta.h b/src/acb_theta.h index 3b32120cb6..f537d37653 100644 --- a/src/acb_theta.h +++ b/src/acb_theta.h @@ -153,8 +153,8 @@ int acb_theta_ctx_z_overlaps(const acb_theta_ctx_z_t ctx1, const acb_theta_ctx_z /* Summation algorithms */ -void acb_theta_sum_work(acb_ptr th, slong len, acb_srcptr exp_zs, acb_srcptr exp_zs_inv, - slong nb, const acb_mat_t exp_tau, const acb_mat_t exp_tau_inv, const acb_theta_eld_t E, +void acb_theta_sum_work(acb_ptr th, slong len, acb_srcptr exp_z, acb_srcptr exp_z_inv, + const acb_mat_t exp_tau, const acb_mat_t exp_tau_inv, const acb_theta_eld_t E, slong ord, slong prec, acb_theta_sum_worker_t worker); void acb_theta_sum(acb_ptr th, const acb_theta_ctx_z_struct * vec, slong nb, const acb_theta_ctx_tau_t ctx_tau, arb_srcptr distances, int all_a, diff --git a/src/acb_theta/sum.c b/src/acb_theta/sum.c index cad86c6d7b..8cebb62319 100644 --- a/src/acb_theta/sum.c +++ b/src/acb_theta/sum.c @@ -113,7 +113,7 @@ acb_theta_sum_0x(acb_ptr th, const acb_theta_ctx_z_struct * vec, slong nb, for (j = 0; j < nb; j++) { acb_theta_sum_work(th + j * n, n, (&vec[j])->exp_2z, - (&vec[j])->exp_2z_inv, 1, ctx_tau->exp_tau, + (&vec[j])->exp_2z_inv, ctx_tau->exp_tau, ctx_tau->exp_tau_inv, E, 0, prec, (all_b ? acb_theta_sum_0b_worker : acb_theta_sum_00_worker)); arb_mul_arf(err, &(&vec[j])->u, eps, guard); diff --git a/src/acb_theta/sum_jet.c b/src/acb_theta/sum_jet.c index 3bd6a5ba28..b6133a36c7 100644 --- a/src/acb_theta/sum_jet.c +++ b/src/acb_theta/sum_jet.c @@ -429,7 +429,7 @@ acb_theta_sum_jet(acb_ptr th, const acb_theta_ctx_z_struct * vec, slong nb, if (all_a) { acb_theta_sum_work(th + j * nbth * nbjet, nbth * nbjet, - (&vec[j])->exp_z, (&vec[j])->exp_z_inv, 1, + (&vec[j])->exp_z, (&vec[j])->exp_z_inv, ctx_tau->exp_tau_div_4, ctx_tau->exp_tau_div_4_inv, E, ord, prec, (all_b ? acb_theta_sum_jet_all_worker : acb_theta_sum_jet_a0_worker)); @@ -437,7 +437,7 @@ acb_theta_sum_jet(acb_ptr th, const acb_theta_ctx_z_struct * vec, slong nb, else { acb_theta_sum_work(th + j * nbth * nbjet, nbth * nbjet, - (&vec[j])->exp_2z,(&vec[j])->exp_2z_inv, 1, + (&vec[j])->exp_2z,(&vec[j])->exp_2z_inv, ctx_tau->exp_tau, ctx_tau->exp_tau_inv, E, ord, prec, (all_b ? acb_theta_sum_jet_0b_worker : acb_theta_sum_jet_00_worker)); diff --git a/src/acb_theta/sum_work.c b/src/acb_theta/sum_work.c index d44b1e09c8..81ac2f794f 100644 --- a/src/acb_theta/sum_work.c +++ b/src/acb_theta/sum_work.c @@ -283,8 +283,8 @@ acb_theta_sum_sqr_pow(acb_ptr * sqr_pow, const acb_mat_t exp_tau, const acb_thet /* Main function */ void -acb_theta_sum_work(acb_ptr th, slong len, acb_srcptr exp_zs, acb_srcptr exp_zs_inv, - slong nb, const acb_mat_t exp_tau, const acb_mat_t exp_tau_inv, const acb_theta_eld_t E, +acb_theta_sum_work(acb_ptr th, slong len, acb_srcptr exp_z, acb_srcptr exp_z_inv, + const acb_mat_t exp_tau, const acb_mat_t exp_tau_inv, const acb_theta_eld_t E, slong ord, slong prec, acb_theta_sum_worker_t worker) { slong g = E->ambient_dim; @@ -312,23 +312,21 @@ acb_theta_sum_work(acb_ptr th, slong len, acb_srcptr exp_zs, acb_srcptr exp_zs_i } v1 = _acb_vec_init(width); v2 = _acb_vec_init(width); - res = _acb_vec_init(len * nb); + res = _acb_vec_init(len); acb_init(cf); precs = flint_malloc(width * sizeof(slong)); acb_theta_sum_sqr_pow(sqr_pow, exp_tau, E, fullprec); acb_one(cf); - for (j = 0; j < nb; j++) - { - acb_mat_set(lin_pow, exp_tau); - acb_mat_set(lin_pow_inv, exp_tau_inv); + acb_mat_set(lin_pow, exp_tau); + acb_mat_set(lin_pow_inv, exp_tau_inv); - acb_theta_sum_work_rec(res + j * len, v1, v2, precs, lin_pow, lin_pow_inv, - cf, exp_zs + j * g, exp_zs_inv + j * g, exp_tau, exp_tau_inv, sqr_pow, E, ord, - fullprec, fullprec, worker); - } - _acb_vec_set(th, res, len * nb); + acb_theta_sum_work_rec(res, v1, v2, precs, lin_pow, lin_pow_inv, + cf, exp_z, exp_z_inv, exp_tau, exp_tau_inv, sqr_pow, E, ord, + fullprec, fullprec, worker); + + _acb_vec_set(th, res, len); acb_mat_clear(lin_pow); acb_mat_clear(lin_pow_inv); @@ -339,7 +337,7 @@ acb_theta_sum_work(acb_ptr th, slong len, acb_srcptr exp_zs, acb_srcptr exp_zs_i flint_free(sqr_pow); _acb_vec_clear(v1, width); _acb_vec_clear(v2, width); - _acb_vec_clear(res, len * nb); + _acb_vec_clear(res, len); acb_clear(cf); flint_free(precs); }