`crc32`, `crc64`, `adler32`, `djb`, `fnv`, `jenkins`, `murmur` and other hashes.

Collection Info

View Source
Collection
core
Path
hash
Entries
24

Source Files

Procedures

24

adler32 #

Source
@(optimization_mode="favor_size")
adler32 :: proc "contextless" (data: []u8, seed: u32 = u32(1)) -> u32 {…}

crc16_ccitt_0x1021 #

Source
@(optimization_mode="favor_size")
crc16_ccitt_0x1021 :: proc "contextless" (data: []u8, seed: u16 = u16(0)) -> (result: u16) {…}

Compute CRC-16 in the manner of CCITT (ITU-T V.41), using the 0x1021 polynomial. Generator polynomial: x^16 + x^12 + x^5 + 1 Used in the UDF (DVD *.iso) disk format's Volume Descriptor Tag, and was more historically the ITU-T V.41 CRC-16 used in the XModem protocol, which uses 0xffff as the initial value.

crc32 #

Source
@(optimization_mode="favor_size")
crc32 :: proc "contextless" (data: []u8, seed: u32 = u32(0)) -> u32 {…}

crc64_ecma_182 #

Source
@(optimization_mode="favor_size")
crc64_ecma_182 :: proc "contextless" (data: []u8, seed: u64 = u64(0)) -> (result: u64) {…}

crc64_iso_3306 #

Source
@(optimization_mode="favor_size")
crc64_iso_3306 :: proc "contextless" (data: []u8, seed: u64 = u64(0)) -> u64 {…}

Generator polynomial: x^64 + x^4 + x^3 + x + 1

crc64_iso_3306_inverse #

Source
crc64_iso_3306_inverse :: proc "contextless" (data: []u8, seed: u64 = u64(0)) -> u64 {…}

crc64_xz #

Source
@(optimization_mode="favor_size")
crc64_xz :: proc "contextless" (data: []u8, seed: u64 = u64(0)) -> u64 {…}

Compute CRC-64 in the manner of xz, using the ECMA-182 polynomial, bit-reversed, with one's complement pre and post processing. Based on Mark Adler's v1.4 implementation in C under the ZLIB license.

djb2 #

Source
@(optimization_mode="favor_size")
djb2 :: proc "contextless" (data: []u8, seed: u32 = u32(5381)) -> u32 {…}

djbx33a #

Source
djbx33a :: proc "contextless" (data: []u8, seed: u32 = u32(5381)) -> (result: [16]u8) {…}

fnv32 #

Source
@(optimization_mode="favor_size")
fnv32 :: proc "contextless" (data: []u8, seed: u32 = u32(0x811c9dc5)) -> u32 {…}

If you have a choice, prefer fnv32a

fnv32_no_a #

Source
@(optimization_mode="favor_size")
fnv32_no_a :: proc "contextless" (data: []u8, seed: u32 = u32(0x811c9dc5)) -> u32 {…}

If you have a choice, prefer fnv32a

fnv32a #

Source
@(optimization_mode="favor_size")
fnv32a :: proc "contextless" (data: []u8, seed: u32 = u32(0x811c9dc5)) -> u32 {…}

fnv64 #

Source
@(optimization_mode="favor_size")
fnv64 :: proc "contextless" (data: []u8, seed: u64 = u64(0xcbf29ce484222325)) -> u64 {…}

If you have a choice, prefer fnv64a

fnv64_no_a #

Source
@(optimization_mode="favor_size")
fnv64_no_a :: proc "contextless" (data: []u8, seed: u64 = u64(0xcbf29ce484222325)) -> u64 {…}

If you have a choice, prefer fnv64a

fnv64a #

Source
@(optimization_mode="favor_size")
fnv64a :: proc "contextless" (data: []u8, seed: u64 = u64(0xcbf29ce484222325)) -> u64 {…}

jenkins #

Source
@(optimization_mode="favor_size")
jenkins :: proc "contextless" (data: []u8, seed: u32 = u32(0)) -> u32 {…}

murmur32 #

Source
@(optimization_mode="favor_size")
murmur32 :: proc "contextless" (data: []u8, seed: u32 = u32(0x9747b28c)) -> u32 {…}

murmur64a #

Source
@(optimization_mode="favor_size")
murmur64a :: proc "contextless" (data: []u8, seed: u64 = u64(0x9747b28c)) -> u64 {…}

See https://github.com/aappleby/smhasher/blob/master/src/MurmurHash2.cpp#L96

murmur64b #

Source
@(optimization_mode="favor_size")
murmur64b :: proc "contextless" (data: []u8, seed: u64 = u64(0x9747b28c)) -> u64 {…}

See https://github.com/aappleby/smhasher/blob/master/src/MurmurHash2.cpp#L140

sdbm #

Source
@(optimization_mode="favor_size")
sdbm :: proc "contextless" (data: []u8, seed: u32 = u32(0)) -> u32 {…}