#include <bits/stdc++.h>
struct point {
  double x, y;
} p, q, u;
double v, vp, r, R, k;
double po, qo, pa, qa, angp, angq, angpq;
point rorate(point a, double ang) {
  point c;
  c.x = a.x * cos(ang) - a.y * sin(ang);
  c.y = a.x * sin(ang) + a.y * cos(ang);
  return c;
}
double disp2o(point a) { return a.x * a.x + a.y * a.y; }
double cal(double pq) {
  if (pq * pq < po || pq * pq < qo) return pq;
  angpq = acos((po + qo - (pq * pq)) / (2 * sqrt(po * qo)));
  return k + (angpq - angp - angq) * r;
}
int bi(double t) {
  double d, dis, ang;
  ang = t * vp / R;
  q = rorate(u, ang);
  dis = sqrt((p.x - q.x) * (p.x - q.x) + (p.y - q.y) * (p.y - q.y));
  d = fabs(p.x * q.y - p.y * q.x) / dis;
  if (d < r) dis = cal(dis);
  if (dis > v * t + 1e-8) return 1;
  if (dis < v * t - 1e-8) return -1;
  return 0;
}
int main() {
  double lt, rt, mid;
  int t;
  while (~scanf("%lf%lf%lf", &u.x, &u.y, &vp)) {
    scanf("%lf%lf%lf%lf", &p.x, &p.y, &v, &r);
    qo = disp2o(u);
    R = sqrt(qo);
    po = disp2o(p);
    angp = acos(r / sqrt(po));
    angq = acos(r / R);
    k = sqrt(po - (r * r)) + sqrt(qo - (r * r));
    lt = 0;
    rt = 1e4;
    while (rt > lt + 1e-8) {
      mid = (rt + lt) / 2;
      t = bi(mid);
      if (t == 1)
        lt = mid;
      else if (t == -1)
        rt = mid;
      else
        break;
    }
    printf("%.10lf\n", mid);
  }
  return 0;
}
