On Thu, Jan 8, 2015 at 6:33 PM, Devin Jeanpierre <jeanpierr...@gmail.com> wrote: > I noticed some very PHP-ish behavior today: > >>>> import decimal >>>> x = 0 >>>> y = float(x) >>>> z = decimal.Decimal(x) >>>> x == y == z == x > True >>>> x ** x > 1 >>>> y**y > 1.0 >>>> z**z > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "/usr/lib/python2.7/decimal.py", line 2216, in __pow__ > return context._raise_error(InvalidOperation, '0 ** 0') > File "/usr/lib/python2.7/decimal.py", line 3872, in _raise_error > raise error(explanation) > decimal.InvalidOperation: 0 ** 0 > > I'd file a bug report but I'm anticipating some rational (heh) > explanation. Any ideas?
The `decimal` std lib module implements the General Decimal Arithmetic Specification (http://speleotrove.com/decimal/decarith.html ). In the "Exceptional conditions" section (http://speleotrove.com/decimal/daexcep.html ), it specifies the following: Invalid operation This occurs and signals invalid-operation if: [...] * both operands of the power operation are zero No idea why it chose to differ from IEEE-754. Cheers, Chris -- https://mail.python.org/mailman/listinfo/python-list