// Author: Sahil Yasar
// #include <bits/stdc++.h>
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
#define endl '\n'
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
// using namespace __gnu_pbds;
// template<class T>
// using oset = tree<T, null_type, less<T>, rb_tree_tag,
// tree_order_statistics_node_update>;
// template <class K, class V> using ht = gp_hash_table<K, V>;
template <class T1, class T2> ostream& operator<<(ostream& out, const pair<T1, T2> p)
{ return out<<'('<<p.first<<", "<<p.second<<")"; }
template <class ...Args> auto &print(const Args &...args)
{ return ((cerr<<args<<", "), ...)<<"\b\b)"<<endl; }
#define watch(...) if(true){cerr<<"("#__VA_ARGS__") = ("; print(__VA_ARGS__);}
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define sz(x) (int)x.size()
#define f first
#define s second
#define read(arr) for(auto& x: arr) cin>>x
#define write(arr) for(auto& x: arr) cout<<x<<" "; cout<<endl
#define mem(x, n) memset(x, n, sizeof(x))
#define getUnique(x) sort(all(x)); x.erase(unique(all(x)), x.end());
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const double PI = acos(-1);
int main(){
cin.tie(0)->sync_with_stdio(0);
cin.exceptions(cin.failbit);
int t, nt, at, nb, ab;
double theta, alpha, beta, ans, rt, rb, x, p, c, a, len;
cout<<fixed<<setprecision(6);
cin>>t;
while(t--){
cin>>nt>>at>>nb>>ab;
theta = 2 * PI / nb;
alpha = (PI - theta)/2;
x = sin(alpha)/sin(theta) * ab;
rb = sqrt(x*x - ab*ab/4.0); // Radius of of inscribed circle of bottom polygon
p = nb/2.0 * x*x * sin(theta); // Area of bottom polygon
theta = 2 * PI / nt;
alpha = (PI - theta)/2;
x = sin(alpha)/sin(theta) * at;
rt = sqrt(x*x - at*at/4.0); // Radius of of inscribed circle of top polygon
c = PI*rt*rt; // Area of inscribed circle of top polygon
a = len = 0;
if (rt > rb){
len = 2*sqrt(rt*rt - rb*rb);
if (len <= ab){
beta = 2*acos(rb/rt);
a = beta/2*rt*rt - rb*len/2; // For inclusion exclusion
}
}
ans = (len > ab)? 0: p-c+nb*a;
cout<<ans<<endl;
}
return 0;
}
Ly8gQXV0aG9yOiBTYWhpbCBZYXNhcgoKLy8gI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8aW9tYW5pcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBlbmRsICdcbicKCi8vICNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KLy8gI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+Ci8vIHVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwovLyB0ZW1wbGF0ZTxjbGFzcyBUPgovLyB1c2luZyBvc2V0ID0gdHJlZTxULCBudWxsX3R5cGUsIGxlc3M8VD4sIHJiX3RyZWVfdGFnLAovLyAgICAgICAgICAgICAgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPjsKLy8gdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFY+IHVzaW5nIGh0ID0gZ3BfaGFzaF90YWJsZTxLLCBWPjsKCnRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+IG9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgb3V0LCBjb25zdCBwYWlyPFQxLCBUMj4gcCkKeyByZXR1cm4gb3V0PDwnKCc8PHAuZmlyc3Q8PCIsICI8PHAuc2Vjb25kPDwiKSI7IH0KdGVtcGxhdGUgPGNsYXNzIC4uLkFyZ3M+IGF1dG8gJnByaW50KGNvbnN0IEFyZ3MgJi4uLmFyZ3MpCnsgcmV0dXJuICgoY2Vycjw8YXJnczw8IiwgIiksIC4uLik8PCJcYlxiKSI8PGVuZGw7IH0KI2RlZmluZSB3YXRjaCguLi4pIGlmKHRydWUpe2NlcnI8PCIoIiNfX1ZBX0FSR1NfXyIpID0gKCI7IHByaW50KF9fVkFfQVJHU19fKTt9CgojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCksIHguZW5kKCkKI2RlZmluZSByYWxsKHgpIHgucmJlZ2luKCksIHgucmVuZCgpCiNkZWZpbmUgc3ooeCkgKGludCl4LnNpemUoKQojZGVmaW5lIGYgZmlyc3QKI2RlZmluZSBzIHNlY29uZAojZGVmaW5lIHJlYWQoYXJyKSBmb3IoYXV0byYgeDogYXJyKSBjaW4+PngKI2RlZmluZSB3cml0ZShhcnIpIGZvcihhdXRvJiB4OiBhcnIpIGNvdXQ8PHg8PCIgIjsgY291dDw8ZW5kbAojZGVmaW5lIG1lbSh4LCBuKSBtZW1zZXQoeCwgbiwgc2l6ZW9mKHgpKQojZGVmaW5lIGdldFVuaXF1ZSh4KSBzb3J0KGFsbCh4KSk7IHguZXJhc2UodW5pcXVlKGFsbCh4KSksIHguZW5kKCkpOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVsbDsKdHlwZWRlZiBwYWlyPGludCwgaW50PiBwaWk7CnR5cGVkZWYgcGFpcjxsbCwgbGw+IHBsbDsKCmNvbnN0IGRvdWJsZSBQSSA9IGFjb3MoLTEpOwoKaW50IG1haW4oKXsKICAgIGNpbi50aWUoMCktPnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi5leGNlcHRpb25zKGNpbi5mYWlsYml0KTsKCiAgICBpbnQgdCwgbnQsIGF0LCBuYiwgYWI7CiAgICBkb3VibGUgdGhldGEsIGFscGhhLCBiZXRhLCBhbnMsIHJ0LCByYiwgeCwgcCwgYywgYSwgbGVuOwogICAgY291dDw8Zml4ZWQ8PHNldHByZWNpc2lvbig2KTsKICAgIGNpbj4+dDsKICAgIHdoaWxlKHQtLSl7CiAgICAgICAgY2luPj5udD4+YXQ+Pm5iPj5hYjsKCiAgICAgICAgdGhldGEgPSAyICogUEkgLyBuYjsKICAgICAgICBhbHBoYSA9IChQSSAtIHRoZXRhKS8yOwogICAgICAgIHggPSBzaW4oYWxwaGEpL3Npbih0aGV0YSkgKiBhYjsKICAgICAgICByYiA9IHNxcnQoeCp4IC0gYWIqYWIvNC4wKTsgLy8gUmFkaXVzIG9mIG9mIGluc2NyaWJlZCBjaXJjbGUgb2YgYm90dG9tIHBvbHlnb24KICAgICAgICBwID0gbmIvMi4wICogeCp4ICogc2luKHRoZXRhKTsgLy8gQXJlYSBvZiBib3R0b20gcG9seWdvbgoKICAgICAgICB0aGV0YSA9IDIgKiBQSSAvIG50OwogICAgICAgIGFscGhhID0gKFBJIC0gdGhldGEpLzI7CiAgICAgICAgeCA9IHNpbihhbHBoYSkvc2luKHRoZXRhKSAqIGF0OwogICAgICAgIHJ0ID0gc3FydCh4KnggLSBhdCphdC80LjApOyAvLyBSYWRpdXMgb2Ygb2YgaW5zY3JpYmVkIGNpcmNsZSBvZiB0b3AgcG9seWdvbgogICAgICAgIGMgPSBQSSpydCpydDsgLy8gQXJlYSBvZiBpbnNjcmliZWQgY2lyY2xlIG9mIHRvcCBwb2x5Z29uCgogICAgICAgIGEgPSBsZW4gPSAwOwogICAgICAgIGlmIChydCA+IHJiKXsKICAgICAgICAgICAgbGVuID0gMipzcXJ0KHJ0KnJ0IC0gcmIqcmIpOwogICAgICAgICAgICBpZiAobGVuIDw9IGFiKXsKICAgICAgICAgICAgICAgIGJldGEgPSAyKmFjb3MocmIvcnQpOwogICAgICAgICAgICAgICAgYSA9IGJldGEvMipydCpydCAtIHJiKmxlbi8yOyAvLyBGb3IgaW5jbHVzaW9uIGV4Y2x1c2lvbgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBhbnMgPSAobGVuID4gYWIpPyAwOiBwLWMrbmIqYTsKICAgICAgICBjb3V0PDxhbnM8PGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K