Message375049
Here's a pairwise variant:
def prod(seq):
stack = []
exp = 0
for i, x in enumerate(seq, start=1):
m, e = frexp(x)
exp += e
stack += [m]
while not i&1:
i >>= 1
x, y = stack[-2:]
stack[-2:] = [x * y]
total = 1.0
while stack:
total *= stack.pop()
return ldexp(total, exp) |
|
Date |
User |
Action |
Args |
2020-08-08 15:59:27 | rhettinger | set | recipients:
+ rhettinger, tim.peters, mark.dickinson, veky, pablogsal, Jeffrey.Kintscher |
2020-08-08 15:59:27 | rhettinger | set | messageid: <1596902367.29.0.671054367561.issue41458@roundup.psfhosted.org> |
2020-08-08 15:59:27 | rhettinger | link | issue41458 messages |
2020-08-08 15:59:27 | rhettinger | create | |
|