public static long [ ] MurmurHash3_x64_128 ( final long [ ] key , final int seed ) { State state = new State ( ) ; state . h1 = 0x9368e53c2f6af274 L ^ seed ; state . h2 = 0x586dcd208f7cd3fd L ^ seed ; state . c1 = 0x87c37b91114253d5 L ; state . c2 = 0x4cf5ad432745937f L ; for ( int i = 0 ; i < key . length / 2 ; i ++ ) { state . k1 = key [ i * 2 ] ; state . k2 = key [ i * 2 + 1 ] ; bmix ( state ) ; } long tail = key [ key . length - 1 ] ; // Key length is odd if ( ( key . length & 1 ) == 1 ) { state . k1 ^= tail ; bmix ( state ) ; } state . h2 ^= key . length * 8 ; state . h1 += state . h2 ; state . h2 += state . h1 ; state . h1 = fmix ( state . h1 ) ; state . h2 = fmix ( state . h2 ) ; state . h1 += state . h2 ; state . h2 += state . h1 ; return new long [ ] { state . h1 , state . h2 } ; }
Hash a value using the x64 128 bit variant of MurmurHash3