Actions
Bug #22092
closed`Array#sum` takes slow path, does not perform compensated summation of Float elements when init argument is a Float
Bug #22092:
`Array#sum` takes slow path, does not perform compensated summation of Float elements when init argument is a Float
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 4.0.1 (2026-01-13 revision e04267a14b) +PRISM [arm64-darwin24]
Description
% time ruby -e 'puts Array.new(1_000_000_000, 0.1).sum'
100000000.0
ruby -e 'puts Array.new(1_000_000_000, 0.1).sum' 2.67s user 2.02s system 71% cpu 6.577 total
% time ruby -e 'puts Array.new(1_000_000_000, 0.1).sum(0.0)'
99999998.74541782
ruby -e 'puts Array.new(1_000_000_000, 0.1).sum(0.0)' 22.72s user 1.80s system 96% cpu 25.332 total
Both the fast path and compensated summation are undocumented implementation details as far as I know, but this appears to be a possible oversight.
Actions