Skip to content

Commit 943db24

Browse files
committed
fix: ensure median() implementation does not sort array in place
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
1 parent 7f6e5d9 commit 943db24

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/utils.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,11 @@ const average = (samples: number[]) => {
258258
* @returns the variance of the sample
259259
*/
260260
const variance = (samples: number[], avg = average(samples)) => {
261+
if (samples.length <= 1) {
262+
return 0
263+
}
261264
const sumSq = samples.reduce((sum, n) => sum + (n - avg) ** 2, 0)
262-
return samples.length <= 1 ? 0 : sumSq / (samples.length - 1)
265+
return sumSq / (samples.length - 1)
263266
}
264267

265268
/**
@@ -308,7 +311,7 @@ const medianSorted = (samples: number[]) => quantileSorted(samples, 0.5)
308311
* @returns the median of the sample
309312
*/
310313
const median = (samples: number[]) => {
311-
return medianSorted(samples.sort((a, b) => a - b))
314+
return medianSorted([...samples].sort((a, b) => a - b))
312315
}
313316

314317
/**

0 commit comments

Comments
 (0)