#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
double x0, y00, v0, r0, x1, y11, v1, r1, r;
inline double dis(double x, double y) { return sqrt(x * x + y * y); }
bool func(double t) {
  double phi = atan2(y00, x0) + v0 * t / r0;
  double myx = r0 * cos(phi), myy = r0 * sin(phi);
  double d = abs(myx * y11 - myy * x1) / dis(y11 - myy, x1 - myx);
  double tmp = (x1 - myx) * x1 + (y11 - myy) * y11;
  double tmp2 = (myx - x1) * myx + (myy - y11) * myy;
  if (d < r && tmp > 0 && tmp2 > 0) {
    double d1 = dis(x1, y11), d2 = dis(myx, myy),
           theta = acos((x1 * myx + y11 * myy) / d1 / d2) - acos(r / d1) -
                   acos(r / d2);
    return sqrt(d1 * d1 - r * r) + sqrt(d2 * d2 - r * r) + r * theta <= t * v1;
  } else
    return dis(y11 - myy, x1 - myx) <= t * v1;
}
int main() {
  scanf("%lf %lf %lf %lf %lf %lf %lf", &x0, &y00, &v0, &x1, &y11, &v1, &r);
  r0 = dis(x0, y00);
  r1 = dis(x1, y11);
  double L = 0, R = abs(r0 - r1) / v1 + 2 * pi * r0 / v0;
  for (int i = 0; i < 5000; i++) {
    double M = (L + R) / 2;
    if (func(M))
      R = M;
    else
      L = M;
  }
  printf("%.9lf\n", (L + R) / 2);
}
