#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 secondsResults:
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