-
Alexander Rose authoredAlexander Rose authored
array.ts 1.60 KiB
/**
* Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
// TODO move to mol-math as Vector???
/** Get the maximum value in an array */
export function arrayMax(array: Helpers.NumberArray) {
let max = -Infinity
for (let i = 0, il = array.length; i < il; ++i) {
if (array[i] > max) max = array[i]
}
return max
}
/** Get the minimum value in an array */
export function arrayMin(array: Helpers.NumberArray) {
let min = Infinity
for (let i = 0, il = array.length; i < il; ++i) {
if (array[i] < min) min = array[i]
}
return min
}
/** Get the sum of values in an array */
export function arraySum(array: Helpers.NumberArray, stride = 1, offset = 0) {
const n = array.length
let sum = 0
for (let i = offset; i < n; i += stride) {
sum += array[i]
}
return sum
}
/** Get the mean of values in an array */
export function arrayMean(array: Helpers.NumberArray, stride = 1, offset = 0) {
return arraySum(array, stride, offset) / (array.length / stride)
}
/** Get the root mean square of values in an array */
export function arrayRms(array: Helpers.NumberArray) {
const n = array.length
let sumSq = 0
for (let i = 0; i < n; ++i) {
const di = array[i]
sumSq += di * di
}
return Math.sqrt(sumSq / n)
}
/** Fill an array with serial numbers starting from 0 */
export function fillSerial<T extends Helpers.NumberArray> (array: T) {
const n = array.length
for (let i = 0; i < n; ++i) array[ i ] = i
return array
}