# Arup Guha
# 8/16/2023
# Alternate Solution to 2023 UCF Locals Problem: Land Division

toks = input().split()
b = int(toks[0])
a = int(toks[1])
h = int(toks[2])
tot = (a+b)/2*h

# Case where we want top and bottom triangles to be equal area.
# This can be proven by looking at what happens after we move from
# the split point that makes top and bottom triangle areas equal.
# Split point is at x = a/(a*b)*h...Imagine setting x = a/(a*b)*h + delta
# where you assume delta is pretty small. What you find is that the change
# in difference of area between left triangle and top triangle changes by
# (3a-b)*delta, so if 3a-b >= 0 the difference increases and this is the best
# we can do.
if 3*a >= b:

    # Area of both top and bottom split equally.
    topbot = b*a/(a+b)*h

    # Area of left and right, which we'll also split equally.
    rest = tot - topbot

    # In this case, left/right > top/bottom
    print( rest/2 - topbot/2 )

# In this case, as we increase delta, the bottom triangle grows and left and
# right shrink and we want this to continue until the bottom equals the left
# and right. So in this case, we set up equations to make those three areas
# equal.
else:

    # Let x be the height of the bottom triangle. In this case, we want the
    # bottom, left and right to all be equal to bx/2. Top is a(h-x)/2. Add
    # these up to get the total trapezoid area and solve x = bh/(3b-a).
    # Then use this to get the area of the three big triangles and subtract
    # out the small triangle.
    tripeq = b*b*h/2/(3*b-a)
    last = tot - 3*tripeq
    print(tripeq - last)
