Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4fb6aeb

Browse files
committed
Make floating-point "NaN / 0" return NaN instead of raising an error.
This is more consistent with the IEEE 754 spec and our treatment ofNaNs elsewhere; in particular, the case has always acted that way in"numeric" arithmetic.Noted by Dean Rasheed.Discussion:https://postgr.es/m/3421746.1594927785@sss.pgh.pa.us
1 parent6ca7cd8 commit4fb6aeb

File tree

6 files changed

+22
-2
lines changed

6 files changed

+22
-2
lines changed

‎src/include/utils/float.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ float4_div(const float4 val1, const float4 val2)
222222
{
223223
float4result;
224224

225-
if (unlikely(val2==0.0f))
225+
if (unlikely(val2==0.0f)&& !isnan(val1))
226226
float_zero_divide_error();
227227
result=val1 /val2;
228228
if (unlikely(isinf(result))&& !isinf(val1)&& !isinf(val2))
@@ -238,7 +238,7 @@ float8_div(const float8 val1, const float8 val2)
238238
{
239239
float8result;
240240

241-
if (unlikely(val2==0.0))
241+
if (unlikely(val2==0.0)&& !isnan(val1))
242242
float_zero_divide_error();
243243
result=val1 /val2;
244244
if (unlikely(isinf(result))&& !isinf(val1)&& !isinf(val2))

‎src/test/regress/expected/float4-misrounded-input.out

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,12 @@ SELECT 'nan'::float4 / 'nan'::float4;
143143
NaN
144144
(1 row)
145145

146+
SELECT 'nan'::float4 / '0'::float4;
147+
?column?
148+
----------
149+
NaN
150+
(1 row)
151+
146152
SELECT 'nan'::numeric::float4;
147153
float4
148154
--------

‎src/test/regress/expected/float4.out

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,12 @@ SELECT 'nan'::float4 / 'nan'::float4;
143143
NaN
144144
(1 row)
145145

146+
SELECT 'nan'::float4 / '0'::float4;
147+
?column?
148+
----------
149+
NaN
150+
(1 row)
151+
146152
SELECT 'nan'::numeric::float4;
147153
float4
148154
--------

‎src/test/regress/expected/float8.out

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,12 @@ SELECT 'nan'::float8 / 'nan'::float8;
126126
NaN
127127
(1 row)
128128

129+
SELECT 'nan'::float8 / '0'::float8;
130+
?column?
131+
----------
132+
NaN
133+
(1 row)
134+
129135
SELECT 'nan'::numeric::float8;
130136
float8
131137
--------

‎src/test/regress/sql/float4.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ SELECT ' INFINITY x'::float4;
5050
SELECT'Infinity'::float4+100.0;
5151
SELECT'Infinity'::float4/'Infinity'::float4;
5252
SELECT'nan'::float4/'nan'::float4;
53+
SELECT'nan'::float4/'0'::float4;
5354
SELECT'nan'::numeric::float4;
5455

5556
SELECT''AS five,*FROM FLOAT4_TBL;

‎src/test/regress/sql/float8.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ SELECT ' INFINITY x'::float8;
4343
SELECT'Infinity'::float8+100.0;
4444
SELECT'Infinity'::float8/'Infinity'::float8;
4545
SELECT'nan'::float8/'nan'::float8;
46+
SELECT'nan'::float8/'0'::float8;
4647
SELECT'nan'::numeric::float8;
4748

4849
SELECT''AS five,*FROM FLOAT8_TBL;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp