#include <bits/stdc++.h>
using namespace std;
const long double EPS = 1e-7;
const long double PI = acos(-1);
struct PT {
  long double x, y;
  PT() {}
  PT(long double _x, long double _y) : x(_x), y(_y) {}
  PT operator+(const PT &a) { return PT(x + a.x, y + a.y); }
  PT operator-(const PT &a) { return PT(x - a.x, y - a.y); }
  PT operator*(const long double &a) { return PT(x * a, y * a); }
  bool operator==(const PT &a) { return x == a.x && y == a.y; }
};
bool cmp(pair<PT, PT> a, pair<PT, PT> b) {
  return max(a.first.y, a.second.y) > max(b.first.y, b.second.y);
}
istream &operator>>(istream &is, PT &p) { return is >> p.x >> p.y; }
ostream &operator<<(ostream &os, PT &p) { return os << p.x << ' ' << p.y; }
struct vec {
  long double x, y;
  vec(long double _x, long double _y) : x(_x), y(_y) {}
};
vec toVec(PT a, PT b) { return vec(b.x - a.x, b.y - a.y); }
vec scale(vec v, long double s) { return vec(v.x * s, v.y * s); }
PT translate(PT p, vec v) { return PT(p.x + v.x, p.y + v.y); }
long double dot(vec a, vec b) { return a.x * b.x + a.y * b.y; }
long double sqr(vec v) { return v.x * v.x + v.y * v.y; }
long double dist(PT a, PT b) {
  return sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));
}
long double distanceToLine(PT p, PT a, PT b, PT &c) {
  vec ap = toVec(a, p);
  vec ab = toVec(a, b);
  long double u = dot(ap, ab) / sqr(ab);
  c = translate(a, scale(ab, u));
  return dist(p, c);
}
long double get_angle(PT a, PT o, PT b) {
  vec oa = toVec(o, a), ob = toVec(o, b);
  return acos(dot(oa, ob) / sqrt(sqr(oa) * sqr(ob)));
}
long double cross(vec a, vec b) { return a.x * b.y - a.y * b.x; }
long double get_angle(vec a, vec b) {
  long double dot1 = dot(a, b);
  long double det = cross(a, b);
  return atan2(det, dot1);
}
bool collinear(PT p, PT q, PT r) {
  return fabs(cross(toVec(p, q), toVec(p, r))) < EPS;
}
long double torad(long double angle) { return angle * PI / 180; }
long double w, h, alpha;
struct circle {
  PT cen;
  long double r;
  circle(PT cen = PT(0.0, 0.0), long double r = 0.0) : cen(cen), r(r) {}
  bool intersect(circle other) {
    if (dist(cen, other.cen) <= (other.r + r) * (other.r) + r) return 1;
    return 0;
  }
};
bool check_in(PT x, circle y) { return dist(x, y.cen) <= y.r; }
PT s, d;
long double vmx, t;
PT vt, vu;
PT pos(PT cur, long double time, PT vel) { return cur + (vel * time); }
bool chk(long double time) {
  PT psuedo = s;
  if (time >= t) {
    time -= t;
    psuedo = pos(psuedo, t, vt);
    psuedo = pos(psuedo, time, vu);
    long double todo = dist(psuedo, d);
    return todo <= (t * vmx + time * vmx);
  } else {
    psuedo = pos(psuedo, time, vt);
    long double todo = dist(psuedo, d);
    return todo <= (time * vmx);
  }
}
int main() {
  cin >> s >> d;
  cin >> vmx >> t;
  cin >> vt;
  cin >> vu;
  long double lo = 0.0, hi = 1e20;
  for (int i = 0; i < 200; i++) {
    long double md = (lo + hi) / 2;
    if (chk(md))
      hi = md;
    else
      lo = md;
  }
  cout << fixed << setprecision(6) << lo << "\n";
}
