#include <bits/stdc++.h>
using namespace std;
double mx, t;
struct Point {
  double x, y;
  Point() {}
  Point(double x, double y) : x(x), y(y) {}
  Point(const Point &p) : x(p.x), y(p.y) {}
  Point operator+(const Point &p) const { return Point(x + p.x, y + p.y); }
  Point operator-(const Point &p) const { return Point(x - p.x, y - p.y); }
  Point operator*(double c) const { return Point(x * c, y * c); }
  Point operator/(double c) const { return Point(x / c, y / c); }
  bool operator<(const Point &p) const {
    return x < p.x || (x == p.x && y < p.y);
  }
} S, T, V1, V2;
double dot(Point A, Point B) { return A.x * B.x + A.y * B.y; }
double dist(Point A, Point B) { return sqrt(dot(A - B, A - B)); }
double teta;
Point rot(Point A) {
  Point q;
  q.x = cos(teta) * A.x - sin(teta) * A.y;
  q.y = sin(teta) * A.x + cos(teta) * A.y;
  return q;
}
void get_teta(Point A) {
  Point tt = Point(1, 0);
  teta = acos(dot(tt, A) / sqrt(dot(A, A)));
  if (A.y > 0) teta *= -1;
  T = rot(A);
  V1 = rot(V1);
  V2 = rot(V2);
}
int main() {
  cin >> S.x >> S.y >> T.x >> T.y;
  cin >> mx >> t;
  cin >> V1.x >> V1.y;
  cin >> V2.x >> V2.y;
  if (S.x == T.x && S.y == T.y) {
    cout << 0 << endl;
    return 0;
  }
  get_teta(T - S);
  double speed = sqrt(mx * mx - (V1.y * V1.y)) + V1.x;
  double time1 = T.x / speed;
  if (time1 <= t) {
    printf("%.7f", time1);
    return 0;
  }
  double L = 0, R = 1e9, mid, tmp;
  while (R - L > (1e-7)) {
    mid = (L + R) / 2;
    Point pt;
    pt.y = (V1.y * t + V2.y * mid) / (t + mid);
    pt.x = sqrt(mx * mx - pt.y * pt.y);
    tmp = pt.x * (t + mid) + V1.x * t + V2.x * mid;
    tmp = tmp - T.x;
    if (abs(tmp) < (1e-7))
      break;
    else if (tmp > (1e-7))
      R = mid;
    else
      L = mid;
  }
  t += mid;
  printf("%.7f", t);
  return 0;
}
