D. J. Bernstein
Fast arithmetic
Integer multiplication benchmarks

giantint

giantint was written by Richard Crandall. The giantint home page is www.perfsci.com/free/giantint/index.html.

Sample code using giantint:

     #include <stdio.h>
     #include "giants.h"
     
     main()
     {
       giant a;
       giant b;
     
       a = newgiant(INFINITY);
       b = newgiant(INFINITY);
       gread(a,stdin);
       gread(b,stdin);
       mulg(a,b);
       gout(b);
     }

Crandall comments that giantint is ``an older, 16-bit-digit package'' and says that he is working on a faster package, giants2000.

Old timings of giantint (no clear version number; marked 17 Apr 99 in giants.c) with gcc -O6 -fomit-frame-pointer -c giants.c on a Pentium II:

      1:      24292        538        377        364        364        342 
      2:        342        342        342        342        342        342 
      4:        342        342        342        342        342        342 
      8:        342        342        342        342        342        342 
     16:        429        389        380        380        380        380 
     32:        565        523        504        496        496        496 
     64:        835        769        739        728        728        728 
    128:       1486       1455       1435       1435       1435       1435 
    256:       3565       3576       3559       3559       3559       3559 
    512:      11327      11330      11312      11309      11309      11309 
   1024:      88570      41277      40899      40860      40840      40825 
   2048:     183316     135261     134977     134941     134941     142002 
   4096:     502175     441041     439584     439551     439537     439539 
   8192:     963491     911419     905308     905197     905151     910576 
  16384:    2079586    1996162    1968131    1999582    1957114    1977321 
  32768:    5894983    5695481    5713409    5920069   11964467    6079784 
  65536:   12657304   12250049   12259679   12485573   12320163   12304028 
 131072:   27040421   27339684   27327872   27473888   27327708   27506484 
 262144:   62406371   60178331   60441868   60632417   60765029   59117373 
 524288:  144473425  147377054  144731134  140191782  139131190  140316374 
1048576:  348659855  345259632  347602973  341351134  341452198  345685238 
2097152:  792952570  787842792  805224485  804452370  787595806  782607498