Skip to content

Commit b3344e2

Browse files
authored
Merge branch 'master' into icappexename
2 parents 1cc3a0a + bb3385b commit b3344e2

18 files changed

Lines changed: 317 additions & 317 deletions

README.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* **TurboPFor: The synonym for "integer compression"**
55
* **ALL** functions available for **AMD/Intel**, **64 bits ARMv8 NEON** Linux+MacOS/M1 & **Power9 Altivec**
66
* 100% C (C++ headers), as simple as memcpy. OS:Linux amd64, arm64, Power9, MacOs (Amd/intel + Apple M1),
7-
* :new:(2023.04) **Rust** Bindings. Access TurboPFor **incl. SSE/AVX2/Neon!** from Rust
7+
* **Rust** Bindings. Access TurboPFor **incl. SSE/AVX2/Neon!** from Rust
88
* :+1: **Java** Critical Natives/JNI. Access TurboPFor **incl. SSE/AVX2/Neon!** from Java as fast as calling from C
99
* :sparkles: **FULL** range 8/16/32/64 bits scalar + 16/32/64 bits SIMD functions
1010
* No other "Integer Compression" compress/decompress faster
@@ -19,29 +19,29 @@
1919
* **Variable byte**
2020
* Scalar **"Variable Byte"** faster and more efficient than **ANY** other implementation
2121
* SIMD **TurboByte** fastest group varint (16+32 bits) incl. integrated delta,zigzag,xor,...
22-
* :new:(2023.03)**TurboBitByte** novel hybrid scheme combining the fastest SIMD codecs TurboByte+TurboPack.
22+
* **TurboBitByte** novel hybrid scheme combining the fastest SIMD codecs TurboByte+TurboPack.
2323
Compress considerably better and can be 3 times faster than streamvbyte
2424
* **Simple family**
2525
* **Novel** **"Variable Simple"** (incl. **RLE**) faster and more efficient than simple16, simple-8b
2626
* **Elias fano**
2727
* Fastest **"Elias Fano"** implementation w/ or w/o SIMD/AVX2
28-
* :new:(2023.03)**TurboVLC** novel variable length encoding for large integers
28+
* **TurboVLC** novel variable length encoding for large integers
2929
with exponent + variable bit mantissa
30-
* :new:(2023.03)**Binary interpolative coding** : fastest implementation
30+
* **Binary interpolative coding** : fastest implementation
3131
+ **Transform**
3232
* Scalar & SIMD Transform: Delta, Zigzag, Zigzag of delta, XOR,
33-
* :new:(2023.03) Transpose/Shuffle with integrated Xor and zigzag delta
34-
* :new:(2023.03) 2D/3D/4D transpose
33+
* Transpose/Shuffle with integrated Xor and zigzag delta
34+
* 2D/3D/4D transpose
3535
* **lossy** floating point compression with *TurboPFor* or [TurboTranspose](https://github.com/powturbo/TurboTranspose)+lz77/bwt
36-
+ :new:(2023.03)**IC Codecs** transpose/rle + general purpose compression with lz4,zstd,turborc (range coder),bwt...
36+
+ **IC Codecs** transpose/rle + general purpose compression with lz4,zstd,turborc (range coder),bwt...
3737
* **Floating Point Compression**
3838
* Delta/Zigzag + improved gorilla style + (Differential) Finite Context Method FCM/DFCM floating point compression
3939
* Using **TurboPFor**, unsurpassed compression and more than 8 GB/s throughput
4040
* Point wise relative error bound **lossy** floating point compression
4141
* **TurboFloat** novel efficient floating point compression using TurboPFor
42-
* :new:(2023.03)**TurboFloat LzXor** novel floating point lempel-ziv compression
43-
* :new:(2023.06) _Float16 16 bits floating point support
44-
* :new:(2023.06) float 16/32/64 bits quantization with variable quantization bit size.
42+
* **TurboFloat LzXor** novel floating point lempel-ziv compression
43+
* _Float16 16 bits floating point support
44+
* float 16/32/64 bits quantization with variable quantization bit size.
4545
* **Time Series Compression**
4646
* **Fastest Gorilla** 16/32/64 bits style compression (**zigzag of delta** + **RLE**).
4747
* can compress timestamps to only 0.01%. Speed > 10 GB/s compression and > 13 GB/s decompress.
@@ -66,7 +66,7 @@
6666
- [Benchmark: Lossy Floating Point Preprocessing Turbo Razor vs Granular bitround vs libroundfast](https://github.com/powturbo/TurboPFor-Integer-Compression/issues/94)
6767
- [Benchmark: Lossless/Lossy Floating Point Compression. TurboPFor vs zfp & blosc](https://github.com/powturbo/TurboPFor-Integer-Compression/issues/92)
6868
- [Benchmark: TurboPFor: IcApp 16 bits Integer Compression](https://github.com/powturbo/TurboPFor-Integer-Compression/issues/50)
69-
- [Benchmark Intel CPU: Skylake i7-6700 3.4GHz gcc 9.2](https://github.com/powturbo/TurboPFor/issues)
69+
- [Benchmark Intel CPU: Skylake i7-6700 3.4GHz gcc 9.2](https://github.com/powturbo/TurboPFor-Integer-Compression/issues/47)
7070
- [Benchmark ARM: ARMv8 A73-ODROID-N2 1.8GHz](https://github.com/powturbo/TurboPFor/issues/49)
7171

7272
##### - Synthetic data:
@@ -499,5 +499,5 @@ Note: Some low level functions (like p4enc32) are limited to 128/256 (SSE/AVX2)
499499
* :green_book:[SPDP is a compression/decompression algorithm for binary IEEE 754 32/64 bits floating-point data](http://cs.txstate.edu/~burtscher/research/SPDPcompressor/)<br />
500500
:green_book:[ SPDP - An Automatically Synthesized Lossless Compression Algorithm for Floating-Point Data](http://cs.txstate.edu/~mb92/papers/dcc18.pdf) + [DCC 2018](http://www.cs.brandeis.edu//~dcc/Programs/Program2018.pdf)
501501

502-
Last update: 10 JUN 2023
502+
Last update: 12 APR 2026
503503

include/ic.h

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,35 +1012,35 @@ unsigned trled( const unsigned char *__restrict in, unsigned inlen, unsigned c
10121012
}
10131013
#endif
10141014

1015-
//-- "Integer Compression" variable length encoding with bitio ------------------
1016-
1017-
#ifdef __cplusplus
1018-
extern "C" {
1019-
#endif
1020-
//-- Gamma coding (length limited) : Full 32 bit range
1021-
size_t bitgenc32( unsigned char *_in, size_t _inlen, unsigned char *out);
1022-
size_t bitgdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1023-
1024-
//-- Rice Coding (adaptive length limited) : Full 32 bit range ---
1025-
size_t bitrenc32( unsigned char *_in, size_t _inlen, unsigned char *out);
1026-
size_t bitrdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1027-
1028-
size_t vlcenc32( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 32 bits
1029-
size_t vlcdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1030-
1031-
size_t vlcenc16( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 16 bits
1032-
size_t vlcdec16( unsigned char *in, size_t _outlen, unsigned char *_out);
1033-
1034-
size_t vlczenc16( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 16 bits zigzag
1035-
size_t vlczdec16( unsigned char *in, size_t _outlen, unsigned char *_out);
1036-
1037-
size_t vlczenc32( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 32 bits zigzag
1038-
size_t vlczdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1039-
1040-
#ifdef __cplusplus
1041-
}
1042-
#endif
1043-
1015+
//-- "Integer Compression" variable length encoding with bitio ------------------
1016+
1017+
#ifdef __cplusplus
1018+
extern "C" {
1019+
#endif
1020+
//-- Gamma coding (length limited) : Full 32 bit range
1021+
size_t bitgenc32( unsigned char *_in, size_t _inlen, unsigned char *out);
1022+
size_t bitgdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1023+
1024+
//-- Rice Coding (adaptive length limited) : Full 32 bit range ---
1025+
size_t bitrenc32( unsigned char *_in, size_t _inlen, unsigned char *out);
1026+
size_t bitrdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1027+
1028+
size_t vlcenc32( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 32 bits
1029+
size_t vlcdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1030+
1031+
size_t vlcenc16( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 16 bits
1032+
size_t vlcdec16( unsigned char *in, size_t _outlen, unsigned char *_out);
1033+
1034+
size_t vlczenc16( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 16 bits zigzag
1035+
size_t vlczdec16( unsigned char *in, size_t _outlen, unsigned char *_out);
1036+
1037+
size_t vlczenc32( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 32 bits zigzag
1038+
size_t vlczdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1039+
1040+
#ifdef __cplusplus
1041+
}
1042+
#endif
1043+
10441044
//-- "Integer Compression" variable byte (scalar TurboVByte+ SIMD TurboByte) ---------------------------------------------------------------
10451045

10461046
#ifdef __cplusplus

0 commit comments

Comments
 (0)