#include <stdio.h>
#include <iostream>
#include <math.h>
#include <cstring>
using namespace std;

#define eax 1e-5

double a,b,c;
double h;

double sqr( double a ) { return a*a; }

int main()
{

	scanf("%lf%lf%lf",&a,&b,&c);
	if ( fabs( a - c ) > eax ) {
	  printf("0\n");
	  return 0;
	}

	double down,high;
	down = 0;
	high = 1000000000000000000.0;
	double mid;
	double izr;
	double x,y,d;
	while ( high - down > eax ) {
		mid = ( high + down ) / 2.0;

    x = sqrt( sqr(c) + sqr(a) );
    y = sqrt( sqr(mid-a) + sqr(b+c) );
    d = sqrt( sqr(mid) + sqr(b) );

    if ( sqr(d) - ( sqr(x) + sqr(y) ) > eax ) high = mid;
    else                                      down = mid;

		//y = sqrt( sqr(b+c) + sqr(mid-a) );
		//izr = mid - sqrt( sqr(y) - sqr(a+b) );

		//printf("%lf %lf %lf\n",mid,y,izr);
		//printf("%lf %lf\n",down,high);

		//if ( izr < c ) down = mid;
		//else		       high = mid;
	}

  printf("%.4lf\n",(a+c)*(b+down)/2.0);

	return 0;
}