#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <algorithm>

using namespace std;

#define rep(i,j) REP((i), 0, (j))
#define REP(i,j,k) for(int i=(j);(i)<(k);++i)
#define BW(a,x,b) ((a)<=(x)&&(x)<=(b))
#define F first
#define S second
#define INF 1 << 30

typedef pair<int, int> pi;
typedef pair<int, pi> pii;
typedef vector<int> vi;
typedef queue<int> qi;
typedef long long ll;

int main(){
  double a, l, x;
  while(~scanf("%lf%lf%lf", &a, &l, &x)){
    double res = 0;
    double s = (a+l+l)/2;
    res += sqrt(s*(s-a)*(s-l)*(s-l));

    double e = (l+x)/2;
    s = (l+e+e)/2;
    res += 2*sqrt(s*(s-l)*(s-e)*(s-e));

    printf("%lf\n", res);
  }
  return 0;
}