Il giorno venerdì 10 agosto 2012 14:21:50 UTC+2, Hans Mulder ha scritto: > On 10/08/12 11:25:36, Giacomo Alzetta wrote: > > > Il giorno venerdì 10 agosto 2012 11:22:13 UTC+2, Hans Mulder ha scritto: > > [...] > > > Yes, you're right. I didn't thought the combined operator would do a > > Py_DECREF > > > if the iadd operation was implemented, but it obviosuly makes sense. > > > > The += operator cannot know if the iadd returns self or a newly created > > object. Mutable types usually do the former; non-mutable types must do > > the latter. > > > > Come to think of it: why are your polynomials mutable? > > > > As a mathematician, I would think of polynomials as elements of > > some kind of ring, and I'd expect them to be non-mutable. > > > > -- HansM
Usually non-mutable types simply do not implement the iadd operation, and the interpreter tries the simple add after(see intobject.c, longobject.c etc.). I've decided to make my polynomials mutable for efficiency. I want to implement the AKS primality tests, and if I want to use it with big numbers the number of coefficients of a polynomial can easily go up to 1k-10k-100k and using non-mutable polynomials would mean to allocate and free that much memory for almost every operation. Like this I have to allocate/free less frequently. [even though I must admit that this is a premature optimization :s, since I've not profile anything, but untill I do not implement them I wont be able to see how much time I gain.] -- http://mail.python.org/mailman/listinfo/python-list