#include <bits/stdc++.h>
using namespace std;
pair<double, double> operator+(const pair<double, double>& a,
                               const pair<double, double>& b) {
  return make_pair(a.first + b.first, a.second + b.second);
}
pair<double, double> operator-(const pair<double, double>& a,
                               const pair<double, double>& b) {
  return make_pair(a.first - b.first, a.second - b.second);
}
pair<double, double> operator*(double a, const pair<double, double>& b) {
  return make_pair(a * b.first, a * b.second);
}
double dot(const pair<double, double>& a, const pair<double, double>& b) {
  return a.first * b.first + a.second * b.second;
}
double cross(const pair<double, double>& a, const pair<double, double>& b) {
  return a.first * b.second - a.second * b.first;
}
double len(const pair<double, double>& a) { return hypot(a.first, a.second); }
const double eps = 1e-8;
const double pi = acos(-1.0);
double angle(pair<double, double> a, pair<double, double> b,
             pair<double, double> c) {
  double d = atan2(b.second - c.second, b.first - c.first) -
             atan2(a.second - c.second, a.first - c.first);
  while (d < 0) d += 2 * pi;
  return d;
}
double path_around_circle(pair<double, double> a, pair<double, double> b,
                          pair<double, double> c, double r) {
  double AB = len(b - a), AC = len(a - c), BC = len(b - c);
  double dist_to_circle = abs(cross(b - a, c - a) / AB),
         dot_p = dot(b - a, c - a) / AB;
  if (dot_p > eps && dot_p < AB - eps && dist_to_circle < r - eps) {
    double crit, p1, p2, p3;
    crit = min(angle(a, b, c), angle(b, a, c));
    p1 = sqrt(AC * AC - r * r);
    p2 = r * ((crit - pi) + asin(r / AC) + asin(r / BC));
    p3 = sqrt(BC * BC - r * r);
    return p1 + p2 + p3;
  } else {
    return AB;
  }
}
int x_p, y_p, v_p, first, second, v, r;
bool can_do(double t) {
  double th = -(t * v_p / hypot(x_p, y_p));
  pair<double, double> a = make_pair(first, second),
                       b = make_pair(x_p * cos(th) + y_p * sin(th),
                                     -sin(th) * x_p + cos(th) * y_p);
  return path_around_circle(a, b, make_pair(0, 0), r) / v < t + eps;
}
int main() {
  cin >> x_p >> y_p >> v_p;
  cin >> first >> second >> v >> r;
  double a = 0, b = 1e9;
  for (int i = 0; i < 300; i++) {
    double mid = (a + b) / 2;
    if (can_do(mid)) {
      b = mid;
    } else {
      a = mid;
    }
  }
  printf("%0.9lf\n", a);
}
