From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Simon Riggs <simon(at)2ndquadrant(dot)com> |
Cc: | Bruce Momjian <bruce(at)momjian(dot)us>, pgsql-committers(at)postgresql(dot)org |
Subject: | Re: pgsql: Have numeric 0 ^ 4.3 return 1, rather than an error, and have 0 ^ |
Date: | 2008-05-09 14:37:07 |
Message-ID: | 13701.1210343827@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Simon Riggs <simon(at)2ndquadrant(dot)com> writes:
> Wikipedia says that exponentiation of zero to a negative power implies
> division by zero, so shouldn't we throw a "division by zero" error?
I think it should be a specific message like "zero raised to a negative
power is undefined". It's not like it's going to take us any extra code
to know that we are faced with that case.
BTW, I realized that SQL:2003 spells it all out for us in explicit
detail:
12)If <power function> is specified, then let NVEB be the <numeric value
expression base>, then let VB be the value of NVEB, let NVEE be the
<numeric value expression exponent>, and let VE be the value of NVEE.
Case:
a) If either VB or VE is the null value, then the result is the null value.
b) If VB is 0 (zero) and VE is negative, then an exception condition is
raised: data exception invalid argument for power function.
c) If VB is 0 (zero) and VE is 0 (zero), then the result is 1 (one).
d) If VB is 0 (zero) and VE is positive, then the result is 0 (zero).
e) If VB is negative and VE is not equal to an exact numeric value with
scale 0 (zero), then an exception condition is raised: data exception
invalid argument for power function.
f) If VB is negative and VE is equal to an exact numeric value with
scale 0 (zero) that is an even number, then the result is the result of
EXP(NVEE*LN(-NVEB))
g) If VB is negative and VE is equal to an exact numeric value with
scale 0 (zero) that is an odd number, then the result is the result of
-EXP(NVEE*LN(-NVEB))
h) Otherwise, the result is the result of
EXP(NVEE*LN(NVEB))
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Heikki Linnakangas | 2008-05-09 15:27:17 | pgsql: Fix Assert introduced in previous patch. |
Previous Message | Heikki Linnakangas | 2008-05-09 14:28:09 | pgsql: Fix incorrect archive truncation point calculation in the %r |