]> granicus.if.org Git - postgresql/commitdiff
Little precision fix for POWER(). I discovered problems with big
authorJan Wieck <JanWieck@Yahoo.com>
Wed, 30 Dec 1998 20:46:06 +0000 (20:46 +0000)
committerJan Wieck <JanWieck@Yahoo.com>
Wed, 30 Dec 1998 20:46:06 +0000 (20:46 +0000)
exponents.

Jan

src/backend/utils/adt/numeric.c
src/include/utils/numeric.h

index 185c5dad740993d6c76f51688a68e38748b79468..6ee7f6ba2c2a67d975a00829a872ed976fd0075a 100644 (file)
@@ -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);
index a22c77746d32f41d9c9b064159abc8519e86d5d7..1b96b86d54cb79461984d39daa29c6e743d5ad82 100644 (file)
@@ -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)