aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/float.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt/float.c')
-rw-r--r--src/backend/utils/adt/float.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c
index 0a0df27b808..6af9cd906d3 100644
--- a/src/backend/utils/adt/float.c
+++ b/src/backend/utils/adt/float.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.53 2000/01/26 05:57:14 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.54 2000/03/14 23:06:36 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1236,6 +1236,31 @@ dlog1(float64 arg1)
return result;
}
+/*
+ * dlog10 - returns a pointer to the base 10 logarithm of arg1
+ */
+float64
+dlog10(float64 arg1)
+{
+ float64 result;
+ double tmp;
+
+ if (!PointerIsValid(arg1))
+ return (float64) NULL;
+
+ result = (float64) palloc(sizeof(float64data));
+
+ tmp = *arg1;
+ if (tmp == 0.0)
+ elog(ERROR, "can't take log of zero");
+ if (tmp < 0)
+ elog(ERROR, "can't take log of a negative number");
+ *result = (float64data) log10(tmp);
+
+ CheckFloat8Val(*result);
+ return result;
+} /* dlog10() */
+
/*
* ====================