#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
#define FAST ios::sync_with_stdio(0), cin.tie(0),cout.tie(0)
#define ll long long
#define ld long double
#define int long long
#define endl "\n"
#define yes cout<<"YES"<<endl;
#define no cout<<"NO"<<endl;
#define pb push_back
//#pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
const int MOD = 1e9+7 ;
//const int MOD = 998244353 ;
const int N = 1e5+5 ;
const ll INF = 1e18 ;
const ll MIN = -1e18 ;
typedef tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update> indexed_set;
void solve() {
ll v1,v2,v3,d;cin>>v1>>v2>>v3>>d;
ll t=d*v3;
ll q=v1+v2;
cout<<fixed<<setprecision(6)<<(ld)t/q<<endl;
}
signed main() {
FAST;
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
ll t=1;
cin>>t;
while(t--) solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiNkZWZpbmUgRkFTVCBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKSwgY2luLnRpZSgwKSxjb3V0LnRpZSgwKQojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGxkIGxvbmcgZG91YmxlCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGVuZGwgIlxuIgojZGVmaW5lIHllcyBjb3V0PDwiWUVTIjw8ZW5kbDsKI2RlZmluZSBubyBjb3V0PDwiTk8iPDxlbmRsOwojZGVmaW5lIHBiIHB1c2hfYmFjawovLyNwcmFnbWEgR0NDIG9wdGltaXplKCJPMyx1bnJvbGwtbG9vcHMiKQovLyNwcmFnbWEgR0NDIHRhcmdldCgiYXZ4MixibWksYm1pMixsemNudCxwb3BjbnQiKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgTU9EID0gMWU5KzcgIDsKLy9jb25zdCBpbnQgTU9EID0gOTk4MjQ0MzUzICA7CmNvbnN0IGludCBOID0gMWU1KzUgIDsKY29uc3QgbGwgSU5GID0gMWUxOCA7CmNvbnN0IGxsIE1JTiA9IC0xZTE4IDsKdHlwZWRlZiB0cmVlPGxsLG51bGxfdHlwZSxsZXNzPGxsPixyYl90cmVlX3RhZyx0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+IGluZGV4ZWRfc2V0OwoKCnZvaWQgc29sdmUoKSB7CiAgICBsbCB2MSx2Mix2MyxkO2Npbj4+djE+PnYyPj52Mz4+ZDsKICAgIGxsIHQ9ZCp2MzsKICAgIGxsIHE9djErdjI7CiAgICBjb3V0PDxmaXhlZDw8c2V0cHJlY2lzaW9uKDYpPDwobGQpdC9xPDxlbmRsOwp9CgpzaWduZWQgbWFpbigpIHsKICAgIEZBU1Q7CiAgICAjaWZuZGVmIE9OTElORV9KVURHRQogICAgICAgIGZyZW9wZW4oImlucHV0LnR4dCIsInIiLHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKICAgICNlbmRpZgogICAgbGwgdD0xOwogICAgY2luPj50OwogICAgd2hpbGUodC0tKSBzb2x2ZSgpOwp9CgoK