On 10.02.2013 00:11, Andrea Pescetti wrote:
A good practical example of backwards-incompatible changes in version
4.0 is the behavior of Calc while computing 0 ^ 0.
You can find a long issue, with different points of view, about this at:
https://issues.apache.org/ooo/show_bug.cgi?id=114430
but in short:
- Obviously, 0 ^ 0 is an illegal operation in mathematics and the
result is undefined/invalid
- In 3.4.1, "=0 ^ 0" returns 1
- In 4.0, as patched by Pedro (see issue), "=0 ^ 0" would return an error
- According to ODF, valid results are 0, 1, error
- We gain interoperability since Excel returns an error too
- We lose backwards compatibility if someone was relying on the fact
that OpenOffice returns 1 as the result of "=0 ^ 0"
I'm OK with the proposed change, provided we advertise it in the
release notes. I'm not aware of any cases where someone is actively
using the fact that in Calc 0 ^ 0 evaluates to 1, and even if someone
did, I would say that his spreadsheets should not compute 0 ^ 0 at
all. A side benefit would be that school students quickly wanting to
find out what is the result of 0 ^ 0 would be told the truth (it's an
error) instead of being presented with a numeric result and no
warnings. (Then the student would go on and write "= - 2 ^ 2" and have
a lot of fun, but this is out of scope here).
Is there consensus that this is a reasonable backwards-incompatible
change, or compelling reasons to revert it?
I would like to propose to revert the change because, as Rob said
elsewhere in this thread, this is not a mathematical question. If the
the ODF spec says that 0,1, and error are valid return values and we
return 1 then there is no error (despite the three exclamation marks in
the title of the bug).
If the spec said that 2 is the only valid return value then we would
have to return 2.
We should change the ODF spec first instead. A spec that basically says
"whatever you want to return is fine" is of no value, as was proven in
this thread. This is something that I would only accept from a
"random()" function.
Besides, my emacs calc says that 0^0 is 1, so that can be the only
correct answer, right?
Regards,
Andre