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 |
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 ) ; |
||
filled = filled >= period ? period : filled + 1 ; |
|||
return sum / filled ; |
|||
else |
|||
count = ++filled ; |
|||
return sum / count; |
|||
} |
} |
||