#include <bits/stdc++.h>
using namespace std;
const long long max_ = 3000 + 7;
const int mod = 1e9 + 7;
const int inf = 1e9;
const long long INF = 1e18;
int read() {
  int s = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    s = s * 10 + ch - '0';
    ch = getchar();
  }
  return s * f;
}
int min(int a, int b) { return a < b ? a : b; }
int max(int a, int b) { return a > b ? a : b; }
int w, b, total;
double f[max_][max_];
signed main() {
  w = read(), b = read();
  total = w + b;
  if (!total) {
    cout << "0.0000000000";
    return 0;
  }
  int cishu = total / 3.0;
  f[0][w] = 1.0;
  for (int i = 1; i <= cishu; i++) {
    for (int j = 0; j <= w; j++) {
      int num = total - (i - 1) * 3;
      if (num - j < 2) continue;
      if (num - j <= b && num - j >= 3)
        f[i][j] += f[i - 1][j] * (((num - j) * 1.0 / num) *
                                  ((num - j - 1) * 1.0 / (num - 1)) *
                                  ((num - j - 2) * 1.0 / (num - 2)));
      if (num - (j + 1) <= b && num - (j + 1) >= 2 && j > 0)
        f[i][j] += f[i - 1][j + 1] * (((num - (j + 1)) * 1.0 / num) *
                                      ((num - (j + 1) - 1) * 1.0 / (num - 1)) *
                                      ((j + 1) * 1.0 / (num - 2)));
    }
  }
  cishu--;
  if (total % 3 != 0) cishu++;
  double ans = w * 1.0 / total;
  for (int i = 1; i <= cishu; i++) {
    int num = total - (i)*3;
    for (int j = 1; j <= w; j++) {
      ans += f[i][j] * (j * 1.0 / num);
    }
  }
  printf("%.15lf", ans);
  return 0;
}
