aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/float.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2007-01-06 20:21:29 +0000
committerBruce Momjian <bruce@momjian.us>2007-01-06 20:21:29 +0000
commitf0f4a6d781b695e3b0c3f426ababf68e65d7bf5b (patch)
treeba2d545ffe4782ae71d39bae1be58c1713dc48e6 /src/backend/utils/adt/float.c
parent282f7f2eaca717eec25641e7a3cc6af293d56322 (diff)
downloadpostgresql-f0f4a6d781b695e3b0c3f426ababf68e65d7bf5b.tar.gz
postgresql-f0f4a6d781b695e3b0c3f426ababf68e65d7bf5b.zip
Apply fix so pow() and exp() ERANGE is used only if result is not 0.
Diffstat (limited to 'src/backend/utils/adt/float.c')
-rw-r--r--src/backend/utils/adt/float.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c
index 263a13a3148..44fe89296e8 100644
--- a/src/backend/utils/adt/float.c
+++ b/src/backend/utils/adt/float.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.145 2007/01/06 15:18:02 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.146 2007/01/06 20:21:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1459,7 +1459,7 @@ dpow(PG_FUNCTION_ARGS)
else
result = 1;
}
- else if (errno == ERANGE && !isinf(result))
+ else if (errno == ERANGE && result != 0 && !isinf(result))
result = get_float8_infinity();
CHECKFLOATVAL(result, isinf(arg1) || isinf(arg2), arg1 == 0);
@@ -1478,7 +1478,7 @@ dexp(PG_FUNCTION_ARGS)
errno = 0;
result = exp(arg1);
- if (errno == ERANGE && !isinf(result))
+ if (errno == ERANGE && result != 0 && !isinf(result))
result = get_float8_infinity();
CHECKFLOATVAL(result, isinf(arg1), false);