prelude: | first = 2**100 last = 2**1000 mid = (first + last) / 2 r = first..last benchmark: first: r.bsearch { |x| x >= first } mid: r.bsearch { |x| x >= mid } last: r.bsearch { |x| x >= last }