41fd2ae8614ea0c952d3c96ae4f158ceb7e37a8b
braney
  Wed Jun 1 15:40:04 2016 -0700
oops... an uninitialized variable in aveStats

diff --git src/lib/aveStats.c src/lib/aveStats.c
index 21745e4..843f4a8 100644
--- src/lib/aveStats.c
+++ src/lib/aveStats.c
@@ -1,84 +1,84 @@
 /* Copyright (C) 2016 The Regents of the University of California 
  * See README in this or parent directory for licensing information. */
 
 #include "common.h"
 #include "aveStats.h"
 
 static int cmpDouble(const void *va, const void *vb)
 /* Compare two doubles. */
 {
 const double *a = va;
 const double *b = vb;
 double diff = *a - *b;
 if (diff < 0)
    return -1;
 else if (diff > 0)
    return 1;
 else
    return 0;
 }
 
 static inline double calcMedian(double *array, int count)
 /* Calculate the median of a list of numbers. */
 {
 // if the array has an odd number of elements choose the center element
 if (count & 1) 
     return array[count / 2];
 
 // return the mean of the two central elements if the number of elements is even
 return (array[count/2 - 1] + array[count/2]) / 2.0;
 }
 
 struct aveStats *aveStatsCalc(double *array, unsigned count)
 /* Compute statistics on an unsorted array of doubles. Use Tukey hinge method for quartiles. */
 {
 struct aveStats *as;
 
 AllocVar(as);
 as->count = count;
 
 // special case for arrays of size 0 and 1
 if (count == 0)
     return as;
 else if (count == 1)
     {
     as->q1 = as->median = as->q3 = as->average = as->minVal = as->maxVal = as->total = array[0];
     as->var = as->stdDev = 0.0;
     return as;
     }
 
 qsort(array, count, sizeof array[0], cmpDouble);
 
 as->minVal = array[0];
 as->maxVal = array[count-1];
 
 double *lastValue = &array[count];
 double *valuePtr;
 
-double total;
+double total = 0;
 for( valuePtr = array; valuePtr < lastValue; valuePtr++)
     total += *valuePtr;
 as->total = total;
 
 double average;
 as->average = average = total/count;
 
 double oneVar, totalVar = 0;
 for( valuePtr = array; valuePtr < lastValue; valuePtr++)
     {
     oneVar = (average - *valuePtr);
     totalVar += oneVar * oneVar;
     }
 
 as->var = totalVar;
 as->var /= count-1;  // use sample standard deviation
 as->stdDev = sqrt(as->var);
 
 as->median = calcMedian(array, count);
 
 unsigned halfSize = count/2 + (count & 1);
 as->q1 = calcMedian(array, halfSize);
 as->q3 = calcMedian(&array[count/2], halfSize);
 
 return as;
 }