func spread(x uint32) uint64 {
	X := uint64(x)
	X = (X | (X << 16)) & 0x0000ffff0000ffff
	X = (X | (X << 8)) & 0x00ff00ff00ff00ff
	X = (X | (X << 4)) & 0x0f0f0f0f0f0f0f0f
	X = (X | (X << 2)) & 0x3333333333333333
	X = (X | (X << 1)) & 0x5555555555555555
	return X
}
func spread(x uint32) uint64 {
	X := uint64(x)
	X = (X | (X << 16)) & 0x0000ffff0000ffff
	X = (X | (X << 8)) & 0x00ff00ff00ff00ff
	X = (X | (X << 4)) & 0x0f0f0f0f0f0f0f0f
	X = (X | (X << 2)) & 0x3333333333333333
	X = (X | (X << 1)) & 0x5555555555555555
	return X
}
func spread ( x uint32 ) uint64 { X := uint64 ( x ) X = ( X | ( X << 16 ) ) & 0x0000ffff0000ffff X = ( X | ( X << 8 ) ) & 0x00ff00ff00ff00ff X = ( X | ( X << 4 ) ) & 0x0f0f0f0f0f0f0f0f X = ( X | ( X << 2 ) ) & 0x3333333333333333 X = ( X | ( X << 1 ) ) & 0x5555555555555555 return X }
// Spread out the 32 bits of x into 64 bits, where the bits of x occupy even
// bit positions.
Spread out the 32 bits of x into 64 bits where the bits of x occupy even bit positions .