ea5b4301814c1df9f2a0f3b2d9e0d2f06b22635e
braney
  Tue May 24 18:37:10 2016 -0700
hgTables support , some display changes, and a better hgc
page for longTabix

diff --git src/lib/aveStats.c src/lib/aveStats.c
index fba1586..47578b2 100644
--- src/lib/aveStats.c
+++ src/lib/aveStats.c
@@ -1,81 +1,84 @@
 #include "common.h"
 #include "aveStats.h"
 
 static int cmpDouble(const void *va, const void *vb)
 /* Compare two slNames. */
 {
 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;
 }
 
 struct aveStats *aveStatsCalc(double *array, int count)
 /* Compute stats on sorted array */
 {
-qsort(array, count, sizeof(array[0]), cmpDouble);
-
 struct aveStats *as;
 
 AllocVar(as);
+if (count == 0)
+    return as;
+
+qsort(array, count, sizeof(array[0]), cmpDouble);
+
 as->count = count;
 
 double val, minVal = DBL_MAX, maxVal = -DBL_MAX;
 double total = 0, average;
 int i;
 int q1Index, q3Index;		/*	quartile positions	*/
 double oneVar, totalVar = 0;
 
 for (i=0; i<count; ++i)
     {
     val = array[i];
     if (minVal > val) minVal = val;
     if (maxVal < val) maxVal = val;
     total += val;
     }
 
 as->average = average = total/count;
 as->minVal = minVal;
 as->maxVal = maxVal;
 as->total = total;
 
 q1Index = (count+1)/4;		/*	one fourth, rounded down	*/
 q3Index = (3*(count+1))/4;	/*	three fourths, rounded down	*/
 if (q1Index < (count-1))
     {
     double range = array[q1Index+1] - array[q1Index];
     as->q1 = array[q1Index] +
         ((((double)count+1.0)/4.0)-(double)q1Index)*range;
     }
 else
     as->q1 = array[q1Index];
 if (q3Index < (count-1))
     {
     double range = array[q3Index+1] - array[q3Index];
     as->q3 = array[q3Index] +
         ((3.0*((double)count+1.0)/4.0)-(double)q3Index)*range;
     }
 else
     as->q3 = array[q3Index];
 
 for (i=0; i<count; ++i)
     {
     val = array[i];
     oneVar = (average-val);
     totalVar += oneVar*oneVar;
     }
 
 as->var = totalVar;
 if (count > 1)
     as->var /= count-1;
 as->stdDev = sqrt(as->var);
 as->median = array[count/2];
 
 return as;
 }