As the code for this FFT is quite involved, I plan to incrementally release a set of notes about it, starting tomorrow morning (today already), which may take hours to days for me to complete. I got the code working for the first time this afternoon, so please be patient with me.
Here is the rough list of topics I hope to cover in the notes: Table of Contents ============= 1) The formal code release. I need to check all the test code still passes and make it easy for people to build and run. That will take an hour or so for me to do. 2) FFT's for nitwits (like me). How does an FFT help in multiplying numbers, basically, and what are the important algorithms and techniques. 3) Why a new FFT? This is an important question which needs answering. I will discuss what led me to work on a new FFT implementation, rather than improve or port another implementation. 4) The strategy. What does this FFT actually do? Which algorithms does it use? I tried many things, most of which completely failed. In section 3 I will have already discussed other strategies I tried which did not work. Here I will discuss what did work. Whilst many of the details came from my head, I'm pretty sure the general outline will contain few surprises. 5) References. Few. I purposely tried to be creative. 8) Implementors notes. A long list of things that can be improved. In releasing the code publicly it is my hope that contributors will help make this the best FFT implementation it can be. The list will include many trivial items which anyone could work on, all the way through to fairly advanced topics which would probably require original research to do really well. I'll rank the items according to how hard I think they'd be to do. The code will be under revision control, so it is my hope that people will be willing to contribute to it. I believe I spent between 150 and 200 hours writing it, all told. Till tomorrow. Bill. 2010/1/1 Bill Hart <goodwillh...@googlemail.com>: > Ha! I forgot to mention, those numbers represent the size of the > integers in bits. I multiply two different integers with the same > number of bits, though that is not a limitation of the code. It will > accept integers of different lengths and adjust accordingly. > > Bill. > > 2010/1/1 Bill Hart <goodwillh...@googlemail.com>: >> I re-timed that point and I believe I may have just mistranscribed it. >> Here it is with the corrected time. Thanks for pointing it out! >> >> I've also included some times from the FLINT FFT, though only >> non-truncated ones (i.e. where FLINT uses a convolution which is an >> exact power of 2 length - not a limitation of FLINT, I just didn't get >> around to timing it at the other points yet). >> >> 8364032: 6.8s / 8.0s >> 9409536: 9.8s / 8.7s >> 10455040: 10.8s / 9.6s >> 11500544: 12.3s / 12.6s >> 12546048: 12.7s / 15.3s >> 13591552: 14.0s / 14.2s >> 14637056: 14.9s / 15.3s >> 15682560: 16.0s / 14.5s >> 16728064: 16.8s / 19.5s >> >> 20910080: 24.3s / 23.2s >> 25092096: 28.5s / 33.1s >> 29274112: 33.1s / 31.8s >> 33456128: 37.4s / 47.7s >> >> 519168: iters 10000: 30.7s / 32.2s / 32.3s >> 2084864: iters 1000: 13.9s / 15.2s / 13.0s >> 8364032: iters 100: 6.8s / 8.0s / 7.6s >> 33497088: iters 100: 37.4s / 47.7s / 37.5s >> 134103040: iters 10: 17.0s / 24.8s / 19.6s >> 536608768: iters 1: 8.6s / 9.4s / 8.6s >> 2146959360: iters 1: 42.3s / 40.3s / 38.9s >> >> Bill. >> >> >> 2009/12/31 Bill Hart <goodwillh...@googlemail.com>: >>> It's either a tuning issue or timing instability on the machine. >>> >>> Bill. >>> >>> On 31/12/2009, Robert Gerbicz <robert.gerb...@gmail.com> wrote: >>>> Hi! >>>> >>>> How is it possible that to multiple longer numbers takes less time, for >>>> example: >>>> >>>> 12546048: 14.7s / 15.3s >>>> 13591552: 14.0s / 14.2s >>>> >>>> -- >>>> >>>> You received this message because you are subscribed to the Google Groups >>>> "mpir-devel" group. >>>> To post to this group, send email to mpir-de...@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> mpir-devel+unsubscr...@googlegroups.com. >>>> For more options, visit this group at >>>> http://groups.google.com/group/mpir-devel?hl=en. >>>> >>>> >>>> >>> >> > -- You received this message because you are subscribed to the Google Groups "mpir-devel" group. To post to this group, send email to mpir-de...@googlegroups.com. To unsubscribe from this group, send email to mpir-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/mpir-devel?hl=en.