#include <bits/stdc++.h>
using namespace std;
long long path = 0;
long long num = 0;
void bfs(const vector<vector<int>>& g, int s) {
  vector<long long> d(g.size()), c(g.size()), is_leaf(g.size());
  queue<long long> q;
  for (int i = 0; i < g.size(); i++) {
    d[i] = numeric_limits<long long>::min();
    c[i] = 0;
    is_leaf[i] = 0;
  }
  d[s] = 0;
  q.push(s);
  while (!q.empty()) {
    int v = q.front();
    q.pop();
    bool ch = true;
    for (auto u = g[v].begin(); u != g[v].end(); u++) {
      if (c[*u] == 0) {
        q.push(*u);
        c[*u] = 1;
        d[*u] = d[v] + 1;
        ch = false;
      }
    }
    if (ch) is_leaf[v] = 1;
    c[v] = 2;
  }
  for (int i = 0; i < g.size(); i++) {
    if (is_leaf[i] == 1) {
      num++;
      path += d[i];
    }
  }
}
int main() {
  int a, b, c, d;
  cin >> a >> b >> c >> d;
  int n1 = a * d;
  int n2 = b * d - (b - a) * (d - c);
  double ans = double(n1) / n2;
  cout.precision(15);
  cout << ans << endl;
  return 0;
}
