diff --git a/fp.c b/fp.c index dc9cc31..7af149c 100644 --- a/fp.c +++ b/fp.c @@ -462,72 +462,3 @@ unsigned char *bitg0dec64(unsigned char *in, size_t n, uint64_t *out, uint64_t s } #endif -/*unsigned char *bitgenc64(uint64_t *in, size_t n, unsigned char *out, uint64_t start) { - uint64_t *ip = in, pd = 0, *pp = in,dd; - - bitdef(bw,br); - if(n > 4) - for(; ip < in+(n-1-4);) { - start = ip[0] - start; dd = start-pd; pd = start; start = ip[0]; if(dd) goto a; ip++; - start = ip[0] - start; dd = start-pd; pd = start; start = ip[0]; if(dd) goto a; ip++; - start = ip[0] - start; dd = start-pd; pd = start; start = ip[0]; if(dd) goto a; ip++; - start = ip[0] - start; dd = start-pd; pd = start; start = ip[0]; if(dd) goto a; ip++; __builtin_prefetch(ip+256, 0); - continue; - a:; - ENC64(pp,ip, dd, out); - pp = ++ip; - } - - for(;ip < in+n;) { - start = ip[0] - start; dd = start-pd; pd = start; start = ip[0]; if(dd) goto b; ip++; continue; - b: ENC64(pp,ip, dd, out); - pp = ++ip; - } - if(ip > pp) { - start = ip[0] - start; dd = start-pd; - ENC64(pp, ip, dd, out); - } - bitflush(bw,br,out); - return out; -} - -unsigned char *bitgdec64(unsigned char *in, size_t n, uint64_t *out, uint64_t start) { if(!n) return in; - uint64_t *op = out, pd = 0; - bitdef(bw,br); - for(bitdnorm(bw,br,in); op < out+n; ) { __builtin_prefetch(in+384, 0); - uint32_t dd = bitpeek(bw,br); - if(dd & 1) bitrmv(bw,br, 0+1), dd = 0; - else if(dd & 2) bitrmv(bw,br,N2+2), dd = _bzhi_u32(dd>>2, N2); - else if(dd & 4) bitrmv(bw,br,N3+3), dd = _bzhi_u32(dd>>3, N3); - else if(dd & 8) bitrmv(bw,br,N4+4), dd = _bzhi_u32(dd>>4, N4); - else { - unsigned b; size_t r; uint64_t *_op; - bitget(bw,br, 4+3, b); - if(!b) { - bitget(bw,br,3,b); bitget64(bw,br,(b+1)*8,r,in); bitdnorm(bw,br,in); - for(r+=NL, _op = op; op != _op+(r&~7); op += 8) - op[0]=(start+=pd), - op[1]=(start+=pd), - op[2]=(start+=pd), - op[3]=(start+=pd), - op[4]=(start+=pd), - op[5]=(start+=pd), - op[6]=(start+=pd), - op[7]=(start+=pd); - for(; op != _op+r; op++) - *op = (start+=pd); - continue; - } - uint64_t dd; - bitget64(bw,br,((b>>4)+1)*8,dd,in); - pd += zigzagdec64(dd); - *op++ = (start += pd); - bitdnorm(bw,br,in); continue; - } - pd += zigzagdec32(dd); - *op++ = (start += pd); - bitdnorm(bw,br,in); - } - return bitalign(bw,br,in); -} -*/