gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r18278 - gnunet/src/nse


From: gnunet
Subject: [GNUnet-SVN] r18278 - gnunet/src/nse
Date: Wed, 23 Nov 2011 15:32:38 +0100

Author: grothoff
Date: 2011-11-23 15:32:38 +0100 (Wed, 23 Nov 2011)
New Revision: 18278

Modified:
   gnunet/src/nse/gnunet-service-nse.c
Log:
simpler alternative to the West algorithm to convince ourselves that we can 
still do averages...

Modified: gnunet/src/nse/gnunet-service-nse.c
===================================================================
--- gnunet/src/nse/gnunet-service-nse.c 2011-11-23 14:28:43 UTC (rev 18277)
+++ gnunet/src/nse/gnunet-service-nse.c 2011-11-23 14:32:38 UTC (rev 18278)
@@ -308,14 +308,16 @@
   double std_dev;
   double variance;
   double val;
+  double nsize;
+
+  /* Weighted incremental algorithm for stddev according to West (1979) */
+#if WEST
+  double sumweight;
   double weight;
-  double sumweight;
   double q;
   double r;
   double temp;
-  double nsize;
 
-  /* Weighted incremental algorithm for stddev according to West (1979) */
   mean = 0.0;
   sum = 0.0;
   sumweight = 0.0;
@@ -335,6 +337,24 @@
     sumweight = temp;
   }
   variance = sum / (sumweight - 1.0);
+#else
+  /* trivial version for debugging */
+  double vsq;
+
+  /* non-weighted trivial version */
+  sum = 0.0;
+  vsq = 0.0;
+  for (i = 0; i < estimate_count; i++)
+  {
+    val = htonl (size_estimate_messages
+                [(estimate_index - i +
+                  HISTORY_SIZE) % HISTORY_SIZE].matching_bits);
+    sum += val;
+    vsq += val * val;    
+  }  
+  mean = sum / estimate_count;
+  variance = vsq + mean * mean - 2 * mean * sum; // terrible for numerical 
stability...
+#endif
   GNUNET_assert (variance >= 0);
   std_dev = sqrt (variance);
   current_std_dev = std_dev;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]