math.extras: invent "cum-reduce" concept for gini.

db4
John Benediktsson 2012-09-26 15:11:41 -07:00
parent 41227954e7
commit 35bd1a4bbc
1 changed files with 3 additions and 3 deletions

View File

@ -155,15 +155,15 @@ PRIVATE>
: until-zero ( n quot -- )
[ dup zero? ] swap until drop ; inline
: sum-cum-sum ( seq -- sum sum-of-cumulative-sum-of-seq )
[ 0 0 ] dip [ '[ _ + ] dip dupd + ] each ; inline
: cum-reduce ( ... seq identity quot: ( ... prev elt -- ... next ) -- ... result cum-result )
[ dup rot ] dip dup '[ _ curry dip dupd @ ] each ; inline
<PRIVATE
:: (gini) ( seq -- x )
seq natural-sort :> sorted
seq length :> len
sorted sum-cum-sum :> ( a b )
sorted 0 [ + ] cum-reduce :> ( a b )
b len a * / :> B
1 len recip + 2 B * - ;