Actions
Bug #17731
closedInteger downflow with inject/reduce
Description
Test case:
[-2305843009213693953,-2305843009213693953,-2305843009213693953].inject(:+)
or
([-2**61-1] * 3).inject(:+)
Expected Result:
-6917529027641081859
Actual Result:
11529215046068469757
Some clues:
- Downflow seems not happen if there are only two elements in Array
- The sample above works fine in https://try.ruby-lang.org/
- [-2305843009213693953,-2305843009213693953,-2305843009213693953].sum can get the correct result
- ([-2**61] * 3).inject(:+) can get the correct result
Affected Versions:
- ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]
- ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]
- ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-linux]
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0