#include <bits/stdc++.h>
using namespace std;
const long long int inf = pow(10, 14);
long long int w, b;
long double res = 0;
long double dp[1005][1005];
long double recur(long long int w, long long int b) {
  if (w <= 0) return 0;
  if (b <= 0) return 1;
  if (dp[w][b] >= 0) return dp[w][b];
  long long int ogw = w, ogb = b;
  long double prev = 1.0 * b / (w + b);
  long double val1 = 1.0 * w / (w + b);
  b--;
  long double val11 = 0, val12 = 0;
  prev *= 1.0 * b / (w + b);
  b--;
  if (prev >= 0) {
    if ((w + b) > 0) {
      val11 = 1.0 * b * recur(w, b - 1) / (w + b);
      val12 = 1.0 * w * recur(w - 1, b) / (w + b);
      val1 += (val11 + val12) * prev;
    }
  }
  dp[ogw][ogb] = val1;
  return val1;
}
int main() {
  cin >> w >> b;
  for (long long int i = 0; i < 1005; i += 1) {
    for (long long int j = 0; j < 1005; j += 1) dp[i][j] = -1;
  }
  cout << fixed << setprecision(14) << recur(w, b);
  return 0;
}
