Paul and <font style="color: rgb(0, 0, 0);" color="#888888">Torbjörn</font>,<br><br>Thanks a lot for your quick answers.<br><br>Here is some key details of my implementation (maybe it would be interesting):<br>1. I used 3 prime numbers of the form l*2^k+1 that fit 32-bit word. Unfortunately I had only 32-bit machine for tests.<br>

2. To get memory locality I also used Cooley-Tukey FFT with precomputed tables of root powers.<br>3. Burret reduction was used for fast modular multiplication (Tommy compared Montgomery and Victor Shoup &#39;s reductions).<br>

<br>To be honest, I didn&#39;t use GMP with its assembly-optimized basic operations :-(.<br>
So I wanted to try the combination of my tricks with those you have to check if it could be useful.<br><br>Thanks again for you suggestions.<br>Aleksey<br><br><div class="gmail_quote">On Wed, May 13, 2009 at 12:35 PM, Torbjorn Granlund <span dir="ltr">&lt;<a href="mailto:tg@gmplib.org">tg@gmplib.org</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im"><br>
Aleksey Bader &lt;<a href="mailto:bader@newmail.ru">bader@newmail.ru</a>&gt; writes:<br>
<br>
  As follows from <a href="http://gmplib.org/projects.html" target="_blank">http://gmplib.org/projects.html</a> one of the projects is<br>
  devoted to implementation of FFT-based algorithm combined with Chinese<br>
  Reminder Theorem. It&#39;s claimed that there are 2 implementations of this<br>
  algorithm (by Tommy Färnqvist and Niels Möller).<br>
<br>
  Q1. Are there available source code for those implementations?<br>
<br>
</div>I don&#39;t know.  I think both are still work-in-progress (although the<br>
progress might be limited for some periods).  You might want to ask the<br>
authors.<br>
<div class="im"><br>
  The reason I&#39;m asking is because I did the same job when I was working on my<br>
  master thesis 2 years ago. It&#39;d be very curious to compare or maybe improve<br>
  our implementations.<br>
<br>
  Actually, I was able to find Tommy&#39;s master thesis and his code seemed to be<br>
  up to twice as fast as the code in GMP 4.1.4.<br>
<br>
</div>  Q2. What about 4.3.*? Could it still be profitable in comparison with the<br>
  current GMP multiplication?<br>
<br>
IIRC, his code can still beat the Schönhage-Strassen code currently in<br>
GMP, but only for very large operands.  This is due to the memory<br>
locality tricks Tommy are using (due to Cooley and Tukey, rediscovered<br>
by Bailey).<br>
<br>
  P.S. Relatively recently, Martin Furer<br>
  published&lt;<a href="http://www.cse.psu.edu/%7Efurer/Papers/mult.pdf" target="_blank">http://www.cse.psu.edu/%7Efurer/Papers/mult.pdf</a>&gt;new<br>
<div class="im">  multiplication algorithm with very low asymptotic complexity.<br>
  Q3. Any known (tries of) implementions (in GMP O:)? Maybe someone think<br>
  about it (disregard to author&#39;s claim that his method outperforms<br>
  Schönhage-Strassen on &quot;astonomically large numbers&quot; :-) )?<br>
<br>
</div>The complexity of Fürer&#39;s algorithm is only slightly better than that of<br>
Schönhage-Strassen&#39;s algorithm.  (A log(log(n)) factor is replaced by a<br>
2^{log*(n)} factor.  While a better upper bound is a nice step forward<br>
in theoretical terms, this small improvement would probably be hard to<br>
translate into actual performance.<br>
<font color="#888888"><br>
--<br>
Torbjörn<br>
<br>
<br>
</font></blockquote></div><br>