D. J. Bernstein
Fast arithmetic
Integer multiplication benchmarks

libI

libI was written by Ralf Dentzer. The current version of libI can be found inside LiDIA. The LiDIA home page is www.informatik.th-darmstadt.de/TI/LiDIA. Sample code using LiDIA:
     #include "LiDIA/bigint.h"
     main()
     {
       bigint a;
       bigint b;
       bigint c;
       cin >> a;
       cin >> b;
       c = a * b;
       cout << c << "\n";
     }
Note that LiDIA can use CLN, gmp, or LIP instead of libI.

Old timings of LiDIA 1.3.3 on a Pentium II:

      1:       1710        508        451        468        451        460 
      2:        472        459        451        459        451        459 
      4:        472        460        451        459        451        484 
      8:        472        459        451        482        451        485 
     16:        472        459        451        482        451        460 
     32:        515        506        480        474        477        467 
     64:        639        629        625        568        559        567 
    128:       1369       1184        963        902        880        913 
    256:       2047       1896       1692       1704       1682       1690 
    512:       5938       4750       4484       4509       4501       4517 
   1024:      14956      13787      13545      13514      13480      13510 
   2048:      52266      41496      41232      41195      41187      41218 
   4096:     137739     138555     128319     128249     128219     128246 
   8192:     412574     400820     394155     393985     400980     394120 
  16384:    1236793    1212775    1212003    1206667    1205374    1206241 
  32768:    3746134    3703608    3670076    3670078    3667182    3668884 
  65536:   11251655   11177378   11146552   11163636   11144376   11160042 
 131072:   33844125   33738164   33693404   33702094   33679268   33690708 
 262144:  101875422  101603799  101419346  101536185  101498229  101438784 
 524288:  306698904  306302847  306064987  306010701  306042108  306643092 
1048576:  922637920  921509434  921126077  921004600  921091492  921228121 
2097152: 2773708517 2771767429 2771389273 2772625629 2771491204 2771402088