#include <bits/stdc++.h>
const double pi = acos(0.0) * 2;
double result = 0;
struct Tpoint {
  double x, y;
  Tpoint() {}
  Tpoint(double xx, double yy) {
    x = xx;
    y = yy;
  }
  Tpoint operator-(Tpoint a) { return Tpoint(x - a.x, y - a.y); }
} pl, wo;
double plv, wov, r, R;
double dotProduct(Tpoint a, Tpoint b) { return a.x * b.x + a.y * b.y; }
double cj(Tpoint a, Tpoint b) { return a.x * b.y - a.y * b.x; }
double len(Tpoint a) { return sqrt(dotProduct(a, a)); }
double angle(Tpoint a) {
  double jiao = acos(a.x / len(a));
  if (a.y < 0) jiao = pi + pi - jiao;
  return jiao;
}
void init() {
  scanf("%lf%lf%lf", &pl.x, &pl.y, &plv);
  scanf("%lf%lf%lf", &wo.x, &wo.y, &wov);
  scanf("%lf", &r);
  R = len(pl);
}
void work() {
  double start, stop, mid, tmp;
  Tpoint oldpl;
  oldpl = pl;
  start = 1e-8;
  stop = 1e12;
  while (start + 1e-8 < stop) {
    mid = (start + stop) / 2;
    double jiao = angle(oldpl) + mid * plv / R;
    pl.x = R * cos(jiao);
    pl.y = R * sin(jiao);
    if ((dotProduct(wo, pl - wo) < 0) && (dotProduct(pl, wo - pl) < 0))
      if (fabs(cj(wo, pl)) / len(wo - pl) < r) {
        double j1 = angle(wo);
        double j2 = angle(pl);
        double delta = j1 - j2;
        if (delta < 0) delta += pi + pi;
        if (delta > pi) delta = pi + pi - delta;
        delta -= acos(r / len(wo));
        delta -= acos(r / len(pl));
        tmp = (sqrt(len(wo) * len(wo) - r * r) +
               sqrt(len(pl) * len(pl) - r * r) + delta * r) /
              wov;
      } else
        tmp = len(wo - pl) / wov;
    else
      tmp = len(wo - pl) / wov;
    if (tmp <= mid + 1e-8)
      stop = mid;
    else
      start = mid;
  }
  result = mid;
}
void output() { printf("%.8lf\n", result); }
int main() {
  init();
  work();
  output();
  return 0;
}
