diff src/DistanceMetric.cpp @ 197:547bea29ad89 re-minimise

Increase noise for compact types
author Chris Cannam
date Fri, 27 Feb 2015 09:07:54 +0000
parents fa005e5e0953
children 827176d3b6ec
line wrap: on
line diff
--- a/src/DistanceMetric.cpp	Fri Feb 27 08:55:39 2015 +0000
+++ b/src/DistanceMetric.cpp	Fri Feb 27 09:07:54 2015 +0000
@@ -109,6 +109,11 @@
     assert(f2.size() == f1.size());
     int featureSize = static_cast<int>(f1.size());
 
+    double minNoise = 0.0;
+#ifdef USE_COMPACT_TYPES
+    minNoise = 1.0 / m_params.scale;
+#endif
+    
     if (m_params.metric == Cosine) {
 
         double num = 0, denom1 = 0, denom2 = 0;
@@ -122,7 +127,9 @@
         d = 1.0 - (num / (eps + sqrt(denom1 * denom2)));
 
         if (m_params.noise == AddNoise) {
-            d += 1e-2;
+            double noise = 1e-2;
+            if (noise < minNoise) noise = minNoise;
+            d += noise;
         }
         if (d > 1.0) d = 1.0;
         
@@ -143,8 +150,9 @@
         d = sqrt(d);
     }
 
-    double noise = 1e-3 * featureSize;
     if (m_params.noise == AddNoise) {
+        double noise = 1e-3 * featureSize;
+        if (noise < minNoise) noise = minNoise;
         d += noise;
         sum += noise;
     }