summaryrefslogtreecommitdiff
path: root/game/python-extra/utils/math.py
diff options
context:
space:
mode:
Diffstat (limited to 'game/python-extra/utils/math.py')
-rw-r--r--game/python-extra/utils/math.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/game/python-extra/utils/math.py b/game/python-extra/utils/math.py
new file mode 100644
index 0000000..eaae187
--- /dev/null
+++ b/game/python-extra/utils/math.py
@@ -0,0 +1,16 @@
+import collections
+import operator
+
+# py3 doesn't include reduce as a builtin
+try:
+ reduce
+except NameError:
+ from functools import reduce
+
+
+def product(sequence, initial=1):
+ """like the built-in sum, but for multiplication."""
+ if not isinstance(sequence, collections.Iterable):
+ raise TypeError("'{}' object is not iterable".format(type(sequence).__name__))
+
+ return reduce(operator.mul, sequence, initial)