#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:256000000")
using namespace std;
const int iinf = 1000000000;
const long long linf = 1000000000000000000LL;
const double dinf = 1e200;
const double eps = 1e-8;
const double PI = 3.14159265359;
inline int mymax(int a, int b) { return a < b ? b : a; }
inline int mymin(int a, int b) { return a > b ? b : a; }
inline long long mymax(long long a, long long b) { return a < b ? b : a; }
inline long long mymin(long long a, long long b) { return a > b ? b : a; }
inline long long myabs(long long a) { return a < 0 ? -a : a; }
struct vec {
  double x, y;
  vec() {}
  vec(double x, double y) : x(x), y(y) {}
  double dot(const vec &b) const { return x * b.x + y * b.y; }
  double len() const { return sqrt(dot(*this)); }
  vec norm() const { return vec(x / len(), y / len()); }
  vec perp() const { return vec(-y, x); }
  vec operator-(const vec &b) const { return vec(x - b.x, y - b.y); }
  vec operator*(double b) const { return vec(x * b, y * b); }
};
double xp, yp, vp, rp, x0, asdy0, v0, r0;
double a0;
bool check(double ti) {
  xp = rp * cos(a0 + ti * vp / rp);
  yp = rp * sin(a0 + ti * vp / rp);
  vec a(x0, asdy0);
  vec b(xp, yp);
  vec c(0, 0);
  double dist = 1e200;
  if ((a - b).len() < eps || fabs((a - b).perp().norm().dot(a)) >= r0 ||
      (c - a).dot(b - a) <= 0 || (c - b).dot(a - b) <= 0)
    dist = (a - b).len();
  else {
    for (int s1 = -1; s1 <= 1; s1 += 2) {
      for (int s2 = -1; s2 <= 1; s2 += 2) {
        double va = atan2(asdy0, x0) + s1 * acos(r0 / a.len());
        vec pa = vec(cos(va), sin(va)) * r0;
        double vb = atan2(yp, xp) + s2 * acos(r0 / b.len());
        vec push_back = vec(cos(vb), sin(vb)) * r0;
        double d = (va - vb) - floor((va - vb) / 2 / PI) * 2 * PI;
        dist = min(dist, min(d, 2 * PI - d) * r0 + (a - pa).len() +
                             (b - push_back).len());
      }
    }
  }
  return dist / v0 <= ti;
}
int main() {
  cin >> xp >> yp >> vp >> x0 >> asdy0 >> v0 >> r0;
  a0 = atan2(yp, xp);
  rp = sqrt(((xp) * (xp)) + ((yp) * (yp)));
  double a = 0, b = 1e6;
  for (int qqq = 0; qqq < (100); ++qqq) {
    double c = (a + b) / 2;
    if (check(c))
      b = c;
    else
      a = c;
  }
  printf("%.15lf", (a + b) * .5);
  return 0;
}
