Project

General

Profile

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

Added by georgeclaghorn (George Claghorn) 12 days ago. Updated 3 days ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 4.0.1 (2026-01-13 revision e04267a14b) +PRISM [arm64-darwin24]
[ruby-core:125612]

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

Also available in: PDF Atom