math.extras: adding sum-squares and sum-cubes.

db4
John Benediktsson 2014-06-10 18:28:21 -07:00
parent acc06aeeee
commit 77d4d5179c
2 changed files with 15 additions and 0 deletions

View File

@ -142,3 +142,9 @@ IN: math.extras.test
{ { 0 1 2 3 0 0 1 } } [ { 1 2 3 3 2 1 2 } [ <= ] monotonic-count ] unit-test { { 0 1 2 3 0 0 1 } } [ { 1 2 3 3 2 1 2 } [ <= ] monotonic-count ] unit-test
{ 4 } [ { 1 2 3 1 2 3 4 5 } [ < ] max-monotonic-count ] unit-test { 4 } [ { 1 2 3 1 2 3 4 5 } [ < ] max-monotonic-count ] unit-test
{ 2470 } [ 20 iota sum-squares ] unit-test
{ 2470 } [ 20 iota >array sum-squares ] unit-test
{ 36100 } [ 20 iota sum-cubes ] unit-test
{ 36100 } [ 20 iota >array sum-cubes ] unit-test

View File

@ -307,3 +307,12 @@ PRIVATE>
SYNTAX: .. dup pop scan-object [a,b) suffix! ; SYNTAX: .. dup pop scan-object [a,b) suffix! ;
SYNTAX: ... dup pop scan-object [a,b] suffix! ; SYNTAX: ... dup pop scan-object [a,b] suffix! ;
GENERIC: sum-squares ( seq -- n )
M: object sum-squares [ sq ] map-sum ;
M: iota-tuple sum-squares
length 1 - [ ] [ 1 + ] [ 1/2 + ] tri * * 3 / ;
GENERIC: sum-cubes ( seq -- n )
M: object sum-cubes [ 3 ^ ] map-sum ;
M: iota-tuple sum-cubes sum sq ;