Make loadfile work.
[python_utils.git] / math_utils.py
index 2cacc2f628ee90761acdce30442cb3d1beb9f1de..62771231bb67925483bcbf714fe2a8373b591058 100644 (file)
@@ -1,5 +1,6 @@
 #!/usr/bin/env python3
 
+import functools
 import math
 from typing import List
 from heapq import heappush, heappop
@@ -43,7 +44,7 @@ def gcd_floats(a: float, b: float) -> float:
 
 def gcd_float_sequence(lst: List[float]) -> float:
     if len(lst) <= 0:
-        raise Exception("Need at least one number")
+        raise ValueError("Need at least one number")
     elif len(lst) == 1:
         return lst[0]
     assert len(lst) >= 2
@@ -60,6 +61,23 @@ def truncate_float(n: float, decimals: int = 2):
     return int(n * multiplier) / multiplier
 
 
+def percentage_to_multiplier(percent: float) -> float:
+    multiplier = percent / 100
+    multiplier += 1.0
+    return multiplier
+
+
+def multiplier_to_percent(multiplier: float) -> float:
+    percent = multiplier
+    if percent > 0.0:
+        percent -= 1.0
+    else:
+        percent = 1.0 - percent
+    percent *= 100.0
+    return percent
+
+
[email protected]_cache(maxsize=1024, typed=True)
 def is_prime(n: int) -> bool:
     """Returns True if n is prime and False otherwise"""
     if not isinstance(n, int):