// Mod sets z = x % y and returns z. // Like the result of the Go % operator, z has the same sign as x. func (z *Int) Mod(x, y *Int) *Int { x.doinit() y.doinit() z.doinit() C.mpz_tdiv_r(&z.i[0], &x.i[0], &y.i[0]) return z }
// Rem sets z to the remainder x%y for y != 0 and returns z. // If y == 0, a division-by-zero run-time panic occurs. // Rem implements truncated modulus (like Go); see QuoRem for more details. func (z *Int) Rem(x, y *Int) *Int { x.doinit() y.doinit() z.doinit() C.mpz_tdiv_r(z.ptr, x.ptr, y.ptr) return z }