This is a simple CMake Project. Use CMake for compilation. For example:
user@pc $ mkdir cmake-build-release
user@pc $ cd cmake-build-release
user@pc $ cmake -S .. -B . -DBUILD_TESTING=ON -DCMAKE_BUILD_TYPE=Release
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/user/workspace/bitvector/cmake-build-release
user@pc $ cmake --build .
[100%] Built target bitvector
user@pc $ ./bitvector ../bench/reference.txt /tmp/reference-const-result.txt
RESULT name=robert_fritsch time=0 space=8512
bitvector <file_in> <file_out> [<variant>]
<file_in> : the input file
<file_out> : the output file
<variant> : optional - one of [linear, const, pasta]
(pasta only if compiled with the INCLUDE_PASTA_BIT_VECTOR flag!)
Directory | Description |
---|---|
bench | Contains sample input files for the cli |
cmake | CMake code that was moved out of the CMakeLists.txt for readability. |
include | The bitvector header only library implemented by this project. |
scripts | Some Python scripts for testing and plotting. |
src | A cli for using the bitvector library on the command line. Entry point: main.cpp |
test | Some CTest test applications. See Tests. |
Simple python tool to generate random yet valid input instances. These are than run for pasta (as reference) and the custom implementation. The results of both runs are compared and if there are differences, these differences get printed.
The C-Tests at the moment check only the consistency of some datastructure implementations. There is no logic check for the right rank and select queries. I extend these every time I face a bug in one of the datastructures.