aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/float.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>1998-11-29 01:57:59 +0000
committerTom Lane <tgl@sss.pgh.pa.us>1998-11-29 01:57:59 +0000
commit92eacaf52349d8274d5924ff11956377ba7e968f (patch)
tree44e190053d102847b219c092767404328dac8f1e /src/backend/utils/adt/float.c
parent67531c42bd247540343716ea794edd5a5e1ccaff (diff)
downloadpostgresql-92eacaf52349d8274d5924ff11956377ba7e968f.tar.gz
postgresql-92eacaf52349d8274d5924ff11956377ba7e968f.zip
Change exp() behavior to generate error on underflow rather
than silently returning zero on some machines. Correct float8 regress test to agree. Also fix pow() overflow/underflow check to work correctly on HPUX.
Diffstat (limited to 'src/backend/utils/adt/float.c')
-rw-r--r--src/backend/utils/adt/float.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c
index 0bf5ebff472..a00cef1bf19 100644
--- a/src/backend/utils/adt/float.c
+++ b/src/backend/utils/adt/float.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.34 1998/11/17 14:36:44 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.35 1998/11/29 01:57:59 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1131,7 +1131,7 @@ dpow(float64 arg1, float64 arg2)
#endif
*result = (float64data) pow(tmp1, tmp2);
#ifndef finite
- if (errno == ERANGE)
+ if (errno != 0) /* on some machines both EDOM & ERANGE can occur */
#else
if (!finite(*result))
#endif
@@ -1164,7 +1164,8 @@ dexp(float64 arg1)
#ifndef finite
if (errno == ERANGE)
#else
- if (!finite(*result))
+ /* infinity implies overflow, zero implies underflow */
+ if (!finite(*result) || *result == 0.0)
#endif
elog(ERROR, "exp() result is out of range");