diff options
-rw-r--r-- | lib/convex.c | 16 | ||||
-rw-r--r-- | src/wolff.c | 2 |
2 files changed, 12 insertions, 6 deletions
diff --git a/lib/convex.c b/lib/convex.c index 4816aeb..096504d 100644 --- a/lib/convex.c +++ b/lib/convex.c @@ -66,22 +66,28 @@ double *get_convex_minorant(uint64_t n, double *Gammas) { pos = L; - double *g = (double *)calloc(n, sizeof(double)); + double *g = (double *)calloc(n + 1, sizeof(double)); double rho = 0; - for (uint64_t i = 0; i < n; i++) { + for (uint64_t i = 0; i < n + 1; i++) { if (i > pos->next->p->x) { pos = pos->next; } g[i] = pos->p->y + ((double)i - (double)(pos->p->x)) * (pos->next->p->y - pos->p->y) / ((double)(pos->next->p->x) - (double)(pos->p->x)); - if (Gammas[i] - g[i] > rho) { - rho = Gammas[i] - g[i]; + if (i <n) { + if (Gammas[i] - g[i] > rho) { + rho = Gammas[i] - g[i]; + } + } else { + if (0 - g[i] > rho) { + rho = 0 - g[i]; + } } } - for (uint64_t i = 0; i < n; i++) { + for (uint64_t i = 0; i < n + 1; i++) { g[i] += rho / 2; } diff --git a/src/wolff.c b/src/wolff.c index c532be4..f3f45cf 100644 --- a/src/wolff.c +++ b/src/wolff.c @@ -243,7 +243,7 @@ int main(int argc, char *argv[]) { double ttau = - 0.5; - for (uint64_t i = 0; i < n; i++) { + for (uint64_t i = 0; i < n + 1; i++) { ttau += conv_Gamma[i]; } |