#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T sqr(T x) {
  return x * x;
}
const double EPS = 1e-10;
const int INF = 0x3fffffff;
const long long LINF = INF * 1ll * INF;
const double PI = acos(-1.0);
using namespace std;
int sign(double x) { return x > 0 ? 1 : -1; }
int main(void) {
  int x1, y1, x2, y2;
  scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
  int vmax, t;
  scanf("%d %d", &vmax, &t);
  double low = 0, high = t;
  double windX, windY;
  scanf("%lf %lf", &windX, &windY);
  double newX, newY;
  scanf("%lf %lf", &newX, &newY);
  bool find = false;
  while (low + EPS <= high) {
    double mid = (low + high) / 2.0;
    double deltaX = x2 - x1;
    double deltaY = y2 - y1;
    double vx = deltaX / mid - windX;
    if (abs(vx) - abs(vmax) > 0) {
      low = mid;
      continue;
    }
    double vy = sqrt(vmax * vmax - vx * vx) + windY;
    double mx = vy * mid;
    vy = -sqrt(vmax * vmax - vx * vx) + windY;
    double mi = vy * mid;
    if (mx < mi) swap(mx, mi);
    if (mi - EPS <= deltaY && deltaY <= mx + EPS) {
      high = mid;
      find = true;
    } else
      low = mid;
  }
  if (!find) {
    low = t, high = 1e9;
    while (low + EPS <= high) {
      double mid = (low + high) / 2.0;
      double deltaX = x2 - x1;
      double deltaY = y2 - y1;
      double vx = deltaX - t * windX - newX * (mid - t);
      vx /= mid;
      if (abs(vx) - abs(vmax) > 0) {
        low = mid;
        continue;
      }
      double vy = sqrt(vmax * vmax - vx * vx);
      double mx = vy * mid + t * windY + (mid - t) * newY;
      vy = -sqrt(vmax * vmax - vx * vx);
      double mi = vy * mid + t * windY + (mid - t) * newY;
      if (mx < mi) swap(mx, mi);
      if (mi - EPS <= deltaY && deltaY <= mx + EPS) {
        high = mid;
      } else
        low = mid;
    }
  }
  printf("%.10lf\n", low);
  return 0;
}
