#include <bits/stdc++.h>
using namespace std;
const double pi = 3.1415926535;
const double eps = 1e-8;
double sqr(double x) { return x * x; }
double xp, yp, vp, rp, x, y, v, r, tim;
double absx(double x) {
  if (x < 0) x = -x;
  return x;
}
double minx(double x, double y) {
  if (x < y) y = x;
  return y;
}
double zero(double x) { return ((x > -eps) && (x < eps)); }
double equ(double x, double y) { return zero(x - y); }
double acosx(double x) {
  if (equ(x, -1)) return acos(-1);
  if (equ(x, 1)) return acos(1);
  return acos(x);
}
double cha(double x1, double y1, double x2, double y2) {
  return (x1 * y2 - x2 * y1);
}
int pan(double tar) {
  double pp = atan2(yp, xp) + 2 * pi * (tar / tim);
  double qx = rp * cos(pp);
  double qy = rp * sin(pp);
  if (equ(qx, x) && equ(qy, y)) return 1;
  double plen = sqrt(sqr(qy - y) + sqr(x - qx));
  double ex = (qy - y) / plen;
  double ey = (x - qx) / plen;
  double dist = absx(ex * qx + ey * qy);
  double len = sqrt(sqr(qx - x) + sqr(qy - y));
  if ((dist >= r) || (cha(ex, ey, qx, qy) * cha(ex, ey, x, y) > 0)) {
    return (zero(len - tar * v) || (len <= tar * v));
  }
  double d1 = sqrt(sqr(qx) + sqr(qy));
  double d2 = sqrt(sqr(x) + sqr(y));
  double t1 =
      (sqrt(sqr(qx) + sqr(qy) - sqr(r)) + sqrt(sqr(x) + sqr(y) - sqr(r))) / v;
  double a1 = acosx(r / d1);
  double a2 = acosx(r / d2);
  double a3 = acosx((x * qx + y * qy) / (d1 * d2));
  double b1 = a3 - a1 - a2;
  double b2 = 2 * pi - a1 * 2 - a2 * 2 - b1;
  double br = minx(b1, b2);
  double t2 = br * r / v;
  return (zero(t1 + t2 - tar) || (t1 + t2 <= tar));
}
int main(void) {
  int k;
  double left, right, mid;
  scanf("%lf%lf%lf", &xp, &yp, &vp);
  rp = sqrt(sqr(xp) + sqr(yp));
  scanf("%lf%lf%lf%lf", &x, &y, &v, &r);
  left = 0;
  right = 1e8;
  tim = 2 * pi * rp / vp;
  for (k = 1; k <= 100; k++) {
    mid = (left + right) * 0.5;
    if (pan(mid))
      right = mid;
    else
      left = mid;
  }
  printf("%.9f", left);
  return 0;
}
