func_code_string: #include <bits/stdc++.h>   using namespace std;   const double EPS = 1e-9;   const int INF = 0x7fffffff;   const double PI = acos(-1.0);   const int MAX = 100005;   const int MOD = 1000000007;   inline bool isEq(double a, double b) { return abs(a - b) < EPS; }   inline bool isEq(double a, double b, double eps) { return abs(a - b) < eps; }   inline double toRad(double deg) { return deg * PI / 180; }   inline double toDeg(double rad) { return rad * 180 / PI; }   class Timer {     clock_t start;     string name;       public:     Timer() {       name =   ;       start = clock();     }     Timer(string s) {       name = s;       start = clock();     }     ~Timer() {       fprintf(stderr,  %s: %.3gs n , name.c_str(),               1.0 * (clock() - start) / CLOCKS_PER_SEC);     }   };   double cross(complex<double> &a, complex<double> &b) {     return imag((conj(a) * b));   }   double perpendicularDist(double x1, double y1, double x2, double y2, double x3,                            double y3) {     complex<double> A = complex<double>(x2 - x1, y2 - y1);     complex<double> B = complex<double>(x3 - x1, y3 - y1);     return cross(A, B) / abs(A);   }   double getYaxiyIntersection(complex<double> start, complex<double> a) {     double lo = 0, hi = 1000000000, dist = 0;     int cnt = 300;     a = a / abs(a);     complex<double> en;     while (cnt--) {       dist = (lo + hi) / 2;       en = start + a * dist;       if (start.real() * en.real() > 0)         lo = dist;       else         hi = dist;     }     return en.imag();   }   int main(int argc, char *argv[]) {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     double y1, y2, yw, xb, yb, r;     cin >> y1 >> y2 >> yw >> xb >> yb >> r;     double lowxw = 0, highxw = xb, xw, y, rxb;     int cnt = 300;     double yweff = yw - r;     bool found = false;     complex<double> A;     while (cnt--) {       xw = (lowxw + highxw) / 2;       rxb = xw - (xb - xw);       A = complex<double>(xw - rxb, yweff - yb);       if (rxb > 0) A = -A;       y = getYaxiyIntersection(complex<double>(rxb, yb), A);       if (y - r >= y1 && y2 >= y + r &&           perpendicularDist(0, y, xw, yweff, 0, y2) >= r) {         found = true;         break;       } else {         if (y - r < y1)           highxw = xw;         else           lowxw = xw;       }     }     if (found)       cout << fixed << setprecision(10) << xw << endl;     else       cout <<  -1  << endl;     return 0;   }   