func_code_string: #include <bits/stdc++.h>   using namespace std;   const double eps = 1e-7;   const int maxn = 100 + 10;   int n;   complex<double> p[maxn];   int sign(double x) {     if (x < -eps) return -1;     return x > eps;   }   double cross(complex<double> a, complex<double> b) {     return (conj(a) * b).imag();   }   double dot(complex<double> a, complex<double> b) {     return (conj(a) * b).real();   }   double scross(complex<double> a, complex<double> b) {     return sign((conj(a) * b).imag());   }   double sdot(complex<double> a, complex<double> b) {     return sign((conj(a) * b).real());   }   bool inside(complex<double> a, complex<double> b, complex<double> c,               complex<double> d) {     return scross(b - a, d - a) == scross(c - b, d - b) &&            scross(b - a, d - a) == scross(a - c, d - c);   }   complex<double> rotate(complex<double> a, complex<double> b) {     return (b - a) * complex<double>(0, 1) + a;   }   complex<double> crosspoint(complex<double> a, complex<double> b,                              complex<double> c, complex<double> d) {     c = (c - a) / (b - a);     d = (d - a) / (b - a);     double dx = c.real() - d.real();     double dy = c.imag() - d.imag();     double x = c.real() - (dx * c.imag()) / dy;     return complex<double>(x, 0) * (b - a) + a;   }   complex<double> center(complex<double> a, complex<double> b,                          complex<double> c) {     complex<double> mab = (a + b) / 2.0;     complex<double> mac = (a + c) / 2.0;     complex<double> hab = rotate(mab, a);     complex<double> hac = rotate(mac, a);     return crosspoint(mab, hab, mac, hac);   }   int main() {     ios::sync_with_stdio(false);     cin >> n;     for (int i = 0; i < n; ++i) {       double t1, t2;       cin >> t1 >> t2;       p[i] = complex<double>(t1, t2);     }     double ans = -1;     for (int i = 0; i < n; ++i)       for (int j = 0; j < n; ++j)         for (int k = 0; k < n; ++k) {           if (scross(p[i] - p[j], p[i] - p[k]) == 0) continue;           complex<double> cent = center(p[i], p[j], p[k]);           if (!inside(p[i], p[j], p[k], cent)) {             if (scross(p[k] - p[j], cent - p[j]) != 0) continue;             bool bo = false;             for (int i2 = 0; i2 < n; ++i2)               if (i2 != i && i2 != j && i2 != k &&                   scross(p[i] - p[i2], cent - p[i2]) == 0) {                 bo = true;                 break;               }             if (!bo) continue;           }           bool bo2 = false;           double r = abs(cent - p[i]);           for (int i2 = 0; i2 < n; ++i2)             if (i2 != i && i2 != j && i2 != k && abs(cent - p[i2]) < r - eps) {               bo2 = true;               break;             }           if (bo2) continue;           ans = max(ans, r);         }     if (sign(ans - (-1)) == 0)       cout << -1 << endl;     else       cout << setprecision(6) << fixed << ans << endl;     return 0;   }   