#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define i_7 (ll)(1E9+7)
#define i_5 (ll)(1E9+5)
ll mod(ll a){
    ll c=a%i_7;
    if(c>=0)return c;
    else return c+i_7;
}
typedef pair<int,int> i_i;
typedef pair<ll,ll> l_l;
ll inf=(ll)1E12;//10^12
#define rep(i,l,r) for(ll i=l;i<=r;i++)
#define pb push_back
ll max(ll a,ll b){if(a<b)return b;else return a;}
ll min(ll a,ll b){if(a>b)return b;else return a;}
////////////////////////////////////////
//double abs(double a){if(a>=0)return a;else return -a;}//もしCEしたらこれ試してみて
double EPS=1e-10;

//誤差を考慮して足し算を行う
double add(double a,double b){
    if(abs(a+b)<EPS*(abs(a)+abs(b)))return 0;
    return a+b;
}
//二次元ベクトル構造体
struct P{
    double x,y;int pos;
    P(){}
    P(double x,double y):x(x),y(y){
    }
    P operator +(P p){
        return P(add(x,p.x),add(y,p.y));
    }
    P operator -(P p){
        return P(add(x,-p.x),add(y,-p.y));
    }
    P operator *(double d){
        return P(x*d,y*d);
    }
    double dot(P p){//内積
        return add(x*p.x,y*p.y);
    }
    double det(P p){//外積
        return add(x*p.y,-y*p.x);
    }
};
///////////////////////////////////////////////
double pi=3.1415926536;

P rotate(P p,P c,double theta){
    P q;
    q.x=c.x+(p.x-c.x)*cos(theta)-(p.y-c.y)*sin(theta);
    q.y=c.y+(p.y-c.y)*cos(theta)+(p.x-c.x)*sin(theta);
    if(abs(q.x)<0)q.x=0;
    if(abs(q.y)<0)q.y=0;
    return q;
}

struct line{
    double a,b,c;
};
line ask(P p,P q){
    line l;
    l.a=q.y-p.y;
    l.b=-(q.x-p.x);
    l.c=p.y*q.x-p.x*q.y;
    return l;
}
bool infer(line l,P p){
    if(abs(l.b)<0)return true;
    if((-l.c-l.a*p.x)/l.b>p.y)return true;
    else return false;
}
double dis(line l,P p){
    return abs(l.a*p.x+l.b*p.y+l.c)/sqrt(pow(l.a,2)+pow(l.b,2));
}
P p[5];

bool check(double r){
    bool flag=false;
    rep(i,0,2){
        P a,b,c;
        a=p[i];b=p[i+1];c=p[i+2];
        a=a-c;
        b=b-c;
        c.x=0;c.y=0;
        double theta;
        if(abs(a.y)<EPS){
            if(a.x>0){
                theta=0;
            }else{
                theta=pi;
            }
        }else if(abs(a.x)<EPS){
            if(a.y>0){
                theta=pi/2;
            }else{
                theta=pi*3/2;
            }
        }else{
            theta=atan(a.y/a.x);
        }
        a=rotate(a,c,-theta);a.y=0;
        b=rotate(b,c,-theta);
        if(a.x<0){
            a=a*-1;
            b=b*-1;
        }
        if(b.y<0){
            b.y=b.y*(-1);
        }
        line l1,l2;
        l1=ask(b,c);
        l2=ask(b,a);
        double L=a.x-2*r,R=0;
        if(R<0)continue;
        rep(i,0,50){
            double m=(L+R)/2;
            P s,t;
            s.x=m;s.y=r;
            t.x=m+2*r;t.y=r;
            if(!infer(l1,s)){
                if(!infer(l2,t))break;
                else{
                    L=m;
                }
            }else if(!infer(l2,t)){
                R=m;
            }else{
                if(dis(l1,s)>=r&&dis(l2,t)>=r){
                    flag=true;
                    break;
                }else if(dis(l1,s)<=r){
                    R=m;
                }else if(dis(l2,t)<=r){
                    L=m;
                }else{
                    break;
                }
            }
        }
        
    }
    return flag;
}

int main(){
    ios::sync_with_stdio(false);cin.tie(0);

    rep(i,0,2){
        cin>>p[i].x>>p[i].y;
    }
    rep(i,0,1)p[i+3]=p[i];
    
    double s=0,t=1000;
    rep(i,1,100){
        double m=(s+t)/2;
        if(check(m))s=m;
        else t=m;
    }
    printf("%5.20lf\n",s);
    
    
    return 0;
}

Measured memory_bytes: 256