#include <stdio.h> #include "gmp.h" main() { mpz_t a; mpz_t b; mpz_t c; mpz_init(a); mpz_init(b); mpz_init(c); mpz_inp_str(a,stdin,10); mpz_inp_str(b,stdin,10); mpz_mul(c,a,b); mpz_out_str(stdout,10,c); printf("\n"); }
I compiled gmp 4.0.1 on thoth on 2002.02.23:
lynx -source ftp.gnu.org/gnu/gmp/gmp-4.0.1.tar.gz > gmp-4.0.1.tar.gz gunzip < gmp-4.0.1.tar.gz | tar -xf - cd gmp-4.0.1 ./configure make # about 120 seconds lynx -source cr.yp.to/speed/mult/gmp-bench.c > bench.c gcc -O3 -o bench bench.c .libs/libgmp.a ./bench > bench.out # about 300 secondsResults:
1: 409 65 36 36 36 36 2: 218 72 72 54 72 54 3: 1056 110 86 70 70 70 4: 245 87 70 86 103 86 5: 252 71 70 70 70 70 6: 242 71 70 70 70 70 7: 241 71 70 70 70 70 8: 241 71 70 70 70 70 10: 251 71 70 70 70 70 12: 241 71 70 70 70 70 14: 241 71 70 70 70 70 16: 241 71 70 70 70 70 20: 256 85 84 84 84 69 24: 253 85 84 69 69 69 28: 239 70 69 69 69 69 32: 251 70 69 69 69 69 40: 929 195 130 112 130 112 48: 291 114 112 112 112 112 56: 291 113 111 111 111 111 64: 300 131 111 111 111 111 80: 1115 265 213 155 155 155 96: 358 204 190 154 154 154 112: 850 289 241 209 209 209 128: 389 290 263 208 208 208 160: 7999 313 293 271 253 253 192: 2673 372 335 318 318 318 224: 1666 458 397 375 375 375 256: 1485 502 445 445 445 445 320: 7199 653 621 621 621 621 384: 2619 845 825 825 825 825 448: 2084 1074 1054 1054 1054 1054 512: 2534 1372 1352 1352 1352 1352 640: 3311 1918 1898 1898 1899 1898 768: 4034 2614 2594 2594 2594 2594 896: 8310 3515 3425 3392 3375 3375 1024: 5389 4259 4239 4214 4214 4214 1280: 7106 6126 6055 6020 6020 6020 1536: 9293 8207 8178 8157 8157 8157 1792: 11919 10695 10629 10591 10591 10591 2048: 14555 13171 12953 12953 12953 12953 2560: 20046 18803 18685 18650 18650 18650 3072: 26731 25238 25132 25118 25118 25118 3584: 34410 32938 32641 32631 32631 32631 4096: 41195 39948 39755 39745 39745 39745 5120: 58729 57583 57379 57379 57379 57379 6144: 77994 76841 76721 76701 76701 76701 7168: 119590 97900 97331 97197 97124 97124 8192: 123733 449867 121077 120348 120348 120348 10240: 190548 174807 174363 174319 174319 174319 12288: 225653 217445 233693 217421 217204 217204 14336: 286032 281983 281906 281866 281866 281866 16384: 358395 351696 351498 351412 351412 351412 20480: 500194 492003 478679 493722 478555 478459 24576: 638624 635033 634872 634828 634828 634828 28672: 800680 812107 807504 796903 796767 796749 32768: 1021286 994477 1007581 991683 991561 1002631 40960: 1407380 1405663 1379885 1379143 1397011 1392602 49152: 1861210 1843982 1843875 1869816 1844000 1868980 57344: 2338472 2330703 2318738 2334723 2318643 2330264 65536: 2735392 2696064 2718991 2690693 2690806 2717286 81920: 3902635 3863741 3837834 3832706 3837748 3833647 98304: 5131960 5159196 5148739 5159949 5169913 5133489 114688: 6574690 6491749 6642745 6421342 6430112 6449433 131072: 7823067 7686903 8603228 7687760 7680718 7697073 163840: 11176813 11030140 11052773 11032785 11027024 11044433 196608: 13977323 13893568 13904165 13917971 13880103 13902046 229376: 18061112 17948828 18010022 17951446 17949072 17928645 262144: 22609683 22343138 22293835 22604276 22363139 23344774 327680: 30988494 31033903 31068430 31001506 31008153 30994068 393216: 40753845 40740530 40753208 40701451 41188099 41767844 458752: 48060025 48145912 48136648 48087364 48185149 48083692 524288: 56128855 57563683 56281180 56225205 56256896 56315455 655360: 74159037 74609891 75048532 73677724 73652580 73615933 786432: 91840845 93167688 91941727 91941189 91920023 92348984 917504: 110254367 109000249 108900361 109173015 109902110 108882665 1048576: 129543866 130551515 129119375 129316786 130394503 129132687 1310720: 170364339 171925184 170410128 171727359 170395567 170414038 1572864: 215696819 213849271 214814017 213742600 214873793 213834865 1835008: 257355495 256786683 255499297 257051961 255882997 256559503 2097152: 292859677 294208103 291503376 292961716 293298654 291792284 2621440: 387414791 386642662 386631935 395807260 386498782 386319186 3145728: 481586393 480493338 480793396 481198422 482017592 480945997 3670016: 572398472 572365809 573042519 572036511 573480048 571921625 4194304: 684467640 682016735 683331210 682060663 683054790 683338766 5242880: 896149597 894482565 894451422 894909622 894335448 894684466 6291456: 1138457247 1140488239 1139949340 1138535866 1140322940 1140182996 7340032: 1284157795 1290000214 1281512343 1282182746 1285565050 1282093012 8388608: 1478686251 1472550302 1474194763 1489697819 1476214627 1472154389 10485760: 1888797952 1887806293 1888716312 1887484313 1889892652 1887978715 12582912: 2347515191 2337633280 2337611078 2339210489 2340137720 2344777802 14680064: 2806735374 2796764316 2804006809 2811230016 2823129514 2802601300 16777216: 3212476318 3225237858 3214542155 3212180362 3218219697 3215202707 20971520: 4097115552 4082810474 4082276019 4087166444 4083583141 4084015672 25165824: 5053134619 5054862170 5035655629 5061597382 5049946849 5050672826 29360128: 6043704636 6034322431 6027696953 6029099487 6050162453 6031823278 33554432: 6965286947 6957508213 6960417338 6954937660 6955739040 6962154653
Older timings for gmp 3.0.1 on a Pentium-II:
1: 452 92 87 87 87 88 2: 108 107 89 89 89 89 4: 748 173 139 139 139 145 8: 159 165 156 139 139 145 16: 144 145 139 139 139 145 32: 156 142 137 137 137 141 64: 498 198 193 193 193 196 128: 726 367 340 316 316 321 256: 1381 816 775 775 775 775 512: 2705 2309 2304 2304 2304 2301 1024: 17391 7338 7342 7338 7330 7323 2048: 23602 22943 22892 22892 22892 22895 4096: 71027 70328 70198 70198 70198 70199 8192: 302476 223158 221127 221001 220924 220914 16384: 666556 645750 645136 650994 645568 644918 32768: 1876911 1863817 1846719 1879735 1846995 1852257 65536: 5259995 5178851 5182519 5172907 5201277 5175833 131072: 15003013 14881224 14870357 14884093 14877678 14870283 262144: 41677630 41506978 41483440 41491268 41492274 41488776 524288: 117103698 116699710 116704094 116758140 116799226 116706520 1048576: 331023002 330425996 330989520 330615434 330563952 330685842 2097152: 923039083 921529844 920962684 920591312 921254080 921400948 4194304: 2519044744 2515178776 2517854251 2513331425 2515646324 2516371476 8388608: 7036252102 7035058876 7034085532 7032122272 7036529124 7044188812