From e5a04edc4fea2083b2195f97a4036fc506777e7b Mon Sep 17 00:00:00 2001
From: Alexander Rose <alex.rose@rcsb.org>
Date: Fri, 29 Jun 2018 15:26:55 -0700
Subject: [PATCH] added array helper function

---
 src/mol-util/array.ts | 44 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 src/mol-util/array.ts

diff --git a/src/mol-util/array.ts b/src/mol-util/array.ts
new file mode 100644
index 000000000..36bb29126
--- /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
-- 
GitLab