View Single Post

   
  #1 (permalink)  
Old 05-10-2008, 02:06 PM
Bruce Momjian
 
Posts: n/a
Default Re: [HACKERS] bug in numeric_power() function

Richard Wang wrote:
> I expected 0 ^ 123.3 to be 0, but it reported error as follows
>
> postgres=# select 0 ^ 123.3;
> ERROR: cannot take logarithm of zero
>
> I find that there is a bug in numeric_power() function
> the function caculates a ^ b based on the algorithm e ^ (lna * b)
> as you see, ln0 is not valid


I have developed the attached patch which fixes 0 ^ 123.3. It also
fixes the case for 0 ^ 0.0 so it returns 1 instead of an error --- see
the C comment for why one is the proper return value. float pow()
already returned one in this case:

test=> select 0 ^ 0;
?column?
----------
1
(1 row)

test=> select 0 ^ 0.0;
?column?
----------
1
(1 row)

test=> select 0 ^ 3.4;
?column?
----------
1
(1 row)

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +


--
Sent via pgsql-patches mailing list (pgsql-patches@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches

Reply With Quote