diff --git a/extra/math/extras/extras-tests.factor b/extra/math/extras/extras-tests.factor index 2f71ee3a40..5514932025 100644 --- a/extra/math/extras/extras-tests.factor +++ b/extra/math/extras/extras-tests.factor @@ -18,3 +18,5 @@ IN: math.extras.test [ 6 [1,b] 1/2 exponential-moving-average ] unit-test { { 1 3 3 5 5 7 7 9 9 11 } } [ 10 [1,b] 2 exponential-moving-average ] unit-test + +{ { 2 5 5 4 3 } } [ { 1 2 5 6 1 4 3 } 3 moving-median ] unit-test diff --git a/extra/math/extras/extras.factor b/extra/math/extras/extras.factor index 88d40ac9cb..9bc4d4409c 100644 --- a/extra/math/extras/extras.factor +++ b/extra/math/extras/extras.factor @@ -87,7 +87,10 @@ PRIVATE> check-legendere jacobi ; : moving-average ( seq n -- newseq ) - clump [ mean ] map ; + [ mean ] map ; : exponential-moving-average ( seq a -- newseq ) [ 1 ] 2dip [ [ dupd swap - ] dip * + dup ] curry map nip ; + +: moving-median ( u n -- v ) + [ median ] map ;