#include <bits/stdc++.h>
int IntMaxVal = (int)1e20;
int IntMinVal = (int)-1e20;
long long LongMaxVal = (long long)1e20;
long long LongMinVal = (long long)-1e20;
using namespace std;
template <typename T>
struct argument_type;
template <typename T, typename U>
struct argument_type<T(U)> {};
template <typename T1, typename T2>
istream& operator>>(istream& is, pair<T1, T2>& s) {
  is >> s.first >> s.second;
  return is;
}
template <typename T>
ostream& operator<<(ostream& os, const vector<T>& v) {
  for (int i = 0; i < v.size(); i++) os << v[i] << ' ';
  os << endl;
  return os;
}
template <typename T1, typename T2>
ostream& operator<<(ostream& s, pair<T1, T2>& t) {
  s << t.first << ' ' << t.second;
  return s;
}
double solve(int a, int b) {
  if (a > b) {
    return solve(b, b) * b / a + (a - b) * 1.0 / a;
  } else if (b > a) {
    return solve(a, a) * a / b;
  }
  if (a == 0) return 1.0;
  return 0.5;
}
int main() {
  srand(time(NULL));
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout << setprecision(10);
  fixed(cout);
  int n;
  cin >> n;
  ;
  while (n-- > 0) {
    int a;
    cin >> a;
    ;
    int b;
    cin >> b;
    ;
    cout << 0.5 + 0.5 * solve(a, 4 * b) << endl;
  }
}
