Adjust calculation of kurtosis to avoid subtracting huge numbers from
authorBen Pfaff <blp@gnu.org>
Wed, 14 Apr 2004 02:26:37 +0000 (02:26 +0000)
committerBen Pfaff <blp@gnu.org>
Wed, 14 Apr 2004 02:26:37 +0000 (02:26 +0000)
huge numbers, on Michael Kiefte's advice.

src/ChangeLog
src/moments.c

index 1fdf0d54e451195d1425d1fc135d04d346f1d66d..6db983d6fdac68686b29921ce67b2682cf2dccd4 100644 (file)
@@ -1,3 +1,9 @@
+Tue Apr 13 19:24:15 2004  Ben Pfaff  <blp@gnu.org>
+
+       * moments.c (calc_moments): Adjust calculation of kurtosis to
+       avoid subtracting huge numbers from huge numbers, on Michael
+       Kiefte's advice.
+
 Sun Apr 11 14:22:12 2004  Ben Pfaff  <blp@gnu.org>
 
        Rework moments routines for improved numerical stability based on
index c993f7ae0a6d3c65e3c67f8fa891e5fa12b60771..c4f3fe18db76573a38c5a8869540f64a0a6aa19a 100644 (file)
@@ -62,9 +62,9 @@ calc_moments (enum moment max_moment,
             }
           if (max_moment >= MOMENT_KURTOSIS && kurtosis != NULL && w > 3.)
             {
-              double g2 = ((w * (w + 1.) * d4
-                            - 3. * pow2 (d2) * (w - 1.))
-                           / ((w - 1.) * (w - 2.) * (w - 3.) * pow2 (s2)));
+              double den = (w - 2.) * (w - 3.) * pow2 (s2);
+              double g2 = (w * (w + 1) * d4 / (w - 1.) / den
+                           - 3. * pow2 (d2) / den);
               if (finite (g2))
                 *kurtosis = g2; 
             }