from fractions import Fraction
N , K = list(map(int,input().split()))
denom_list = []
Z=0


def detame_keisan( N , K , i ):
    kijun = K
    score = i
    count = 0
    
    while score < kijun:
        count += 1
        score = ( score *  2 )
    return N * (2 ** count)

for i in range( 1,N+1 ):
    X = detame_keisan( N , K , i)
    denom_list.append( X )

for item in denom_list:
    #Z += 1/item
    Z += Fraction(1, item)
#print( Z)
print( float( Z )) from fractions import Fraction N , K = list(map(int,input().split())) N list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split K denom_list = [] denom_list [] Z=0 Z 0 def detame_keisan( N , K , i ):
    kijun = K
    score = i
    count = 0
    
    while score < kijun:
        count += 1
        score = ( score *  2 )
    return N * (2 ** count) detame_keisan kijun = K kijun K score = i score i count = 0 count 0 while score < kijun:
        count += 1
        score = ( score *  2 )
     score < kijun score kijun count += 1 count 1 score = ( score *  2 ) score score *  2 score 2 return N * (2 ** count) N * (2 ** count) N 2 ** count 2 count N N K K i i for i in range( 1,N+1 ):
    X = detame_keisan( N , K , i)
    denom_list.append( X ) i range( 1,N+1 ) range 1 N+1 N 1 X = detame_keisan( N , K , i) X detame_keisan( N , K , i) detame_keisan N K i denom_list.append( X ) denom_list.append denom_list append X for item in denom_list:
    #Z += 1/item
    Z += Fraction(1, item)
#print( Z) item denom_list Z += Fraction(1, item) Z Fraction(1, item) Fraction 1 item print( float( Z )) print float( Z ) float Z K = list(map(int,input().split())) list(map(int,input().split())) K denom_list = [] [] denom_list def detame_keisan( N , K , i ):
    kijun = K
    score = i
    count = 0
    
    while score < kijun:
        count += 1
        score = ( score *  2 )
    return N * (2 ** count) def detame_keisan( N , K , i ):
    kijun = K
    score = i
    count = 0
    
    while score < kijun:
        count += 1
        score = ( score *  2 )
    return N * (2 ** count) detame_keisan X = detame_keisan( N , K , i) detame_keisan( N , K , i) X Z += Fraction(1, item) Fraction(1, item) Z Z=0 0 Z N , K = list(map(int,input().split())) list(map(int,input().split())) N
from fractions import Fraction
N , K = list(map(int,input().split()))
denom_list = []
Z=0


def detame_keisan( N , K , i ):
    kijun = K
    score = i
    count = 0
    
    while score < kijun:
        count += 1
        score = ( score *  2 )
    return N * (2 ** count)

for i in range( 1,N+1 ):
    X = detame_keisan( N , K , i)
    denom_list.append( X )

for item in denom_list:
    #Z += 1/item
    Z += Fraction(1, item)
#print( Z)
print( float( Z ))