|
From: Arnd B. <arn...@we...> - 2006-02-14 10:54:21
|
On Mon, 13 Feb 2006, David M. Cooke wrote: > Gary Ruben <gr...@bi...> writes: > > > Tim Hochberg wrote: > > <snip> > >> However, I'm not convinced this is a good idea for numpy. This would > >> introduce a discontinuity in a**b that could cause problems in some > >> cases. If, for instance, one were running an iterative solver of > >> some sort (something I've been known to do), and b was a free > >> variable, it could get stuck at b = 2 since things would go > >> nonmonotonic there. > > > > I don't quite understand the problem here. Tim says Python special > > cases integer powers but then talks about the problem when b is a > > floating type. I think special casing x**2 and maybe even x**3 when > > the power is an integer is still a good idea. > > Well, what I had done with Numeric did special case x**0, x**1, > x**(-1), x**0.5, x**2, x**3, x**4, and x**5, and only when the > exponent was a scalar (so x**y where y was an array wouldn't be). I > think this is very useful, as I don't want to microoptimize my code to > x*x instead of x**2. The reason for just scalar exponents was so > choosing how to do the power was lifted out of the inner loop. With > that, x**2 was as fast as x*x. +1 from me for the special casing. A speed improvement of more than a factor 16 (from David's numbers) is something relevant! Best, Arnd |