#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;
struct point{
    double x, y;
};

point a, b, c, d;



point make_point ( double x, double y ){
    point res;

    res.x = x;
    res.y = y;

    return res;
}
point rotate90 ( point t, point t1 ){
    t1.x -= t.x;
    t1.y -= t.y;

    return make_point ( t.x - t1.y, t.y + t1.x );
}

point intersect ( point t1, point t2, point p1, point p2 ){
    double A1 = ( t1.y - t2.y ), B1 = ( t2.x - t1.x ), C1 = ( t1.x * t2.y - t2.x * t1.y );
    double A2 = ( p1.y - p2.y ), B2 = ( p2.x - p1.x ), C2 = ( p1.x * p2.y - p2.x * p1.y );

    double y = ( -C2 + A2 * C1/ A1 ) / ( B2 - A2 * B1 / A1);
    double x = ( -C1 - B1 * y ) / A1;

    return make_point ( x, y );
}

double dist ( point t1, point t2 ){
    return ( t1.x - t2.x ) * ( t1.x - t2.x ) + ( t1.y - t2.y ) * ( t1.y - t2.y );
}
void solve(){
    double d1, d2, d3;

    cin >> d1 >> d2 >> d3;
    a = make_point ( 0. , 0. );
    b = make_point ( 0. , d1 );
    c = make_point ( 0. , d2 + d1 );
    d = make_point ( 0. , d3 + d2 + d1 );
    double ans = 1e+20;
    for ( double  p = -10000.00; p <= 10000.00; p += 0.02 ){
        point b1 = make_point ( p, d1 );

        point b90 = rotate90 ( a, b1 );

        point c1 = intersect ( a, b90, c, make_point ( 1, d2 + d1 ) );

        point a90 = rotate90 ( c1, a );

        point dd1 = intersect ( c1, a90, d, make_point ( 1, d1 + d2 + d3 ) );

        if ( fabs ( dist ( a, dd1 )  - dist ( a, b1 )  -  dist ( b1, dd1 )  ) < 1e-9 )
            ans = min ( ans, sqrt ( dist ( a, b1 ) * dist ( b1, dd1 ) ) );
    }

    printf ( "%.4f\n", ans );
}
int main(){
    solve();
}
