UNPKG

timesync

Version:

Time synchronization between peers

56 lines (45 loc) 1.02 kB
"use strict"; 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]; } }