#include <bits/stdc++.h>
using namespace std;
template <class T>
bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T &a, const T &b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
ostream &operator<<(ostream &os, const vector<T> &t) {
  os << "[";
  for (__typeof((t).begin()) it = (t).begin(); it != (t).end(); it++) {
    if (it != t.begin()) os << ",";
    os << *it;
  }
  os << "]";
  return os;
}
template <class T>
ostream &operator<<(ostream &os, const set<T> &t) {
  os << "{";
  for (__typeof((t).begin()) it = (t).begin(); it != (t).end(); it++) {
    if (it != t.begin()) os << ",";
    os << *it;
  }
  os << "}";
  return os;
}
template <class S, class T>
ostream &operator<<(ostream &os, const pair<S, T> &t) {
  return os << "(" << t.first << "," << t.second << ")";
}
template <class S, class T>
pair<S, T> operator+(const pair<S, T> &s, const pair<S, T> &t) {
  return pair<S, T>(s.first + t.first, s.second + t.second);
}
template <class S, class T>
pair<S, T> operator-(const pair<S, T> &s, const pair<S, T> &t) {
  return pair<S, T>(s.first - t.first, s.second - t.second);
}
namespace geom {
enum { TRUE = 1, FALSE = 0, BORDER = -1 };
const long double INF = 1e8;
long double EPS = 1e-6;
const long double PI = 3.1415926535897932384626;
inline int sig(const long double &x) {
  return (abs(x) < EPS ? 0 : x > 0 ? 1 : -1);
}
inline int less(const long double &x, const long double &y) {
  return sig(x - y) ? x < y : BORDER;
}
inline long double norm(const complex<long double> &p) {
  return p.real() * p.real() + p.imag() * p.imag();
}
inline long double inp(const complex<long double> &a,
                       const complex<long double> &b) {
  return (conj(a) * b).real();
}
inline long double outp(const complex<long double> &a,
                        const complex<long double> &b) {
  return (conj(a) * b).imag();
}
inline complex<long double> unit(const complex<long double> &p) {
  return p / abs(p);
}
inline complex<long double> proj(const complex<long double> &s,
                                 const complex<long double> &t) {
  return t * inp(s, t) / norm(t);
}
inline int ccw(const complex<long double> &s, const complex<long double> &t,
               const complex<long double> &p, int adv = 0) {
  int res = sig(outp(t - s, p - s));
  if (res || !adv) return res;
  if (sig(inp(t - s, p - s)) < 0) return -2;
  if (sig(inp(s - t, p - t)) < 0) return 2;
  return 0;
}
}  // namespace geom
using namespace geom;
int f = 0;
namespace std {
bool operator<(const complex<long double> &a, const complex<long double> &b) {
  return sig(a.real() - b.real()) ? a.real() < b.real()
                                  : a.imag() + EPS < b.imag();
}
bool operator==(const complex<long double> &a, const complex<long double> &b) {
  return abs(a - b) < EPS;
}
istream &operator>>(istream &is, complex<long double> &p) {
  long double x, y;
  is >> x >> y;
  p = complex<long double>(x, y);
  return is;
}
}  // namespace std
int n, m;
complex<long double> p, q, v, w;
long double vmax, ct;
long double dist(complex<long double> v, complex<long double> wind,
                 long double t) {
  if (abs(v) > EPS) v = unit(v);
  long double l = 0, r = 1e10;
  for (int _ = 0; _ < (int)(100); _++) {
    long double mid = (l + r) / 2;
    long double vx = v.real() * mid;
    long double vy = v.imag() * mid;
    if ((vx * vx + vy * vy) <= vmax * vmax)
      l = mid;
    else
      r = mid;
  }
  return abs(v * l) * t;
}
int check(long double t) {
  complex<long double> s =
      q + v * min<long double>(t, ct) + w * max<long double>(t - ct, 0);
  complex<long double> vec = p - s;
  return dist(vec, v, min<long double>(t, ct)) +
             dist(vec, w, max<long double>(t - ct, 0)) >=
         abs(vec);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> q >> p;
  cin >> vmax >> ct;
  cin >> v >> w;
  long double l = 0, r = 1e10;
  for (int _ = 0; _ < (int)(100); _++) {
    long double mid = (l + r) / 2;
    if (check(mid))
      r = mid;
    else
      l = mid;
  }
  printf("%.20f\n", (double)l);
  return 0;
}
