        1. Short DESCRIPTION.
    PPMD program is  file-to-file compressor, it  is written for  experimental
purposes mainly and it  is not intended for  immediate use.  I  was interested
in  speed  and  performance  improvements  of  abstract  PPM  model[1-4] only,
without tuning it  to particular data  types, therefore compressor  works good
enough for texts, but it is not so good for nonhomogeneous  files(executables)
and  for  noisy  analog  data(sounds,  pictures  etc.). Program is very memory
consuming, You can choose balance between execution speed and memory  economy,
on one hand, and compression performance, on another hand, with help of  model
order selection option(-o).

        2. Distribution CONTENTS.
    READ_ME.TXT  - this file;
    PPMD.H, SUBALLOC.H, PPMDTYPE.H - header files;
    CODER.HPP, MODEL.CPP, SUBALLOC.CPP, PPMD.CPP - code sources;
    MAKEFILE.IMK - makefile for IntelC v.4.0;
    MAKEFILE.MAK - makefile for BorlandC v.5.01;
    PPMD.EXE     - compressor itself(2.123bpb on Calgary corpus);
    PPMD5.EXE    - the same executable, optimized for Intel Pentium(R);
    PPMONSTR.EXE - fat and sleepy compressor(for taking PPMD down only,
2.089bpb on Calgary corpus);

        3. LEGAL issues.
    It is  strongly forbidden  to use  PPMD program  as spice  for pizza,  all
other things are allowed and welcomed ;-).

        4. DIFFERENCES between variants.
        Jun 13, 1999  var.A
    Initial release;
        Jun 30, 1999  var.B
    Arithmetic coder was changed to newer version;
    Simplified LOE was tested(MODEL1.CPP file);
    Some small improvements were done;
        Aug 22, 1999  var.C
    Rudimentary SEE was added;
    Some small improvements were done;
        Oct  6, 1999  var.D
    Inherited probabilities(IPs) were added;
    Memory requirements were reduced a bit;
    Small improvements were continued;
        Dec  3, 1999  var.E
    Program  name  was  changed  from  PPM,  escape  method  D(PPMD) to PPM by
Dmitry(PPMD). Pronounce correctly! ;-)
    Bug in ARI_FLUSH_ENCODER was crushed;
    MODEL1.CPP  file  was  removed  from  package  due to simplified LOE gives
negligible gain(full LOE implementation would give some gain);
        Apr  7, 2000  var.F(inal?)
    Michael Schindler`s rangecoder  implementation was replaced  with 'russian
people  rangecoder'  by  Dmitry  Subbotin.  Now,  PPMD  is  pure public domain
program;

        5. REFERENCES.
    [1] Excellent  introductory  review  T.Bell,  I.H.Witten, J.G.Cleary
'MODELING FOR TEXT COMPRESSION'. Russian translation is placed at
http://cotty.mebius.net/compress/ru/modeling.txt;
    [2] Very descriptive M.R.Nelson`s COMP-2 program(PPMD is based on it).
COMP-2 is  in  wuarchive.wustl.edu:/mirrors/msdos/ddjmag/ddj9102.zip  (inner
zip file nelson.zip);
    [3] P.G.Howard PhD thesis 'The Design and Analysis of Efficient Lossless
Data Compression Systems', is available in
ftp.cs.brown.edu/pub/techreports/93/cs93-28.ps.Z;
    [4] S.Bunton PhD thesis 'On-Line Stochastic Processes in Data
Compression', is available in
ftp.cs.washington.edu/tr/1997/03/UW-CSE-97-03-02.PS.Z;

    AUTHOR SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL,  INCIDENTAL,
OR CONSEQUENTIAL  DAMAGES ARISING  OUT OF  ANY USE  OF THIS  SOFTWARE. YOU USE
THIS PROGRAM AT YOUR OWN RISK.

                                        Glancy compression!
                                        Dmitry Shkarin
                                        E-mail: shkarin@arstel.ru
