#include <bits/stdc++.h>
using namespace std;
double dist(double x1, double y1, double x2, double y2) {
  double first = (x1 - x2);
  double second = (y1 - y2);
  return sqrt(first * first + second * second);
}
int main() {
  double xp, yp, vp;
  double xs, ys, vs, rs;
  cin >> xp >> yp >> vp;
  cin >> xs >> ys >> vs >> rs;
  double R = sqrt(xp * xp + yp * yp);
  double w = vp / R;
  double init_arc = atan2(yp, xp);
  double l = 0, r = 1e5;
  double pi = acos(-1);
  for (int T = 0; T < 100; T++) {
    double m = (l + r) / 2;
    double arc = init_arc + w * m;
    double first = R * cos(arc);
    double second = R * sin(arc);
    double time = 0;
    double aa = dist(0, 0, first, second);
    double bb = dist(0, 0, xs, ys);
    double cc = dist(first, second, xs, ys);
    double A_arc = acos((bb * bb + cc * cc - aa * aa) / 2 / bb / cc);
    double B_arc = asin(rs / bb);
    if (A_arc >= B_arc || cc < bb)
      time = cc / vs;
    else {
      double big_arc = acos((bb * bb + aa * aa - cc * cc) / 2 / bb / aa);
      double aa_arc = acos(rs / aa);
      double bb_arc = acos(rs / bb);
      time = sqrt(aa * aa - rs * rs) / vs + sqrt(bb * bb - rs * rs) / vs;
      time += rs * (big_arc - aa_arc - bb_arc) / vs;
    }
    if (time < m)
      r = m;
    else {
      l = m;
    }
  }
  printf("%.9f\n", (double)l);
}
