#include #define all(v) (v).begin(), (v).end() #define rep(i, n) for (ll i = 0; i < (ll)(n); ++i) #define rep2(i, n, m) for (ll i = n; i <= (ll)(m); ++i) #define rep3(i, n, m) for (ll i = n; i >= (ll)(m); --i) using namespace std; using ld = long double; using ll = long long int; using pl = pair; using vl = vector; using vvl = vector; using vpl = vector; template using pqg = priority_queue, greater>; template using pq = priority_queue; template T chmax(T &a, const T &b) { return a = max(a, b); } template T chmin(T &a, const T &b) { return a = min(a, b); } const ll INF = 100000000000000000; const ll MAX = 500005; const ll MOD = 1000000007; // const ll MOD = 998244353; int main(void) { ld a, b, c; cin >> a >> b >> c; ld s = (a + b + c) / 2.0; ld S = sqrt(s * (s - a) * (s - b) * (s - c)); cout << fixed << setprecision(15) << S / 4.0 << endl; return (0); }