#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 7;
const double inf = 1e18;
const double eps = 1e-8;
const double pi = acos(-1.0);
double xp, yp, vp, x, y, v, r;
double tp, R;
bool c(double t) {
  double a = (t - (int)(t / tp) * tp) * pi * 2 / tp;
  double nxp = xp * cos(a) - yp * sin(a);
  double nyp = yp * cos(a) + xp * sin(a);
  double T = 0.0;
  double dis1 = sqrt(x * x + y * y - r * r);
  double dis2 = sqrt(nxp * nxp + nyp * nyp - r * r);
  double dis3 = sqrt(x * x + y * y);
  double dis4 = sqrt(nxp * nxp + nyp * nyp);
  double dis = sqrt((x - nxp) * (x - nxp) + (y - nyp) * (y - nyp));
  if (dis1 + dis2 >= dis) {
    T = dis / v;
  } else {
    double angle =
        acos((dis3 * dis3 + dis4 * dis4 - dis * dis) / (dis3 * dis4 * 2));
    double angle1 = atan(dis1 / r);
    double angle2 = atan(dis2 / r);
    angle -= angle1 + angle2;
    T = (dis1 + dis2 + angle * r) / v;
  }
  return T <= t;
}
int main() {
  cin >> xp >> yp >> vp >> x >> y >> v >> r;
  R = sqrt(xp * xp + yp * yp);
  tp = pi * R * 2.0 / vp;
  c(pi * 10.0);
  double l = 0.0, r = inf, ans = 0;
  for (int i = 1; i <= 100; i++) {
    double m = (l + r) / 2.0;
    if (c(m)) {
      r = m;
      ans = m;
    } else
      l = m;
  }
  printf("%.10f\n", ans);
  return 0;
}
