CHilbert ======== This is an implementation of [Compact Hilbert Indices](https://doi.org/10.1109/CISIS.2007.16), based on the original by Chris Hamilton, but largely rewritten to improve and modernize the code: * Header-only C++ 14 library. * New bit vector types for avoiding dynamic allocation and/or using statically known sizes, with more generic and standard interfaces. * Support for using simple integer types where possible. * Comprehensive unit test suite. * Cleaned up and refactored code for more clarity and maintainability. For simple applications that do not require very large or compacted indices, the implementation of classic (non-compact) Hilbert Indices is also exposed. Simple integer types are supported, so this library can also be used for basic Hilbert Curve mapping with up to 64 dimensions without using the more sophisticated data types. Two simple example programs are included to demonstrate this: one that outputs an SVG file of a 2D Hilbert Curve, and another that outputs an OBJ file of a 3D Hilbert Curve. This implementation derives from the one used in [VOLAP](https://doi.org/10.1109/TPDS.2017.2743072) and [The Hilbert PDC-tree](https://doi.org/10.1145/2938503.2938549). To avoid confusion with the original implementation, this one is uniformly called `chilbert`. -- David Robillard