#include <bits/stdc++.h>
using namespace std;
const int oo = (int)1e9;
const double PI = 2 * acos(0.0);
const double eps = 1e-9;
double mem[1010][1010][2];
double dp(int w, int b, bool player) {
  double &ret = mem[w][b][player];
  if (ret == ret) return ret;
  if (b == 0) return 1.0;
  double pWin = w / (w + b * 1.0);
  if (player) {
    ret = pWin;
    if (w) {
      ret += (1.0 - pWin) * (w / (w + b - 1.0)) *
             (1.0 - dp(w - 1, b - 1, !player));
    }
    if (b - 1) {
      ret += (1.0 - pWin) * ((b - 1) / (w + b - 1.0)) *
             (1.0 - dp(w, b - 2, !player));
    }
    if (!w && !(b - 1)) {
      ret += (1.0 - pWin) * (1.0 - dp(w, b - 1, !player));
    }
  } else {
    ret = pWin + (1.0 - pWin) * (1.0 - dp(w, b - 1, !player));
  }
  return ret;
}
int main() {
  ios_base::sync_with_stdio(false);
  memset(mem, -1, sizeof(mem));
  mem[0][0][1] = 1.0;
  mem[0][0][0] = 0.0;
  int b, w;
  cin >> w >> b;
  cout << fixed << setprecision(9) << dp(w, b, 0) << endl;
  return 0;
}
