#include <bits/stdc++.h>
const int RAN = (100000);
const double EPS = (1e-8);
double xp, yp, vp;
double xs, ys, vs, r;
double dis(double x2, double y2, double x1, double y1, double r) {
  double dx = (x2 - x1), dy = (y2 - y1);
  double r1 = sqrt(x1 * x1 + y1 * y1);
  double r2 = sqrt(x2 * x2 + y2 * y2);
  double th1 = acos(r / r1), th2 = acos(r / r2),
         th3 = acos((r1 * r1 + r2 * r2 - dx * dx - dy * dy) / (2 * r1 * r2));
  if (th3 <= th1 + th2)
    return sqrt(dx * dx + dy * dy);
  else
    return sqrt(r1 * r1 - r * r) + sqrt(r2 * r2 - r * r) +
           r * (th3 - th1 - th2);
  return 0;
}
int chk(double tim) {
  double R = sqrt(xp * xp + yp * yp);
  double ome = vp / R;
  double the = ome * tim;
  double nx = cos(the) * xp - sin(the) * yp;
  double ny = sin(the) * xp + cos(the) * yp;
  double d = dis(nx, ny, xs, ys, r);
  return (vs * tim >= d);
}
double bs(double le, double ri) {
  while (le + EPS < ri) {
    double mi = (le + ri) / 2;
    int val = chk(mi);
    if (val == 1) ri = mi;
    if (val == 0) le = mi;
  }
  return le;
}
void clear(void) {}
int main(void) {
  for (int count = 1;
       scanf("%lf%lf%lf%lf%lf%lf%lf", &xp, &yp, &vp, &xs, &ys, &vs, &r) != EOF;
       ++count, clear()) {
    double ans = bs(0, RAN);
    printf("%.10lf\n", ans);
  }
  return 0;
}
