Averages/Simple moving average: Difference between revisions

Content added Content deleted
No edit summary
(Changed to use "deques" instead of "queues" as the latter is no longer supported. Changed output format to that of version 1.4.)
Line 2,706: Line 2,706:


=={{header|Nim}}==
=={{header|Nim}}==
<lang nim>import queues
<lang nim>import deques


proc simplemovingaverage(period: int): auto =
proc simplemovingaverage(period: int): auto =
Line 2,713: Line 2,713:
var
var
summ, n = 0.0
summ, n = 0.0
values = initQueue[float]()
values: Deque[float]
for i in 1..period:
for i in 1..period:
values.add(0)
values.addLast(0)


proc sma(x: float): float =
proc sma(x: float): float =
values.add(x)
values.addLast(x)
summ += x - values.dequeue()
summ += x - values.popFirst()
n = min(n+1, float(period))
n = min(n+1, float(period))
result = summ / n
result = summ / n
Line 2,735: Line 2,735:
for i in countdown(5,1): echo sma2(float(i))</lang>
for i in countdown(5,1): echo sma2(float(i))</lang>
{{out}}
{{out}}
<pre>1.0000000000000000e+00
<pre>1.0
1.5
1.5000000000000000e+00
2.0
2.0000000000000000e+00
3.0
3.0000000000000000e+00
4.0
4.0000000000000000e+00
4.666666666666667
4.6666666666666670e+00
4.666666666666667
4.6666666666666670e+00
4.0
4.0000000000000000e+00
3.0
3.0000000000000000e+00
2.0
2.0000000000000000e+00


1.0
1.0000000000000000e+00
1.5
1.5000000000000000e+00
2.0
2.0000000000000000e+00
2.5
2.5000000000000000e+00
3.0
3.0000000000000000e+00
3.8
3.7999999999999998e+00
4.2
4.2000000000000002e+00
4.2
4.2000000000000002e+00
3.8
3.7999999999999998e+00
3.0000000000000000e+00</pre>
3.0</pre>


=={{header|Objeck}}==
=={{header|Objeck}}==