Re: GMP [was Re: Reasonable Assumptions Regarding sizeof(char)]
Ian McCulloch wrote:
Le Chaud Lapin wrote:
Hi,
In practice, GMP is likely to be more portable than something you write
yourself. Did you actually look at the manual? The section on CPU types
smentions specific support for Alpha, Cray, HPPA, IA-64, MIPS, 68xxx,
POWER, PowerPC, SPARC, x86, amd64, plus a bunch of other less common
processors. Finally: ** CPU's not listed will use generic C code. **
Hi Ian,
Yes, I read parts of their manual. The authors did consider many, many
details, so much so that I was nearly willing to overlook the word
'class' being appended to all their C++ classes. But I could not get
pass the portability issues.
There are two types of portability in C++:
1. Unqualified portability, where target CPU is not yet known.
2. Portability with use of config files, #ifdef's, etc.
GMP uses the latter. My current system, with 130 C++ classes is of the
former, without STL, and only 5 or 6 uses of sprintf. I could not bring
myself (at this point) to include all that stuff in GMP's build tree
just to get the performance.
Incidentally, tonight I looked at the way they are doing their
multiplication, and it is the same thing I had in mind, only theirs is
in assembly if available, as you noted. I only wanted the basic
Integer operations including moduluar reduction, and perhaps a bit of
the ECC stuff, but not much more. And when the time comes to regain
that 100-400% performance I lost for not doing it in assembly, I will
use the _asm keyword so that all source files are in C++ files, not
..asm files, as they have done. Fortunately, my intial target CPU market
is very limited (only 2).
I cannot do the CYGWIN thing. I started with VMS, moved to Unix/Emacs
for 8 years, and now I am addicted to Visual Studio 2005 IDE. It's a
drug. :D
-Le Chaud Lapin-
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]