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