Averages/Simple moving average: Difference between revisions

Content added Content deleted
(→‎{{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
 
TR smaAcc(T v) {
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!(doubleint)(3) ;
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>