diff options
| author | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2017-11-03 15:56:35 -0400 | 
|---|---|---|
| committer | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2017-11-03 15:56:35 -0400 | 
| commit | 181db84a8ffb26e436a43bb268fe5ef060206e66 (patch) | |
| tree | 25e04455ed47daa760f3fadf8aae4ddaa679c192 | |
| parent | c93a56cb0b5e52242667b918a6800384498b9b12 (diff) | |
| download | c++-181db84a8ffb26e436a43bb268fe5ef060206e66.tar.gz c++-181db84a8ffb26e436a43bb268fe5ef060206e66.tar.bz2 c++-181db84a8ffb26e436a43bb268fe5ef060206e66.zip | |
add last term to the convex function
| -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];      } | 
