> -----Original Message----- > From: [EMAIL PROTECTED] [mailto:pgsql-hackers- > [EMAIL PROTECTED] On Behalf Of Richard Wang > Sent: Tuesday, March 11, 2008 7:38 PM > To: pgsql-hackers@postgresql.org > Subject: [HACKERS] bug in numeric_power() function > > 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
It seems an obvious work-around that: if (b == 0) return 1; if (a == 0) return 0; could be inserted at the top. Aside: Having the ^ operator overloaded for exponentiation surprises me. Does it really have the right precedence for performing exponentiation? (E.g. you cannot do this in C++ because ^ will have the precedence of xor, which is wrong). -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers