#include <algorithm>
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long ll;
typedef double db;
const int N=1e5;
const db eps=1e-12;
int n,m;
int qu[N],g[N];
db f[N],ans;
db cross(db xa,db ya,db xb,db yb) { return xa*yb-ya*xb; }
db calc(int k,int j,db mid) { return f[k]+(db(j-k)/j)-mid; }
bool check(db mid) {
for(int j=1,k=0,tp=1,tl=0;j<=n;j++,k++) {
while(tp<tl && calc(qu[tp],j,mid) < calc(qu[tp+1],j,mid)) tp++;
while(tp<tl && cross(db(k-qu[tl-1]),f[k]-f[qu[tl-1]],db(qu[tl]-qu[tl-1]),f[qu[tl]]-f[qu[tl-1]])<0.0) tl--;
qu[++tl]=k;
f[j]=calc(qu[tp],j,mid),g[j]=g[qu[tp]]+1;
}
return g[n]>=mid;
}
int main() {
scanf("%d%d",&n,&m);
db l=0,r=1e6;
for(int i=1;i<=200;i++) {
db mid=(l+r)/2;
if(check(mid)) l=mid,ans=mid;
else r=mid,ans=mid;
}
printf("%.9lf\n",f[n]+1.0*m*ans);
}