(values, p, valueof = number)
| 33 | } |
| 34 | |
| 35 | export function quantileIndex(values, p, valueof = number) { |
| 36 | if (isNaN(p = +p)) return; |
| 37 | numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values))); |
| 38 | if (p <= 0) return minIndex(numbers); |
| 39 | if (p >= 1) return maxIndex(numbers); |
| 40 | var numbers, |
| 41 | index = Uint32Array.from(values, (_, i) => i), |
| 42 | j = numbers.length - 1, |
| 43 | i = Math.floor(j * p); |
| 44 | quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j])); |
| 45 | i = greatest(index.subarray(0, i + 1), (i) => numbers[i]); |
| 46 | return i >= 0 ? i : -1; |
| 47 | } |
no test coverage detected
searching dependent graphs…