#include <bits/stdc++.h>
using namespace std;
double process(double q) {
  int n = q / (2 * 3.141592653589793238462);
  q -= n * (2 * 3.141592653589793238462);
  if (q < 0) q += (2 * 3.141592653589793238462);
  if (q > (2 * 3.141592653589793238462)) q -= (2 * 3.141592653589793238462);
  return q;
}
int main() {
  int xp0, yp0, vp, x0, y0, v, rs;
  scanf("%d%d%d%d%d%d%d", &xp0, &yp0, &vp, &x0, &y0, &v, &rs);
  double r = hypot(x0, y0), rt = sqrt(r * r - rs * rs);
  double q0 = atan2(y0, x0);
  double rp = hypot(xp0, yp0), rq = sqrt(rp * rp - rs * rs);
  double qp0 = atan2(yp0, xp0), wp = vp / rp;
  double arc = 3.141592653589793238462 - asin(rs / rp) - asin(rs / r);
  double a = 0, b = 1e13;
  for (int it = 0; it < 100; it++) {
    double c = (a + b) / 2;
    double qp = process(qp0 + wp * c), xp = rp * cos(qp), yp = rp * sin(qp);
    double dx = xp - x0, dy = yp - y0, d = hypot(dx, dy);
    bool ok = false;
    if ((-dx * x0 - dy * y0) / d <= rt || d <= rt)
      ok = d <= c * v;
    else {
      double dq = min(process(qp - q0), process(q0 - qp)) - arc;
      ok = rt + dq * rs + rq <= c * v;
    }
    if (ok)
      b = c;
    else
      a = c;
  }
  printf("%.9lf\n", a);
  return 0;
}
