#include <bits/stdc++.h>
#define lp(moh,k,n) for (long long moh=k ; moh<n ; moh++)
#define lp0(moh,n) for(long long moh=0;moh<n;moh++)
#define ll long long
#define mxint INT_MAX
#define mnint INT_MIN
#define it(itr) map<int,int>::iterator itr
#define stp(n) fixed<<setprecision(n)
using namespace std;
void flash(){
cin.tie(0);
cin.sync_with_stdio(0);
cout.tie(0);
cout.sync_with_stdio(0);
}
double sinn(double s);
double asinn(double s);
int main()
{
//freopen("offer.in","r",stdin);
//freopen("keyboard.in", "r", stdin);
flash();
double pi =3.14159265359;
double r1,r2;
int t;
cin>>t;
while(t--){
cin>>r1>>r2;
double w=sqrt( (r1*r1)+(r1+r2)*(r1+r2) );
//cout<<w;
double s2=asinn(r1/w);
//cout<<s2;
double s1=asinn((r1+r2)/w);
//cout<<s1<<" "<<s2;
double as2=(pi*r2*r2*s2)/360;
double Sinc=180-(2*s1);
double ASinc=((pi*r1*r1*Sinc)/360)-(.5*r1*r1*sinn(Sinc));
double as1=( (pi*r1*r1)/4 )-ASinc;
double AT=.5*r1*(r1+r2);
double sout=AT-(as2+as1);
cout<<stp(10)<<sout<<'\n';
}
}
//------------------------------------------
double asinn(double s){
double pi =3.14159265359;
double ret=asin(s);
double val = (ret * 180) / pi;
return val;
}
//------------------------------------------
double sinn(double s){
double pi =3.14159265359;
return sin(s*(pi/180));
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKI2RlZmluZSBscChtb2gsayxuKSBmb3IgKGxvbmcgbG9uZyBtb2g9ayA7IG1vaDxuIDsgbW9oKyspCiNkZWZpbmUgbHAwKG1vaCxuKSBmb3IobG9uZyBsb25nIG1vaD0wO21vaDxuO21vaCsrKQogCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbXhpbnQgSU5UX01BWAojZGVmaW5lIG1uaW50IElOVF9NSU4KI2RlZmluZSBpdChpdHIpIG1hcDxpbnQsaW50Pjo6aXRlcmF0b3IgaXRyCiNkZWZpbmUgc3RwKG4pIGZpeGVkPDxzZXRwcmVjaXNpb24obikKIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2b2lkIGZsYXNoKCl7CmNpbi50aWUoMCk7CmNpbi5zeW5jX3dpdGhfc3RkaW8oMCk7CmNvdXQudGllKDApOwpjb3V0LnN5bmNfd2l0aF9zdGRpbygwKTsKfQpkb3VibGUgc2lubihkb3VibGUgcyk7CmRvdWJsZSBhc2lubihkb3VibGUgcyk7CmludCBtYWluKCkKewovL2ZyZW9wZW4oIm9mZmVyLmluIiwiciIsc3RkaW4pOwovL2ZyZW9wZW4oImtleWJvYXJkLmluIiwgInIiLCBzdGRpbik7CmZsYXNoKCk7CmRvdWJsZSBwaSA9My4xNDE1OTI2NTM1OTsKZG91YmxlIHIxLHIyOwppbnQgdDsKY2luPj50Owp3aGlsZSh0LS0pewpjaW4+PnIxPj5yMjsKZG91YmxlIHc9c3FydCggKHIxKnIxKSsocjErcjIpKihyMStyMikgKTsKLy9jb3V0PDx3Owpkb3VibGUgczI9YXNpbm4ocjEvdyk7Ci8vY291dDw8czI7CmRvdWJsZSBzMT1hc2lubigocjErcjIpL3cpOwovL2NvdXQ8PHMxPDwiICI8PHMyOwpkb3VibGUgYXMyPShwaSpyMipyMipzMikvMzYwOwpkb3VibGUgU2luYz0xODAtKDIqczEpOwpkb3VibGUgQVNpbmM9KChwaSpyMSpyMSpTaW5jKS8zNjApLSguNSpyMSpyMSpzaW5uKFNpbmMpKTsKIApkb3VibGUgYXMxPSggKHBpKnIxKnIxKS80ICktQVNpbmM7CmRvdWJsZSBBVD0uNSpyMSoocjErcjIpOwpkb3VibGUgc291dD1BVC0oYXMyK2FzMSk7CmNvdXQ8PHN0cCgxMCk8PHNvdXQ8PCdcbic7Cn0KfQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkb3VibGUgYXNpbm4oZG91YmxlIHMpewogICAgZG91YmxlIHBpID0zLjE0MTU5MjY1MzU5OwogICAgZG91YmxlIHJldD1hc2luKHMpOwogICAgZG91YmxlIHZhbCA9IChyZXQgKiAxODApIC8gcGk7CiAgICByZXR1cm4gdmFsOwp9Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRvdWJsZSBzaW5uKGRvdWJsZSBzKXsKICAgIGRvdWJsZSBwaSA9My4xNDE1OTI2NTM1OTsKICAgIHJldHVybiBzaW4ocyoocGkvMTgwKSk7Cn0=