#include <cmath>
#include <iostream>
using namespace std;
struct Point
{
double x, y;
Point(double x, double y)
{
this->x = x;
this->y = y;
}
Point operator *(double k) const
{
return Point(x * k, y * k);
}
Point operator +(const Point& p) const
{
return Point(x + p.x, y + p.y);
}
};
double getT(double x0, double y0, double a, double b, double x, double y, double v)
{
double A = v * v - a * a - b * b;
double B = -2 * (a * (x0 - x) + b * (y0 - y));
double C = -(x0 - x) * (x0 - x) - (y0 - y) * (y0 - y);
double D = B * B - 4 * A * C;
double t = (-B + sqrt(D)) / (2 * A);
return t;
}
double getT(Point a, Point da, Point c, double v)
{
return getT(a.x, a.y, da.x, da.y, c.x, c.y, v);
}
double solve(Point a, Point b, Point da, Point db, Point c, double v)
{
double t1 = getT(a, da, c, v);
a = a + da * t1;
b = b + db * t1;
double t2 = getT(b, db, a, v);
return t1 + t2;
}
int main(int argc, char* argv[])
{
int x1, y1, dx1, dy1;
int x2, y2, dx2, dy2;
int x, y, v;
scanf("%d%d%d%d", &x1, &y1, &dx1, &dy1);
scanf("%d%d%d%d", &x2, &y2, &dx2, &dy2);
scanf("%d%d%d", &x, &y, &v);
Point a(x1, y1);
Point da(dx1, dy1);
Point b(x2, y2);
Point db(dx2, dy2);
Point c(x, y);
double A = solve(a, b, da, db, c, v);
double B = solve(b, a, db, da, c, v);
double res = min(A, B);
printf("%.11f\n", res);
}