Test driver for low-level BigNum library correctness. In addition to the generic "bntest" program, which picks a size at compile time, there are specific test drivers, bntest16, bntest32 and bntest64 that you can compile specifically, e.g. to test multiple word sizes. bntest is different from other programs in that it invokes the low-level BigNum functions directly. It need only be linked with lbnmem.o, lbn32.o and legal.o. This is not normally desirable, but it lets this test driver isolate errors better in the bottom-level primitives. It's served very well in tracking down errors. If you write some new assembly primitives and it doesn't find a problem with them, you can have a good deal of confidence that they're correct. This program also does timing tests on basic modular exponentiation. It is invoked as bntest [modsize [expsize [expsize2]]]. If modsize is not specified, it only runs consistency checks. If expsize is not specified, it defaults to modsize. If expsize2 is not specified, it defaults to expsize. Invalid arguments produce a usage message. Example invocation lines: bntest bntest 512 bntest 1024 160