#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
double xp, yp, vp;
double x, y, v, r;
double d(double x, double y) { return sqrt(x * x + y * y); }
double d2(double x, double y) { return x * x + y * y; }
bool check(double mid) {
  double w = atan2(yp, xp);
  double t = 2 * pi * d(xp, yp) / vp;
  double wt = w + 2 * pi / t * mid;
  double xt = d(xp, yp) * cos(wt), yt = d(xp, yp) * sin(wt);
  double dis = 0;
  double h = abs(x * yt - y * xt) / d(x - xt, y - yt);
  if (x * (xt - x) + y * (yt - y) >= 0 || xt * (x - xt) + yt * (y - yt) >= 0 ||
      h >= r) {
    dis = d(x - xt, y - yt);
  } else {
    dis += sqrt(d2(x, y) - r * r);
    dis += sqrt(d2(xt, yt) - r * r);
    double aoc = acos(r / d(x, y));
    double bod = acos(r / d(xt, yt));
    double aob = acos((d2(x, y) + d2(xt, yt) - d2(x - xt, y - yt)) / 2 /
                      d(x, y) / d(xt, yt));
    double cod = aob - aoc - bod;
    dis += cod * r;
  }
  if (dis / v <= mid)
    return true;
  else
    return false;
}
int main() {
  scanf("%lf%lf%lf", &xp, &yp, &vp);
  scanf("%lf%lf%lf%lf", &x, &y, &v, &r);
  double lb = 0, rb = 100000;
  for (int i = 0; i < 50; i++) {
    double mid = (lb + rb) / 2;
    if (check(mid))
      rb = mid;
    else
      lb = mid;
  }
  printf("%.9f\n", rb);
}
