#include <bits/stdc++.h>
double vp;
double xp, yp;
double x, y;
double v;
double r;
double R;
double dist(double ax, double ay, double bx, double by) {
  return sqrt((ax - bx) * (ax - bx) + (ay - by) * (ay - by));
}
double time(double m) {
  double ang;
  double nx, ny;
  double A, B, C;
  double mx, my;
  double dm, dn, dmn;
  double dis = 0;
  double tmp;
  double d1, d2;
  double ang2;
  ang = vp * m / R;
  nx = xp * cos(ang) - yp * sin(ang);
  ny = xp * sin(ang) + yp * cos(ang);
  A = ny - y;
  B = x - nx;
  C = -ny * x + nx * y;
  tmp = sqrt(A * A + B * B);
  A /= tmp;
  B /= tmp;
  C /= tmp;
  mx = -A * C;
  my = -B * C;
  dm = dist(x, y, mx, my);
  dmn = dist(nx, ny, mx, my);
  dn = dist(x, y, nx, ny);
  if (fabs(C) + 1e-8 < r && dm + dmn < dn + 1e-8) {
    d1 = dist(x, y, 0, 0);
    d2 = dist(nx, ny, 0, 0);
    dis = sqrt(d1 * d1 - r * r) + sqrt(d2 * d2 - r * r);
    ang2 = fabs(atan2(y, x) - atan2(ny, nx));
    if (ang2 > 2 * acos(0.0)) ang2 = 2 * 2 * acos(0.0) - ang2;
    ang2 -= acos(r / d1) + acos(r / d2);
    dis += ang2 * r;
  } else
    dis = dist(x, y, nx, ny);
  return dis / v;
}
int main() {
  while (~scanf("%lf%lf%lf", &xp, &yp, &vp)) {
    scanf("%lf%lf%lf%lf", &x, &y, &v, &r);
    if (xp == x && yp == y) {
      printf("0.000000\n");
      continue;
    }
    R = dist(xp, yp, 0, 0);
    double left = 0, right = 0x7fffffff;
    double mid;
    while (right - left > 1e-8) {
      mid = (left + right) / 2;
      if (time(mid) < mid + 1e-8)
        right = mid;
      else
        left = mid;
    }
    printf("%.6lf\n", right);
  }
}
