/*
 
      __
     /  l
   .'   :               __.....__..._  ____
  /  /   \          _.-" $$SSSSSS$$SSSSSSSSSp.
 (`-: .qqp:    .--.'  .p.S$$$$SSSSS$$$$$$$$SSSSp.
  """yS$SSSb,.'.g._\.SSSSS^^""       `S""^^$$$SSSb.
    :SS$S$$$$SSSSS^"""-. _.            `.   "^$$$SSb._.._
    SSS$$S$$SSP^/       `.               \     "^$SSS$$SSb.
    :SSSS$SP^" :          \  `-.          `-      "^TSS$$SSb
     $$$$S'    ;          db               ."        TSSSSSS$,
     :$$P      ;$b        $ ;    (        /   .-"   .S$$$$$$$;
       ;-"     :$ ^s.    d' $           .g. .'    .SSdSSSS$P"
      /     .-  T.  `b. 't._$ .- / __.-j$'.'   .sSSSdP^^^'
     /  /      `,T._.dP   "":'  /-"   .'       TSSP'
    :  :         ,\""       ; .'    .'      .-""
   _J  ;         ; `.      /.'    _/    \.-"
  /  "-:        /"--.b-..-'     .'       ;
 /     /  ""-..'            .--'.-'/  ,  :
:S.   :     dS$ bug         `-i" ,',_:  _ \
:S$b  '._  dS$;             .'.-"; ; ; j `.l
 TS$b          "-._         `"  :_/ :_/
  `T$b             "-._
    :S$p._             "-.
     `TSSS$ "-.     )     `.
        ""^--""^-. :        \
                  ";         \
                  :           `._
                  ; /    \ `._   ""---.
                 / /   _      `.--.__.'
                : :   / ;  :".  \
                ; ;  :  :  ;  `. `.
               /  ;  :   ; :    `. `.
              /  /:  ;   :  ;     "-'
             :_.' ;  ;    ; :
                 /  /     :_l
                 `-'
*/
 


#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
#define ld long double
#define rep(i,a,n) for(int i=a;i<n;i++)
#define all(x) (x).begin(),(x).end()
#define sz(x) sizeof(x)/sizeof(x[0])
#define init(x,y) memset(x,y,sizeof(x));
#define endl '\n'
#define MOD 1000000007
const ll INF = 1ll*1000*1000*1000*1000*1000*1000 + 7;
const ll NN = 1e7 + 5;
using namespace std;

const double EPS = 0.000000001;
double dfs(double c, double m, double p, double v, double curr, int cnt){
  double ans = 0;
  ans += curr * p * cnt;
  for (int i = 0; i < 2; i++){
    if (c > EPS){
      double x = min(c, v);
      double c2 = c - x;
      double m2, p2;
      if (m > EPS){
        m2 = m + x / 2;
        p2 = p + x / 2;
      } else {
        m2 = 0;
        p2 = p + x;
      }
      ans += dfs(c2, m2, p2, v, curr * c, cnt + 1);
    }
    swap(c, m);
  }
  return ans;
}
int main(){
  IOS;
  cout << fixed << setprecision(20);
  int t;
  cin >> t;
  for (int i = 0; i < t; i++){
    double c, m, p, v;
    cin >> c >> m >> p >> v;
    cout << dfs(c, m, p, v, 1, 1) << endl;
  }
}
