How Python Implements "long integer"?

Pedram pm567426 at gmail.com
Sun Jul 5 10:15:11 EDT 2009


On Jul 5, 5:04 pm, Mark Dickinson <dicki... at gmail.com> wrote:

> That's shocking.  Everyone should be English. :-)

Yes, I'm trying :)

> I'd pick one operation (e.g., addition), and trace through the
> relevant functions in longobject.c.  Look at the long_as_number
> table to see where to get started.
>
> In the case of addition, that table shows that the nb_add slot is
> given by long_add.  long_add does any necessary type conversions
> (CONVERT_BINOP) and then calls either x_sub or x_add to do the real
> work.
> x_add calls _PyLong_New to allocate space for a new PyLongObject, then
> does the usual digit-by-digit-with-carry addition.  Finally, it
> normalizes
> the result (removes any unnecessary zeros) and returns.
>
> As far as memory allocation goes: almost all operations call
> _PyLong_New at some point.  (Except in py3k, where it's a bit more
> complicated because small integers are cached.)

Oh, I didn't see long_as_number before. I'm reading it. That was very
helpful, thanks.

> If you have more specific questions I'll have a go at answering them.
>
> Mark

Thank you a million.
I will write your name in my "Specially thanks to" section of my
article (In font size 72) ;)

Pedram



More information about the Python-list mailing list