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: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>