func_code_string: #include <bits/stdc++.h>   using namespace std;   double dist(double x1, double y1, double x2, double y2) {     double dx = x1 - x2;     double dy = y1 - y2;     return sqrt(dx * dx + dy * dy);   }   double catet(double a, int b) {     double z = a * a - b * b;     if (z < 1e-12) z = 0;     return sqrt(z);   }   int main() {     int xp, yp, vp;     cin >> xp >> yp >> vp;     int x, y, v, r;     cin >> x >> y >> v >> r;     const double eps = 1e-10;     const double R = sqrt(1.0 * xp * xp + 1.0 * yp * yp);     double lo = 0;     double hi = 1e7;     double T;     while ((hi - lo) / hi > eps) {       T = (lo + hi) / 2;       const double alpha = T / (R / vp);       double nx = xp * cos(alpha) - yp * sin(alpha);       double ny = xp * sin(alpha) + yp * cos(alpha);       double a = ny - y;       double b = x - nx;       double c = -(a * x + b * y);       double z = sqrt(a * a + b * b);       a /= z;       b /= z;       c /= z;       double need;       if (fabs(c) < r - 1e-8) {         double mx = a * (-c);         double my = b * (-c);         if (dist(x, y, mx, my) + dist(mx, my, nx, ny) >             dist(x, y, nx, ny) + 1e-8) {           need = dist(x, y, nx, ny);         } else {           need = catet(dist(x, y, 0, 0), r) + catet(dist(nx, ny, 0, 0), r);           double alp = fabs(atan2(y, x) - atan2(ny, nx));           if (alp > M_PI) alp = 2 * M_PI - alp;           alp -= acos(r / dist(x, y, 0, 0));           alp -= acos(r / dist(nx, ny, 0, 0));           need += alp * r;         }       } else {         need = dist(x, y, nx, ny);       }       if (need <= v * T) {         hi = T;       } else {         lo = T;       }     }     printf( %.6f n , T);     return 0;   }   