// DivModInt sets q = x / y and r = x % y. func DivModInt(q, r, x, y *Int) { q.doinit() r.doinit() x.doinit() y.doinit() C.mpz_tdiv_qr(&q.i[0], &r.i[0], &x.i[0], &y.i[0]) }
// QuoRem sets z to the quotient x/y and r to the remainder x%y // and returns the pair (z, r) for y != 0. // If y == 0, a division-by-zero run-time panic occurs. // // QuoRem implements T-division and modulus (like Go): // // q = x/y with the result truncated to zero // r = x - y*q // // (See Daan Leijen, ``Division and Modulus for Computer Scientists''.) // See DivMod for Euclidean division and modulus (unlike Go). // func (z *Int) QuoRem(x, y, r *Int) (*Int, *Int) { x.doinit() y.doinit() r.doinit() z.doinit() C.mpz_tdiv_qr(z.ptr, r.ptr, x.ptr, y.ptr) return z, r }
// QuoRem sets z to the quotient x/y and r to the remainder x%y // and returns the pair (z, r) for y != 0. // If y == 0, a division-by-zero run-time panic occurs. // // QuoRem implements T-division and modulus (like Go): // // q = x/y with the result truncated to zero // r = x - y*q // // (See Daan Leijen, ``Division and Modulus for Computer Scientists''.) // See DivMod for Euclidean division and modulus (unlike Go). // func (z *Int) QuoRem(x, y, r *Int) (*Int, *Int) { x.doinit() y.doinit() r.doinit() z.doinit() C.mpz_tdiv_qr(&z.i[0], &r.i[0], &x.i[0], &y.i[0]) return z, r }