From bad8105c9b964716abd26a02892e00b89a0b35a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ne=C4=8Dada?= Date: Fri, 7 Sep 2018 20:11:50 +0000 Subject: [PATCH] Fix legendre function indexing. Test pass for even m now. Former-commit-id: 2bd5bfddc3eab30a0e1e7590d18f31bf5098d54e --- qpms/ewald.c | 2 +- tests/ewalds.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/qpms/ewald.c b/qpms/ewald.c index eb8f57b..07f3892 100644 --- a/qpms/ewald.c +++ b/qpms/ewald.c @@ -317,7 +317,7 @@ int ewald32_sigma_short_shiftedpoints( if((m+n) % 2 != 0) // odd coefficients are zero. continue; // nothing needed, already done by memset complex double e_imf = cexp(I*m*Rpq_shifted_arg); - double leg = c->legendre0[gsl_sf_legendre_array_index(n, m)]; + double leg = c->legendre0[gsl_sf_legendre_array_index(n, abs(m))]; qpms_y_t y = qpms_mn2y_sc(m,n); if(err) kahanadd(err + y, err_c + y, cabs(leg * (prefacn / I) * R_pq_pown diff --git a/tests/ewalds.c b/tests/ewalds.c index ebcddd1..faf27ec 100644 --- a/tests/ewalds.c +++ b/tests/ewalds.c @@ -175,7 +175,7 @@ ewaldtest_triang_results *ewaldtest_triang(const ewaldtest_triang_params p) { complex double eimf = cexp(I*m*arg_pq); results->regsigmas_416[y] += 4*M_PI*ipow(n)/p.k/A - * eimf * legendres[gsl_sf_legendre_array_index(n,m)] + * eimf * legendres[gsl_sf_legendre_array_index(n,abs(m))] / denom; } }