#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1);
double sq(double x) { return x * x; }
struct Point {
  double x, y;
};
Point operator-(Point a, Point b) {
  a.x -= b.x;
  a.y -= b.y;
  return a;
}
Point operator+(Point a, Point b) {
  a.x += b.x;
  a.y += b.y;
  return a;
}
Point operator*(Point a, double k) {
  a.x *= k;
  a.y *= k;
  return a;
}
Point ortho(Point p) { return {-p.y, p.x}; }
double dot(Point a, Point b) { return a.x * b.x + a.y * b.y; }
double len(Point a) { return sqrt(a.x * a.x + a.y * a.y); }
double RR;
vector<Point> getTangent(Point p) {
  double d = len(p);
  double a = atan2(-p.y, -p.x);
  double b = asin(RR / d);
  double l = sqrt(d * d - RR * RR);
  return {p + Point{cos(a + b) * l, sin(a + b) * l},
          p + Point{cos(a - b) * l, sin(a - b) * l}};
}
double dist(Point p, Point q) {
  Point v = q - p;
  {
    double A = dot(v, v);
    double B = 2.0 * dot(p, v);
    double C = dot(p, p) - RR * RR;
    double D = B * B - 4.0 * A * C;
    if (D <= 0) return len(p - q);
    D = sqrt(D);
    bool bad = false;
    double t = (-B + D) / (2 * A);
    if (t > 0 && t < 1) {
      bad = true;
    }
    t = (-B - D) / (2 * A);
    if (t > 0 && t < 1) {
      bad = true;
    }
    if (!bad) return len(v);
  }
  vector<Point> A = getTangent(p);
  vector<Point> B = getTangent(q);
  double res = 1e10;
  for (Point a : A) {
    for (Point b : B) {
      double x = atan2(a.y, a.x);
      double y = atan2(b.y, b.x);
      double d = abs(x - y);
      d = min(d, 2 * PI - d);
      res = min(res, d * RR);
    }
  }
  res += len(A[0] - p) + len(B[0] - q);
  return res;
}
int main() {
  double Rad;
  double init_angle;
  double period;
  {
    int x, y, v;
    ignore = scanf("%d %d %d", &x, &y, &v);
    Rad = sqrt(x * x + 1.0 * y * y);
    init_angle = atan2(double(y), double(x));
    period = 2.0 * PI * Rad / double(v);
  }
  int x, y, v;
  ignore = scanf("%d %d %d %lf", &x, &y, &v, &RR);
  double L = 0, R = 1000000;
  for (int rep = 0; rep < 100; rep++) {
    double t = (L + R) / 2.0;
    Point q;
    {
      double a = init_angle + t / period * 2.0 * PI;
      q = {cos(a) * Rad, sin(a) * Rad};
    }
    double d = dist({double(x), double(y)}, q);
    if (double(v) * t > d) {
      R = t;
    } else {
      L = t;
    }
  }
  printf("%.15lf\n", (L + R) / 2.0);
}
