#include <bits/stdc++.h>
using namespace std;
double dist(double x1, double y1, double x2, double y2) {
  double dx = x1 - x2;
  double dy = y1 - y2;
  return sqrt(dx * dx + dy * dy);
}
double catet(double a, int b) {
  double z = a * a - b * b;
  if (z < 1e-12) z = 0;
  return sqrt(z);
}
int main() {
  int xp, yp, vp;
  cin >> xp >> yp >> vp;
  int x, y, v, r;
  cin >> x >> y >> v >> r;
  const double eps = 1e-10;
  const double R = sqrt(1.0 * xp * xp + 1.0 * yp * yp);
  double lo = 0;
  double hi = 1e7;
  double T;
  while ((hi - lo) / hi > eps) {
    T = (lo + hi) / 2;
    const double alpha = T / (R / vp);
    double nx = xp * cos(alpha) - yp * sin(alpha);
    double ny = xp * sin(alpha) + yp * cos(alpha);
    double a = ny - y;
    double b = x - nx;
    double c = -(a * x + b * y);
    double z = sqrt(a * a + b * b);
    a /= z;
    b /= z;
    c /= z;
    double need;
    if (fabs(c) < r - 1e-8) {
      double mx = a * (-c);
      double my = b * (-c);
      if (dist(x, y, mx, my) + dist(mx, my, nx, ny) >
          dist(x, y, nx, ny) + 1e-8) {
        need = dist(x, y, nx, ny);
      } else {
        need = catet(dist(x, y, 0, 0), r) + catet(dist(nx, ny, 0, 0), r);
        double alp = fabs(atan2(y, x) - atan2(ny, nx));
        if (alp > M_PI) alp = 2 * M_PI - alp;
        alp -= acos(r / dist(x, y, 0, 0));
        alp -= acos(r / dist(nx, ny, 0, 0));
        need += alp * r;
      }
    } else {
      need = dist(x, y, nx, ny);
    }
    if (need <= v * T) {
      hi = T;
    } else {
      lo = T;
    }
  }
  printf("%.6f\n", T);
  return 0;
}
