#include <bits/stdc++.h>
using namespace std;
char buf[1 << 21], *p1 = buf, *p2 = buf;
template <class T>
void read(T &x) {
  x = 0;
  int c = getchar();
  int flag = 0;
  while (c < '0' || c > '9') flag |= (c == '-'), c = getchar();
  while (c >= '0' && c <= '9')
    x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
  if (flag) x = -x;
}
template <class T>
T _max(T a, T b) {
  return b < a ? a : b;
}
template <class T>
T _min(T a, T b) {
  return a < b ? a : b;
}
template <class T>
bool checkmax(T &a, T b) {
  return a < b ? a = b, 1 : 0;
}
template <class T>
bool checkmin(T &a, T b) {
  return b < a ? a = b, 1 : 0;
}
const double pi = acos(-1.0), eps = 1e-9;
int ex, ey, vp;
int x, y, v, r;
double R, alpha;
struct Point {
  double x, y;
  Point(double x = 0, double y = 0) : x(x), y(y) {}
  double len() { return sqrt(x * x + y * y); }
  double norm() { return x * x + y * y; }
  double det(const Point &rhs) { return x * rhs.y - y * rhs.x; }
};
Point operator-(Point a, Point b) { return Point(a.x - b.x, a.y - b.y); }
bool check(double tim) {
  double d = vp * tim / R + alpha;
  Point E(R * cos(d), R * sin(d));
  Point S(x, y);
  Point O(0, 0);
  double l = (E - S).len();
  if (l < eps) return 1;
  double h = abs((O - S).det(E - S)) / l;
  if (h >= r) {
    return v * tim >= l;
  }
  double chord = sqrt(r * r - h * h);
  double L = sqrt((O - S).norm() - h * h) - chord;
  double dis = (S - E).len();
  double OS = (O - S).norm(), SE = (S - E).norm(), OE = (O - E).norm();
  double al = acos((OS + OE - SE) / (2 * sqrt(OS) * sqrt(OE))) -
              acos(r / sqrt(OS)) - acos(r / sqrt(OE));
  if (dis > L && al > 0) {
    dis = sqrt(OS - r * r) + sqrt(OE - r * r);
    dis = dis + al * r;
  }
  return v * tim >= dis;
}
void init() {
  read(ex);
  read(ey);
  read(vp);
  read(x);
  read(y);
  read(v);
  read(r);
  R = sqrt(ex * ex + ey * ey);
  alpha = atan2(ey, ex);
}
void solve() {
  double l = 0, r = 1e10, mid, best;
  for (int i = 1; i <= 80; ++i) {
    mid = (l + r) / 2.0;
    if (check(mid))
      best = mid, r = mid;
    else
      l = mid;
  }
  printf("%.10lf\n", best);
}
int main() {
  init();
  solve();
  return 0;
}
