public static double HashCore(int[] array) { ulong adler = 1L; ulong s1, s2; for (int i = 0; i < array.Length; i++) { s1 = adler & 0xffff; s2 = (adler >> 16) & 0xffff; s1 = (s1 + (ushort)array[i]) % 65521; s2 = (s2 + s1) % 65521; adler = (s2 << 16) + s1; } return (double)adler; }