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