/*
  || Shree Ganeshay Namah ||

     || Jai Shree Ram ||
  || Nabh Sparsham Diptam ||
*/
#include<bits/stdc++.h>
using namespace std;
//typedef long long int ll;

#define mod 1000000007
#define block 180
#define ff first.first
#define fs first.second
#define sf second.first
#define ss second.second
#define f1 first
#define s1 second
#define pb push_back
// to floor a/b you can do a/b and to ceiling a/b you can do (a+b-1)/b
int jai_shree_ram()
{
    return 1;
}
int shree_ganeshay_namah()
{
    return 1;
}

//End of Matrix Exponentiation
/*
Segment Tree
ll ar[200005];
ll st[800005];
void build(ll si,ll ss,ll se)
{
    if(ss==se)
    {
        st[si]=ar[ss];
        return ;
    }
    ll mid=(ss+se)/2;
    build(2*si,ss,mid);
    build(2*si+1,mid+1,se);
    st[si]=(st[2*si]+st[2*si+1]);
}
ll query(ll si,ll ss,ll se,ll l,ll r)
{

   if(l<=ss && se<=r)
     return st[si];
   if(l>se || r<ss)
    return 0;
   ll mid=(ss+se)/2;
   ll x=query(2*si,ss,mid,l,r);
   ll y=query(2*si+1,mid+1,se,l,r);
   return x+y;
}
void update(ll si,ll ss,ll se,ll qi)
{
    if(ss==se)
    {
        st[si]=ar[ss];
        return;
    }
    ll mid=(ss+se)/2;
    if(qi<=mid)
        update(2*si,ss,mid,qi);
    else
        update(2*si+1,mid+1,se,qi);
    st[si]=st[2*si]+st[2*si+1];
}
*/

int main()
{
    /*ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);*/
    long long int a,b,p,q,i;
    cin>>a>>b>>p>>q;
    double f = (double)(q*a+b*p)/(b+q);
    cout.precision(17);
    cout<<f;
    return 0;
}

#include<bits/stdc++.h>
#define loop(i, n) for(int i = 0; i < n; i++)
#define pb          push_back
#define ll          long long int
#define vi          vector<int>
#define pi          pair<int, int>
#define W(t)        int t; cin >> t; while(t--)
#define FIO         ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ff          first
#define ss          second
#define rep(i, a, b)for(ll i = a; i <= b; i++)
#define dep(i, a, b)for(ll i = a; i >= b; i--) 
#define all(x)      x.begin(), x.end()
#define tr(it, a) for(auto it = a.begin(); it != a.end(); it++)
#define PI                3.14159265
using namespace std;
const ll mod = (ll)(998244353);
vector<ll> read(int n){
    
    vector<ll> v(n);

    loop(i, n)
        cin >> v[i];
    return v;
}
vector<ll> fact, invf;
ll powmod(ll a, ll b) {
    ll res = 1;
    a %= mod;
    for (; b; b >>= 1) {
        if (b & 1)
            res = res * a % mod;
        a = a * a % mod;
    }
    return res;
}
 
void build(int n) {
    fact = vector<ll>(n+1, 1);
    invf = vector<ll>(n+1, 1);
    for (int i = 2; i <= n; i++)
        fact[i] = fact[i-1] * i % mod;
    invf[n] = powmod(fact[n], mod-2);
    for (int i = n-1; i >= 2; i--)
        invf[i] = invf[i+1] * (i+1) % mod;
}
 
ll nChoosek(int n, int k) {
    if (n < k)
        return 0;
    return fact[n] * invf[k] % mod * invf[n-k] % mod;
}
ll test = 0;
void solve(){
    ll i, j, k, m, n, cnt = 0, ans = 0, sum = 0;

   double sx, sy, gx, gy;

   cin >> sx >> sy >> gx >> gy;

   double res = (gy*sx + gx*sy)/(sy+gy);

   cout <<fixed << setprecision(10) << res << "\n";


    test++;
}
    
int main(){
    FIO
    
    #ifndef ONLINE_JUDGE
	freopen("C:/Codeforces/input.txt", "r", stdin);
	freopen("C:/Codeforces/output.txt", "w", stdout);
	#endif
    ll i = 1;
    //W(t)
    solve();
    
    return 0;
}