py: Implement divmod for mpz bignum.
diff --git a/py/objint_mpz.c b/py/objint_mpz.c
index 936e2cb..27f1ddb 100644
--- a/py/objint_mpz.c
+++ b/py/objint_mpz.c
@@ -262,6 +262,17 @@
mpz_pow_inpl(&res->mpz, zlhs, zrhs);
break;
+ case MP_BINARY_OP_DIVMOD: {
+ mp_obj_int_t *quo = mp_obj_int_new_mpz();
+ mpz_divmod_inpl(&quo->mpz, &res->mpz, zlhs, zrhs);
+ // Check signs and do Python style modulo
+ if (zlhs->neg != zrhs->neg) {
+ mpz_add_inpl(&res->mpz, &res->mpz, zrhs);
+ }
+ mp_obj_t tuple[2] = {quo, res};
+ return mp_obj_new_tuple(2, tuple);
+ }
+
default:
return MP_OBJ_NULL; // op not supported
}