exponentialMovingAverage function
Exponential moving average: alpha in (0,1]; first value = first input.
Implementation
List<double> exponentialMovingAverage(List<num> values, double alpha) {
if (values.isEmpty) return <double>[];
if (alpha <= 0 || alpha > 1) return values.map((num x) => x.toDouble()).toList();
final List<double> out = <double>[];
double prev = values[0].toDouble();
out.add(prev);
for (int i = 1; i < values.length; i++) {
prev = alpha * values[i].toDouble() + (1 - alpha) * prev;
out.add(prev);
}
return out;
}