diff maths/KLDivergence.cpp @ 74:769da847732b

* A few fixes prompted by vamp-plugin-tester
author cannam
date Mon, 08 Jun 2009 12:30:20 +0000
parents 499d438b52ba
children e5907ae6de17
line wrap: on
line diff
--- a/maths/KLDivergence.cpp	Fri Jun 05 15:12:39 2009 +0000
+++ b/maths/KLDivergence.cpp	Mon Jun 08 12:30:20 2009 +0000
@@ -20,10 +20,16 @@
     int sz = m1.size();
 
     double d = -2.0 * sz;
+    double small = 1e-20;
 
     for (int k = 0; k < sz; ++k) {
-        d += v1[k] / v2[k] + v2[k] / v1[k];
-        d += (m1[k] - m2[k]) * (1.0 / v1[k] + 1.0 / v2[k]) * (m1[k] - m2[k]);
+
+        double kv1 = v1[k] + small;
+        double kv2 = v2[k] + small;
+        double km = (m1[k] - m2[k]) + small;
+
+        d += kv1 / kv2 + kv2 / kv1;
+        d += km * (1.0 / kv1 + 1.0 / kv2) * km;
     }
 
     d /= 2.0;