From 1f8009c6663d3433b0d0aa70d8532d673273c453 Mon Sep 17 00:00:00 2001 From: x Date: Wed, 16 Oct 2019 19:47:31 +0200 Subject: [PATCH] TurboPFor: Floating Point/Integer c/c++ header --- fp.h | 77 ++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 44 insertions(+), 33 deletions(-) diff --git a/fp.h b/fp.h index 44e37b4..ad7b5c5 100644 --- a/fp.h +++ b/fp.h @@ -30,37 +30,18 @@ extern "C" { #else #include #endif -//--------- Last value Predictor -// delta (=zigzag). Same as p4zenc -size_t fppenc8( uint8_t *in, size_t n, unsigned char *out, uint8_t start); -size_t fppdec8( unsigned char *in, size_t n, uint8_t *out, uint8_t start); -size_t fppenc16( uint16_t *in, size_t n, unsigned char *out, uint16_t start); -size_t fppdec16( unsigned char *in, size_t n, uint16_t *out, uint16_t start); -size_t fppenc32( uint32_t *in, size_t n, unsigned char *out, uint32_t start); -size_t fppdec32( unsigned char *in, size_t n, uint32_t *out, uint32_t start); -size_t fppenc64( uint64_t *in, size_t n, unsigned char *out, uint64_t start); -size_t fppdec64( unsigned char *in, size_t n, uint64_t *out, uint64_t start); -// Zigzag of delta (=delta of delta + zigzag encoding) -size_t fpzzenc8( uint8_t *in, size_t n, unsigned char *out, uint8_t start); -size_t fpzzdec8( unsigned char *in, size_t n, uint8_t *out, uint8_t start); -size_t fpzzenc16( uint16_t *in, size_t n, unsigned char *out, uint16_t start); -size_t fpzzdec16( unsigned char *in, size_t n, uint16_t *out, uint16_t start); -size_t fpzzenc32( uint32_t *in, size_t n, unsigned char *out, uint32_t start); -size_t fpzzdec32( unsigned char *in, size_t n, uint32_t *out, uint32_t start); -size_t fpzzenc64( uint64_t *in, size_t n, unsigned char *out, uint64_t start); -size_t fpzzdec64( unsigned char *in, size_t n, uint64_t *out, uint64_t start); +// ---------- TurboPFor Zigzag of delta (=delta of delta + zigzag encoding) (TurboPFor) +size_t p4nzzenc128v8( uint8_t *in, size_t n, unsigned char *out, uint8_t start); +size_t p4nzzdec128v8( unsigned char *in, size_t n, uint8_t *out, uint8_t start); +size_t p4nzzenc128v16( uint16_t *in, size_t n, unsigned char *out, uint16_t start); +size_t p4nzzdec128v16( unsigned char *in, size_t n, uint16_t *out, uint16_t start); +size_t p4nzzenc128v32( uint32_t *in, size_t n, unsigned char *out, uint32_t start); +size_t p4nzzdec128v32( unsigned char *in, size_t n, uint32_t *out, uint32_t start); +size_t p4nzzenc128v64( uint64_t *in, size_t n, unsigned char *out, uint64_t start); +size_t p4nzzdec128v64( unsigned char *in, size_t n, uint64_t *out, uint64_t start); -// Improved gorilla style + RLE w/ bit/io -size_t fpgenc8( uint8_t *in, size_t n, unsigned char *out, uint8_t start); -size_t fpgdec8( unsigned char *in, size_t n, uint8_t *out, uint8_t start); -size_t fpgenc16( uint16_t *in, size_t n, unsigned char *out, uint16_t start); -size_t fpgdec16( unsigned char *in, size_t n, uint16_t *out, uint16_t start); -size_t fpgenc32( uint32_t *in, size_t n, unsigned char *out, uint32_t start); -size_t fpgdec32( unsigned char *in, size_t n, uint32_t *out, uint32_t start); -size_t fpgenc64( uint64_t *in, size_t n, unsigned char *out, uint64_t start); -size_t fpgdec64( unsigned char *in, size_t n, uint64_t *out, uint64_t start); -//---- Zigzag w/ bit/io +//----------- Zigzag (bit/io) ------------------------------------------------------- size_t bvzenc8( uint8_t *in, size_t n, unsigned char *out, uint8_t start); size_t bvzdec8( unsigned char *in, size_t n, uint8_t *out, uint8_t start); size_t bvzenc16( uint16_t *in, size_t n, unsigned char *out, uint16_t start); @@ -69,7 +50,7 @@ size_t bvzenc32( uint32_t *in, size_t n, unsigned char *out, uint32_t st size_t bvzdec32( unsigned char *in, size_t n, uint32_t *out, uint32_t start); size_t bvzenc64( uint64_t *in, size_t n, unsigned char *out, uint64_t start); size_t bvzdec64( unsigned char *in, size_t n, uint64_t *out, uint64_t start); -//---- Zigzag of delta w/ bit/io +//----------- Zigzag of delta (bit/io) --------------------------------------------- size_t bvzzenc8( uint8_t *in, size_t n, unsigned char *out, uint8_t start); size_t bvzzdec8( unsigned char *in, size_t n, uint8_t *out, uint8_t start); size_t bvzzenc16( uint16_t *in, size_t n, unsigned char *out, uint16_t start); @@ -79,7 +60,27 @@ size_t bvzzdec32( unsigned char *in, size_t n, uint32_t *out, uint32_t st size_t bvzzenc64( uint64_t *in, size_t n, unsigned char *out, uint64_t start); size_t bvzzdec64( unsigned char *in, size_t n, uint64_t *out, uint64_t start); -//------------- FCM: Finite Context Method Predictor +//----------- TurboGorilla : Improved gorilla style + RLE (bit/io) ------------------ +size_t fpgenc8( uint8_t *in, size_t n, unsigned char *out, uint8_t start); +size_t fpgdec8( unsigned char *in, size_t n, uint8_t *out, uint8_t start); +size_t fpgenc16( uint16_t *in, size_t n, unsigned char *out, uint16_t start); +size_t fpgdec16( unsigned char *in, size_t n, uint16_t *out, uint16_t start); +size_t fpgenc32( uint32_t *in, size_t n, unsigned char *out, uint32_t start); +size_t fpgdec32( unsigned char *in, size_t n, uint32_t *out, uint32_t start); +size_t fpgenc64( uint64_t *in, size_t n, unsigned char *out, uint64_t start); +size_t fpgdec64( unsigned char *in, size_t n, uint64_t *out, uint64_t start); + +//----------- TurboFloat XOR : Last value predictor (TurboPFor) --------------------- +size_t fpxenc8( uint8_t *in, size_t n, unsigned char *out, uint8_t start); +size_t fpxdec8( unsigned char *in, size_t n, uint8_t *out, uint8_t start); +size_t fpxenc16( uint16_t *in, size_t n, unsigned char *out, uint16_t start); +size_t fpxdec16( unsigned char *in, size_t n, uint16_t *out, uint16_t start); +size_t fpxenc32( uint32_t *in, size_t n, unsigned char *out, uint32_t start); +size_t fpxdec32( unsigned char *in, size_t n, uint32_t *out, uint32_t start); +size_t fpxenc64( uint64_t *in, size_t n, unsigned char *out, uint64_t start); +size_t fpxdec64( unsigned char *in, size_t n, uint64_t *out, uint64_t start); + +//----------- TurboFloat FCM: Finite Context Method Predictor (TurboPFor) ----------- size_t fpfcmenc8( uint8_t *in, size_t n, unsigned char *out, uint8_t start); size_t fpfcmdec8( unsigned char *in, size_t n, uint8_t *out, uint8_t start); size_t fpfcmenc16( uint16_t *in, size_t n, unsigned char *out, uint16_t start); @@ -89,7 +90,7 @@ size_t fpfcmdec32( unsigned char *in, size_t n, uint32_t *out, uint32_t st size_t fpfcmenc64( uint64_t *in, size_t n, unsigned char *out, uint64_t start); size_t fpfcmdec64( unsigned char *in, size_t n, uint64_t *out, uint64_t start); -//------------- DFCM: Differential Finite Context Method Predictor +//----------- TurboFloat DFCM: Differential Finite Context Method Predictor (TurboPFor) size_t fpdfcmenc8( uint8_t *in, size_t n, unsigned char *out, uint8_t start); size_t fpdfcmdec8( unsigned char *in, size_t n, uint8_t *out, uint8_t start); size_t fpdfcmenc16( uint16_t *in, size_t n, unsigned char *out, uint16_t start); @@ -99,7 +100,7 @@ size_t fpdfcmdec32( unsigned char *in, size_t n, uint32_t *out, uint32_t st size_t fpdfcmenc64( uint64_t *in, size_t n, unsigned char *out, uint64_t start); size_t fpdfcmdec64( unsigned char *in, size_t n, uint64_t *out, uint64_t start); -// 2D DFCM +//----------- TurboFloat 2D DFCM: Differential Finite Context Method Predictor ----- size_t fp2dfcmenc8( uint8_t *in, size_t n, unsigned char *out, uint8_t start); size_t fp2dfcmdec8( unsigned char *in, size_t n, uint8_t *out, uint8_t start); size_t fp2dfcmenc16(uint16_t *in, size_t n, unsigned char *out, uint16_t start); @@ -109,6 +110,16 @@ size_t fp2dfcmdec32(unsigned char *in, size_t n, uint32_t *out, uint32_t st size_t fp2dfcmenc64(uint64_t *in, size_t n, unsigned char *out, uint64_t start); size_t fp2dfcmdec64(unsigned char *in, size_t n, uint64_t *out, uint64_t start); +/*/-------------- delta (=zigzag). Same as p4zenc ------------------------------------ +size_t fppenc8( uint8_t *in, size_t n, unsigned char *out, uint8_t start); +size_t fppdec8( unsigned char *in, size_t n, uint8_t *out, uint8_t start); +size_t fppenc16( uint16_t *in, size_t n, unsigned char *out, uint16_t start); +size_t fppdec16( unsigned char *in, size_t n, uint16_t *out, uint16_t start); +size_t fppenc32( uint32_t *in, size_t n, unsigned char *out, uint32_t start); +size_t fppdec32( unsigned char *in, size_t n, uint32_t *out, uint32_t start); +size_t fppenc64( uint64_t *in, size_t n, unsigned char *out, uint64_t start); +size_t fppdec64( unsigned char *in, size_t n, uint64_t *out, uint64_t start);*/ + #ifdef __cplusplus } #endif