code: public static void bitVectorToEdge(final BitVector bv, final long seed, final int numVertices, final int partSize, final int e[]) {
  		if (numVertices == 0) {
  			e[0] = e[1] = e[2] = -1;
  			return;
  		}
  		final long[] hash = new long[3];
  		Hashes.spooky4(bv, seed, hash);
  		e[0] = (int)((hash[0] & 0x7FFFFFFFFFFFFFFFL) % partSize);
  		e[1] = (int)(partSize + (hash[1] & 0x7FFFFFFFFFFFFFFFL) % partSize);
  		e[2] = (int)((partSize << 1) + (hash[2] & 0x7FFFFFFFFFFFFFFFL) % partSize);
  	}
docs: Turns a bit vector into a 3-hyperedge.
  
  <p>The returned edge satisfies the property that the <var>i</var>-th vertex is in the interval
  [<var>i</var>&middot;{@link #partSize}..<var>i</var>+1&middot;{@link #partSize}). However, if there are no edges
  the vector <code>e</code> will be filled with -1.
  
  @param bv a bit vector.
  @param seed the seed for the hash function.
  @param numVertices the number of vertices in the underlying hypergraph.
  @param partSize <code>numVertices</code>/3 (to avoid a division).
  @param e an array to store the resulting edge.