#include <bits/stdc++.h>
using namespace std;
int main() {
  double xp, yp, vp;
  double x1, yy1, v1, r;
  scanf("%lf %lf %lf %lf %lf %lf %lf", &xp, &yp, &vp, &x1, &yy1, &v1, &r);
  complex<long double> ship =
      complex<long double>((long double)x1, (long double)yy1);
  long double R = sqrtl(xp * xp + yp * yp);
  complex<long double> asteroid =
      complex<long double>((long double)xp, (long double)yp);
  long double pi = atanl(1) * 4;
  long double lower = 0;
  long double upper = 4 * 1e4;
  while (lower < upper - 1e-11) {
    long double middle = (upper + lower) / 2.0;
    complex<long double> rasteroid =
        complex<long double>(R * cos(arg(asteroid) + middle * vp / R),
                             R * sin(arg(asteroid) + middle * vp / R));
    long double a = imag(ship) - imag(rasteroid);
    long double b = real(rasteroid) - real(ship);
    long double c = real(ship) * imag(rasteroid) - imag(ship) * real(rasteroid);
    long double d2 = (c * c) / (a * a + b * b);
    long double dist;
    long double temp = abs(arg(rasteroid) - arg(ship));
    long double theta =
        min(temp, 2 * pi - temp) - acosl(r / abs(ship)) - acosl(r / R);
    if (theta > 0 && d2 < r * r) {
      long double a = R;
      long double b = abs(ship);
      long double c = abs(rasteroid - ship);
      dist = sqrtl(b * b - r * r) + r * theta + sqrtl(R * R - r * r);
    } else {
      dist = abs(ship - rasteroid);
    }
    long double time = dist / v1;
    if (time < middle) {
      upper = middle;
    } else {
      lower = middle;
    }
  }
  printf("%.9lf\n", (double)lower);
  return 0;
}
