xref: /minix3/lib/libc/stdlib/mi_vector_hash.3 (revision 2fe8fb192fe7e8720e3e7a77f928da545e872a6a)
1*2fe8fb19SBen Gras.\"	$NetBSD: mi_vector_hash.3,v 1.2 2009/07/21 12:40:52 joerg Exp $
2*2fe8fb19SBen Gras.\"
3*2fe8fb19SBen Gras.\" Copyright (c) 2009 The NetBSD Foundation, Inc.
4*2fe8fb19SBen Gras.\" All rights reserved.
5*2fe8fb19SBen Gras.\"
6*2fe8fb19SBen Gras.\" This code is derived from software contributed to The NetBSD Foundation
7*2fe8fb19SBen Gras.\" by Joerg Sonnenberger.
8*2fe8fb19SBen Gras.\"
9*2fe8fb19SBen Gras.\" Redistribution and use in source and binary forms, with or without
10*2fe8fb19SBen Gras.\" modification, are permitted provided that the following conditions
11*2fe8fb19SBen Gras.\" are met:
12*2fe8fb19SBen Gras.\" 1. Redistributions of source code must retain the above copyright
13*2fe8fb19SBen Gras.\"    notice, this list of conditions and the following disclaimer.
14*2fe8fb19SBen Gras.\" 2. Redistributions in binary form must reproduce the above copyright
15*2fe8fb19SBen Gras.\"    notice, this list of conditions and the following disclaimer in the
16*2fe8fb19SBen Gras.\"    documentation and/or other materials provided with the distribution.
17*2fe8fb19SBen Gras.\"
18*2fe8fb19SBen Gras.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
19*2fe8fb19SBen Gras.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20*2fe8fb19SBen Gras.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21*2fe8fb19SBen Gras.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
22*2fe8fb19SBen Gras.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23*2fe8fb19SBen Gras.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24*2fe8fb19SBen Gras.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25*2fe8fb19SBen Gras.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26*2fe8fb19SBen Gras.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27*2fe8fb19SBen Gras.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28*2fe8fb19SBen Gras.\" POSSIBILITY OF SUCH DAMAGE.
29*2fe8fb19SBen Gras.\"
30*2fe8fb19SBen Gras.Dd July 13, 2009
31*2fe8fb19SBen Gras.Dt MI_VECTOR_HASH 3
32*2fe8fb19SBen Gras.Os
33*2fe8fb19SBen Gras.Sh NAME
34*2fe8fb19SBen Gras.Nm mi_vector_hash
35*2fe8fb19SBen Gras.Nd fast 32bit hash functions
36*2fe8fb19SBen Gras.Sh LIBRARY
37*2fe8fb19SBen Gras.Lb libc
38*2fe8fb19SBen Gras.Sh SYNOPSIS
39*2fe8fb19SBen Gras.In stdlib.h
40*2fe8fb19SBen Gras.Ft void
41*2fe8fb19SBen Gras.Fn mi_vector_hash "const void * restrict key" "size_t len" \
42*2fe8fb19SBen Gras    "uint32_t seed" "uint32_t hashes[3]"
43*2fe8fb19SBen Gras.Sh DESCRIPTION
44*2fe8fb19SBen GrasThe
45*2fe8fb19SBen Gras.Nm
46*2fe8fb19SBen Grasfunction computes three 32-bit hash values of the memory area starting at
47*2fe8fb19SBen Gras.Fa key
48*2fe8fb19SBen Graswith length
49*2fe8fb19SBen Gras.Fa len .
50*2fe8fb19SBen Gras.Pp
51*2fe8fb19SBen GrasThe output is identical on all architectures and only depends on
52*2fe8fb19SBen Gras.Fa key
53*2fe8fb19SBen Grasand
54*2fe8fb19SBen Gras.Fa seed .
55*2fe8fb19SBen Gras.Sh IMPLEMENTATION NOTES
56*2fe8fb19SBen GrasAn optimised code path is used if
57*2fe8fb19SBen Gras.Fa key
58*2fe8fb19SBen Grasis aligned on a 32-bit boundary.
59*2fe8fb19SBen Gras.Sh HISTORY
60*2fe8fb19SBen GrasThe
61*2fe8fb19SBen Gras.Nm
62*2fe8fb19SBen Grasfunction appeared in
63*2fe8fb19SBen Gras.Nx 6.0 .
64*2fe8fb19SBen Gras.Sh AUTHORS
65*2fe8fb19SBen GrasThe hash function has been created by Bob Jenkins.
66