Switch to edit mode.
Name(s): poly_mult1: {@bignums} = args
2: complex_list = {}
3: maxloglen = 0.0
4: for x in (bignums)
5: for y in [1..length(x)]
6: x[y] = {tofloat(x[y]), 0.0}
7: endfor
8: complex_list = {@complex_list, x}
9: maxloglen = max(maxloglen, log(tofloat(length(x))) / log(2.0))
10: endfor
11: l = 2 ^ toint(ceil(maxloglen))
12: ffts = {}
13: for x in (complex_list)
14: ffts = {@ffts, $complex_utils:fft({@$list_utils:make(l - length(x), {0.0, 0.0}), @x})}
15: endfor
16: r = {}
17: for x in [1..l]
18: s = {1.0, 0.0}
19: for y in (ffts)
20: s = $complex_utils:product(s, y[x])
21: endfor
22: r = {@r, s}
23: endfor
24: answer = $complex_utils:unfft(r)
25: for x in [1..length(answer)]
26: answer[x] = toint(answer[x][1])
27: endfor
28: return answer
29: "Last modified by manta (#7165) on Wed Feb 16 16:21:14 2000 MST."
30: "This verb previously owned by manta (#7165), and chowned to $slacker upon dewizarding (Sat Aug 17 14:50:05 2002 MDT)."
31: "Last modified by Dax (#789) on Sat Aug 17 14:50:05 2002 MDT."