#include <bits/stdc++.h>
const double PI = 3.1415926535897932384626433832795;
const double EPS = 1e-13;
double Px, Py, Pv;
double Sx, Sy, Sv;
double r, Pr, Sr;
double T;
double sunAngle, pAngle;
inline double to2PI(double angle) {
  double ccc = 2.0 * PI;
  return angle - floor(angle / ccc) * ccc;
}
double calcShipTime(double angle) {
  if (angle <= sunAngle || angle >= 2.0 * PI - sunAngle) {
    double dx = Pr * cos(angle) - Sx;
    double dy = Pr * sin(angle) - Sy;
    return sqrt(dx * dx + dy * dy) / Sv;
  } else {
    double t1 = sqrt(Sr * Sr - r * r) / Sv;
    double t2 =
        (angle <= PI ? angle - sunAngle : 2.0 * PI - angle - sunAngle) * r / Sv;
    double t3 = sqrt(Pr * Pr - r * r) / Sv;
    return t1 + t2 + t3;
  }
}
int calcTimes(double angle) {
  angle = to2PI(angle);
  double st = calcShipTime(angle);
  double x = to2PI(angle - pAngle) * Pr / Pv;
  st -= x;
  if (st <= 0)
    return 0;
  else
    return (int)ceil(st / T);
}
double calcTime2(double angle) {
  double x = to2PI(angle - pAngle) * Pr / Pv;
  return T * calcTimes(angle) + x;
}
int main() {
  while (
      ~scanf("%lf %lf %lf %lf %lf %lf %lf", &Px, &Py, &Pv, &Sx, &Sy, &Sv, &r)) {
    if (Px == Sx && Py == Sy) {
      printf("%.9lf", 0.0);
      continue;
    }
    Pr = sqrt(Px * Px + Py * Py);
    Sr = sqrt(Sx * Sx + Sy * Sy);
    {
      double shipCos = Sx / sqrt(Sx * Sx + Sy * Sy);
      double shipSin = Sy / sqrt(Sx * Sx + Sy * Sy);
      double tx, ty;
      tx = Sx * shipCos + Sy * shipSin;
      ty = Sx * (-shipSin) + Sy * shipCos;
      Sx = tx;
      Sy = ty;
      tx = Px * shipCos + Py * shipSin;
      ty = Px * (-shipSin) + Py * shipCos;
      Px = tx;
      Py = ty;
    }
    sunAngle = acos(r / Sr) + acos(r / Pr);
    T = 2.0 * PI * Pr / Pv;
    double lowerAngle = pAngle = to2PI(atan2(Py, Px)),
           upperAngle = lowerAngle + 2.0 * PI - EPS;
    int lowerCount = calcTimes(lowerAngle), upperCount = calcTimes(upperAngle);
    double midAngle;
    int midCount;
    while (lowerAngle + 1e-12 < upperAngle) {
      midAngle = (lowerAngle + upperAngle) / 2.0;
      midCount = calcTimes(midAngle);
      if (midCount == upperCount) {
        upperAngle = midAngle;
        upperCount = midCount;
      } else {
        lowerAngle = midAngle;
        lowerCount = midCount;
      }
    }
    printf("%.9lf\n", calcTime2(upperAngle));
  }
  return 0;
}
