#include <cstdio>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <cstring>
#include <string>
#include <cmath>
#include <cstdlib>
#include <iostream>
using namespace std;
#define MOD @
#define ADD(X,Y) ((X) = ((X) + (Y)) % MOD)
typedef long long i64; typedef vector<int> ivec; typedef vector<string> svec;
double yosupot(double a, double b)
{
return sqrt(a * a + b * b);
}
bool isok(double a, double b, double c, double r)
{
double B = acos((a * a + c * c - b * b) / (2 * a * c));
double A = acos((b * b + c * c - a * a) / (2 * b * c));
return 2 * r + r / tan(A / 2) + r / tan(B / 2) <= c;
}
double solve(double a, double b, double c)
{
double left = 0, right = 2000;
for (int i = 0; i < 60; ++i) {
double mid = (left + right) / 2;
if (isok(a, b, c, mid)) {
left = mid;
} else {
right = mid;
}
}
return (left + right) / 2;
}
int main()
{
int a, b, c, d, e, f;
scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f);
double u = yosupot(a - c, b - d), v = yosupot(c - e, d - f), w = yosupot(e - a, f - b);
double ret = 0;
ret = max(ret, solve(u, v, w));
ret = max(ret, solve(v, w, u));
ret = max(ret, solve(w, u, v));
printf("%.10f\n", ret);
return 0;
}