#include <bits/stdc++.h>
#define FOR(v, a, b) for(int v = (int)(a); v < (int)(b); ++v)
#define FORE(v, a, b) for(int v = (int)(a); v <= (int)(b); ++v)
#define REP(v, n) FOR(v, 0, n)
#define REPE(v, n) FORE(v, 0, n)
#define RS resize
#define CLR clear
#define PB push_back
#define ALL(x) (x).begin(), (x).end()
using namespace std;

void split(string str, char chr, vector< string > *res){
	stringstream ss(str);
	string itm;
	while(getline(ss, itm, chr)){
		(*res).PB(itm);
	}
}

double Heron(double a, double b, double c){
	double s = (a + b + c) / 2;
	return sqrt(s * (s - a) * (s - b) * (s - c));
}

int main(){
	cin.tie(0);
	ios::sync_with_stdio(false);
	
	int a, l, x;
	double area;
	
	while(cin >> a >> l >> x){
		area = Heron(a, l, l) + Heron(l, (double)(l + x) / 2, (double)(l + x) / 2) * 2;
		cout << setprecision(15) << area << endl;
	}
	
	return 0;
}