NUMBERS-35: Typo (sign error). Unit tests are missing (see JIRA issue).
Thanks to Stian Soiland-Reyes for spotting that the code did not agree with the referenced formula. Project: http://git-wip-us.apache.org/repos/asf/commons-numbers/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-numbers/commit/14f6f851 Tree: http://git-wip-us.apache.org/repos/asf/commons-numbers/tree/14f6f851 Diff: http://git-wip-us.apache.org/repos/asf/commons-numbers/diff/14f6f851 Branch: refs/heads/master Commit: 14f6f851b179249cb74b6dfa5b3c8d193e607186 Parents: f271063 Author: Gilles Sadowski <gil...@harfang.homelinux.org> Authored: Mon May 8 12:15:07 2017 +0200 Committer: Gilles Sadowski <gil...@harfang.homelinux.org> Committed: Mon May 8 12:15:07 2017 +0200 ---------------------------------------------------------------------- .../main/java/org/apache/commons/numbers/gamma/Digamma.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/14f6f851/commons-numbers-gamma/src/main/java/org/apache/commons/numbers/gamma/Digamma.java ---------------------------------------------------------------------- diff --git a/commons-numbers-gamma/src/main/java/org/apache/commons/numbers/gamma/Digamma.java b/commons-numbers-gamma/src/main/java/org/apache/commons/numbers/gamma/Digamma.java index ddcee55..a10f1df 100644 --- a/commons-numbers-gamma/src/main/java/org/apache/commons/numbers/gamma/Digamma.java +++ b/commons-numbers-gamma/src/main/java/org/apache/commons/numbers/gamma/Digamma.java @@ -30,11 +30,11 @@ public class Digamma { /** S limit. */ private static final double S_LIMIT = 1e-5; /** Fraction. */ - private static final double F_1_12 = 1d / 12; + private static final double F_M1_12 = -1d / 12; /** Fraction. */ private static final double F_1_120 = 1d / 120; /** Fraction. */ - private static final double F_1_252 = 1d / 252; + private static final double F_M1_252 = -1d / 252; /** * Computes the digamma function. @@ -80,7 +80,7 @@ public class Digamma { // 1 1 1 1 // log(x) - --- - ------ + ------- - ------- // 2 x 12 x^2 120 x^4 252 x^6 - digamma += Math.log(x) - 0.5 / x - inv * (F_1_12 + inv * (F_1_120 - F_1_252 * inv)); + digamma += Math.log(x) - 0.5 / x + inv * (F_M1_12 + inv * (F_1_120 + F_M1_252 * inv)); return digamma; }