#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
const int MAX=1000000;
const double eps=0.0001;
double pp,qq,rr;
int p,q,r;
double s;
int lamp;
int possible(unsigned long long x,unsigned long long y,unsigned long long z)
{
    unsigned long long a,b,c,aa,bb,cc;
    a=(q+r)*(q+r)+(x+z)*(x+z);
    b=(y-z)*(y-z)+r*r;
    c=(x+y)*(x+y)+q*q;
    aa=sqrt(a);
    bb=sqrt(b);
    cc=sqrt(c);
    if( aa+bb<=cc || aa+cc<=bb || bb+cc<=aa )
        return 1;
    if(cc<=aa&&cc<=bb)
        return 1;
    if( a + b > c )
        return 1;
    if( a + b < c )
        return -1;
    return 0;
}
void comp(unsigned long long x,unsigned long long y,unsigned long long z)
{
    double a,b;
    a=sqrt(p*p+x*x);
    b=sqrt((p+q)*(p+q)+y*y);
    a/=100;
    b/=100;
    if(s<eps)
        s=a*b;
    if(s>a*b)
        s=a*b;
}
int bs_b(int left,int right)
{
    long long bb0,cc0,dd0;
    int res;
    for(bb0=1;bb0<=MAX;bb0++)
    {
        cc0=(p*(p+q))/bb0;
        dd0=abs(cc0-bb0);
        res=possible(bb0,cc0,dd0);
        if(res==0)
        {
            comp(bb0,cc0,dd0);
            lamp=1;
        }
    }
    return lamp;
}
int main()
{
    cin>>pp>>qq>>rr;
    p=(int)pp*100;
    q=(int)qq*100;
    r=(int)rr*100;
    bs_b(0,MAX);
    if(s>=eps)
        printf("%.4llf\n",s);
    else
        printf("0\n");
    return 0;
}
