Behavior of operator% in C++ class wrapper
    Décio Luiz Gazzoni Filho 
    decio at decpp.net
       
    Sun Feb 22 19:46:18 CET 2004
    
    
  
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello,
I've been developing some software with GMP's C++ class wrapper. I'm working 
with integers modulo p, so I use operator% very frequently.
Now mpz_mod() always returns a nonnegative result (since it employs the 
function mpz_fdiv_r() for division), but according to gmpxx.h, operator% 
employs the function for mpz_tdiv_r() for division, and so a negative integer 
modulo a positive integer returns a negative result. Is this apparent 
inconsistency done on purpose? And would it be possible to change operator%'s 
behavior? Because it precludes me from using operator== to check for 
congruences directly -- I've caught a few bugs in my code related to that 
already. And it generally makes things more difficult: for instance, there 
are algorithms which only work with nonnegative representation (like the 
binary segmentation method for multiplying polynomials), so for these I'm 
forced to perform a conversion to nonnegative representation.
Thanks,
Décio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)
iD8DBQFAOTFBFXvAfvngkOIRAqQ7AJ0dLNpeUjPmxTx5iYTr5dQE25T7ZgCZAUFv
17LREc721rwSn++xRORnur0=
=U8Dm
-----END PGP SIGNATURE-----
    
    
More information about the gmp-discuss
mailing list