#!/usr/bin/env python3
c,t,r = [int(i) for i in input().split()]
p = float(input())

epsilon = 0.000000001
DP = [[0]]
for x in range(1,c+1):
    row = [0.0]*(x+1)
    low = epsilon
    upp = 1e18
    while upp - low > epsilon and upp/low > 1+epsilon:
        mid = (low + upp) / 2
        for y in range(1,x):
            row[y] = min(1 + p*(r + mid) + (1-p)*row[y-1], t + DP[y][y])
        row[x] = 1 + p*(r + mid) + (1-p)*row[x-1]
        if row[x] > mid:
            low = mid
        else:
            upp = mid
#    print(*[round(x,2) for x in row]), mid
    DP.append(row)
print(DP[c][c] + t)
