On Wed, Sep 22, 2010 at 4:44 AM, Michael Gilbert email@example.com wrote:
It would be really nice if elementary mathematical operations such as sin/cosine (via __sin__ and __cos__) were available as base parts of the python data model . This would make it easier to write new math classes, and it would eliminate the ugliness of things like self.exp().
This would also eliminate the need for separate math and cmath libraries since those could be built into the default float and complex types. Of course if those libs were removed, that would be a potential backwards compatibility issue.
It would also help new users who just want to do math and don't know that they need to import separate classes just for elementary math functionality.
I think full coverage of the elementary function set would be the goal (i.e. exp, sqrt, ln, trig, and hyperbolic functions). This would not include special functions since that would be overkill, and they are already handled well by scipy and numpy.
I think the basic problem here is that, by comparison to the basic syntax-driven options, the additional functionality covered by the math, cmath and decimal modules is much harder to implement both correctly and efficiently. It's hard enough making good algorithms that work on a single data type with a known representation, let alone ones which work on arbitrary data types.
Also, needing exp, sqrt, ln, trig and hyperbolic functions is *significantly* less common than the core mathematical options, so telling people to do "from math import *" if they want to do a lot of mathematical operations at the interactive prompt isn't much of a hurdle.