#include <bits/stdc++.h>
using namespace std;
const int Max = 2e6 + 10;
const int Mod = 1e9 + 7;
const long long int Inf = 1LL << 62;
int main() {
  long long int k, t, d;
  while (cin >> k >> d >> t) {
    double l = 0, r = 1e19;
    double ans;
    double x = 0;
    long long int cur = 0;
    x = ((k / d) + (k % d != 0)) * d - k;
    long long int cnt = 0;
    while (r - l > 0.0000000001 && cnt < 1000) {
      double mid = (l + r) / 2.0;
      long long int cur = mid / (k + x);
      double sum = (double)(cur * k) / t + (double)(cur * x) / (2 * t);
      double tot = cur * (k + x);
      if (tot + k <= mid) {
        sum += k / (double)t;
        tot += k;
        sum += ((double)(mid - tot) / (double)(2 * t));
      } else {
        sum += ((double)(mid - tot) / (double)(t));
      }
      if (sum <= 1) {
        ans = mid;
        l = mid;
      } else {
        r = mid;
      }
      cnt++;
    }
    cout << setprecision(9) << fixed << ans << endl;
    cerr << "--------------------" << endl;
  }
  return 0;
}
