
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <sstream>
#include <cmath>
#include <set>
#include <iomanip>
#include <deque>
#include <stdio.h>
#include <limits>
using namespace std;
 
#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define RREP(i,n) for(int (i)=(int)(n)-1;i>=0;i--)
#define REMOVE(Itr,n) (Itr).erase(remove((Itr).begin(),(Itr).end(),n),(Itr).end())
#define PB_VEC(Itr1,Itr2) (Itr1).insert((Itr1).end(),(Itr2).begin(),(Itr2).end())
#define UNIQUE(Itr) sort((Itr).begin(),(Itr).end()); (Itr).erase(unique((Itr).begin(),(Itr).end()),(Itr).end())
#define LBOUND(Itr,val) lower_bound((Itr).begin(),(Itr).end(),(val))
#define UBOUND(Itr,val) upper_bound((Itr).begin(),(Itr).end(),(val))
typedef long long ll;

double HeronFormula(double a, double b, double c) {
	double s = (a + b + c) / 2.0;
	return sqrt(s * (s - a) * (s - b) * (s - c));
}

int main() {

	double x[3],y[3];
	REP(i,3) cin >> x[i] >> y[i];

	double l[3];
	REP(i,3) l[i] = sqrt(pow(x[i]-x[(i+1)%3],2.0) + pow(y[i]-y[(i+1)%3],2.0));
	double S = HeronFormula(l[0],l[1],l[2]);
	double r = 2.0 * S / (l[0]+l[1]+l[2]);

	double m = max(l[0],max(l[1],l[2]));

	cout << fixed << setprecision(10) << m / (2.0 + m/r) << endl;

	return 0;
}