#include <bits/stdc++.h>
using namespace std;
char temp[1000005];
long long k, d, t;
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
bool calc(long double t2) {
  long long g = ((k + d - 1) / d) * d;
  long double a = 1. * k / t + (g - k) / (2. * t);
  long double ans = a * ((long long)floor(t2 + 1e-9) / g);
  long double resto = t2 - ((long long)floor(t2 + 1e-9) / g) * g;
  if (resto < k)
    ans += 1. * resto / t;
  else {
    ans += (1. * k) / t;
    resto -= k;
    ans += (1. * resto) / (2 * t);
  }
  return ans > 1;
}
int main() {
  scanf("%lld %lld %lld", &k, &d, &t);
  long double l = 0, r = 2 * 1e18 + 10;
  for (int i = 0; i < 300; i++) {
    long double mid = (l + r) / 2;
    if (calc(mid))
      r = mid;
    else
      l = mid;
  }
  printf("%.20f", (double)l);
  return 0;
}
