#include <bits/stdc++.h>
using namespace std;
//#define double long double
struct point{
double x, y;
point(double _x = 0, double _y = 0) : x(_x), y(_y) {}
double dist(point p){
return sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
}
}pt[3];
struct circle{
point o;
double r;
vector<point> intersect(circle c){
vector<point> res;
//(x - o.x)^2 + (y - o.y)^2 = r^2
//(x - c.o.x)^2 + (y - c.o.y)^2 = c.r^2
//2x(c.o.x - o.x) + 2y(c.o.y - o.y) + (o.x^2 + o.y^2 - c.o.x^2 - c.o.y^2) = r^2 - c.r^2
bool swapxy = 0;
if(abs(c.o.y - o.y) < 1e-9){
swap(o.x, o.y);
swap(c.o.x, c.o.y);
swapxy = 1;
}
//y = ax + b;
double a = -(c.o.x - o.x) / (c.o.y - o.y);
double b = (r * r - o.x * o.x - o.y * o.y - c.r * c.r + c.o.x * c.o.x + c.o.y * c.o.y) / (2 * c.o.y - 2 * o.y);
//(x - o.x)^2 + (ax + b - o.y)^2 = r^2
//Ax^2 + Bx + C = 0
double A = 1 + a * a;
double B = -2 * o.x + 2 * (b - o.y) * a;
double C = o.x * o.x + (b - o.y) * (b - o.y) - r * r;
if(swapxy)
{
swap(o.x, o.y);
swap(c.o.x, c.o.y);
}
double D = B * B - 4 * A * C;
if(D < 0)
return res;
double x1 = (-B - sqrt(D)) / (2 * A);
double x2 = (-B + sqrt(D)) / (2 * A);
double y1 = a * x1 + b;
double y2 = a * x2 + b;
if(swapxy)
{
swap(x1, y1);
swap(x2, y2);
}
point p1(x1, y1);
point p2(x2, y2);
res.push_back(p1);
res.push_back(p2);
return res;
}
bool inside(point p){
return o.dist(p) <= r;
}
}O[3];
bool has_intersecsion(){
for(int i = 0; i < 3; i++){
vector<point> pts = O[i].intersect(O[(i + 1) % 3]);
for(point p : pts)
{
if(O[(i + 2) % 3].inside(p))
return true;
}
if(O[(i + 1)%3].inside(O[i].o) && O[(i + 2) % 3].inside(O[i].o))
return true;
}
return false;
}
bool ok(double R){
for(int i = 0; i < 3; i++)
O[i].o = pt[i];
// R, 3R, 3R
for(int i = 0; i < 3; i++)
O[i].r = 3 * R;
for(int i = 0; i < 3; i++){
O[i].r = R;
if(has_intersecsion())
return true;
O[i].r = 3 * R;
}
for(int i = 0; i < 3; i++)
O[i].r = R;
for(int i = 0; i < 3; i++){
O[i].r = 5 * R;
if(has_intersecsion())
return true;
O[i].r = R;
}
return false;
}
int main() {
for(int i = 0; i < 3; i++)
{
cin >> pt[i].x >> pt[i].y;
}
double l = 0, r = 4000;
for(int i = 0; i < 100; i++){
double m = (l + r) / 2.0;
if(ok(m)){
r = m;
}else{
l = m;
}
}
cout << fixed << setprecision(9) << r << endl;
return 0;
}