timesync
Version:
Time synchronization between peers
56 lines (45 loc) • 1.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.add = add;
exports.compare = compare;
exports.mean = mean;
exports.median = median;
exports.std = std;
exports.sum = sum;
exports.variance = variance;
// basic statistical functions
function compare(a, b) {
return a > b ? 1 : a < b ? -1 : 0;
}
function add(a, b) {
return a + b;
}
function sum(arr) {
return arr.reduce(add);
}
function mean(arr) {
return sum(arr) / arr.length;
}
function std(arr) {
return Math.sqrt(variance(arr));
}
function variance(arr) {
if (arr.length < 2) return 0;
var _mean = mean(arr);
return arr.map(function (x) {
return Math.pow(x - _mean, 2);
}).reduce(add) / (arr.length - 1);
}
function median(arr) {
if (arr.length < 2) return arr[0];
var sorted = arr.slice().sort(compare);
if (sorted.length % 2 === 0) {
// even
return (sorted[arr.length / 2 - 1] + sorted[arr.length / 2]) / 2;
} else {
// odd
return sorted[(arr.length - 1) / 2];
}
}