#include <bits/stdc++.h>
double Ve, Vs, R, W;
const double Eps = (1e-7), Pi = asin(1) * 2.0;
std::pair<double, double> Ear, Set;
double Len_e, Len_s;
inline double operator*(std::pair<double, double> A,
                        std::pair<double, double> B) {
  return A.first * B.first + A.second * B.second;
}
inline std::pair<double, double> operator-(std::pair<double, double> A,
                                           std::pair<double, double> B) {
  return std::make_pair((A.first - B.first), (A.second - B.second));
}
inline std::pair<double, double> Rot(std::pair<double, double> St, double Yzx) {
  return std::make_pair((St.first * cos(Yzx) - St.second * sin(Yzx)),
                        (St.first * sin(Yzx) + St.second * cos(Yzx)));
}
inline bool Check(double Limit) {
  std::pair<double, double> Nex = Rot(Ear, Limit * Ve / Len_e);
  double Yzx = acos((Set * Nex) / (Len_s * Len_e));
  double Ds = acos(R / Len_s) + acos(R / Len_e);
  double Len;
  if (Yzx < Ds) {
    std::pair<double, double> Tmp = Set - Nex;
    Len = sqrt(((Tmp.first) * (Tmp.first)) + ((Tmp.second) * (Tmp.second)));
  } else
    Len = (Yzx - Ds) * R + sqrt(((Set) * (Set)) - ((R) * (R))) +
          sqrt(((Nex) * (Nex)) - ((R) * (R)));
  return (Len / Vs) < Limit;
}
int main() {
  scanf("%lf%lf%lf", &Ear.first, &Ear.second, &Ve);
  scanf("%lf%lf%lf%lf", &Set.first, &Set.second, &Vs, &R);
  Len_e = sqrt(((Ear) * (Ear))), Len_s = sqrt(((Set) * (Set)));
  double Ans = (double)1e5, Eps = (1e-9);
  for (double L = 0, R = (double)1e9, Mid; R - L > Eps;) {
    Mid = (L + R) / 2.0;
    if (Check(Mid))
      R = (Ans = Mid) - Eps;
    else
      L = Mid + Eps;
  }
  printf("%.9lf\n", Ans);
  return 0;
}
