SPDP is a compression/decompression algorithm that is tailored towards binary IEEE 754 32-bit single-precision (float) and 64-bit double-precision (double) floating-point data but also works on other data. A compression filter for HDF5 that is based on the SPDP algorithm is available here.
Click on SPDP_10.c to download the source code. A description of the SPDP algorithm is available here. Sample little-endian double-precision datasets are available here. Note that SPDP is protected by this license and that by downloading SPDP you agree to the terms and conditions set forth in this license.
The source code can be compiled as follows:
gcc -O3 SPDP_10.c -o spdp
To compress the file
floating_point.bin with a compression level of 5 and store the compressed output in the file
./spdp 5 < floating_point.bin > floating_point.spdp
The supported compression levels go from 0 (faster with a lower compression ratio) to 9 (slower with a higher compression ratio).
To decompress the file
floating_point.spdp and store the decompressed output in the file
./spdp < floating_point.spdp > floating_point.org
This work has been supported in part by the National Science Foundation under Grant No. 1217231.