code: func search64(a []uint64, value uint64) int {
  	statsHit("search64")
  	// Optimize for elements and the last element.
  	n := len(a)
  	if n == 0 {
  		return -1
  	} else if a[n-1] == value {
  		return n - 1
  	}
  
  	// Otherwise perform binary search for exact match.
  	lo, hi := 0, n-1
  	for lo+16 <= hi {
  		i := int(uint((lo + hi)) >> 1)
  		v := a[i]
  
  		if v < value {
  			lo = i + 1
  		} else if v > value {
  			hi = i - 1
  		} else {
  			return i
  		}
  	}
  
  	// If an exact match isn't found then return a negative index.
  	for ; lo <= hi; lo++ {
  		v := a[lo]
  		if v == value {
  			return lo
  		} else if v > value {
  			break
  		}
  	}
  	return -(lo + 1)
  }
docs: // search64 returns the index of value in a. If value is not found, -1 * (1 +
  // the index where v would be if it were inserted) is returned. This is done in
  // order to both signal that value was not found (negative number), and also
  // return information about where v would go if it were inserted. The +1 offset
  // is necessary due to the case where v is not found, but would go at index 0.
  // since negative 0 is no different from positive 0, we offset the returned
  // negative indices by 1. See the test for this function for examples.