#include <bits/stdc++.h>
using namespace std;
template <typename S, typename T>
ostream& operator<<(ostream& out, pair<S, T> const& p) {
  out << '(' << p.first << ", " << p.second << ')';
  return out;
}
template <typename T>
ostream& operator<<(ostream& out, vector<T> const& v) {
  int l = v.size();
  for (int i = 0; i < l - 1; i++) out << v[i] << ' ';
  if (l > 0) out << v[l - 1];
  return out;
}
void tr() { cout << endl; }
template <typename S, typename... Strings>
void tr(S x, const Strings&... rest) {
  cout << x << ' ';
  tr(rest...);
}
long double xp, yp, vp;
long double x, y, v, r;
long double R, w;
const long double PI = 3.1415926535897932384626433832795;
long double eps = 1e-9;
long double dist(long double x1, long double y1, long double x2,
                 long double y2) {
  long double dx = x1 - x2, dy = y1 - y2;
  return (long double)sqrt(dx * dx + dy * dy);
}
long double distPointFromLine(long double x0, long double y0, long double x1,
                              long double y1, long double x2, long double y2) {
  return abs((y2 - y1) * x0 - (x2 - x1) * y0 + x2 * y1 - y2 * x1);
}
long double angleBetweenVectors(long double u1, long double u2, long double v1,
                                long double v2) {
  return acos((u1 * v1 + u2 * v2) / dist(0, 0, u1, u2) / dist(0, 0, v1, v2));
}
bool isAcute(long double u1, long double u2, long double v1, long double v2) {
  return (u1 * v1 + u2 * v2 > 0);
}
long double distWithCircle(long double x1, long double y1, long double x2,
                           long double y2) {
  if (dist(x1, y1, x2, y2) < eps) return 0;
  long double d = distPointFromLine(0, 0, x1, y1, x2, y2);
  if (d >= r * dist(x1, y1, x2, y2)) return dist(x1, y1, x2, y2);
  if (!isAcute(-x1, -y1, x2 - x1, y2 - y1) or
      !isAcute(-x2, -y2, x1 - x2, y1 - y2))
    return dist(x1, y1, x2, y2);
  long double d1 = dist(0, 0, x1, y1);
  long double d2 = dist(0, 0, x2, y2);
  long double d3 = sqrt(d1 * d1 - r * r);
  long double d4 = sqrt(d2 * d2 - r * r);
  long double ang1 = angleBetweenVectors(-x1, -y1, x2 - x1, y2 - y1);
  long double ang2 = angleBetweenVectors(-x2, -y2, x1 - x2, y1 - y2);
  long double ang3 = acos((long double)r / d1);
  long double ang4 = acos((long double)r / d2);
  long double ang = PI - ang1 - ang2 - ang3 - ang4;
  return d3 + d4 + r * ang;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> xp >> yp >> vp;
  cin >> x >> y >> v >> r;
  R = dist(0, 0, xp, yp);
  w = vp / R;
  if (dist(xp, yp, x, y) < eps) {
    cout << setprecision(11) << fixed << 0 << endl;
    return 0;
  }
  long double lo = 0, hi = 1e9, t;
  for (int i = 0; i < 100; i++) {
    t = (lo + hi) / 2;
    long double wt = w * t;
    long double nx = xp * cos(wt) - yp * sin(wt);
    long double ny = yp * cos(wt) + xp * sin(wt);
    long double d = distWithCircle(x, y, nx, ny);
    if (d <= v * t)
      hi = t;
    else
      lo = t;
  }
  cout << setprecision(11) << fixed << lo << endl;
  return 0;
}
