#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
double x1, y1, x2, y2, x3, t0, t1, t2, r;
scanf("%d", &t);
while(t--) {
scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);
if(fabsl(x1 - x2) < 1e-9) {
printf("%.9lf\n", log(y2) - log(y1));
continue;
}
if(x1 > x2 + 1e-9)
swap(x1, x2);
if(y1 > y2 + 1e-9)
swap(y1, y2);
t0 = atan((y2 - y1) / (x2 - x1));
x3 = ((y1 + y2) * tan(t0) + (x1 + x2)) / 2;
t1 = atan(y1 / (x3 - x1));
if(t1 < -1e-9)
t1 += M_PI;
t2 = atan(y2 / (x3 - x2));
if(t2 < -1e-9)
t2 += M_PI;
r = log(fabsl(1 / sin(t2) - 1 / tan(t2)));
r -= log(fabsl(1 / sin(t1) - 1 / tan(t1)));
printf("%.9lf\n", r);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCB0OwogICAgZG91YmxlIHgxLCB5MSwgeDIsIHkyLCB4MywgdDAsIHQxLCB0MiwgcjsKICAgIHNjYW5mKCIlZCIsICZ0KTsKICAgIHdoaWxlKHQtLSkgewogICAgICAgIHNjYW5mKCIlbGYgJWxmICVsZiAlbGYiLCAmeDEsICZ5MSwgJngyLCAmeTIpOwogICAgICAgIGlmKGZhYnNsKHgxIC0geDIpIDwgMWUtOSkgewogICAgICAgIAlwcmludGYoIiUuOWxmXG4iLCBsb2coeTIpIC0gbG9nKHkxKSk7CiAgICAgICAgCWNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZih4MSA+IHgyICsgMWUtOSkKICAgICAgICAgICAgc3dhcCh4MSwgeDIpOwogICAgICAgIGlmKHkxID4geTIgKyAxZS05KQogICAgICAgICAgICBzd2FwKHkxLCB5Mik7CiAgICAgICAgdDAgPSBhdGFuKCh5MiAtIHkxKSAvICh4MiAtIHgxKSk7CiAgICAgICAgeDMgPSAoKHkxICsgeTIpICogdGFuKHQwKSArICh4MSArIHgyKSkgLyAyOwogICAgICAgIHQxID0gYXRhbih5MSAvICh4MyAtIHgxKSk7CiAgICAgICAgaWYodDEgPCAtMWUtOSkKICAgICAgICAJdDEgKz0gTV9QSTsKICAgICAgICB0MiA9IGF0YW4oeTIgLyAoeDMgLSB4MikpOwogICAgICAgIGlmKHQyIDwgLTFlLTkpCiAgICAgICAgCXQyICs9IE1fUEk7CiAgICAgICAgciA9IGxvZyhmYWJzbCgxIC8gc2luKHQyKSAtIDEgLyB0YW4odDIpKSk7CiAgICAgICAgciAtPSBsb2coZmFic2woMSAvIHNpbih0MSkgLSAxIC8gdGFuKHQxKSkpOwogICAgICAgIHByaW50ZigiJS45bGZcbiIsIHIpOwogICAgfQogICAgcmV0dXJuIDA7Cn0=