#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
const long long INF_LL = 1000000000000000000;
const double pi = 2 * acos(0.0);
const double eps = 1e-12;
template <class T>
void smin(T& a, T b) {
  if (a > b) a = b;
}
template <class T>
void smax(T& a, T b) {
  if (a < b) a = b;
}
template <class T>
void gcd(T a, T b) {
  return b == 0 ? a : gcd(b, a % b);
}
template <class T>
void outp(const vector<T>& v) {
  for (int i(0), _b(int((v).size())); i < _b; ++i)
    cout << v[i] << (i + 1 == int((v).size()) ? '\n' : ' ');
}
template <class T>
void outp(T* v, int n) {
  for (int i(0), _b(n); i < _b; ++i) cout << *v++ << (i + 1 == n ? '\n' : ' ');
}
double xp, yp, vp, x, y, v, r;
double r2(double x, double y) { return x * x + y * y; }
double dist(double xt, double yt) {
  double a = r2(x, y), at = r2(xt, yt);
  if (a < at) swap(a, at);
  double ad = r2(x - xt, y - yt);
  double s = fabs(x * yt - y * xt);
  if (s / sqrt(ad) + eps < r && a + eps < at + ad) {
    double f = acos((a + at - ad) / 2 / sqrt(a) / sqrt(at)) -
               acos(r / sqrt(a)) - acos(r / sqrt(at));
    return sqrt(a - r * r) + sqrt(at - r * r) + r * f;
  } else {
    return sqrt(ad);
  }
}
double R, fi0;
int main() {
  scanf("%lf%lf%lf", &xp, &yp, &vp);
  scanf("%lf%lf%lf%lf", &x, &y, &v, &r);
  R = sqrt(r2(xp, yp));
  fi0 = atan2(yp, xp);
  double a = 0.0, b = 1e6;
  for (int it(0), _b(100); it < _b; ++it) {
    double t = (a + b) / 2;
    double fi = fi0 + (t * vp / R);
    double xt = R * cos(fi), yt = R * sin(fi);
    double d = dist(xt, yt);
    if (d < v * t + eps)
      b = t;
    else
      a = t;
  }
  printf("%.9lf\n", b);
}
