For a Long, it doesn't make sense to use negative powers of 2 in your ranges; the smallest dyadic interval you care about is (k*2^0, (k+1)*2^0). For a Double, though, all of your values might be concentrated in some small range, so you want to be able to use smaller powers of two. I arbitrarily default to (k*2^-16, (k+1)*2^-16) as the initial interval size.