#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 3;
int main() {
  long long k, d, t;
  scanf("%lld %lld %lld", &k, &d, &t);
  if (d < k) {
    int e = 0;
    if (k % d) e++;
    d = d * (k / d + e);
  }
  if (t <= k)
    printf("%lld\n", t);
  else if (d == k)
    printf("%lld\n", t);
  else {
    long long num = d + k, dem = 2 * t;
    long long x = dem / num;
    double ans = 0;
    if (num > dem) {
      ans += k;
      ans += (((t - k)) * 2.0);
    } else {
      ans += (1.0 * x * 1.0 * d);
      long long falta = dem - x * num;
      num *= x;
      double n1 = (1.0 * k) / (1.0 * t), n2 = (1.0 * falta) / (1.0 * dem);
      if (n1 >= n2)
        ans += ((1.0 * falta) / 2.0);
      else {
        num += 2 * k;
        ans += k;
        falta = dem - num;
        ans += ((1.0 * falta));
      }
    }
    printf("%.9lf\n", ans);
  }
}
