Commit 7e2e63ab authored by Stefan Behnel's avatar Stefan Behnel

comments

parent 44694afc
...@@ -3,6 +3,8 @@ def pylong_join(count, digits_ptr='digits', join_type='unsigned long'): ...@@ -3,6 +3,8 @@ def pylong_join(count, digits_ptr='digits', join_type='unsigned long'):
""" """
Generate an unrolled shift-then-or loop over the first 'count' digits. Generate an unrolled shift-then-or loop over the first 'count' digits.
Assumes that they fit into 'join_type'. Assumes that they fit into 'join_type'.
(((d[2] << n) | d[1]) << n) | d[0]
""" """
return ('(' * (count * 2) + "(%s)" % join_type + ' | '.join( return ('(' * (count * 2) + "(%s)" % join_type + ' | '.join(
"%s[%d])%s)" % (digits_ptr, _i, " << PyLong_SHIFT" if _i else '') "%s[%d])%s)" % (digits_ptr, _i, " << PyLong_SHIFT" if _i else '')
...@@ -13,8 +15,10 @@ def pylong_join(count, digits_ptr='digits', join_type='unsigned long'): ...@@ -13,8 +15,10 @@ def pylong_join(count, digits_ptr='digits', join_type='unsigned long'):
# this implementation is a bit slower than the simpler one above # this implementation is a bit slower than the simpler one above
def _pylong_join(count, digits_ptr='digits', join_type='unsigned long'): def _pylong_join(count, digits_ptr='digits', join_type='unsigned long'):
""" """
Generate an unrolled shift-then-or loop over the first 'count' digits. Generate an or-ed series of shifts for the first 'count' digits.
Assumes that they fit into 'join_type'. Assumes that they fit into 'join_type'.
(d[2] << 2*n) | (d[1] << 1*n) | d[0]
""" """
def shift(n): def shift(n):
# avoid compiler warnings for overly large shifts that will be discarded anyway # avoid compiler warnings for overly large shifts that will be discarded anyway
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment