Arithmetic Coding Revisited

Alistair Moffat
Department of Computer Science, The University of Melbourne, Parkville 3052, Australia.

Radford Neal
Departments of Statistics and Computer Science, University of Toronto, Canada.

Ian H. Witten
Department of Computer Science, University of Waikato, New Zealand.


ACM Trans. Information Systems, 16(3):256-294, July 1998.


Over the last decade, arithmetic coding has emerged as an important compression tool. It is now the method of choice for adaptive coding on multi-symbol alphabets because of its speed, low storage requirements, and efficiency of compression. This paper describes a new implementation of arithmetic coding which incorporates several improvements over a widely-used earlier version (Comm. ACM, 30(6):520--541, June 1987) that has become a de facto standard. These improvements include fewer multiplicative operations, greatly extended range of alphabet sizes and symbol probabilities, and the use of low precision arithmetic (which permits implementation with fast shift/add operations). We also describe a modular structure that divorces the coder from the modeling and probability estimation components of a compression system. To motivate the improved coder we consider the needs of a word-based text compression program, and report a range of experimental results. Complete source code is available.

Full text .

Source Code

Version 1 of the new code (as described in the DCC'95 extended abstract) is now defunct. Version 2 of the coder, dated August 1996 was extended to accompany the full paper described here. The third version of the code is the current one (February 1999). The differences between versions 2 and 3 are explained in a further paper. All three versions of the software now reside at

The CACM code is located at Another version of the low precision coder that contains incremental calculation of the decoder target (but not most of the other improvements contained in our package) is at

The code was written primarily by John Carpinelli, Wayne Salamonsen, and Lang Stuiver.