On Tue, 31 Jul 2012, Patrick Pelissier wrote:

Why not intmax_t / uintmax_t instead of long long / unsigned long long?
I believe every platform that has intmax_t also has long long, but the
converse is not true.

Do you have an example of such a platform?

Say, MS visual studio up to version 9 maybe? (I don't have it here to check)

Some platforms provide types larger that intmax_t (intmax_t is part of the
ABI, and they couldn't change it when they added a longer type, see for
instance __int128 in gcc).

Well according to PR#49595, __int128 is not even an extended integer
type but something strange which can hold an integer of 128 bits.
Since the C standard doesn't apply (since it is not an extended nor
standard integer tyoe) and since GCC Manual doesn't specify what
operations are valid and what are not, I am not even sure what a+b
does when a and b are __int128 :)

The reason __int128 is documented as "not an extended integer type" is precisely so they don't have to make intmax_t a typedef to it and break the ABI. Doesn't sound so great...

Note that there are patches floating aroung to introduce __int256 and larger types. Possibly on demand (user would just write a typedef with a suitable attribute to define a new extended integer type).

intmax_t started from a good intention, but it seems fairly useless in
practice.

I rarely used long long but used intmax_t  quite often. I found "long
long" quite useless: either you need 64 bits arithmetic, and you
should use int64_t (or its friends) to have the optimal type,

Probably int_least64_t or int_fast64_t, in theory.

or you need the type which can fit them all, and you should use intmax_t.

which, on every platform I met where it was present, is a typedef for long long. I agree that intmax_t is nice in theory, but I haven't seen practice catch up yet.

Ok, now I've criticized intmax_t enough, I think mpfr's set of *_[su]j functions is a fine interface, and I would be happy to see the same in gmp ;-)

--
Marc Glisse
_______________________________________________
gmp-devel mailing list
gmp-devel@gmplib.org
http://gmplib.org/mailman/listinfo/gmp-devel

Reply via email to