diff options
Diffstat (limited to 'src/backend/utils/adt/float.c')
-rw-r--r-- | src/backend/utils/adt/float.c | 27 |
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() */ + /* * ==================== |