let map2_base b op x y =
let rec map2_base_rec a x y =
let (qx, mx) = Big_int.quomod_big_int x b
and (qy, my) = Big_int.quomod_big_int y b
in let res_m = op mx my
and res_q =
if (Big_int.eq_big_int Big_int.zero_big_int qx)
&& (Big_int.eq_big_int Big_int.zero_big_int qy)
then a
else map2_base_rec a qx qy
in Big_int.add_big_int (Big_int.mult_big_int res_q b) res_m
in map2_base_rec Big_int.zero_big_int x y