#include <iostream>
#include <iomanip>
using namespace std;
int n;
double t;
double dfs(int k, int money)
{
double m, tmp;
if (k == n)
{
m = 0.5;
tmp = 2 * money;
if (t > m)
return (1 + t) / 2 * tmp;
return (1 - m) / (1 - t) * (1 + m) / 2 * tmp + (m - t) / (1 - t) * money;
}
tmp = dfs(k + 1, money * 2);
m = money / tmp;
if (t > m)
return (1 + t) / 2 * tmp;
return (1 - m) / (1 - t) * (1 + m) / 2 * tmp + (m - t) / (1 - t) * money;
}
int main()
{
while (cin >> n >> t)
{
if (n == 0 && t == 0)
break;
double result = dfs(1, 1);
cout << fixed << setprecision(3) << result << endl;
}
return 0;
}