#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
using namespace std;
long double one = 1.0000000000, zero = 0.0000000000;
long double dp[3][1002][1002];
long double count(long long int i, long long int w, long long int b) {
  if (i == 0) {
    if (w == 0) return zero;
    if (b == 0) return one;
    if (dp[i][w][b] != -1) return dp[i][w][b];
    long double d = one * w / (b + w);
    d = d + (one - d * one) * count(1LL, w, b - 1);
    return dp[i][w][b] = d;
  } else if (i == 1) {
    if (b == 0) return zero;
    if (dp[i][w][b] != -1) return dp[i][w][b];
    long double d = one * b / (b + w);
    d *= count(2LL, w, b - 1);
    d *= one;
    return dp[i][w][b] = d;
  } else {
    if (dp[i][w][b] != -1) return dp[i][w][b];
    if (b == 0) {
      return dp[i][w][b] = count(0LL, w - 1, b) * one;
    }
    long double d = one * w / (w + b);
    return dp[i][w][b] =
               (d * count(0LL, w - 1, b) + (one - d) * count(0LL, w, b - 1));
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  {
    long long int w, b;
    long double ans;
    memset(dp, -1, sizeof dp);
    cin >> w >> b;
    ans = count(0, w, b);
    cout << fixed << setprecision(10) << ans;
    cout << '\n';
  }
  return 0;
}
