#include <bits/stdc++.h>
using namespace std;
struct pkt {
  double x, y;
};
double d(pkt a, pkt b) {
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
pkt o(pkt A, double kat) {
  return {A.x * cos(kat) - A.y * sin(kat), A.x * sin(kat) + A.y * cos(kat)};
}
bool Ok(pkt A, double vp, double x, double y, double v, double r, double t) {
  double R = d({0, 0}, {x, y});
  double obrot = v * t / R;
  pkt D = o({x, y}, obrot);
  double lim = acos(r / d({0, 0}, A)) + acos(r / R);
  double AO = d({0, 0}, A);
  double DO = d({0, 0}, D);
  double AD = d(A, D);
  double AOD = acos((AD * AD - AO * AO - DO * DO) / (-2.0 * AO * DO));
  double odl;
  if (AOD <= lim)
    odl = AD;
  else {
    double AB = sqrt(AO * AO - r * r);
    double DC = sqrt(DO * DO - r * r);
    double AOB = acos(r / AO);
    double DOC = acos(r / DO);
    double BOC = AOD - AOB - DOC;
    odl = BOC * r + AB + DC;
  }
  return (odl / vp <= t);
}
int main() {
  ios_base::sync_with_stdio(0);
  double x, y, v, xp, yp, vp, r;
  cin >> x >> y >> v >> xp >> yp >> vp >> r;
  double l = 0, p = 1000000000, s, T = -1;
  for (int i = 0; i < 60; ++i) {
    s = (l + p) / 2.0;
    if (Ok({xp, yp}, vp, x, y, v, r, s)) {
      T = s;
      p = s;
    } else
      l = s;
  }
  cout << fixed << setprecision(6);
  cout << T;
  return 0;
}
