29 lines
706 B
Python
29 lines
706 B
Python
import math
|
|
from typing import Iterable, List
|
|
|
|
|
|
def round_to_multiple(value: float, multiple: float) -> float:
|
|
if multiple == 0:
|
|
return value
|
|
return round(value / multiple) * multiple
|
|
|
|
|
|
def cumulative_sums(values: List[float]) -> List[float]:
|
|
if not values:
|
|
return []
|
|
results = [0.0] * len(values)
|
|
results[0] = values[0]
|
|
for i in range(1, len(values)):
|
|
results[i] = results[i - 1] + values[i]
|
|
return results
|
|
|
|
|
|
def standard_deviation(values: Iterable[float]) -> float:
|
|
vals = list(values)
|
|
n = len(vals)
|
|
if n <= 1:
|
|
return 0.0
|
|
avg = sum(vals) / n
|
|
sum_sq = sum((v - avg) ** 2 for v in vals)
|
|
return math.sqrt(sum_sq / (n - 1))
|