#include <bits/stdc++.h>
using namespace std;
int tx[] = {0, 1, 0, -1};
int ty[] = {-1, 0, 1, 0};
static const double EPS = 1e-8;
int main() {
  double a, l, x;
  while (~scanf("%lf %lf %lf", &a, &l, &x)) {
    double s = (a + l + l) / 2.0;
    double ca = sqrt(s * (s - a) * (s - l) * (s - l));
    double res = 0.0;
    for (double scale = 0.000001; scale < 1.0; scale += 0.000001) {
      double e1 = scale * (l + x);
      double e2 = (1.0 - scale) * (l + x);
      double s2 = (e1 + e2 + l) / 2.0;
      if (s2 * (s2 - e1) * (s2 - e2) * (s2 - l) < 0) continue;
      double ca2 = sqrt(s2 * (s2 - e1) * (s2 - e2) * (s2 - l));
      res = max(ca + ca2 + ca2, res);
    }
    printf("%lf\n", res);
  }
}
