Anonymous user
Averages/Simple moving average: Difference between revisions
→{{header|D}}: Change to handle Intergral input, while output keep floating
(→{{header|Python}}: Link to collections.deque info.) |
(→{{header|D}}: Change to handle Intergral input, while output keep floating) |
||
Line 285:
=={{header|D}}==
<lang d>import std.stdio ;
import std.traits ;
CommonType!(T, float) delegate(T) Sma(T)(int period) {▼
alias CommonType!(T, float) R ;
▲T delegate(T) Sma(T)(int period) {
T[] data = new T[](period);
T drop, sum = cast(T) 0 ;
Line 293 ⟶ 296:
foreach(ref e ; data) e = cast(T)0 ; // D initialize float type to NaN
drop = data[index] ;
data[index] = v ;
Line 299 ⟶ 302:
sum += ( v - drop ) ;
filled = (filled >= period) ? period : filled + 1 ;
return (cast(R) sum) / filled ;
}
return &smaAcc ;
}
void main() {
auto s3 = Sma!(
auto s5 = Sma!(double)(5) ;
foreach(e ; [1, 2, 3, 4, 5, 5, 4, 3, 2, 1])
writefln("added %d , 3 period sma = %f , 5 period sma = %f", e, s3(e), s5(e)) ;
}</lang>
|