Bugs or features?

Torbjorn Granlund tg at swox.com
Sat Feb 16 01:19:57 CET 2008

  I am just wondering if this is by design or if this is a bug?

  The question if this is the intended functionality of the >>= operator
  for negative numbers. This differs from how it is defined for native
  types like int for example.

This is a sticky issue.

In the C standard, the behaviour of right shift of negative numbers is
undefined.  But in practice, almost every compiler defines it as
rounding towards -oo.  The one exception I am aware of is Cray's
compilers for their vector systems.  (They shift the numbers logically
always, which is not very helpful.)

I am inclined to changing gmpxx.h to make it follow the common
behaviour, although that is not formally standardized.

What do people think?  I am mainly interested in the opinion of people
that actually use gmpxx.h.

(The change is trivial, just change the t to an f in mpz_tdiv_q_2exp
in gmpxx.h.)


More information about the gmp-discuss mailing list