mpz_invert (x, 1, 0)
arndt at jjj.de
Fri Mar 2 09:33:50 CET 2012
* bodrato at mail.dm.unipi.it <bodrato at mail.dm.unipi.it> [Mar 01. 2012 20:20]:
> Il Gio, 1 Marzo 2012 4:23 pm, Joerg Arndt ha scritto:
> > If mod zero is allowed at all it should
> > return the first argument unchanged:
> > mod(x,0) = x for all x
> > So the behavior below is what I would expect.
> Maybe you are right, but ...
> I did not specify that for any non-unity value n, the current mpz_invert,
> returns "non invertible" for the modulus 0.
In fact, I'd be surprised if mod zero would do anything else.
Performance reasons suggest that no extra branch in any mod-code
should be done, leaving it to the user to handle the corner case
"equivalence mod zero" being "simple equality".
> Moreover the old documentation promised to return an inverse r so that
> 0<=r<m, where m is the modulus. If m=0, no return value r is allowed by
> this restriction: mod zero should not be allowed at all.
> I recently changed the documentation writing "0<r<m", but I now realize
> that I should change it again, because a negative modulus is allowed:
> Regards, m
More information about the gmp-devel