#include <bits/stdc++.h>
using namespace std;
bool eq(double x, double y) { return fabs(x - y) < 1e-8; }
double len(double x, double y) { return sqrt(x * x + y * y); }
double dot(double x, double y, double xx, double yy) { return x * xx + y * yy; }
double cross(double x, double y, double xx, double yy) {
  return fabs(x * yy - y * xx);
}
int main() {
  double xp, yp, vp, x, y, v, r;
  cin >> xp >> yp >> vp;
  cin >> x >> y >> v >> r;
  double R = sqrt(xp * xp + yp * yp), w = vp / R;
  double the = atan2(yp, xp);
  if (eq(x, xp) && eq(y, yp)) return puts("0"), 0;
  double lb = 0, rb = 100000;
  for (int i = 0; i < 100; i++) {
    double t = (lb + rb) / 2, L;
    double Ax = R * cos(the + t * w), Ay = R * sin(the + t * w);
    double Bx = x, By = y;
    if (eq(Ax, Bx) && eq(Ay, By)) {
      rb = t;
      continue;
    }
    double crs = cross(Bx, By, Ax, Ay);
    double h = crs / len(Ax - Bx, Ay - By);
    if (h > r || dot(Ax - Bx, Ay - By, -Bx, -By) < 0 ||
        dot(Bx - Ax, By - Ay, -Ax, -Ay) < 0)
      L = len(Ax - Bx, Ay - By);
    else {
      double AO = len(Ax, Ay), BO = len(Bx, By);
      double CO = r, DO = r;
      double AC = sqrt(AO * AO - CO * CO), BD = sqrt(BO * BO - DO * DO);
      double BM = crs / AO, MO = sqrt(BO * BO - BM * BM);
      double ph2 = atan2(BD, DO) + atan2(AC, CO);
      double phi = asin(BM / BO);
      if (dot(Bx, By, Ax, Ay) < 0) phi = (M_PI)-phi;
      L = AC + BD + (phi - ph2) * r;
    }
    if (v * t > L)
      rb = t;
    else
      lb = t;
  }
  printf("%.10lf\n", lb);
}
