double doubleMedian(int count, double *array) /* Return median value in array. This will sort * the array as a side effect. */ { double median; doubleSort(count, array); if ((count&1) == 1) median = array[count>>1]; else {
double maDoubleMedianHandleNA(int count, double *array) /* Return median value in array, skipping the NAs. */ /* This one will sort the inputted array as a side-effect. */ { double median, *pastNA; int countSansNA = count; doubleSort(count, array); pastNA = array; while ((countSansNA > 0) && (*pastNA <= MICROARRAY_MISSING_DATA)) { pastNA++; countSansNA--; } if (countSansNA < 1) return MICROARRAY_MISSING_DATA; if ((countSansNA&1) == 1) median = pastNA[countSansNA>>1]; else {