#include <bits/stdc++.h>
using namespace std;
int w, b;
double dp[1001][1001][3];
double go(int white, int black, int player) {
  if (white < 0 || black < 0) return 0;
  if (white == 0) return 0;
  if (white == black && black == 0) return 0;
  if (dp[white][black][player] == -1) {
    dp[white][black][player] = 0;
    if (player == 0) {
      dp[white][black][player] += 1. * white / (white + black);
      dp[white][black][player] +=
          (1. * black / (white + black)) * go(white, black - 1, 1);
    } else if (player == 1) {
      dp[white][black][player] +=
          1. * black / (white + black) * go(white, black - 1, 2);
    } else {
      dp[white][black][player] +=
          1. * white / (white + black) * go(white - 1, black, 0);
      dp[white][black][player] +=
          1. * black / (white + black) * go(white, black - 1, 0);
    }
  }
  return dp[white][black][player];
}
int main() {
  while (scanf("%d %d", &w, &b) == 2) {
    for (int i = 0; i <= w; i++)
      for (int j = 0; j <= b; j++)
        for (int k = 0; k <= 2; k++) dp[i][j][k] = -1;
    printf("%.9lf\n", go(w, b, 0));
  }
}
