//Copyright @ 2012, Mike Rush, All rights reserved.
uses math;
var k,b,ta,tb,tc,td,xp,yp,vp,x,y,v,r,dt,left,right,mid,rp,nt,txp,typ,t1x,t1y,t2x,t2y,tt,ttt,tt1,tt2,tttt:extended;
function dis(x1,y1,x2,y2:extended):extended;
begin exit(sqrt(sqr(x1-x2)+sqr(y1-y2)));end;
function check(time:extended):boolean;
begin
rp:=dis(xp,yp,0,0);
nt:=vp*time/rp;
txp:=xp*cos(nt)-yp*sin(nt);
typ:=yp*cos(nt)+xp*sin(nt);
t1x:=-x;t1y:=-y;
t2x:=t1x+txp;t2y:=t1y+typ;
nt:=(t1x*t2y-t2x*t1y)/(dis(x,y,0,0)*dis(x,y,txp,typ));
dt:=(t1x*t2x+t1y*t2y)/(dis(x,y,0,0)*dis(x,y,txp,typ));
if dt<=0 then
begin
ttt:=dis(x,y,txp,typ);
ttt:=ttt/v;
if ttt<=mid then exit(true);
exit(false);
end;
t1x:=-txp;t1y:=-typ;
t2x:=t1x+x;t2y:=t1y+y;
dt:=(t1x*t2x+t1y*t2y)/(dis(txp,typ,0,0)*dis(x,y,txp,typ));
if dt<=0 then
begin
ttt:=dis(x,y,txp,typ);
ttt:=ttt/v;
if ttt<mid then exit(true);
exit(false);
end;
tt:=dis(x,y,0,0)*nt;
k:=(y-typ)/(x-txp);
b:=y-k*x;
ta:=k;tb:=-1;tc:=b;
td:=abs(tc)/sqrt(ta*ta+tb*tb);
if ((tt<0) and (td>=r)) or (tt>=r) then
begin
ttt:=dis(x,y,txp,typ);
ttt:=ttt/v;
if ttt<=mid then exit(true);
exit(false);
end;
tt:=x*txp+y*typ;
tt:=arccos(tt/(dis(x,y,0,0)*dis(txp,typ,0,0)));
tt1:=arccos(r/dis(txp,typ,0,0));
tt2:=arccos(r/dis(x,y,0,0));
ttt:=tt-tt1-tt2;
tttt:=ttt*r;
tttt:=tttt+sqrt(sqr(dis(txp,typ,0,0))-sqr(r))+sqrt(sqr(dis(x,y,0,0))-sqr(r));
tttt:=tttt/v;
if tttt<=mid then exit(true);
exit(false);
end;
begin
readln(xp,yp,vp);
readln(x,y,v,r);
if (xp=x) and (yp=y) then
begin writeln(0.0:0:9);halt;end;
left:=0;right:=1E5;
while abs(left-right)>1E-10 do
begin
mid:=(left+right)/2;
if check(mid) then right:=mid-(1E-10)
else left:=mid+(1E-10);
end;
writeln(left:0:9);
end.