Commit Graph

18 Commits

Author SHA1 Message Date
joerg
4fdf57e855 Fix sanity check to match the fixed off-by-one logic in the sizing
logic.
2021-01-28 18:52:43 +00:00
joerg
63eec5d6ba Fix potential off-by-one error when using hash fudging. It needs to
round up to 2/4 and not one less to guarantee that the adjusted hash
fits into array.
2021-01-26 21:25:55 +00:00
joerg
48b62e131c Don't use arc4random for the tools build on NetBSD either.
compat_defs.h explicitly forces _POSIX_SOURCE and this hides the
prototype in stdlib.h.
2021-01-12 14:21:18 +00:00
joerg
7c219dd6db Optimize nbperf
- add fudge mode which gives a slightly slower hash function, but works
  almost always in the first iteration by avoiding degenerate edges
- avoid keeping incidence lists around reducing the memory foot print by
  30%
- split edge processing from hashing as in the non-fudge case it is a
  reasonable costly part that often gets thrown away
- merge graph2 and graph3 routines now that they are mostly the same
2021-01-07 16:03:08 +00:00
abhinav
95487f06f5 Fix typo 2017-06-20 15:50:04 +00:00
joerg
cc89f7922a Most CPUs implement shifts modulo the width, but ARM doesn't. Don't
depend on this UB.
2014-04-30 21:04:58 +00:00
joerg
e240adbd0b Retire OSI network stack. OK core@ 2013-03-01 18:25:13 +00:00
joerg
a81d4ca32f bdz -> bpz to match the initials of the authors. 2013-01-31 16:32:02 +00:00
joerg
ab86636a8f Adding missing new lines in output. 2012-11-23 02:57:57 +00:00
joerg
4edfbdbb40 Simplify the BDZ compression function, making it smaller at the same
time. Fixes a bug where non-minimal hash functions could be created.
Add regression tests for BDZ, including the map output functionality.
2012-09-25 20:53:46 +00:00
joerg
84d44fb884 The output function is only order preserving for chm and chm3, so
correct that part of the documentation and also mention what the default
algorithm is.
2012-05-31 21:36:06 +00:00
joerg
10769988ef Add support for build as part of the toolchain. Add option for
deterministic output (-p), which replaces the random seed with a
incremental counter.
2011-10-21 23:47:11 +00:00
joerg
f9c779de17 Add a check for duplicate keys. The check is run once and quadratic in
the hash collision chain length, which is expected to be fairly low.
2010-03-03 01:55:04 +00:00
joerg
97b3b0515b Fix a comment. 2010-03-01 21:46:58 +00:00
joerg
042b29cdb1 Use a more compact presentation for g if the size is small enough. 2009-08-24 17:12:46 +00:00
joerg
976b948d1c GCC's propolice complains about dynamic stack arrays to bite the bullet
and introduce a compile constant that limits the number of hash results.
Verify that the choosen hash function is not beyond that limit and just
the upper limit as static size in the graph tree functions.
2009-08-22 17:52:17 +00:00
joerg
81e49626c4 GCC doesn't trace switch (foo & 7) completely, so add a default: abort()
to avoid warnings about unused variables.
Consistently use \t for the output function.
2009-08-17 14:15:07 +00:00
joerg
03c8ba1c27 Add nbperf(1), a minimal perfect hash function generator.
Implemented are the 3-graph BDZ algorithm as well as the
2-graph and 3-graph CHM algorithms. All algorithms have expected
linear run time and the smallest functions need around 2.85 bit/key.
2009-08-15 16:21:04 +00:00