        1. Short DESCRIPTION.
    PPMd program is  file-to-file compressor, it  is written for  embedding in
user  programs  mainly  and  it  is  not  intended  for  immediate  use. I was
interested in speed  and performance improvements  of abstract PPM  model[1-5]
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.gmk - makefile for GnuC v.2.95.2(tested for DJGPP v.2.03 only);
    makefile.imk - makefile for IntelC v.4.0;
    makefile.mak - makefile for BorlandC v.5.01;
    PPMd.exe     - compressor itself(2.121bpb on Calgary corpus);
    PPMonstr.exe - fat and sleepy compressor(for taking PPMd down only,
2.056bpb 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 ( pizzaright ;-)).

        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
'carryless rangecoder' by  Dmitry Subbotin.   Now, PPMd is  pure public domain
program;
        Nov 26, 2000  var.G(yet anther final)
    Memory requirements were reduced;

        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;
    [5] Theoretical ground of this program in: D.Shkarin 'Practical
implementation of PPM algorithm', in Russian,
http://sochi.net.ru/~maxime/doc/PracticalPPM.doc.gz;

    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
