want fast bit set/extract

Torbjorn Granlund tg at swox.com
Mon Apr 26 03:41:02 CEST 2004


Kevin Ryde <user42 at zip.com.au> writes:

  "D. J. Bernstein" <djb at cr.yp.to> writes:
  >
  >    void mpz_copybits_fdiv(
  >      mpz_t rop,unsigned long t,
  >      mpz_t op,unsigned long s,
  >      unsigned long b)
  
  Yes, something like that.  I guess block set and clear would also be
  of value.  I'll add something to the tasks list if Torbjorn has no
  objections.

I don't have any objections.

Instead of having an overly general function, we might want to
add two or three easy-to-understand functions.  Alternatively,
have a general function and a few macros invoking the general
function in clever ways.

  > An mpz_copybits_tdiv---which would be faster for negative numbers, and
  > simpler, with your current integer representation---would be fine for
  > typical applications. I suggested fdiv above because you seem to have
  > mpz_tstbit = mpz_tstbit_fdiv, etc., without tdiv versions.
  
  Yes, "emulated" twos-complement is the convention on the bitwise
  things.  Though it's a bit like hard work, and I'm not even sure if it
  finds much genuine use.  (There must have been a good reason it was
  adopted in the first place, but I don't know what it was :-).

I did it like that because one gets well-defined semantics for
negative operands that way.  

-- 
Torbjörn


More information about the gmp-discuss mailing list