#include <stdio.h>
#include "miracl.h"
main()
{
big a;
big b;
big c;
mirsys(-65536,0);
a = mirvar(0);
b = mirvar(0);
c = mirvar(0);
cinnum(a,stdin);
cinnum(b,stdin);
multiply(a,b,c);
cotnum(c,stdout);
}
Here are some old timings. I downloaded MIRACL version 4.22. I copied mrmuldv.any to mrmuldv.s, removed everything from mrmuldv.s except the section labelled DJGPP GNU C, and eliminated the underscores from mrmuldv.s. Then I compiled the library:
as -o mrmuldv.o mrmuldv.s
ln -s ../include/* .
ln -s mirdef.h32 mirdef.h
make -f ../lib/miracl.mak
Results on a Pentium II:
1: 4215 415 335 341 316 313
2: 820 356 333 313 347 313
4: 486 332 316 331 379 345
8: 463 331 348 345 316 331
16: 475 331 360 313 316 331
32: 483 320 362 340 336 340
64: 598 488 489 436 460 419
128: 1031 863 880 811 847 811
256: 2561 2476 2507 2471 2509 2471
512: 8330 8267 8305 8267 8305 8267
1024: 30781 30811 30848 30812 30848 30812
2048: 119642 119762 119800 119762 128178 119762
4096: 472119 472438 472477 472439 472477 472439
8192: 1896462 1890836 1916694 1916890 1896697 1890836
16384: 7578453 7567765 7556846 7751752 7569880 7552307
32768: 30146002 30363948 30155703 30259578 30231958 30167444
65536: 120904516 121034638 121100894 121012190 122170890 121097840