// {{{ by shik
#include <bits/stdc++.h>
#include <unistd.h>
#define SZ(x) ((int)(x).size())
#define ALL(x) begin(x),end(x)
#define REP(i,n) for ( int i=0; i<int(n); i++ )
#define REP1(i,a,b) for ( int i=(a); i<=int(b); i++ )
#define FOR(it,c) for ( auto it=(c).begin(); it!=(c).end(); it++ )
#define MP make_pair
#define PB push_back
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
typedef vector<int> VI;

#ifdef SHIK
template<typename T>
void _dump( const char* s, T&& head ) { cerr<<s<<"="<<head<<endl; }

template<typename T, typename... Args>
void _dump( const char* s, T&& head, Args&&... tail ) {
    int c=0;
    while ( *s!=',' || c!=0 ) {
        if ( *s=='(' || *s=='[' || *s=='{' ) c++;
        if ( *s==')' || *s==']' || *s=='}' ) c--;
        cerr<<*s++;
    }
    cerr<<"="<<head<<", ";
    _dump(s+1,tail...);
}

#define dump(...) do { \
    fprintf(stderr, "%s:%d - ", __PRETTY_FUNCTION__, __LINE__); \
    _dump(#__VA_ARGS__, __VA_ARGS__); \
} while (0)

template<typename Iter>
ostream& _out( ostream &s, Iter b, Iter e ) {
    s<<"[";
    for ( auto it=b; it!=e; it++ ) s<<(it==b?"":" ")<<*it;
    s<<"]";
    return s;
}

template<typename A, typename B>
ostream& operator <<( ostream &s, const pair<A,B> &p ) { return s<<"("<<p.first<<","<<p.second<<")"; }
template<typename T>
ostream& operator <<( ostream &s, const vector<T> &c ) { return _out(s,ALL(c)); }
template<typename T, size_t N>
ostream& operator <<( ostream &s, const array<T,N> &c ) { return _out(s,ALL(c)); }
template<typename T>
ostream& operator <<( ostream &s, const set<T> &c ) { return _out(s,ALL(c)); }
template<typename A, typename B>
ostream& operator <<( ostream &s, const map<A,B> &c ) { return _out(s,ALL(c)); }
#else
#define dump(...)
#endif

template<typename T>
void _R( T &x ) { cin>>x; }
void _R( int &x ) { scanf("%d",&x); }
void _R( long long &x ) { scanf("%" PRId64,&x); }
void _R( double &x ) { scanf("%lf",&x); }
void _R( char &x ) { scanf(" %c",&x); }
void _R( char *x ) { scanf("%s",x); }

void R() {}
template<typename T, typename... U>
void R( T& head, U&... tail ) {
    _R(head);
    R(tail...);
}

template<typename T>
void _W( const T &x ) { cout<<x; }
void _W( const int &x ) { printf("%d",x); }
template<typename T>
void _W( const vector<T> &x ) {
    for ( auto i=x.cbegin(); i!=x.cend(); i++ ) {
        if ( i!=x.cbegin() ) putchar(' ');
        _W(*i);
    }
}

void W() {}
template<typename T, typename... U>
void W( const T& head, const U&... tail ) {
    _W(head);
    putchar(sizeof...(tail)?' ':'\n');
    W(tail...);
}

#ifdef SHIK
#define FILEIO(...)
#else
#define FILEIO(name) do {\
    freopen(name ".in","r",stdin); \
    freopen(name ".out","w",stdout); \
} while (0)
#endif

// }}}

const double eps=1e-9;

int sgn( double x ) {
    return (x>eps)-(x<-eps);
}
struct P {
	double x,y;
	P(){}
	P( double _x, double _y ):x(_x),y(_y){}
    double len() { return sqrt(x*x+y*y); }
	double ang() { return atan2(y,x); }
    P rot() {
        return P{y,-x};
    }
    P norm() {
        double l=len();
        P p=*this;
        p.x/=l;
        p.y/=l;
        return p;
    }
};
P operator +( P a, P b ) { return P(a.x+b.x,a.y+b.y); }
P operator -( P a, P b ) { return P(a.x-b.x,a.y-b.y); }
P operator *( double a, P b ) { return P(a*b.x,a*b.y); }
P operator /( P a, double b ) { return P(a.x/b,a.y/b); }
double operator ^( P a, P b ) { return a.x*b.y-b.x*a.y; }
double X( P o, P a, P b ) { return (a-o)^(b-o); }
int dir( P o, P a, P b ) { return sgn(X(o,a,b)); }
double dis( P a, P b ) { return (a-b).len(); }
struct Ln {
	P p1,p2;
	double ang;
	Ln(){}
	Ln( P _p1, P _p2 ):p1(_p1),p2(_p2),ang((p2-p1).ang()){}
    P norm() {
        P v=p2-p1;
        v=v.rot();
        v=v.norm();
        return v;
    }
};
Ln operator+( const Ln &a, const P &b ) { return Ln{a.p1+b,a.p2+b}; }
P jiao( Ln a, Ln b ) {
	double u=X(a.p1,a.p2,b.p1);
	double v=X(a.p2,a.p1,b.p2);
	return (v*b.p1+u*b.p2)/(u+v);
}

double incenter(P a, P b, P c){
	double A = dis(b,c), B = dis(c,a), C = dis(a,b);
	double r = fabs(X(a,b,c))/(A+B+C);
    return r;
}

P a,b,c;

bool chk( double r ) {
    Ln ab{a,b};
    Ln bc{b,c};
    Ln ca{c,a};
    ab=ab+r*ab.norm();
    bc=bc+r*bc.norm();
    ca=ca+r*ca.norm();
    P pa=jiao(ca,ab);
    P pb=jiao(ab,bc);
    P pc=jiao(bc,ca);
    dump(pa.x,pa.y,pb.x,pb.y,pc.x,pc.y);
    double dab=dis(pa,pb);
    double dbc=dis(pb,pc);
    double dca=dis(pc,pa);
    r*=2;
    return dab>=r || dbc>=r || dca>=r;
}

int main() {
    R(a.x,a.y,b.x,b.y,c.x,c.y);
    if ( dir(a,b,c)==+1 ) {
        swap(a,c);
    }
    double l=0,r=incenter(a,b,c);
    REP(i,100) {
        double m=(l+r)/2;
        if ( chk(m) ) l=m;
        else r=m;
    }
    double ans=(l+r)/2;
    printf("%.14f\n",ans);
    return 0;
}


Measured memory_bytes: 256