D. J. Bernstein
Fast arithmetic
Integer multiplication benchmarks

apfloat

apfloat was written by Mikko Tommila. The apfloat home page is www.iki.fi/~mtommila/apfloat. Sample code using apfloat:
     #include "apint.h"
     main()
     {
       apint a = "317213509";
       apint b = "990371647";
       apint c = a * b;
       cout << c << "\n";
     }

I compiled apfloat 2.33 (with the 32_586_l option) on thoth on 2002.02.23:

     mkdir apfloat
     cd apfloat
     lynx -source www.jjj.de/mtommila/apfloat/2.33/apf233.zip > apf233.zip
     lynx -source www.jjj.de/mtommila/apfloat/2.33/32_586_l.zip > 32_586_l.zip
     unzip -a -L apf233.zip
     unzip -a -L -o 32_586_l.zip
     vi ap.h          # remove the truncate() declaration
     vi makefile      # change -lpthread to -pthread
     vi apfloat.ini   # set Memorythreshold to 16777216
     make lib
     # about 30 seconds
     lynx -source cr.yp.to/speed/mult/apfloat-bench.c > bench.c
     g++ -O3 -o bench bench.c apfloat.a -pthread -fno-exceptions
     ./bench > bench.out
     # about 90 seconds
Results:
       1:       9875       7445       6832       6840       6819       6810 
       2:       7633       7104       6982       7023       6969       6981 
       3:       7313       6990       6937       6975       6939       6972 
       4:       7504       6983       6938       6987       6948       6981 
       5:       7316       6989       6928       6978       6942       6972 
       6:       7489       6990       6937       6975       6939       6972 
       7:       7310       6985       6932       6984       6948       6975 
       8:       7447       6981       6943       6984       6942       6972 
      10:       7310       6989       6931       6987       6942       6972 
      12:       7477       6980       6941       6984       6945       6975 
      14:       7310       6995       6943       6987       6948       6975 
      16:      11045       9668       9517       9403       9402       9389 
      20:      10017       9420       9395       9379       9387       9378 
      24:      10023       9417       9423       9393       9415       9395 
      28:       9802       9416       9423       9393       9415       9395 
      32:      12081       8286       8058       8010       7994       8014 
      40:       8067       8060       8002       7990       7957       7997 
      48:      12576      10510      10349      10370      10335      10333 
      56:      10511      10391      10356      10358      10342      10363 
      64:       9369       8831       8492       8449       8443       8465 
      80:      11050      10944      10802      10851      10806      10851 
      96:       9449       9061       8906       8914       8913       8922 
     112:      11461      11361      11283      11295      11278      11303 
     128:      10095       9664       9482       9489       9486       9480 
     160:      10577      10429      10300      10320      10299      10295 
     192:      11495      11117      11072      11088      11059      11063 
     224:      12174      12021      11962      11982      11952      11951 
     256:      16399      15703      15310      15314      15308      15309 
     320:      18016      17880      17783      17760      17793      17780 
     384:      20954      20710      20614      20603      20610      20608 
     448:      24029      23963      23829      23844      23832      23848 
     512:      28380      27678      27036      27015      27003      27009 
     640:      36213      36057      36032      36029      53820      36027 
     768:      49943      49571      49323      49376      49368      49389 
     896:      61915      61832      61796      61825      61800      61824 
    1024:      79143      78151      77320      77321     120642      77808 
    1280:     115275     114715     114471     114483     114457     114470 
    1536:     284402     244261     242676     242034     242254     241995 
    1792:     249255     246022     245515     245331     245430     245340 
    2048:     441835     427336     440843     422641     422477     422408 
    2560:     436481     430658     428526     428390     606269     429653 
    3072:     359922     354225     353416     353242     353484     353480 
    3584:     364822     359828     359568     359491     359522     359459 
    4096:     851581     864940     860970     843579     859988     842701 
    5120:     865978     861280     856604     857593     856538     887208 
    6144:     761328     752849     754165     750596     753839     750491 
    7168:     769697     761917     777935     761188     792937     761405 
    8192:    1319684    1328739    1300059    1314647    1298036    1314271 
   10240:    1331208    1320335    1336474    1336036    1321762    1318505 
   12288:    1322360    1311001    1299770    1297016    1299351    1313389 
   14336:    1332440    1325022    1342874    1324564    1326785    1324303 
   16384:    2818662    2729492    2774428    2727385    2723967    2760936 
   20480:    2828998    2815659    2814521    2799241    2811942    2816133 
   24576:    2901604    2885605    2897663    2897410    2897638    2884967 
   28672:    2935233    2965023    2929776    2948759    2941485    2932617 
   32768:    4898699    4984670    4870768    4894849    4880648    4860236 
   40960:    5012958    5056710    5035261    5010270    5016862    5009571 
   49152:    5494521    5512084    5494249    5510716    5492675    5509321 
   57344:    5601547    5589252    5588706    5601632    5585359    5586170 
   65536:   10876443   10822353   10850170   10819356   10843331   10809629 
   81920:   11094105   11093393   10998328   11081626   11034730   11055878 
   98304:   12246998   12179903   12210623   12120312   12238951   12189380 
  114688:   12429013   12967515   12480869   12952931   12415890   12968781 
  131072:   21086407   20978535   20992734   20933069   20997116   21057396 
  163840:   21352784   21762578   21607252   21714461   21538757   21814710 
  196608:   24094387   23961795   25086585   24139642   23853748   25122974 
  229376:   24241087   25747896   24312026   25664230   24408385   26057337 
  262144:   48557634   48768695   46867089   48803519   47023315   48847755 
  327680:   48190479   50304784   50449402   47750891   50754266   50496160 
  393216:   59148269   60928875   57997763   60887240   57961615   60669974 
  458752:   61776645   58942579   62448956   62077884   58566298   62032988 
  524288:   91324278   91491747   94241380   91218032   91545073   94067065 
  655360:   98489606   94019367   98253772   94192393   98499306   94068746 
  786432:  115233667  115975406  122074510  114834264  115455526  122250151 
  917504:  117204419  124872335  122810571  125407873  123712761  124932444 
 1048576:  216106966  224565112  216461193  223049745  216393315  223689955 
 1310720:  229970544  219998205  230365287  229880405  220468266  229506993 
 1572864:  291183753  283601639  298499242  291528210  283304764  291040377 
 1835008:  289928489  301730721  310501861  293492719  307986912  298729724 
 2097152:  460056871  441158264  456913305  463556009  458234310  465644662 
 2621440:  452398727  451612718  473175296  453863833  451089033  472569468 
 3145728:  676042416  648978374  678442279  688913007  677609024  682903265 
 3670016:  663073807  659551093  693861516  665305120  660409974  693081196 
 4194304: 1059835705 1069136398 1065048595 1077649042 1063571490 1094160391 
 5242880: 1078638739 1053428376 1103601216 1128732003 1052916377 1098617116 
 6291456: 1581701031 1579482615 1603083298 1579885673 1600285092 1580533644 
 7340032: 1549408990 1552435883 1554978925 1548116021 1553125939 1554828150 
 8388608: 2372174316 2286503321 2368725580 2364753057 2279540199 2372515215 

Older timings from a Pentium-II, apfloat 1.51 with 32_586_1, Memorythreshold 16777216:

      1:       6069       4812       4698       4717       4531       4817 
      2:       6174       4936       5154       4797       4715       5039 
      4:       6512       5177       5155       5409       5614       4955 
      8:       5810       5726       5078       5243       4719       5283 
     16:       7870       7473       7726       7075       7525       6956 
     32:      76569      61176      61029      60490      60440      60424 
     64:     188555     184870     185042     185494     191174     184498 
    128:     196201     193514     194366     193542     193313     192234 
    256:     285119     250984     250254     247251     249860     249153 
    512:     261469     258851     257956     258790     258272     258462 
   1024:     397921     393548     409198     390273     391168     398054 
   2048:     534155     532820     536756     528428     527754     528381 
   4096:     983023     967715     966615     965984     973557     965784 
   8192:    1681769    1660407    1655671    1650993    1662265    1651298 
  16384:    3441479    3417857    3398313    3417901    3402191    3398329 
  32768:    6555731    6490990    6502225    6480653    6477918    6483111 
  65536:   13853129   13804720   13835281   13774186   13775194   13828479 
 131072:   27390836   27370668   27404428   27351116   27424850   27357377 
 262144:   59993039   60269182   60131822   60113437   60313628   60183264 
 524288:  119120703  119853559  119476442  119924412  119689016  119504015 
1048576:  259567782  259442369  259998158  259813621  258882401  260692853 
2097152:  523346743  524669595  526412384  523244972  526259982  525724551 
4194304: 1181208508 1181448789 1182970689 1180973773 1181969011 1182056782 
8388608: 2429057252 2430925484 2428534690 2430976700 2427764962 2428890926