Averages/Simple moving average: Difference between revisions

Content added Content deleted
(→‎{{header|D}}: replaced incorrect version)
(→‎{{header|D}}: replace _if_ statement with conditional expressions)
Line 289: Line 289:
T[] data = new T[](period);
T[] data = new T[](period);
T drop, sum = cast(T) 0 ;
T drop, sum = cast(T) 0 ;
int index, filled, count ;
int index, filled ;


foreach(ref e ; data) e = cast(T)0 ; // D initialize float type to NaN
foreach(ref e ; data) e = cast(T)0 ; // D initialize float type to NaN
Line 298: Line 298:
index = (index + 1) % period ;
index = (index + 1) % period ;
sum += ( v - drop ) ;
sum += ( v - drop ) ;
if(filled >= period)
filled = filled >= period ? period : filled + 1 ;
count = period ;
return sum / filled ;
else
count = ++filled ;
return sum / count;
}
}