Averages/Simple moving average: Difference between revisions
Content added Content deleted
m (→{{header|Objective-C}}: modernize) |
(Updated both D entry) |
||
Line 726:
auto sma(T, int period)() {
T[period] data = 0;
T sum = 0;
int index,
sum += -data[index] + v;
data[index] = v;
index = (index + 1) % period;
return
};
}
void main() {
foreach (immutable e; [1, 2, 3, 4, 5, 5, 4, 3, 2, 1])
writefln("Added %d, sma(3) = %f, sma(5) = %f",
e, s3(e), s5(e));
Line 759 ⟶ 758:
Added 2, sma(3) = 3.000000, sma(5) = 3.800000
Added 1, sma(3) = 2.000000, sma(5) = 3.000000</pre>
===Using a Struct===
This version avoids the heap allocation of the closure, same output:
Line 766:
T[period] data = 0;
T sum = 0;
int index,
auto opCall(in T v) pure nothrow {
Line 772:
data[index] = v;
index = (index + 1) % period;
return
}
}
Line 781:
SMA!(double, 5) s5;
foreach (immutable e; [1, 2, 3, 4, 5, 5, 4, 3, 2, 1])
writefln("Added %d, sma(3) = %f, sma(5) = %f",
e, s3(e), s5(e));
|