this repo has no description
1function average(values) {
2 let total = 0;
3
4 for (let i = 0; i < values.length; i += 1) {
5 total += values[i];
6 }
7
8 return total / values.length;
9}
10
11function median(values) {
12 const half = Math.floor(values.length / 2);
13
14 values.sort((a, b) => a - b);
15
16 if (values.length % 2) return values[half];
17
18 return (values[half - 1] + values[half]) / 2;
19}
20
21function quartile(values, percentile) {
22 values.sort((a, b) => a - b);
23 const pos = (values.length - 1) * percentile;
24 const base = Math.floor(pos);
25 const rest = pos - base;
26
27 if (values[base + 1] !== undefined) {
28 return values[base] + rest * (values[base + 1] - values[base]);
29 }
30
31 return values[base];
32}
33
34function jitter(values) {
35 // Average distance between consecutive latency measurements...
36 let jitters = [];
37
38 for (let i = 0; i < values.length - 1; i += 1) {
39 jitters.push(Math.abs(values[i] - values[i+1]));
40 }
41
42 return average(jitters);
43}
44
45exports.average = average;
46exports.median = median;
47exports.quartile = quartile;
48exports.jitter = jitter;