On Fri, Jun 10, 2016 at 2:00 PM, Nathaniel Smith <n...@pobox.com> wrote:
> On Jun 10, 2016 10:50, "Alan Isaac" <alan.is...@gmail.com> wrote: > > > > On 6/10/2016 1:34 PM, Nathaniel Smith wrote: > >> > >> You keep pounding on this example. It's a fine example, but, c'mon. **2 > is probably at least 100x more common in real source code. Maybe 1000x more > common. Why should we break the > >> common case for your edge case? > > > > > > > > It is hardly an "edge case". > > Again, **almost all** integer combinations overflow: that's the point. > > When you say "almost all", you're assuming inputs that are uniformly > sampled integers. I'm much more interested in what proportion of calls to > the ** operator involve inputs that can overflow, and in real life those > inputs are very heavily biased towards small numbers. > > (I also think we should default to raising an error on overflow in > general, with a seterr switch to turn it off when desired. But that's > another discussion...) > but x**2 is just x*x which some seem to recommend (I have no idea why), and then there are not so many "common" cases left. (However, I find integers pretty useless except in some very specific cases. When I started to cleanup scipy.stats.distribution, I threw out integers for discrete distributions and replaced all or most `**` by np.power, IIRC mainly because of the old python behavior and better numpy behavior.) (I'd rather use robust calculations that provide correct numbers, than chasing individual edge cases and save a bit of memory in some common cases. scipy stats also doesn't use factorial in almost all cases, because special.gamma and variants are more robust ) Josef > -n > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > https://mail.scipy.org/mailman/listinfo/numpy-discussion > >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion