STINNER Victor added the comment:
+ if (Py_SIZE(left) != 0) {
+ if (Py_SIZE(right) != 0) {
+
+#ifdef HAVE_LONG_LONG
+ mul = PyLong_FromLongLong(
+ (long long)SINGLE_DIGIT_LONG_AS_LONG(left) *
+ SINGLE_DIGIT_LONG_AS_LONG(right));
+#else
+ mul = PyNumber_Multiply(left, right);
+#endif
Why don't you use the same code than long_mul() (you need #include
"longintrepr.h")?
----------------
stwodigits v = (stwodigits)(MEDIUM_VALUE(a)) * MEDIUM_VALUE(b);
#ifdef HAVE_LONG_LONG
return PyLong_FromLongLong((PY_LONG_LONG)v);
#else
/* if we don't have long long then we're almost certainly
using 15-bit digits, so v will fit in a long. In the
unlikely event that we're using 30-bit digits on a platform
without long long, a large v will just cause us to fall
through to the general multiplication code below. */
if (v >= LONG_MIN && v <= LONG_MAX)
return PyLong_FromLong((long)v);
#endif
----------------
I guess that long_mul() was always well optimized, no need to experiment
something new.
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue21955>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com