From: akr@... Date: 2016-05-17T10:02:01+00:00 Subject: [ruby-core:75559] [Ruby trunk Feature#12217] Introducing Enumerable#sum for precision compensated summation and revert r54237 Issue #12217 has been updated by Akira Tanaka. matz accepted Enumerable#sum (and Range#sum). Examples: Range#sum for mathematical sigma: (0..n).sum {|i| ... } Hash#sum for expected value such as { value1 => probability1, ... }.sum {|v, prob| v * prob } ---------------------------------------- Feature #12217: Introducing Enumerable#sum for precision compensated summation and revert r54237 https://bugs.ruby-lang.org/issues/12217#change-58693 * Author: Kenta Murata * Status: Closed * Priority: Normal * Assignee: Kenta Murata ---------------------------------------- In this issue I propose to introduce Enumerable#sum for precision compensated summation of an array of floating point numbers. In r54237, I've changed Enumerable#inject to support precision compensated summation for summing up floating point numbers. But I noticed that this commit broke the equality of `ary.inject(:+) == ary.inject {|a, x| a + x }`. I think this equality is important property of inject method, so I don't want to break it. And because precision compensated algorithms are complicated, I think they are provided in the standard library, especially simple summation. ---Files-------------------------------- inject-plus.txt (1.21 MB) -- https://bugs.ruby-lang.org/ Unsubscribe: