@@ -537,6 +537,35 @@ void bitzdec(unsigned char *in, unsigned n, unsigned esize);
537
537
#define FLOAT2INT (fval , scalse , bias ) round(fval * scale + bias)
538
538
#define INT2FLOAT (ival , scalse , bias ) ((ival - bias) / scale)
539
539
540
+ //------- Quantization : b number of bits quantized in out ----------------
541
+ #if defined(FLT16_BUILTIN )
542
+ void fpquant8e16 ( _Float16 * in , size_t n , uint8_t * out , unsigned b , _Float16 * pfmin , _Float16 * pfmax );
543
+ void fpquant16e16 (_Float16 * in , size_t n , uint16_t * out , unsigned b , _Float16 * pfmin , _Float16 * pfmax );
544
+ #endif
545
+
546
+ void fpquant8e32 ( float * in , size_t n , uint8_t * out , unsigned b , float * pfmin , float * pfmax );
547
+ void fpquant16e32 ( float * in , size_t n , uint16_t * out , unsigned b , float * pfmin , float * pfmax );
548
+ void fpquant32e32 ( float * in , size_t n , uint32_t * out , unsigned b , float * pfmin , float * pfmax );
549
+
550
+ void fpquant8e64 ( double * in , size_t n , uint8_t * out , unsigned b , double * pfmin , double * pfmax );
551
+ void fpquant16e64 ( double * in , size_t n , uint16_t * out , unsigned b , double * pfmin , double * pfmax );
552
+ void fpquant32e64 ( double * in , size_t n , uint32_t * out , unsigned b , double * pfmin , double * pfmax );
553
+ void fpquant64e64 ( double * in , size_t n , uint64_t * out , unsigned b , double * pfmin , double * pfmax );
554
+
555
+ #if defined(FLT16_BUILTIN )
556
+ void fpquant8d16 ( uint8_t * in , size_t n , _Float16 * out , unsigned b , _Float16 fmin , _Float16 fmax );
557
+ void fpquant16d16 (uint16_t * in , size_t n , _Float16 * out , unsigned b , _Float16 fmin , _Float16 fmax );
558
+ #endif
559
+
560
+ void fpquant8d32 ( uint8_t * in , size_t n , float * out , unsigned b , float fmin , float fmax );
561
+ void fpquant16d32 (uint16_t * in , size_t n , float * out , unsigned b , float fmin , float fmax );
562
+ void fpquant32d32 (uint32_t * in , size_t n , float * out , unsigned b , float fmin , float fmax );
563
+
564
+ void fpquant8d64 ( uint8_t * in , size_t n , double * out , unsigned b , double fmin , double fmax );
565
+ void fpquant16d64 (uint16_t * in , size_t n , double * out , unsigned b , double fmin , double fmax );
566
+ void fpquant32d64 (uint32_t * in , size_t n , double * out , unsigned b , double fmin , double fmax );
567
+ void fpquant64d64 (uint64_t * in , size_t n , double * out , unsigned b , double fmin , double fmax );
568
+
540
569
//------- Lossy floating point transform: pad the trailing mantissa bits with zeros according to the error e (ex. e=0.00001)
541
570
// must include float.h to use _Float16 (see icapp.c)
542
571
#if defined(__clang__ ) && defined(__is_identifier )
@@ -983,35 +1012,35 @@ unsigned trled( const unsigned char *__restrict in, unsigned inlen, unsigned c
983
1012
}
984
1013
#endif
985
1014
986
- //-- "Integer Compression" variable length encoding with bitio ------------------
987
-
988
- #ifdef __cplusplus
989
- extern "C" {
990
- #endif
991
- //-- Gamma coding (length limited) : Full 32 bit range
992
- size_t bitgenc32 ( unsigned char * _in , size_t _inlen , unsigned char * out );
993
- size_t bitgdec32 ( unsigned char * in , size_t _outlen , unsigned char * _out );
994
-
995
- //-- Rice Coding (adaptive length limited) : Full 32 bit range ---
996
- size_t bitrenc32 ( unsigned char * _in , size_t _inlen , unsigned char * out );
997
- size_t bitrdec32 ( unsigned char * in , size_t _outlen , unsigned char * _out );
998
-
999
- size_t vlcenc32 ( unsigned char * _in , size_t _inlen , unsigned char * out ); // TurboVLC 32 bits
1000
- size_t vlcdec32 ( unsigned char * in , size_t _outlen , unsigned char * _out );
1001
-
1002
- size_t vlcenc16 ( unsigned char * _in , size_t _inlen , unsigned char * out ); // TurboVLC 16 bits
1003
- size_t vlcdec16 ( unsigned char * in , size_t _outlen , unsigned char * _out );
1004
-
1005
- size_t vlczenc16 ( unsigned char * _in , size_t _inlen , unsigned char * out ); // TurboVLC 16 bits zigzag
1006
- size_t vlczdec16 ( unsigned char * in , size_t _outlen , unsigned char * _out );
1007
-
1008
- size_t vlczenc32 ( unsigned char * _in , size_t _inlen , unsigned char * out ); // TurboVLC 32 bits zigzag
1009
- size_t vlczdec32 ( unsigned char * in , size_t _outlen , unsigned char * _out );
1010
-
1011
- #ifdef __cplusplus
1012
- }
1013
- #endif
1014
-
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
1044
//-- "Integer Compression" variable byte (scalar TurboVByte+ SIMD TurboByte) ---------------------------------------------------------------
1016
1045
1017
1046
#ifdef __cplusplus
@@ -1632,4 +1661,3 @@ unsigned char *vsdec64(unsigned char *__restrict in, size_t n, uint64_t *
1632
1661
#ifdef __cplusplus
1633
1662
}
1634
1663
#endif
1635
-
0 commit comments