func_code_string: #include <bits/stdc++.h>   using namespace std;   double xp, yp, vp;   double x, y, v, r;   const double pi = acos(-1);   double cal(double x0, double y0, double x1, double y1) {     double ji = x0 * x1 + y0 * y1;     double L0 = sqrt(x0 * x0 + y0 * y0);     double L1 = sqrt(x1 * x1 + y1 * y1);     double cosA = ji / L0 / L1;     double A = acos(cosA);     double s = L1 * L0 * sin(A) / (double)2;     double l = sqrt((x0 - x1) * (x0 - x1) + (y0 - y1) * (y0 - y1));     double dis = s * (double)2 / l;     if (dis >= r || (L0 * L0 + l * l - L1 * L1) < 0 ||         (L1 * L1 + l * l - L0 * L0) < 0)       return l;     double a0 = acos(r / L0);     double a1 = acos(r / L1);     double Lsum = r * (A - a0 - a1) + L0 * sin(a0) + L1 * sin(a1);     return Lsum;   }   bool s(double t) {     double R = sqrt(xp * xp + yp * yp);     double a = acos(xp / R);     if (yp < 0) a = -a + 2 * pi;     a = a + t * vp / R;     double x0 = R * cos(a);     double y0 = R * sin(a);     double t0 = cal(x0, y0, x, y) / v;     if (t0 <= t)       return true;     else       return false;   }   int main() {     cin >> xp >> yp >> vp;     cin >> x >> y >> v >> r;     double l = 0, r = 1e4, mid;     while (r - l > 1e-9) {       mid = (r + l) / (double)2;       if (s(mid))         r = mid;       else         l = mid;     }     printf( %.10lf , mid);     return 0;   }   