#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <ctime>
using namespace std;
int main()
{
double p;
long long int n,t1,t2,t1w,t2w,count;
srand (static_cast <unsigned> (time(0)));
scanf("%lld",&n);
while(n--)
{
count = 0;
scanf("%lld %lld %lld %lld",&t1,&t2,&t1w,&t2w);
for(long long i=1;i<=100000;i++)
{
//start1= rand()%t1+1;
float x1= static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(t1)));
float x2= x1 + t1w;
float y1= static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(t2)));
float y2= x2 + t2w;
//printf("%f %f %f %f\n",x1,x2,y1,y2);
if(x1>x2)
{
float tmp = x1;
x1 = x2;
x2 = tmp;
tmp = y1;
y1 = y2;
y2 = tmp;
}
if(x1<=y2 && y1<=x2)
count+=1;
}
p = double(count)/(100000);
printf("%f\n",p);
}
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3RpbWU+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7Cglkb3VibGUgcDsKCWxvbmcgbG9uZyBpbnQgbix0MSx0Mix0MXcsdDJ3LGNvdW50OwoJc3JhbmQgKHN0YXRpY19jYXN0IDx1bnNpZ25lZD4gKHRpbWUoMCkpKTsKCQoJc2NhbmYoIiVsbGQiLCZuKTsKCXdoaWxlKG4tLSkKCXsJCgkJY291bnQgPSAwOwoJCXNjYW5mKCIlbGxkICVsbGQgJWxsZCAlbGxkIiwmdDEsJnQyLCZ0MXcsJnQydyk7CgkJZm9yKGxvbmcgbG9uZyBpPTE7aTw9MTAwMDAwO2krKykKCQl7CgkJCS8vc3RhcnQxPSByYW5kKCkldDErMTsKCQkJZmxvYXQgeDE9ICBzdGF0aWNfY2FzdCA8ZmxvYXQ+IChyYW5kKCkpIC8oIHN0YXRpY19jYXN0IDxmbG9hdD4gKFJBTkRfTUFYLyh0MSkpKTsKCQkJZmxvYXQgeDI9IHgxICsgdDF3OwoJCQlmbG9hdCB5MT0gIHN0YXRpY19jYXN0IDxmbG9hdD4gKHJhbmQoKSkgLyggc3RhdGljX2Nhc3QgPGZsb2F0PiAoUkFORF9NQVgvKHQyKSkpOwoJCQlmbG9hdCB5Mj0geDIgKyB0Mnc7CgkJCS8vcHJpbnRmKCIlZiAlZiAlZiAlZlxuIix4MSx4Mix5MSx5Mik7CgkJCWlmKHgxPngyKQoJCQl7CgkJCQlmbG9hdCB0bXAgPSB4MTsKCQkJCXgxID0geDI7CgkJCQl4MiA9IHRtcDsKCQkJCXRtcCA9IHkxOwoJCQkJeTEgPSB5MjsKCQkJCXkyID0gdG1wOwoJCQl9CgkJCWlmKHgxPD15MiAmJiB5MTw9eDIpCgkJCQljb3VudCs9MTsKCQkJCSAKCQl9CgkJcCA9IGRvdWJsZShjb3VudCkvKDEwMDAwMCk7CgkJcHJpbnRmKCIlZlxuIixwKTsKCX0KCXJldHVybiAwOwp9