ixfx
Version:
A framework for programming interactivity
86 lines (85 loc) • 2.07 kB
JavaScript
// src/numbers/NumericArrays.ts
var weight = (data, fn) => {
const f = fn ?? ((x) => x);
const valid = validNumbers(data);
return valid.map(
(v, index) => {
const x = v * f(index / (valid.length - 1));
return x;
}
);
};
var validNumbers = (data) => data.filter((d) => typeof d === `number` && !Number.isNaN(d));
var dotProduct = (values) => {
let r = 0;
const length = values[0].length;
for (let index = 0; index < length; index++) {
let t = 0;
for (const [p, value] of values.entries()) {
if (p === 0) t = value[index];
else {
t *= value[index];
}
}
r += t;
}
return r;
};
var average = (data) => {
if (data === void 0) throw new Error(`data parameter is undefined`);
const valid = validNumbers(data);
const total2 = valid.reduce((accumulator, v) => accumulator + v, 0);
return total2 / valid.length;
};
var min = (data) => Math.min(...validNumbers(data));
var maxIndex = (data) => data.reduce(
(bestIndex, value, index, array) => value > array[bestIndex] ? index : bestIndex,
0
);
var minIndex = (...data) => data.reduce(
(bestIndex, value, index, array) => value < array[bestIndex] ? index : bestIndex,
0
);
var max = (data) => Math.max(...validNumbers(data));
var total = (data) => data.reduce((previous, current) => {
if (typeof current !== `number`) return previous;
if (Number.isNaN(current)) return previous;
if (!Number.isFinite(current)) return previous;
return previous + current;
}, 0);
var maxFast = (data) => {
let m = Number.MIN_SAFE_INTEGER;
for (const datum of data) {
m = Math.max(m, datum);
}
return m;
};
var totalFast = (data) => {
let m = 0;
for (const datum of data) {
m += datum;
}
return m;
};
var minFast = (data) => {
let m = Number.MIN_SAFE_INTEGER;
for (const datum of data) {
m = Math.min(m, datum);
}
return m;
};
export {
weight,
validNumbers,
dotProduct,
average,
min,
maxIndex,
minIndex,
max,
total,
maxFast,
totalFast,
minFast
};
//# sourceMappingURL=chunk-YG33FJI6.js.map