#include template inline bool chmax(T& a, T b){ if (a < b){ a = b; return true; } return false; } template inline bool chmin(T& a, T b){ if (a > b){ a = b; return true; } return false; } using namespace std; using ll = long long; ll mod = 1e9+7; const int dx[8] = {-1,0,1,0,-1,-1,1,1}; const int dy[8] = {0,1,0,-1,1,-1,1,-1}; int main(){ double vl, vr, d, w; cin >> vl >> vr >> d >> w; if (vr > w) { printf("%.12f\n", d/(vr+vl)); return 0; } if (vl > w) { double t1 = d/(vr+w); double d1 = d*(1.0-(vl+vr)/(w+vr)); printf("%.12f\n", t1+d1/(vr+vl)); return 0; } double t1 = (1.0/(w+vr) + (1.0-(vl+vr)/(w+vr))/(w+vl) ); //一回の往復に要する見かけ速度の逆数 double r = (1.0 - (vl+vr)/(vl+w)) * (1.0 - (vl+vr)/(vr+w)); double ans = w * d * t1 / (1.0-r); printf("%.12f\n", ans); }