diff options
author | Jan Wieck <JanWieck@Yahoo.com> | 1998-12-30 20:46:06 +0000 |
---|---|---|
committer | Jan Wieck <JanWieck@Yahoo.com> | 1998-12-30 20:46:06 +0000 |
commit | 5df20d4449f552225415df2f413b7cda8c54d8f7 (patch) | |
tree | 077dc7e4b55cebd0cfd6083fccbc08f678bec8f6 /src | |
parent | 0e9d75c6ac97cfb370313b0aff803f9f464d0758 (diff) | |
download | postgresql-5df20d4449f552225415df2f413b7cda8c54d8f7.tar.gz postgresql-5df20d4449f552225415df2f413b7cda8c54d8f7.zip |
Little precision fix for POWER(). I discovered problems with big
exponents.
Jan
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/adt/numeric.c | 8 | ||||
-rw-r--r-- | src/include/utils/numeric.h | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index 185c5dad740..6ee7f6ba2c2 100644 --- a/src/backend/utils/adt/numeric.c +++ b/src/backend/utils/adt/numeric.c @@ -5,7 +5,7 @@ * * 1998 Jan Wieck * - * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.1 1998/12/30 19:56:29 wieck Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.2 1998/12/30 20:46:05 wieck Exp $ * * ---------- */ @@ -3371,9 +3371,9 @@ log_var(NumericVar *base, NumericVar *num, NumericVar *result) /* ---------- - * log_var() - + * power_var() - * - * Compute the logarithm of x in a given base + * Raise base to the power of exp * ---------- */ static void @@ -3384,7 +3384,7 @@ power_var(NumericVar *base, NumericVar *exp, NumericVar *result) int save_global_rscale; save_global_rscale = global_rscale; - global_rscale += 8 + MAX(0, exp->weight); + global_rscale += global_rscale / 3 + 8; init_var(&ln_base); init_var(&ln_num); diff --git a/src/include/utils/numeric.h b/src/include/utils/numeric.h index a22c77746d3..1b96b86d54c 100644 --- a/src/include/utils/numeric.h +++ b/src/include/utils/numeric.h @@ -5,7 +5,7 @@ * * 1998 Jan Wieck * - * $Header: /cvsroot/pgsql/src/include/utils/numeric.h,v 1.1 1998/12/30 19:56:35 wieck Exp $ + * $Header: /cvsroot/pgsql/src/include/utils/numeric.h,v 1.2 1998/12/30 20:46:06 wieck Exp $ * * ---------- */ @@ -27,7 +27,7 @@ #define NUMERIC_MAX_DISPLAY_SCALE NUMERIC_MAX_PRECISION #define NUMERIC_MIN_DISPLAY_SCALE NUMERIC_DEFAULT_SCALE + 4 -#define NUMERIC_MAX_RESULT_SCALE (NUMERIC_MAX_PRECISION + 4) +#define NUMERIC_MAX_RESULT_SCALE (NUMERIC_MAX_PRECISION * 2) #define NUMERIC_MIN_RESULT_SCALE (NUMERIC_DEFAULT_PRECISION + 4) #define NUMERIC_UNPACKED_DATASIZE (NUMERIC_MAX_PRECISION * 2 + 4) |