func_code_string: #include <bits/stdc++.h>   using namespace std;   const double eps = 1e-12;   struct P {     double x, y;     P(double x = 0, double y = 0) : x(x), y(y){};   } a, b, c, o, p;   P operator+(P a, P b) { return P(a.x + b.x, a.y + b.y); }   P operator*(P a, double b) { return P(a.x * b, a.y * b); }   inline double dis(P a, P b) {     return sqrt(((a.x - b.x) * (a.x - b.x)) + ((a.y - b.y) * (a.y - b.y)));   }   inline void read(P &a) { scanf( %lf%lf , &a.x, &a.y); }   double t1, t2, l, r, m, m1, m2, ab, bc, ac, ap;   double Calc(double k) {     p = b * (1 - k) + c * k;     ap = dis(a, p);     if (ap + bc * (1 + k) < t1 && ap + bc * (1 - k) < t2)       return min(t1 - bc * (1 + k), t2 - bc * (1 - k));     double l = 0, r = 1;     for (int i = 0; i < 100; ++i) {       m = (l + r) * 0.5;       o = a * (1 - m) + p * m;       if (ap * m + dis(o, b) + bc < t1 && ap * m + dis(o, c) < t2)         l = m;       else         r = m;     }     return (l + r) * 0.5 * ap;   }   int main() {     scanf( %lf%lf , &t1, &t2);     read(a);     read(c);     read(b);     ab = dis(a, b);     bc = dis(b, c);     ac = dis(a, c);     t1 += ab + bc + eps;     t2 += ac + eps;     if (ab + bc < t2) {       printf( %.10lf n , min(t1, t2));       return 0;     }     l = 0, r = 1;     for (int i = 0; i < 100; ++i) {       m1 = (l + l + r) / 3;       m2 = (l + r + r) / 3;       if (Calc(m1) < Calc(m2))         l = m1;       else         r = m2;     }     printf( %.10lf n , Calc((l + r) * .5));     return 0;   }   