#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
const double eps = 1e-8;
double xp, yp, vp, R;
double x, y, v, r0;
bool calc(double t) {
  double th = vp / R * t + atan2(yp, xp);
  th = fmod(th + 2 * pi, 2 * pi);
  double nowx = R * cos(th), nowy = R * sin(th);
  double dis0 = sqrt(((nowx - x) * (nowx - x)) + ((nowy - y) * (nowy - y))),
         dis1 = sqrt(((x) * (x)) + ((y) * (y)));
  double C = (dis0 + dis1 + R) / 2;
  double S = sqrt(C * (C - dis0)) * sqrt((C - R) * (C - dis1));
  double h = S / dis0 * 2;
  if (((R) * (R)) + ((dis0) * (dis0)) > ((dis1) * (dis1)) + eps &&
      ((dis0) * (dis0)) + ((dis1) * (dis1)) > ((R) * (R)) + eps &&
      h < r0 - eps) {
    double th1 = acos(r0 / R), th2 = acos(r0 / dis1);
    th = acos((((R) * (R)) + ((dis1) * (dis1)) - ((dis0) * (dis0))) /
              (2 * R * dis1));
    if (th < eps) th += pi;
    double th3 = 2 * pi - (th + th1 + th2);
    th -= (th1 + th2);
    assert(th > -eps && th3 > -eps);
    if (th3 < th) th = th3;
    dis0 = sqrt(((dis1) * (dis1)) - ((r0) * (r0))) +
           sqrt(((R) * (R)) - ((r0) * (r0))) + r0 * th;
  }
  return dis0 < t * v + eps;
}
int main() {
  cin >> xp >> yp >> vp;
  cin >> x >> y >> v >> r0;
  R = sqrt(((xp) * (xp)) + ((yp) * (yp)));
  double left = 0, right = 1e8, mid;
  while (right - left > eps) {
    mid = (right + left) / 2;
    if (calc(mid))
      right = mid;
    else
      left = mid;
  }
  printf("%.7lf\n", mid + 1e-10);
  return 0;
}
