diff --git a/src/mol-util/array.ts b/src/mol-util/array.ts new file mode 100644 index 0000000000000000000000000000000000000000..36bb291267f2ad65324d86548d40dacfca5c5e34 --- /dev/null +++ b/src/mol-util/array.ts @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. + * + * @author Alexander Rose <alexander.rose@weirdbyte.de> + */ + +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 +} + +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 +} + +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 +} + +export function arrayMean(array: Helpers.NumberArray, stride = 1, offset = 0) { + return arraySum(array, stride, offset) / (array.length / stride) +} + +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) +} \ No newline at end of file