require 

LN2 = BigMath::log(2,16)  
FACTORIALS = Hash.new{|h,k| h[k] = k * h[k-1]}
FACTORIALS[0] = 1

def hickerson(n)
  FACTORIALS[n] / (2 * LN2 ** (n+1))
end

def nearly_int?(n)
  int = n.round
  n.between?(int - 0.1, int + 0.1)
end

1.upto(17) do |n|
  h = hickerson(n)
  str = nearly_int?(h)? : 
  puts  % [n, h.to_s('F')[0,25], str] 
end