Remove underflow error in float division with infinite divisor.
Tom Lane <tgl@sss.pgh.pa.us>
Remove underflow error in float division with infinite divisor. float4_div and float8_div correctly produced zero for zero divided by infinity, but threw an underflow error for nonzero finite values divided by infinity. This seems wrong; at the very least it's inconsistent with the behavior recently implemented for numeric infinities. Remove the error and allow zero to be returned. This patch also removes a useless isinf() test from the overflow checks in these functions (non-Inf divided by Inf can't produce Inf). Extracted from a larger patch; this seems significant outside the context of geometric operators, so it deserves its own commit. Kyotaro Horiguchi Discussion: https://postgr.es/m/CAGf+fX70rWFOk5cd00uMfa__0yP+vtQg5ck7c2Onb-Yczp0URA@mail.gmail.com
Files
| Path | Change | +/− |
|---|---|---|
| src/include/utils/float.h | modified | +4 −4 |
| src/test/regress/expected/float4-misrounded-input.out | modified | +6 −0 |
| src/test/regress/expected/float4.out | modified | +6 −0 |
| src/test/regress/expected/float8.out | modified | +6 −0 |
| src/test/regress/sql/float4.sql | modified | +1 −0 |
| src/test/regress/sql/float8.sql | modified | +1 −0 |
Discussion
- Strange behavior with polygon and NaN 31 messages · 2020-06-24 → 2022-08-02