This also happens in 26.3.
Steps to Reproduce:
Run: /compute default integer {type:"div",left:-2147483648,right:-1}
Run: /compute default integer {type:"floor_div",left:-2147483648,right:-1}
Observed Results:
Step 1 says: Number provider returned value -2147483648
Step 2 says: Number provider returned invalid value (integer overflow)
Expected Results:
Both return an invalid value. The correct answer, 2147483648, does not fit in an int, and div returns a number with
the wrong sign.
Code analysis:
Quotient#getIntUnsafe uses plain "/", which silently overflows for Integer.MIN_VALUE / -1. FloorQuotient uses
Math.floorDivExact. Using Math.divideExact in Quotient would make them consistent.
Comments 0
No comments.