export function computeStatistics()

in packages/core/src/utils.js [31:62]


export function computeStatistics(numbers) {
  if (!Array.isArray(numbers) || numbers.length === 0) {
    throw new Error("Input must be a non-empty array of numbers");
  }

  const n = numbers.length;
  const sum = numbers.reduce((a, b) => a + b, 0);
  const mean = sum / n;

  // Sort the array for percentile calculations
  const sorted = numbers.toSorted((a, b) => a - b);
  const min = sorted.at(0);
  const max = sorted.at(-1);

  // Calculate standard deviation (population std dev)
  const variance = numbers.reduce((acc, num) => acc + (num - mean) ** 2, 0) / n;
  const stdDev = Math.sqrt(variance);

  return {
    min,
    max,
    mean,
    median: getPercentile(sorted, 50),
    p1: getPercentile(sorted, 1),
    p5: getPercentile(sorted, 5),
    p10: getPercentile(sorted, 10),
    p90: getPercentile(sorted, 90),
    p95: getPercentile(sorted, 95),
    p99: getPercentile(sorted, 99),
    stdDev,
  };
}