| 1 | initial version |
The computation of 3**10000000 is itself much faster in Sage than Python 3. This is because, when you type 3 in Sage, you do not get a Python int but a Sage integer, that relies on the GMP library (which is optimized for such computations):
sage: type(3)
<class 'sage.rings.integer.Integer'>
sage: parent(3)
Integer Ring
If you look at, the source code for the exponentitiation of such an object:
sage: a = 3
sage: a.__pow__??
you see that it will call a._pow_ (with a single underscore), and if you look at that source code:
you see that it calls the _pow_long method which is not available to introspection, but you can get its source code at https://git.sagemath.org/sage.git/tree/src/sage/rings/integer.pyx#n2242 which is written in the Cython language. Everytime you see mpz..., it means that the GMP library is used.
Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.