sub FNV_1_128_gmpn { my $s = shift; mpn_set_str(my $h, '144066263297769815596495629667062367629', 10, 128); mpn_set_str(my $p, '309485009821345068724781371', 10, 128); for (unpack 'C*', $s) { my $h2 = $h; mpn_mul($h, $h2, $p); mpn_ior_uint($h, $h, $_); } return $h; } sub FNV_1a_128_gmpn { my $s = shift; mpn_set_str(my $h, '144066263297769815596495629667062367629', 10, 128); mpn_set_str(my $p, '309485009821345068724781371', 10, 128 ); for (unpack 'C*', $s) { mpn_ior_uint($h, $h, $_); my $h2 = $h; mpn_mul($h, $h2, $p); } return $h; }