[Top][All Lists]
[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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r18278 - gnunet/src/nse,
gnunet <=