The best way to do bignums in C/C++ on a Sun 3.

Greg greg%bosco.Berkeley.EDU at ucbvax.berkeley.edu
Sat Aug 26 14:49:02 AEST 1989


I have a program which counts certain combinatorial objects in buch to
produce very big numbers.  As I optimize my program and do longer runs, I
have reached the limit of long ints and double precision floating point
mantissas (yes, I want the exact integral value).  I need to compute with
bignums, but efficiently.

What is the best way to do this in C or C++ on a Sun?  I would like to
multiply two 32-bit digits to yield a 64-bit result which I can divide
into two 32-bit digits.  I strongly suspect that this only takes one
multiply in assembly language.  Unfortunately, there is now 64-bit atomic
data type in C (and presumably none in C++), so I am stuck with
multiplying two 16-bit digits to get a 32-bit digit, i.e. four times as
many multiplies.

So I can resign myself to inefficiency or learn Sun 3 assembly language
and write an assembly routine.  Does there exist a library to do bignums?
Is there another way to code this in C or C++?

Please send a copy of your reply by E-mail.  Thanks in advance.
---
Greg



More information about the Comp.sys.sun mailing list