#include <bits/stdc++.h>
using namespace std;
const bool online_judge = true;
const long long inf = 1LL << 60;
long long toInt(string s) {
  long long res;
  stringstream ss;
  ss << s;
  ss >> res;
  return res;
}
string toString(long long n) {
  stringstream ss;
  ss << n;
  return ss.str();
}
double dp[1005][1005];
double dragon(long long, long long);
double princess(long long, long long);
double dragon(long long w, long long b) {
  if (w == 0 || b == 0) return 1;
  double ans = (double)w / (w + b);
  if (b - 1 >= 1)
    ans += (1.0 - princess(w, b - 2)) * b / (w + b) * (b - 1) / (w + b - 1);
  ans += (1.0 - princess(w - 1, b - 1)) * b / (w + b) * w / (w + b - 1);
  return ans;
}
double princess(long long w, long long b) {
  if (w == 0) return 0;
  if (b == 0) return 1;
  if (dp[w][b] != -1) return dp[w][b];
  double ans = (double)w / (w + b);
  ans += (1 - dragon(w, b - 1)) * b / (w + b);
  return dp[w][b] = ans;
}
void run() {
  long long w, b;
  cin >> w >> b;
  cout << setprecision(10) << fixed;
  if (w == 0) {
    cout << 0.0 << endl;
    return;
  }
  for (long long i = 0; i < 1005; i++)
    for (long long j = 0; j < 1005; j++) dp[i][j] = -1;
  cout << princess(w, b) << endl;
}
int main(int argc, char *argv[]) {
  run();
  return 0;
}
