#include <bits/stdc++.h>
using namespace std;
const double INF = 1e20, EPS = 1e-9, PI = acos((double)-1);
const double eps = 1e-12;
struct P {
  double x, y;
  P() {}
  P(double x, double y) : x(x), y(y) {}
  P operator+(P p) { return P(x + p.x, y + p.y); }
  P operator-(P p) { return P(x - p.x, y - p.y); }
  P operator*(double k) { return P(x * k, y * k); }
  double operator^(P p) { return x * p.y - y * p.x; }
  double operator*(P p) { return x * p.x + y * p.y; }
  P rot(double the) {
    double s = sin(the), c = cos(the);
    return P(x * c - y * s, x * s + y * c);
  }
  P rot() { return P(-y, x); }
  void eat() { scanf("%lf%lf", &x, &y); }
  double mag() { return sqrt(x * x + y * y); }
  double mag2() { return (x * x + y * y); }
  bool operator<(const P &p) const {
    if ((fabs((x) - (p.x)) < EPS)) return ((y) < (p.y) - EPS);
    return ((x) < (p.x) - EPS);
  }
  bool operator==(const P &p) const {
    return (fabs((x) - (p.x)) < EPS) && (fabs((y) - (p.y)) < EPS);
  }
  P nor() {
    if ((fabs((mag()) - (0)) < EPS)) return *this;
    return *this * (1. / mag());
  }
  P ref(P n) {
    n = n.nor();
    return n * (n * (*this)) * 2 - *this;
  }
};
P p0, q;
double vp, v;
double r, rp, rq;
double doit(P p) {
  P o(0, 0);
  double d = abs((q - p).nor() ^ (o - q));
  double dot = (o - p) * (q - p).nor();
  if (((d) < (r) + EPS) && !(p == q) && ((0) < (dot) + EPS) &&
      ((dot) < ((q - p).mag()) + EPS)) {
    if (p.y < 0) p.y *= -1;
    double alp = acos(r / rq);
    double bet = acos(r / rp);
    double gam = PI - atan2(p.y, p.x);
    double del = PI - alp - bet - gam;
    double res = rq * sin(alp) + rp * sin(bet) + del * r;
    return res / v;
  } else {
    return (p - q).mag() / v;
  }
}
int main() {
  p0.eat();
  scanf("%lf", &vp);
  q.eat();
  scanf("%lf%lf", &v, &r);
  double alp = atan2(q.y, q.x);
  q = q.rot(-alp);
  p0 = p0.rot(-alp);
  rp = p0.mag();
  rq = q.mag();
  double lo = 0, hi = 1e8;
  double ans = INF;
  for (int iter = (0); iter < (int)(100); iter++) {
    double md = (lo + hi) * .5;
    double alp = vp * md / rp;
    P p1 = p0.rot(alp);
    double t = doit(p1);
    if (t < md) {
      hi = md;
    } else {
      lo = md;
    }
  }
  printf("%.20f\n", (hi + lo) * .5);
  return 0;
}
